LoRA 개념 — 저랭크 분해의 원리
LoRA 개념
LoRA는 파인튜닝을 가볍게 만드는 대표 기법이에요. 가중치 갱신을 두 개의 작은 행렬(update matrices)의 저랭크 분해로 표현해서, 학습할 파라미터 수를 급격히 줄여요. 원래 가중치 행렬은 그대로 얼려두고, 작은 행렬 두 개만 새 데이터에 맞게 학습시키는 방식이에요.
저랭크 분해란
가중치 행렬 W에 대한 갱신 ΔW를 ΔW ≈ B·A로 쓰면, 행렬 A와 B가 rank r로 작게 잡혀 학습 파라미터가 적어져요. 최종 결과는 원래 가중치와 적응된 가중치를 합쳐서 얻어요. Transformer에서는 보통 어텐션 블록에만 적용해서 파라미터 효율을 더 높여요.
장점
- 학습 가능한 파라미터가 크게 줄어 파인튜닝이 빨라져요.
- 사전학습 가중치는 고정이라 과업별로 가벼운 LoRA 모델을 여러 개 만들 수 있어요.
- 다른 파라미터 효율 기법과 직교해 결합 가능해요.
- 완전 파인튜닝과 성능이 비슷해요.
병합으로 추론 최적화
별도로 base 모델과 LoRA 모델을 따로 불러와서 쓰면 추론에 지연이 생길 수 있어요. 훈련 후엔 어댑터와 원래 가중치를 하나로 합치는 merge_and_unload()를 쓰면 그런 지연 없이 단일 모델처럼 쓸 수 있어요.
model = model.merge_and_unload()