boostcampaitech2 / mrc-level2-nlp-04

mrc-level2-nlp-04 created by GitHub Classroom
4 stars 5 forks source link

기존 Trainer 클래스에서의 valid score(exact_match, f1) score 를 어떻게 볼지 모르겠어서 train_mrc() 함수와 inference() 함수로 새로 바꾼 코드 #2

Closed raki-1203 closed 2 years ago

raki-1203 commented 2 years ago

이번엔 브랜치를 이니셜로 해버렸는데 다음번엔 기능으로 잘 해볼게요!

너무 많은 곳을 바꿔서 이해하시는데 오래걸리실 수도 있고 저도 시작을 어떻게하면 좋을까 고민하다가 1기 캠퍼 코드transformers github 참고하면서 베이스라인과 동일한 기능을 하도록 변경했습니다.

바뀐 부분들을 정리하자면

  1. 기존 Trainer 를 pytorch 를 사용해서 하나하나 구현했던 것처럼 train_mrc() 함수로 구현했습니다.

  2. 이 과정에서 코드로 길게길게 적혀있던 부분들을 함수로 분리해서 utils_qa.py 로 옮겼습니다.

    • model, config, tokenizer 를 불러오는 함수, data 를 불러오는 함수, argument 들을 불러오는 함수 등 보시면 알거에요!
  3. data 를 불러오는 함수에서는 data_processing.py 라는걸 새로 만들어서 전처리하는 class 하나 새로 구현되어있어요

기본적인 사용방법을 적어 놓을게요!

  1. train.py

main() 함수에는 project_name, model_name_or_path 를 인자로 받아요

train.py 실행하실 때 들어가는 여러 인자들이 있는데 제가 사용할 것들만 추려놨어요

image

그리고 command line 으로 실행할 경우

python train.py --output_dir ./models

이렇게 입력으로 주면 기본 모델이 돌아갑니다.

training_args.output_dir 을 ./models 로 주었지만 project_name 이랑 model_name_or_path 를 같이써서 다시 training_args.output_dir 에 할당해줘요 그래서 폴더구조가 이렇게 나올거에요

image

  1. data_processing.py

여기에는 기존 train.py 를 엄청 길게 만들던 prepare_train_features, prepare_validation_features 등 함수가 들어있고 dataset 을 만드는 함수들이 class 로 구현되어있어요!

  1. utils_qa.py & utils_retrieval.py

여기에는 잡다한 함수들이 다 들어있어요!

mrc 와 관련한 함수들은 utils_qa.py 로 옮겼고 retrieval 과 관련한 함수들은 utils_retrieval.py 로 옮겼어요!

  1. arguments.py

use_pretrained_model : 이 인자는 새로 만든건데 get_models() 함수에서 볼 수 있어요 기본값이 False 로 되어있어요 나중에 custom model 을 만들 경우 사용할 수 있을것 같아요

  1. inference.py

여기도 Trainer 안쓰고 inference() 함수 만들어서 prediction 파일 저장