Skip to content

boostcampaitech4lv23nlp1/level2_mrc_nlp-level2-nlp-01

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 

Repository files navigation

level2_mrc_nlp-level2-nlp-01

Members

강혜빈 권현정 백인진 이용우 이준원
에브리타임 에브리타임 에브리타임 에브리타임 에브리타임
데이터 탐색,
코드 리뷰
모델링-Retriever,
Researcher
모델링-Reader,
Project Manager
모델링-Reader,
Researcher
모델링-Retriever,
코드리뷰
@hyeb @malinmalin2 @eenzeenee @wooy0ng @jun9603




Introduction

프로젝트 개요

Question Answering (QA)는 다양한 종류의 질문에 대답하는 인공지능을 만드는 연구 분야이다.

다양한 QA 시스템 중, Open-Domain Question Answering (ODQA)는

주어진 지문이 별도로 존재하지 않고 사전 구축된 Knowledge Resource에서 질문에 대답할 수 있는 문서를 찾는 과정이 추가된다.

이번 프로젝트에서는

  • 관련 문서를 찾는 "Retriever"
  • 관렴 문서를 읽고 적절한 답변을 찾거나 만드는 "Reader"

두가지 단계를 적절히 합쳐 질문에 답변을 할 수 있는 ODQA 시스템을 만드는 것이 목표이다.




Wrap-up Report

링크 참고




환경설정

Reader 환경 설정

./install/install_requirements.sh

Elastic Search 설치 및 사용 설정
./code/elastic_install.sh
./code/elastic_setting.py




하이퍼 파라미터 변경

하이퍼 파라미터는 code/conf 폴더 내 yaml 파일을 통해 변경이 가능하다.

|-- code
|   |-- conf
|   |   |-- MLM
|   |   |   `-- base_config.yaml
|   |   |-- reader
|   |   |   |-- base_config.yaml
|   |   |   |-- koelectra_config.yaml
|   |   |   |-- roberta-large_config.yaml
|   |   |   |-- roberta-large_config_39.17.yaml
|   |   |   |-- roberta-large_config_40.00.yaml
|   |   |   |-- roberta-large_config_51.25.yaml
|   |   |   `-- roberta-large_config_62.08.yaml
|   |   |-- retrieval
|   |   |   `-- base_config.yaml
|   |   `-- wandb_sweep
|   |       `-- wandb_config.yaml



아래 파일은 Reader 모델을 학습하기 위한 파라미터 설정이다.

# code/conf/reader/roberta-large_config.yaml

reader:
    mode:
        generation: False # 생성 기반 reader 모델을 활용할 것인지
train:
    path:
        output_dir: ./models/finetuning_dataset/ # 학습한 모델을 저장할 경로
        dataset_name: ../data/train_dataset/ # 학습 데이터셋 경로
        delete_exist_output: True # 현재 존재하는 모델 저장 경로일 경우 내부 내용을 삭제할지 여부

    stage:
        do_train: True
        do_eval: True
        overwrite_cache: True

    model:
        model_name_or_path: './models/pretraining_dataset'
        tokenizer_name: './models/pretraining_dataset'
        label_smoothing_factor: 0.0
        num_train_epochs: 3
        per_device_train_batch_size: 32
        learning_rate: 3e-5
        warmup_steps: 250
        weight_decay: 0.005
        fp16: True
test:
    path:
        output_dir: ./outputs/test_dataset/
        dataset_name: ../data/test_dataset/
        delete_exist_output: False

    stage:
        do_train: False
        do_eval: False
        do_predict: True

    model:
        model_name_or_path: ./models/finetuning_dataset/



아래 파일은 Retriever 모델을 학습하기 위한 파라미터 설정이다.

# code/conf/retrieval/base_config.yaml

path:
    dataset_name: ../data/train_dataset/
    data_path: ../data

model:
    model_name_or_path: 'klue/roberta-large'
    context_path: wikipedia_documents.json
    use_faiss: False
    bm25: True



아래 파일은 Retriever 모델에서 활용하는 파라미터 설정

# code/arguments.py

@dataclass
class DataTrainingArguments:
    """
    Arguments pertaining to what data we are going to input our model for training and eval.
    """
    # line 79 부터
    eval_retrieval: bool = field(
        default=True,
        metadata={"help": "Whether to run passage retrieval using sparse embedding."},
    )
    num_clusters: int = field(
        default=64, metadata={"help": "Define how many clusters to use for faiss."}
    )
    top_k_retrieval: int = field(
        default=100,
        metadata={
            "help": "Define how many top-k passages to retrieve based on similarity."
        },
    )
    use_faiss: bool = field(
        default=False, metadata={"help": "Whether to build with faiss"}
    )

    use_elastic: bool = field(
        default = True, metadata={"help" : "Whether to build with elastic search"},
    )
    
    elastic_index_name: str = field(
        default = "origin-wiki", metadata= {"help" : "Define the elastic search name"},
    )



아래 파일은 Reader 모델의 하이퍼 파라미터 변경 실험을 위한 설정이다.

# code/conf/wandb_sweep/wandb_sweep.yaml

method: 'random'
parameters:
    learning_rate:
        distribution: 'uniform'
        min: 1e-5
        max: 1e-4
    label_smoothing_factor:
        values: [0., 0.1]
    warmup_steps:
        values: [250, 500]
    weight_decay:
        values: [0.01, 0.005]
metric:
    name: 'train/loss'
    goal: 'minimize'




Reference

About

level2_mrc_nlp-level2-nlp-01 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published