왜 모델 크기만 키우면 한계가 올까?
모델이 커질수록 필요한 건 더 많은 데이터이다.
그러나 데이터가 그대로라면 모델은 새로운 걸 배우는 대신 기존 데이터의 패턴을 외우게 된다. 결국 일반화 성능이 둔화되고 과적합이 발생하게 되는 것이다.
모델이 커지면 Optimization 난이도가 상승한다. local minima가 많아짐에 따라 gradient noise가 증가하고, loss landscape의 복잡도가 높아질수록 학습이 불안정해진다. 결국 효율 대비 비용이 급증하여 ROI가 안 나오는 것이다.
또한, 거대한 모델은 범용 지식에는 강하지만 특정 task에서는 둔해지는 Task-specific adaptation에 한계를 가지게 된다. 이러한 한계들을 극복하기 위해서 등장한 것이 PEFT이다.
PEFT(Parameter-Efficient Fine-Tuning)이란 거대 모델의 전체를 다시 학습하는 것이 아니라 일부만 조정하여 필요한 부분만 task에 적응할 수 있도록 하는 것이다. 대표적인 기법으로는 LoRA, Adapter Layers, Prefix Tuning 등이 있다.
PEFT를 적용하면 일단 계산 비용이 절감된다. 학습 파라미터 수가 급감함에 따라 메모리를 절약할 수 있고 학습 속도도 빠르다. 전체 모델을 학습시키는 것이 아니라 필요한 부분만 업데이트하므로 데이터가 적을 경우, 과적합도 방지할 수 있다. 무엇보다 Full Fine-Tuning은 기존 능력을 파괴하기도 하는데, PEFT는 기존 능력을 유지한 채 필요한 부분만 업데이트하여 성능 보존에 유리하고, 멀티 태스크에 대응할 수 있다.
PEFT에서 가장 많이 쓰이는 방식은 LoRA이다. LoRA(Low-Rank Adaptation)의 핵심은 "원래 weight 전체를 바꾸지 말고, 작은 저랭크 행렬 두 개만 학습해서 weight 변화량을 근사하자." 이다. 원래 weight를 업데이트 하게 되면 다음과 같다.
W_new = W + ΔW
그러나 LoRA는 ΔW를 큰 행렬로 학습하지 않고 작은 행렬 두 개로 표현하여 학습한다.
ΔW = B X A
여기서 학습해야 할 파라미터 수가 급감하게 되고, 효과적으로 모델을 학습시킬 수 있는 것이다.