글

라벨이 모델압축인 게시물 표시

NL-055, DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter (2019-Arxiv)

이미지
*Distilling 1. Pre-trained BERT 모델로 student 모델 초기화 2. Task data 로 Fine-tuned BERT 을 student 에 distilling 을 한다 . 3. 이 때는 teacher 의 predicted prob 을 이용한다 . 4. Fine-tuned 할 때는 distilling 을 이용안하는 듯하다 . ■ Comment Hugging Face라는 회사에서 낸 논문이데 HuggingFace는 다양한 BERT 버전을 사용하기 쉽게 코드화해서 배포한 것으로 유명하다. 세계적으로 다양한 언어로 구현된 BERT들이 있고 모델들 한국어 BERT로는 SKT의 BERT 가 들어가 있다. BERT뿐만 아니라 기존의 존재하는 코드를 파이토치로 쉽게 쓸 수 있게 해주고 다른 논문을 리프로듀싱하는 것도 있는 것 같다. 이 논문은 직접 학습시켜서 낸 논문이고 당연히 라이브러리화 되어 있다. 하지만 논문이 어디에 억셉된 것은 아니고 실제로 논문 내용을 봐도 상당히 간결하고 자세한 내용들은 없고 방법론은 기존의 방법론과 크게 차이 있어 보이지는 않는다. 0. Abstract 큰 스케일의 pre-trained model이 NLP에서 연구되고 있는데 이러한 큰 모델들을 계산 학습 혹은 인퍼런스 버짓이 정해진 제약이 있는 edge단에서 작동하는 것은 챌린지하다. 이 논문에서는 DistilBERT라고 하는 작고 general language representation 모델을 제안한다. 이는 많은 부분에서 finetune시 좋은 성능을 보여준다. 다른 이전의 연구들은 task-specific 모델에 맞는 distillation을 수행하지만 여기서는 Pre-training을 할 때 Knowledge distillation을 활용한다. 그 결과 BERT 사이즈는 40% 줄이고 lanugage understanding 능력은 99% 유지하고 60% 빠른 모델을 보여준다. Pre-training 시...

NL-054, ALBERT: A Lite BERT for Self-supervised Learning of Language Representations (2020-ICLR)

이미지
■ Comment 이 논문은 teacher 모델처럼 사전 학습된 모델을 이용한 것이 아니고 새로운 모델을 제시한 것이다. 단지 새롭게 제시한 모델이 가벼운(Lite) 모델일 뿐이다. 즉 경량화하라는 개념과는 살짝 다른 부분이 있다. 어찌되었든 최종 버전의 모델은 파라미터수를 확연히 줄였다. 하지만 경량화 목적 중 하나인 실제 상용화에 쓰이기 위해서는 인퍼런스 속도에서 더욱 향상 시킬 필요가 있어 보인다. (Discussion에서 말하듯) 왜냐하면 파라미터 수, 메모리만 줄였을 뿐 계산해야하는 과정은 큰 차이가 안난다고 보면 되기 때문이다. 0. Abstract pretraining 모델이 커지고 다운스트림 작업들에 성능을 올려주고 있다. 하지만 이는 GPU/TPU 메모리 한계 때문에 모델을 계속해서 이렇게 하기는 힘들다. 이 문제를 해결하기 위해 파라미터 수를 줄여서 memory 소비를 줄이는 기술과 학습 속도를 빠르게 한다. 또한 self-supervised 학습을 사용하여 문장간의 관계에 대한 모델링에 중심을 맞추고 다중 문장 입력의 다운스트림 작업에 도움을 준다.  그 결과 BERT-large에 비해 적은 수의 파라미터로 GLUE, RACE, SQuAD에서 SoTA을 달성한다. 1. Introduction 많은 어려운 NLP task들은 학습 데이터의 한계를 가지고 있고 이것은 pre-trained 모델들로부터 이득을 볼 수 있었다. 대표적으로 reading comprehension에서 이것에 대해 놀라운 결과를 보여준다. 중국 중고등 영어 문제, RACE 시험 등에서 모델 사이즈가 주어질 때 보통 다음과 같은 질문을 한다. Is having better NLP models as easy as having larger models? 즉 큰 모델을 가지고 학습하기 쉽냐 이 말인 듯 질문에 대한 답변의 문제점은 하드웨어의 메모리 한계이다. SoTA의 큰 모델들은 수억개의 파라미터들을 가지고...

