last updated by soyeon kim@NLP3 ; 0426
<aside> 💡 Task에 대한 이해도 중요한데 막상 허깅페이스로 수정해보려면 코드 구조가 어떻게 되어있는지 파악해야되더라구요. 그리고 그것도..갱장히.. 힘드러습니다. baseline code 세팅 기준으로 breakpoint 찍으면서 파악해보았는데요. 허깅페이스의 구조, 모델링이 어떻게 구성돼있는지 간단하게 참고하시면 좋을 것 같아요!
</aside>
disclaimer! 어디까지나 저번 klue-RE 대회와 이번 대회동안 huggingface 소스코드 뒤져보면서 찾은 내용입니다. 틀리거나 넘겨짚은 내용 있을 수 있으니, commnet 남겨주세요.
python train.py --output_dir=./here --do_train True
(arguments.py
)이번 베이스라인 코드의 arguments 들은 huggingface에서 config 관리해주는 class로 관리되는 것 같아요.
from arguments import DataTrainingArguments, ModelArguments
from transformers import (
AutoConfig,
AutoModelForQuestionAnswering,
AutoTokenizer,
DataCollatorWithPadding,
EvalPrediction,
HfArgumentParser,
TrainingArguments,
set_seed,
)
arguments.py 파일에 선언되어 있는 파일은 아래와 같습니다
위에 설정한 arguments들 train.py
에서 HfArgumentParser로 묶입니다. training_args는 가장 default 값으로 설정되는 것 같아요!
parser = HfArgumentParser(
(ModelArguments, DataTrainingArguments, TrainingArguments)
)
model_args, data_args, training_args = parser.parse_args_into_dataclasses()
이후 AutoConfig.from_pretrained 를 통해 모델 훈련에 필요한 model specific한 configuration 을 불러옵니다. 이때 사용하는 모델은 위에 선언된 model_args의 클래스 속성값(model_args.config_name) 으로 불러오게 됩니다. AutoTokenizer, AutoModelForQuestionAnswering도 마찬가지입니다.
config = AutoConfig.from_pretrained(
model_args.config_name
if model_args.config_name is not None
else model_args.model_name_or_path,
)