KcBERT Finetune with PyTorch-Lightning v1.3.0

들어가며

KcBERT를 공개하며 NSMC를 예제로 PyTorch-Lightning을 이용한 Downstream task Fine-tune을 진행하는 Colab 예제(링크, 새 창)를 만들어 배포해보았다.

한편, Transformers의 버전과 PyTorch-Lightning, 그리고 PyTorch의 버전 자체가 올라가면서 여러가지의 기능이 추가되고, 여러 함수나 내장 세팅 등이 꽤나 많이 Deprecated되었다.

사람은 언제나 귀찮음에 지배되기 때문에 코드를 한번 만들고 최소한의 수정만을 하면서 ‘돌아가기는 하는’ 수준으로 코드를 유지했다.

하지만 실행시마다 뜨는 ‘Deprecate warnings’에 질리는 순간이 오고, 지금이 바로 그 순간이라 기존 코드를 “보다 좋게”, 그리고 기왕 수정하는 김에 모델 체크포인트 저장(성능에 따른) / Logging 서비스 연동 / Inference 코드 추가를 진행해보면 어떨까 싶다.

이 글은 이 Colab 노트북(링크) 에서 직접 실행해 보실 수 있습니다.

KcBERT MLM Finetune으로 Domain adaptation하기

들어가며

BERT와 GPT등 여러 Transformer 기반의 Pretrained model을 통해 보다 쉬운 Transfer learning이 가능하다.

게다가 우리에게는 Huggingface🤗 Transformers 라이브러리를 통해 훨씬 쉽게 downstream task에 여러 모델들을 적용하고/테스트 해 볼 수 있다.

한편, 이와 같은 사전학습된 모델을 적용할 때, 기존 학습된 Corpus의 도메인(ex: 댓글)과 Downstream task에 사용하는 도메인(ex: 금융)이 일치하지 않을 경우 전반적으로 성능이 높지 않게 나오기도 한다.

이뿐만 아니라, 특정 도메인에서 사용하는 Vocab이 Sub-word로 쪼개지는 이슈로 인해 전체적으로 Transformer model에 부하가 가는(학습이 잘 안되는) 상황도 생기게 된다.

따라서 이번 튜토리얼에서는 Pretrained BERT모델 중 댓글로 학습한 KcBERT를 새로운 도메인 Corpus로 MLM 학습을 추가로 진행해본다.

(용어로는 Domain Adaptive Pretraining이라고 부른다. aka DAPT)

이 튜토리얼은 아래 Github gist와 Colab에서 직접 실행해볼 수 있습니다.

Colab: https://colab.research.google.com/gist/Beomi/972c6442a9c15a22dfd1903d0bb0f577/2021-03-15-kcbert-mlm-finetune-with-petition-dataset.ipynb

Github Gist: https://gist.github.com/Beomi/972c6442a9c15a22dfd1903d0bb0f577

BertForSequenceClassification on Transformers v4.0.0

Huggingface Transformers v4.0.0!

Huggingface에서 Transformers 패키지 4버전을 릴리즈했다.

Huggingface Transformers v4.0.0 깃헙 릴리즈 페이지

많은 변화가 있지만, 이 변화를 체감하게 된 것은 KcBERT 레포에 한 이슈가 달리게 되어서이다.

“KcBERT-Large NSMC Finetune 코드가 동작하지 않아요.”

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×