NL-053, Small and Practical BERT Models for Sequence Labeling (2019-EMNLP)

이미지
*Distilling 1. 위키피디아  코퍼스로 pre-trained BERT 을 student 에 distilling 을 한다 . 2. 이 때는 teacher 의 predicted prob 을 이용한다 . 3. Fine-tuned 할 때는 distilling 을 이용안하는 듯하다 . ■ Comment 논문에 경량화에 대한 내용도 있지만, 읽어보면 contribution이 다국어 모델에 관련된 내용도 많다. 즉 다국어 모델을 해야 low resource에 대한 언어를 처리하게 용이하다는 점도 논문의 주된 내용이다. 경량화 방법은 사실 특별한 것은 없고 마지막 logit을 temperature을 이용한 방법이다. 다른 경량화 논문들과는 다르게 GLUE가 아닌 POS tagging과 형태소 분석으로 논문 모델의 성능을 입증한다. 그러다 보니 다른 경량화 모델과 비교가 없었던 것이 아쉬웠지만 사실 논문의 주된 내용은 경량화+다국어이기 때문에 그런 것 같기도 하다. (온전히 나의 추측으론 논문이 short papaer인 것 같은데 ) 크게 인사이트를 보여준 논문은 아닐 수 있지만 short-paper라 EMNLP에 억셉된 게 아닐까 싶기도.. 0. Abstract 여기서는 하나의 다국어 sequence labeling 모델을 학습하는 실용적인 방법을 제안하고 이것이 SoTA의 결과를 내며 CPU 한장에서 돌아갈 만큼 작고 빠르다. public 다국어 BERT을 checkpoint로 시작하여 마지막 모델은 6배작고 27배 빠르고 다국어 모델의 SoTA basline보다 성능이 좋다. 특히 우리의 모델은 low-resource 언어에서 좋은 성능을 내고 codemixed 입력에대해 따로 학습없이 작동한다. low-resource는 보통 데이터가 얼마 없는 상황을 말한다고 보면 됨 codemixed는 "나는 game을 좋아한다"와 같은 입력이라고 보면 됨 모델의 효과는 70 treebanks와 48 언...

NL-052, Patient Knowledge Distillation for BERT Model Compression (2019-EMNLP)

이미지
*Distilling 1. Task data 로 Fine-tuned BERT 을 student 에 distilling 을 한다 . 2. 이 때는 data labels 와 teacher 의 predicted prob 을 동시에 이용한다 . (Loss 식이 두 개임 ) 3. 초기화는 pre-trained BERT 을 이용한다 . ■ Comment TinyBERT보다 늦게 읽었지만, arxiv 기준으로 TinyBERT보다 먼저 나온 논문이다. PKD의 핵심은 사실 TinyBERT처럼 출력층뿐 아니라 중간층을 학습하면 일반화가 잘 된다는 의미이다. TinyBERT도 그랬지만 PKD-Last보다는 PKD-skip이 성능이 좀 더 괜찮다. 또한 실험 결과에서 4.5 부분에서 실제 distilling할 때 도움될만한 착안점이 많다고 생각한다. 0. Abstract BERT와 같은 pre-trained LM은 NLP에 효과적임이 증명 되었다. 하지만 학습할 때 높은 계산 리소스가 들고 application에 적용하기 어렵다. 여기서는 Patient Knowledge Distillation 접근법을 제안하여 얇은 네트워크(student)에 효과적으로 모델을 압축한다. 이전의 distillation 방법들은 teacher 네워크의 마지막 출력만을 사용했지만, 여기서는 incremental KD을 통하여 student 모델이 multiple 중간의 층을 배움으로써 끈기있는 학습을 하려고 하였다. 방법으로는 다음의 두 가지를 제시한다. PKD-Last: 마지막 k 층을 배우는 것 PKD-Skip: 매 k 층마다 학습을 배우는 것(TinyBERT 처럼) 이러한 두 가지 patient distillation 방법은 teacher의 hidden layers으로부터 풍부한 정보를 전달할 수 있으며 끈기있게 student model이 배울 수 있다. 실험을 해보면, 이 방법이 학습 효율성이 좋고 모델의 성능또한 해치지 않는다고 한다. ...