※ Disiller.train()
🤔 TextBrewer를 사용한 경량화 학습 시 train 메서드의 인자는 다음과 같다.
- optimizer : 옵티마이저
- dataloader : 데이터 로더 using PyTorch
- num_epochs : 학습할 epoch 설정
- num_steps : 학습할 step 설정
- callback : 학생 모델 검증 함수
- batch_postprocessor : 후처리 (굳이 설정 안 해줘도 됨)
- scheduler_class : textbrewer에 있는 scheduler 함수
- scheduler_args : scheduler_class 설정 용도
- scheduler : 무시
- max_grad_norm : gradient vanishing 방지를 위한 설정
🚫 주의 사항
- num_steps : 설정 시 num_epochs 무시
- num_epochs를 사용 추천
- callback : 모델 검증을 위한 로직을 직접 구성해야 됨
- HuggingFace의 transformers가 익숙하다면 Trainer.evaluate 를 사용할 거라고 생각
- 위와 같은 함수로 검증한다면 batch_size 설정 시 애매한 상황이 발생할 수 있음
- 학습할 때는 train_batch_size 설정 값만큼 사용
- 검증할 때는 eval_batch_size * world_size(#devices) 만큼 사용
- 때문에 DataLoader(PyTorch) 생성 시 transformers와 사상을 일치시켜야 됨
💡 Tips
만약 HuggingFace의 transformers가 익숙하다면 optimizer 설정, scheduler 설정할 때 transformers 함수를 불러와 사용한다면 여러 가지 실험을 할 수 있다.
다만 transformers 사용 시 textbrewer와 같은 이름으로 설정된 args.가 있으니 overwrite를 신경써서 코딩할 필요가 있다.
🙋🏻♂️ 저는 textbrewer lib.를 사용해서 여러 가지 실험을 간단하게 했기 때문에 개인적으로 추천 드립니다 :)
- TextBrewer 패키지는 경량화를 지원하는 형태로 배포되었기 때문에 Deep learning 학습에 필요한 기능들을 직접 정의하거나 다른 패키지에서 가져와 사용해야 한다. 패키지 구성이 단순하지만 다양한 학습 방법 및 기능을 제공하기 때문에 익숙해진다면 손 쉬운 경량화 학습을 할 수 있다고 생각합니다.
- 아쉬운 점은 kd 관련 더 이상의 코드 개발은 이루어지지 않는다는 점이지만 TextPruner와 같은 다른 경량화 방법은 꾸준히 업데이트 되고 있으니 직접 TextBrewer github에 들어가 확인해보시면 도움이 되지 않을까요.?
TextBrewer 패키지 관련 글
이전 글
2022.06.17 - [Natural Language Processing/Model Compression] - [경량화 패키지] TextBrewer란?
2022.06.17 - [Natural Language Processing/Model Compression] - [경량화 패키지] TextBrewer scripts info.
2022.06.17 - [Natural Language Processing/Model Compression] - [경량화 패키지] TextBrewer 학습 Process
반응형
'Natural Language Processing > Model Compression' 카테고리의 다른 글
[논문 리뷰] Distilling Linguistic Context for Language Model Compression (0) | 2022.06.23 |
---|---|
[경량화 패키지] TextBrewer 학습 Process (0) | 2022.06.17 |
[경량화 패키지] TextBrewer scripts info. (0) | 2022.06.17 |
[경량화 패키지] TextBrewer란? (0) | 2022.06.17 |
댓글