Abstract
- 기존 fine-tuining 방식의 한계
- 현재 NLP 분야의 작업 방식은 수백만에서 수십억에 이르는 paramters를 갖고 이쓴ㄴ pre-trained model을 downloading and fine-tuning 하는 과정이 포함됨
- 이렇게 규모가 큰 모델을 저장하고 공유하는 것은 대체로 느리고, 비싸고, 그리고 많은 시간이 필요해서 project의 진전을 저해시키다
- 기존 adapters의 한계
- adapter: 적은 수의 parameters로 이루어진 학습된 NN
- 모델 전체를 fine-tuning 해야하는 수고로움을 덜어주지만, adapter를 공유하고 결합하는 방식은 그리 직관적이지 않음
- AdapterHub
- 다양한 tasks와 languages를 위해 학습된 adapter를 동적으로 모델에 장착할 수 있게 도와주는 framework
- huggingface library 상에서 만들어져서 쉽고 빠르게 adapter를 적용할 수 있도록 도와줌
- downloading, sharing, training과 같은 과정이 단 몇 줄의 code 추가로 이뤄짐
- 이 framework은 scalable하고 쉽게 task-specific adapter를 공유 할 수 있게함
- 자원이 한정적인 상황에서 특히 유용함
1. Introduction
- Transformer-based language models
- 방대한 양의 data로 pre-training 된 model로 target task에 맞게 fine-tuining 하는 과정을 거치게 됨
- e.g.
- 많은 NLP tasks에서 SotA 달성
- (현재까지 model의 발전으로 보아) performance에 model size가 큰 영향을 끼치는 것을 알 수 있음
- model size가 billions에 이르는 현재 상황에서, fine-tuning을 논외하고, 다양한 tasks를 training하거나 sharing하는 것은 엄두도 내기 힘든 일임
- 이것은 modular architecture, task composition, 그리고 large pre-trained model에 biases나 external information을 injecting 하는 것을 불가능 하게 함
- Adapters
- full fine-tuining과 동등한 performance를 낼 수 있는 상대적으로 가벼운(lightweight) fine-tuning 전략
- transformer의 모든 layer에 추가된 적은 수의 weights로 이루어짐
- weights가 fine-tuining 될 떄, original model은 frozen 상태가 됨
- tasks 사이에서 효율적인 parameter sharing을 가능하게해서 많은 task에서 높은 성능을 보여줌
- 하지만 이를 재사용하고 공유하는 과정은 그리 명확하지 않음
- model을 공유할 떄는 단순히 model weights만 필요한 것이 아니라, model architecture, language, task와 같은 중요한 정보가 필요
- 다양한 목적(task, language, domain)을 가지고 학습된 모델을 손쉽게 결합할 수 있음
- intermediate task learning, composing information from many tasks, 그리고 training models for very low-resource language 같은 연구를 가능하게 함
- AdapterHub
- seamless한 traning & sharing을 도와줌
- Huggingface framework 상에서 동작하므로, 기존 코드에서 단 몇 줄의 code 추가로 adapter를 pre-trained 모델과 결합 시킬 수 있음
- researchers와 practitioners로 하여금 adapter에 쉽게 접근하고 공유할 수 있게 도와줌
- 이를 위한 website 또한 제공
- contributions
- adapter를 쉽게 training하고 sharing 할 수 있는 framework 제안
- huggingface와 결합하여 두 중릐 code 추가만으로 adapter를 train 시킬 수 있음
- adapter weights만 자동으로 추출하여 pre-trained 모델과는 별도로 저장 (저장공간 save 가능)
- open-source framework과 website 제공
- adapter composition과 adapter stacking out-of-box를 제공하여, 추후에 다양한 분야로 확장할 수 있게 도와줌
2. Adapters
2.1. Adapter Architecture
- 거대한 pre-trained 모델의 parameters ($\Theta$) 안에 작은 수의 adapter parameter ($\Phi$)가 추가된 NN module
- $\Phi$가 특정한 task를 학습하는 동안 $\Theta$는 fixed 됨
- pre-trained model 내부에서 (intermediate layers) task-specific representation을 encoding 하는 방법을 학습
- 기본적으로 task 하나당 하나의 adapter가 학습되는데, 이는 parallel하게 학습거나 각 weight를 조합 할 수 있게끔 도와줌
- 대부분의 adapters는 주로 pre-trained 모델 내부에서 학습 (transformer layer가 $l$ 일때, adapter layer는 $\Phi_l$)
- $\Phi$의 위치나 아키텍쳐에 따라서 모델에 긍정적이거나 부정적인 결과를 초래
- down- and up-projection layer와는 다르게, 모든 transformer layer에 adapter weights를 부여 할 것인지, 새로운 LayerNorm을 적용할 것인지 여부에는 literature 마다 서로 다른 이견이 존재함
- AdapterHub에서는 위와 같은 니즈를 충족시키고, adapter의 표준화 및 그에 따른 확장성에 입각한 configuration file을 제공함
2.2. Why Adapter?
- adapters는 scalability, modularity, 그리고 composition 측면에서 fully fine-tuned model보다 더 많은 이점을 가지고 있음
Task-Specific Layer-Wise Representation Learning
- adapter는 모든 transformer layer에서 representations를 adapting 함으로써 fully fined-tuned model과 필적할만한 성능을 보여줌
- 이 논문에서는 1개 fully fine-tuned model과 각기 다른 구조를 가진 2개의 adapters model의 성능을 GLUE benchmark로 비교
- performance 측면에서는, adapter의 구조가 큰 영향을 끼치지 않는 것을 확인
Small, Scalable, Sharable
- fully fine-tuned model은 task마다 별도의 pre-trained model을 필요로 하는데, 이는 iterating & parallelising training을 저해시킴
- 특히 저장공간이 충분하지 않는 경우 문제가 더욱 악화됨
Small, Scalable, Sharable
- fully fine-tuned model은 task마다 별도의 pre-trained model을 필요로 하는데, 이는 iterating & parallelising training을 저해시킴 (특히 저장공간이 충분하지 않는 경우 문제가 더욱 악화됨)
- 그에 반해 adpater는 1MB 미만의 저장공간을 추가로 필요로 하고, 99% 이상의 parameter가 학습 도중에 frozen 됨
- 각각의 task를 학습한 adapter는 inference 시 각자 가진 information을 공유할 수 있음
- adapter가 가진 이러한 특성 덕분에 에너지 및 저장공간을 절약할 수 있고, reproductivity를 높여서 쉽게 이전 모델을 재실행하거나 평가할 수 있음
Modularity of Representations
- 캡슐화된 adapter architecture가 갖고 있는 강력한 호환성 (task가 다르더라도 input & output shape이 같음) 때문에 components의 모듈화가 가능해짐
- e.g. adapter layer는 층층ㅊ히 쌓거나 동적으로 교체 가능
- adpater는 researchers와 practitioners에게 더 많은 source를 제공하고, 효율적으로 모듈화된 방식으로 이를 결합할 수 있게 도와줌
Non-Interfering composition of Information
- multi-task learning 분야에서 다른 tasks간 parameter를 share하는 것은 많은 관심을 받고 있는 중요한 영역임
- 하지만 multi-task learning은 2가지 큰 문제를 갖고 있음
- catastrophic forgetting: 다양한 정보가 순차적으로 모델에 주입될 때, 기학습된 정보가 사라지는 것
- catastrophic interference: 새로운 task 혹은 다른 distribution을 가진 task weight가 모델에 더해질 떄 performance가 떨어지게 되는 것
3. AdapterHub
- components:
- huggingface 상에서 동작하는 library
- website: pre-trained adapters의 정보를 제공하고, 이를 편하게 filtering 할 수 있는 기능 제공
- life-cycle of adapters
- ①: 새로운 adpater weights $\Phi$를 pre-trained model $\Theta$에 도입
- ②: $\Theta$를 frozen 시킨 상태에서, $\Phi$가 downstream task를 학습
- ③: 학습된 $\Phi'$를 추출하여 open-sourcing
- ④: configuration filters를 활용하여 adapters를 시각화함 (website)
- ⑤: $\Phi'$를 downloading 혹은 caching하여 $\Theta$에 장착시킴
- ⑥: trained adapter transformer model로 inference 수행
① Adapters in Transformer Layers
- 기존 코드에 단 코드 두줄의 추가만 필요로 함
- ready-made configuration files (for well-known architectures): adapters는 동적으로 설정하여 (dynamically configurable) 다양한 구조의 architecture를 정의하는 것이 가능
② Traning Adapters
- training은 full fine-tuning과 같은 방식으로 동작
- 새로운 weights $\Phi$가 추가된 모든 transformer layers $\Theta$에 정보가 전파됨
- 하지만 $\Theta$는 frozen 된 상태에서, $\Phi$와 prediction head (final output layer)만 학습됨
③ Extracting and Open-Sourcing Adapters
- $\Theta$는 학습하지 않으므로 weights에 변화가 없어서, $\Phi$와 predictionn head만 checkpoints에 저장 (저장공간 save)
- 학습이 완료되면, adapter parameters와 adapter configuration file이 server에 upload
- 몇가지 test가 자동으로 수행되고, 이를 통과하면 모든 유저가 손 쉽게 접근할 수 있도록 site에 등록됨
④ Finding Pre-Trained Adapters
- website(AdapterHub.ml)는 현재 이용가능한 adapters를 조망할 수 있음
- 사용자에게 필요한 adapters를 찾을 수 있도록 hierachical structure와 다양한 search options 제공
- hierachical structure:
- 1st level: language/task
- 2nd level: dataset for higher level NLP tasks
- 3rd level: domains
⑤ Stiching-In Pre-Trained Adapters
- 필요한 adapters를 website에서 선택하여, configuration 및 weights를 불러옴
⑥ Inference with Adapters
- fully fine-tuned model과 동일한 방식으로 inference가 이뤄짐
- desingated task의 inference를 위해 추가적으로 학습이 이뤄질 수 있는데, 이때 prediction heads와 adapter weights를 함께 upload 할 수 있는 기능을 제공함
- 이것들은 further research로 학습된 adapter를 새로운 task에 transferring 하거나 다수의 adapters를 stacking 하거나 다양한 adapters로 부터 얻은 정보를 fusing하거나, 다른 modalities를 위한 adapters를 풍부하게 하는 방식으로 사용될 수있음
4. Conclustion and Future Work
- AdapterHub: 새롭고 사용하기 간편한 framework로 쉽게 adpaters를 training하고 communitiy에 공유함으로써, 단순하고 효과적인 transfer learning을 가능케 함
- Adapters: 작은 nueral modules로 거대한 pre-trained transformer models에 장착하면서, 다양한 languates와 tasks 넘나들며 transfer learning 분야를 단순화, 가속화, 그리고 촉진시키는 역할을 함
- huggingface 상에서 동작하며 단 2줄의 코드만 추가하면 됨
- AdapterHub는 full fine-tuning과 비교했을 때 reproductivility와 much better efficiency를 향상 및 새로운 tasks 와 새로운 models에 대한 확장성 및 접근성을 용이하게 함