오늘 배운 내용은 마지막 경량화 방법인 PEFT!
사전 훈련된 모델을 새로운 문제에 맞게 재사용하여 학습 시간을 단축하고 성능을 향상시키는 기계 학습 방법
처음부터 학습시키는 것 보다 특정 데이터셋을 바탕으로 가중치를 업데이트 하는 것이 빠르고 쉽다.
대규모 데이터셋으로 넓은 범위의 Pre-training 후 새로운 태스크에 맞게 Fine-tuning 한다.
일반적인 Fine-tuning은 모든 파라미터를 업데이트 하므로 시간과 비용이 많이 소모된다.
Parameter-Efficient Fine-Tuning
파라미터 일부만 업데이트해서 시간과 비용을 아끼는 Fine Tuning 방법
PETL(Parameter-Efficient Transfer Learning)이라고도 한다.
프롬프트 튜닝 방식
모델의 원래 파라미터를 변경하지 않고 모델의 출력을 원하는 방향으로 유도하는 방식
파라미터 삽입 방식
모델의 특정 위치에 추가 학습 가능한 파라미터를 삽입해 모델을 미세 조정
특정 task에 대한 학습을 해서 그 태스크를 수행할때만 PEFT 파라미터를 넣다 뺐다 하는 식으로 특정 task에 대한 모듈화를 할 수 있다.
모델의 파라미터를 저차원(low-rank) 형태로 근사화하는 방법
학습 중에는 저차원 파라미터를 사용하고, 추론 시에는 원래 모델 형태로 변환
Down Projection
ex) 300x300의 W를 rank 10의 300x10()과 300x10() 두개로 변환
파라미터 9만개가 6000개로 축소
PEFT의 대표적인 기법으로, 모델의 기존 구조를 유지하면서 효율적인 학습을 가능하게 하는 방법
구성
Feed-forward down-projection (Reparameterization trick으로 차원 축소)
Non-linear layer
Feed-forward up-projection (축소된 차원 복구)
작동 방식
트랜스포머 레이어 사이에 작은 신경망을 추가해 기존 차원을 작은 차원으로 축소했다가 원래 차원으로 복원하는 과정을 거쳐 기존 모델의 파라미터는 고정하고 어댑처 레이어만 학습.
기존 모델의 2~3% 파라미터 정도만 업데이트해 학습 비용과 시간을 크게 절약한다.