LoRA / PEFT 이해
LoRA는 Low-Rank Adaptation의 약자다. 이름 그대로 큰 가중치 전체를 직접 다시 학습하는 대신, 저랭크(low-rank)한 작은 보정값만 추가해 모델을 적응(adaptation)시키는 방식이다.
대형 언어모델을 full fine-tuning 하려면 메모리와 시간이 많이 든다. PEFT(Parameter-Efficient Fine-Tuning)는 이 비용을 줄이기 위해 일부 파라미터만 추가하거나 조정하는 계열 방법이고, LoRA는 그중 가장 대표적이다.
핵심은 "기존 모델 지식을 버리지 않고, 필요한 변화만 작게 넣는다"는 데 있다. 그래서 한 베이스 모델을 여러 도메인이나 태스크로 빠르게 확장할 때 특히 실용적이다.
PEFT는 Parameter-Efficient Fine-Tuning의 약자다. 즉 전체 모델을 다 업데이트하지 않고, 일부 추가 파라미터나 작은 모듈만 학습해서 비용을 줄이는 파인튜닝 계열 전체를 가리키는 말이다.
즉 LoRA는 분명 파인튜닝이다. 다만 전체 파라미터를 다 미세조정하는 full fine-tuning이 아니라, 비용을 줄인 PEFT 계열 파인튜닝이라고 이해하면 된다.
1. 왜 필요한가
- 모델이 커질수록 전체 가중치 업데이트 비용이 너무 크다.
- 도메인별로 여러 버전을 유지하려면 full fine-tuning은 비효율적이다.
- 한 베이스 모델 위에 여러 task adapter를 얹는 방식이 더 실용적이다.
2. LoRA 핵심 아이디어
원래 가중치 W를 직접 바꾸는 대신, 작은 저랭크 업데이트 ΔW = BA만 학습한다. 여기서 A, B의 차원은 작아서 전체 비용이 크게 줄어든다.
직관적으로는 거대한 행렬 전체를 새로 쓰는 대신, 그 행렬에 대한 "작은 보정값"만 따로 저장하는 셈이다. 그래서 저장 공간과 학습 비용이 함께 줄어든다.
여기서 low-rank라는 표현은 "변화의 자유도를 제한한다"는 뜻으로 이해하면 쉽다. 즉 모델 전체를 마음대로 바꾸는 대신, 비교적 작은 방향 집합 안에서만 적응하게 만들어 효율을 얻는 구조다.
중요한 점은 실제 계산에서는 W + ΔW를 사용하지만, 보통 학습되는 것은 원래 가중치 W가 아니라 추가된 A, B 쪽이라는 점이다. 그래서 겉으로는 전체 weight가 바뀐 것처럼 보여도, 실제 업데이트 대상은 작은 보정 경로다.
3. 직관
베이스 모델이 이미 많은 지식을 갖고 있다고 보면, LoRA는 그 위에 "작은 수정 메모"만 붙이는 방식이다. 그래서 새로운 task에 적응하면서도 원래 모델 자체를 크게 건드리지 않는다.
예를 들어 이미 잘 학습된 음성 모델이나 LLM이 있을 때, 전체 모델을 다시 다 바꾸지 않고 "이 태스크에서는 이 방향으로 조금 보정하자"는 작은 수정치를 덧붙이는 감각에 가깝다.
3.5 실제로는 어떻게 붙는가
LoRA는 모델 전체에 동일한 가중치 하나를 붙이는 방식이 아니다. 보통 사용자가 특정 선형층이나 attention projection 같은 대상 레이어를 정하고, 그 레이어마다 별도의 LoRA 행렬을 붙인다.
원래:
x -> W -> y
LoRA 적용:
x -> W ---------+
A -> B ---+-> y
즉 각 레이어마다 그 레이어 전용 A, B가 따로 있고, 학습이 진행되면서 각 레이어의 보정값도 서로 다르게 변한다. 모든 층에 똑같은 값 하나를 공통으로 더하는 구조는 아니다.
3.6 설정은 자동인가
LoRA는 모델이 알아서 자동으로 켜지는 기능이 아니다. 사용자가 어떤 레이어에 붙일지, rank를 얼마로 할지, alpha나 dropout을 어떻게 줄지 설정해야 한다.
즉 개념 선택과 하이퍼파라미터 결정은 사람이 하고, 실제 adapter 삽입과 학습 파라미터 구성은 라이브러리가 도와주는 구조라고 보는 편이 맞다.
4. 장점과 한계
- 장점: 메모리 절약, 빠른 학습, 여러 adapter 관리 용이
- 장점: 베이스 모델 공유가 쉬워 배포와 실험 반복이 편하다
- 한계: task에 따라 full fine-tuning보다 표현력이 부족할 수 있다
즉 LoRA는 항상 full fine-tuning보다 낫다는 뜻이 아니라, 품질 손실을 어느 정도 감수하는 대신 비용을 크게 줄이는 절충안이라고 보는 것이 정확하다.
실무에서는 이 절충이 매우 매력적이다. 하나의 베이스 모델을 공통으로 두고, 고객사나 태스크별로 LoRA adapter만 따로 관리하면 저장 공간, 배포 속도, 버전 관리가 훨씬 단순해진다.
그래서 LoRA는 지금 기준으로 "최신 유행의 실험적 기법"이라기보다, 이미 널리 자리잡은 실무형 기본 선택지에 가깝다. 특히 LLM 파인튜닝에서는 PEFT를 말할 때 가장 먼저 떠올리는 표준적 방법 중 하나다.
5. 면접 포인트
면접에서는 보통 "왜 full fine-tuning 대신 LoRA를 쓰는가", "왜 low-rank가 가능하다고 보는가", "adapter 여러 개를 어떻게 관리할 수 있는가"를 묻는다. 이 세 질문에 답할 수 있으면 충분하다.
답변할 때는 "성능이 조금 덜 나와도 되는 대신, 비용과 운영 복잡도를 크게 줄일 수 있기 때문"이라고 말하면 실무 관점이 살아난다. 즉 LoRA는 수학 아이디어이기도 하지만, 동시에 운영 전략이기도 하다.
6. QLoRA는 무엇인가
QLoRA는 보통 Quantized LoRA라고 이해하면 된다. 핵심 아이디어는 베이스 모델은 4bit 같은 저정밀도로 줄여 메모리를 아끼고, 그 위에 붙는 LoRA adapter만 학습하는 방식이다.
즉 구조적으로는 여전히 LoRA 계열인데, 여기에 quantization을 결합해 훨씬 적은 GPU 메모리로도 대형 모델 파인튜닝이 가능하게 만든다.
- LoRA: 원본 모델은 거의 고정하고 저랭크 adapter만 학습
- QLoRA: 여기에 베이스 모델 양자화까지 결합해 메모리를 더 절약
그래서 QLoRA는 "새로운 완전 별개 기법"이라기보다, LoRA + quantization을 결합한 실용적인 확장판으로 보는 편이 맞다.
7. 체크리스트
- PEFT와 full fine-tuning 차이를 설명할 수 있는가?
- LoRA가 왜 메모리를 절약하는가?
- 언제 full fine-tuning이 더 나을 수 있는가?
- QLoRA가 LoRA와 어떻게 다른가?