위의 변경사항을 바탕으로 Reader 모델의 train, evaluation, prediction을 하나의 파일에서 실행할 수 있도록 작성함
Unittest 목록
[x] 학습만 돌리는 경우 (do_train=True, do_eval=False, do_predict=False)
[x] 학습 종료 후 평가하는 경우 (do_train=True, do_eval=True, do_predict=False)
[x] 1 epoch 마다 평가하는 경우 (do_train=True, do_eval=True,do_predict=False)
[x] Predict 만 수행하는 경우 (do_train=False, do_eval=False, do_predict=True)
[x] 학습, 평가, 제출파일 예측까지 수행하는 경우 (do_train=True, do_eval=True,do_predict=True)
TODO
[ ] 명훈님 작업물과 통합
[x] MRC 모델과 Retriever 모델의 학습 코드 및 arguments 정리
[x] GenerativeReaderModel 개발
[x] 코드 리팩터링
[ ] DenseEncoder의 학습을 고려한 코드 확장성 개선 작업(e.g. argument 이름 등)
실행방법
Extractive vs. Generative 선택 : ModelingArguments의 method, ext vs. gen
Reader 모델 아키텍쳐 선택 및 등록 : ModelingArguments의 architectures 인자를 solution.reader.reader_models의 각 모델들의 이름으로 선택. 새로운 모델 Reader 모델 작성시 여기에 추가하며, READER_MODEL에도 등록
[참고] 실행 시나리오
answer 존재 유무 : validation of train set / ~ of test_set
5 Reader Core module 추가
Reader 에 대한 추상화 작업을 진행하였습니다.
-Reader
: 학습 전반을 관리, 기존run.py
의run_mrc
함수의 역할을 모듈화하였습니다.Trainer
객체와-ReaderModel
을 포함합니다.Unittest 완료 목록
[x] Abstract class :
ReaderBase
ExtractiveReader
:ExtractiveReaderBaselineModel
과QuestionAnsweringTrainer
로 구성되어run_mrc
함수의 기능을 수행합니다.GenerativeReader
:GenerativeReaderModel
과Seq2SeqQuestionAnsweringTrainer
로 구성되어run_mrc
함수의 기능을 수행합니다.[x] Abstract class :
ReaderModelBase
ExtractiveReaderModel
: Extraction-based MRC 계열 모델의 base class입니다.ExtractiveReaderBaselineModel
:AutoModelForQuestionAnswering
과 동일하나, Head Layer의 변형이 쉽도록 커스텀으로 작성하였습니다.ExtractiveMLPModel
: TODO 이름 통일 -> ExtractiveMLP,ExtractiveReaderBaselineModel
의 Head Layer 변형모델의 예시입니다. CNN Head 모델 작성은 해당 모델을 참고하시면 됩니다.GenerativeReaderModel
: Generation-based MRC 계열 모델의 base class입니다.6 Trainer 객체 추가
Reader
객체와의 통합 및 확장성을 고려하여 간단한 추상화 작업을 진행하였습니다.Trainer
QuestionAnsweringTrainer
:ExtractiveReader
에 적용됨Seq2SeqQuestionAnsweringTrainer
:GenerativeReader
에 적용됨4
train.py
,inference.py
통합,new_run.py
do_train=True
,do_eval=False
,do_predict=False
)do_train=True
,do_eval=True
,do_predict=False
)do_train=True
,do_eval=True
,do_predict=False
)do_train=False
,do_eval=False
,do_predict=True
)do_train=True
,do_eval=True,
do_predict=True
)TODO
GenerativeReaderModel
개발실행방법
ModelingArguments
의method
,ext
vs.gen
ModelingArguments
의architectures
인자를solution.reader.reader_models
의 각 모델들의 이름으로 선택. 새로운 모델 Reader 모델 작성시 여기에 추가하며,READER_MODEL
에도 등록[참고] 실행 시나리오
context retrieval 유무 : eval_retrieval = True / False
train_dataset['valid']
,eval_retrieval = False
train_dataset['valid']
,eval_retrieval = True
test_dataset['valid'],
eval_retrieval = True`