Adaptor vs Delta Tuning를 비교하며
대형 언어모델(LLM)이 점점 커지면서, 모든 파라미터를 학습하는 Full Fine-tuning은 현실적으로 부담이 커졌습니다.
-
메모리 사용량 ↑
-
학습 시간 ↑
-
저장해야 할 모델 버전 ↑
이를 해결하기 위해 등장한 방법이 PEFT(Parameter-Efficient Fine-Tuning)입니다.
즉, “모델 전체를 학습하지 않고, 일부만 학습해서 효율성을 높이는 방법”이라고 볼 수 있습니다.
Adaptor 계열: 모듈을 추가하는 방식
Adaptor 방식은 기존 모델 파라미터를 전부 고정(freeze) 하고,그 위에 작은 모듈(Adaptor)을 삽입한 뒤 그 모듈만 학습하는 접근입니다.
대표 기법:
- Adapter : Transformer 레이어 사이에 작은 FFN 모듈을 추가하고, 해당 모듈만 학습
- Prefix-tuning : 입력 토큰 앞에 학습 가능한 prefix 벡터를 붙임
- Prompt-tuning : 입력 임베딩에 학습 가능한 프롬프트 벡터를 추가
💡 공통점: 원래 모델 구조는 그대로 두고, “옆에” 모듈을 달아 학습한다는 점입니다.
Delta Tuning 계열: 변화량(ΔW)만 학습하는 방식
Delta Tuning은 Adaptor처럼 새 모듈을 붙이지 않고,기존 파라미터에 대한 변화량(ΔW)만 학습하는 방식입니다.
기본 아이디어
사전학습된 모델의 가중치가 𝑊라고 할 때,Full Fine-tuning은 𝑊 자체를 업데이트합니다.
Delta Tuning은 원래 모델의 𝑊를 고정하고, 학습 가능한 Δ𝑊를 정의하여 모델 가중치를 다음과 같이 사용합니다.
W∗=W+ΔW
즉, 학습은 Δ𝑊에만 수행하고 원래 모델의 가중치인 𝑊는 건드리지 않습니다.
Δ𝑊를 효율적으로 학습하는 방법
LoRA(Low-Rank Adaptation)
- Δ𝑊를 저랭크 행렬곱으로 표현하여 학습 파라미터 수를 크게 줄입니다.
ΔW=A⋅B
- (A∈Rd×r,B∈Rr×k)
- r≪d,k(lowerrank)
- 학습 시에는 Δ𝑊 전체를 저장하지 않고 작은 행렬 A, B만 업데이트
BitFit
- Δ𝑊를 bias 항에만 적용, 매우 가볍게 학습
Diff-pruning
핵심: Δ𝑊 전체(Dense Delta)를 두는 대신, ΔW를 만들기 위한 작은 파라미터만 학습합니다.
“Δ𝑊를 학습한다”는 것의 의미
Full Fine-tuning : 𝑊 자체를 업데이트
Delta Tuning : 𝑊는 고정, 학습 가능한 Δ𝑊만 업데이트
- 학습 후 forward 시에는 𝑊+Δ𝑊를 사용
- 기존 모델은 그대로 두고, 필요한 부분만 보정
LoRA는 Δ𝑊를 직접 저장하지 않고 저랭크 근사(AB)를 사용하여 효율적으로 학습합니다.
정리
Adaptor 계열
- 원래 모델 파라미터 고정 + 모듈 추가
- Adapter, Prefix-tuning, Prompt-tuning
- 구조 확장, 모듈만 학습
Delta Tuning 계열
- 원래 모델 파라미터 고정 + ΔW 학습
- LoRA, BitFit, Diff-pruning
- 구조 그대로, ΔW만 학습