LoRA와 QLoRA: AI 모델 튜닝의 판도를 바꾸다
대규모 언어 모델(LLM)을 특정 작업에 맞게 조정하는 것은 마치 F1 경주용 자동차를 특정 트랙에 맞게 튜닝하는 것과 같습니다. 최고의 성능을 끌어내기 위해 섬세한 조정이 필요하지만, 이 과정은 엄청난 자원과 시간을 소모할 수 있죠. 전통적인 전체 파라미터 파인튜닝(Full Fine-tuning) 방식은 모델의 모든 파라미터를 업데이트해야 해서 비용이 많이 들고, 때로는 '파국적 망각(catastrophic forgetting)'이라는 문제에 부딪히기도 합니다.
하지만 걱정 마세요! 이제 더 효율적인 방법이 있습니다. 바로 파라미터 효율적 파인튜닝(Parameter-Efficient Fine-Tuning, PEFT) 기법입니다. 이 글에서는 PEFT의 대표적인 주자인 LoRA와, 그보다 한 단계 더 나아간 QLoRA에 대해 자세히 알아볼 것입니다. 이 두 기술이 어떻게 LLM 튜닝의 패러다임을 바꾸고 있는지, 그리고 각각 어떤 상황에 더 적합한지 명확하게 이해하게 되실 겁니다.
I. 파라미터 효율적 파인튜닝(PEFT) 입문
PEFT란 무엇이며 왜 중요할까요?
PEFT는 이름 그대로 ‘파라미터를 효율적으로’ 파인튜닝하는 기술입니다. 수십억, 수백억 개의 파라미터를 가진 거대한 사전 훈련된 모델(Pre-trained Model)의 모든 파라미터를 재학습시키는 대신, 모델의 아주 작은 일부 파라미터만 선택적으로 업데이트하는 방식이죠.
기존 모델의 가중치는 대부분 ‘고정(frozen)’ 상태로 두고, 소수의 새로운 파라미터만 추가하여 학습시킵니다. 이렇게 하면 마치 거대한 빌딩의 기본 구조는 그대로 둔 채, 특정 공간의 인테리어만 바꿔서 새로운 용도로 사용하는 것과 같습니다.
PEFT가 중요한 이유는 명확합니다.
- 자원 절약: 훨씬 적은 수의 파라미터만 학습시키므로, GPU 메모리 사용량과 학습 시간을 획기적으로 줄일 수 있습니다.
- 비용 절감: 컴퓨팅 자원을 덜 사용하니 당연히 비용도 절약됩니다.
- 파국적 망각 방지: 기존 모델의 지식 대부분을 보존하므로, 새로운 작업에 대한 학습으로 인해 기존에 학습된 중요한 정보를 잃어버리는 ‘파국적 망각’ 문제를 완화할 수 있습니다.
- 모델 관리 용이성: 원본 모델은 하나만 유지하고, 각 작업에 맞게 학습된 작은 크기의 추가 파라미터(어댑터)만 교체하면 되므로 여러 작업을 관리하기가 훨씬 수월해집니다.
전통적인 파인튜닝 vs. PEFT
| 특징 | 전체 파라미터 파인튜닝 (Full Fine-tuning) | 파라미터 효율적 파인튜닝 (PEFT) |
|---|---|---|
| 학습 대상 | 모델의 모든 파라미터 | 모델의 일부 파라미터 (전체의 1% 미만) |
| GPU 메모리 | 매우 높은 메모리 요구량 | 훨씬 적은 메모리 요구량 |
| 학습 시간 | 오래 걸림 | 짧게 걸림 |
| 파국적 망각 | 발생 위험 높음 | 발생 위험 낮음 |
| 모델 저장 | 각 작업마다 전체 모델 크기의 사본 필요 | 원본 모델 + 작은 어댑터 파일만 필요 |
이처럼 PEFT는 자원의 제약 속에서도 LLM의 강력한 성능을 특정 도메인에 맞게 최적화할 수 있는 매우 실용적이고 강력한 접근법입니다. LoRA와 QLoRA는 바로 이 PEFT 계열의 핵심 기술입니다.
II. LoRA 파헤치기: 더 가볍고 빠른 튜닝의 시작
LoRA(Low-Rank Adaptation)는 PEFT 기법 중에서도 가장 널리 사용되는 방법 중 하나입니다. LoRA의 핵심 아이디어는 '저계수(Low-Rank) 행렬’을 이용해 파라미터 업데이트를 효율화하는 것입니다.
LoRA는 어떻게 작동할까요?
LLM의 각 레이어에는 거대한 가중치 행렬(Weight Matrix, W)이 있습니다. 전체 파인튜닝에서는 이 행렬 W를 직접 업데이트하지만, LoRA는 다른 방식을 취합니다.
- 원본 가중치 고정: 기존의 사전 훈련된 가중치 행렬 W는 학습 중에 변경되지 않도록 고정(freeze)합니다.
- 저계수 행렬 추가: W 옆에 훨씬 작은 두 개의 행렬, 즉 ‘저계수 행렬’ A와 B를 추가합니다. 이 두 행렬만이 학습의 대상이 됩니다.
- 행렬 분해: 원래 가중치 업데이트량(ΔW)을 두 개의 작은 행렬(A와 B)의 곱(BA)으로 근사(approximate)합니다. 여기서 A는 (d x r), B는 (r x d) 차원을 가지며, r(rank)은 원래 차원 d보다 훨씬 작은 값입니다. (예: r=8, 16, d=4096)
- 최종 출력 계산: 모델의 최종 출력은 원본 가중치 W를 통과한 결과와, 두 개의 작은 행렬 BA를 통과한 결과를 더해서 계산됩니다. 즉,
h = Wx + BAx가 됩니다.
학습이 끝나면 우리는 원본 모델 W와는 별개로, 아주 작은 크기의 행렬 A와 B만 저장하면 됩니다. 추론 시에는 W' = W + BA처럼 두 가중치를 합쳐서 사용하거나, 분리된 상태 그대로 사용할 수 있습니다.
LoRA의 장점
- 파라미터 수 감소: 랭크®를 작게 설정하면 학습해야 할 파라미터 수가 극적으로 줄어듭니다. 예를 들어, 랭크를 8로 설정하면 훈련 가능한 파라미터 수가 수백만 개 수준으로 줄어들 수 있습니다.
- 메모리 및 계산 비용 절감: 학습할 파라미터가 적으니 당연히 GPU 메모리 사용량과 학습 시간이 줄어듭니다.
- 과적합(Overfitting) 위험 감소: 더 적은 파라미터를 학습시키므로, 제한된 데이터셋에 모델이 과도하게 맞춰지는 과적합의 위험이 줄어듭니다.
- 유연한 모델 적용: 모델의 특정 부분(예: 어텐션 레이어)에만 LoRA를 선택적으로 적용할 수 있어 미세 조정이 가능합니다.
III. QLoRA 깊이 보기: 메모리 효율의 극한을 추구하다
QLoRA(Quantized Low-Rank Adaptation)는 LoRA를 한 단계 더 발전시킨 기술입니다. 이름의 'Q’가 의미하듯, 양자화(Quantization) 기술을 접목하여 메모리 사용량을 극한까지 줄이는 데 초점을 맞춥니다.
QLoRA란 무엇일까요?
QLoRA의 핵심 목표는 LoRA보다도 더 적은 메모리를 사용하면서 비슷한 수준의 성능을 유지하는 것입니다. 이를 위해 다음과 같은 혁신적인 기법들을 도입했습니다.
- 4비트 NF4(NormalFloat) 양자화: QLoRA는 사전 훈련된 LLM의 거대한 가중치(W)를 4비트 NormalFloat(NF4) 라는 새로운 데이터 타입으로 양자화하여 압축합니다. 기존의 32비트 또는 16비트 부동소수점 숫자를 4비트 숫자로 표현함으로써, 모델 가중치가 차지하는 메모리 공간을 1/4 또는 1/8까지 줄일 수 있습니다. 중요한 점은, 이 양자화는 정보 손실을 최소화하도록 설계된 데이터 중심적인 방식이라는 것입니다.
- 이중 양자화(Double Quantization): 양자화 과정 자체에도 추가적인 메모리가 필요한데(양자화 상수 등), QLoRA는 이 상수들마저 다시 한번 양자화하는 '이중 양자화’를 통해 메모리 사용량을 더욱 절약합니다.
- 페이지드 옵티마이저(Paged Optimizers): GPU 메모리가 부족할 경우, 옵티마이저의 상태(state)를 CPU 메모리로 옮기는(offload) 기술을 사용하여 메모리 스파이크 현상을 관리하고 학습 안정성을 높입니다.
학습 과정에서, 고정된 4비트 기본 모델 가중치(W)는 계산이 필요할 때마다 16비트(bfloat16)로 역양자화(dequantized)되어 LoRA 가중치(A, B)와 계산됩니다. LoRA 가중치 자체는 일반적인 16비트 형식으로 학습됩니다.
QLoRA가 LoRA보다 나은 점
- 혁신적인 메모리 절약: 4비트 양자화 덕분에 LoRA보다 훨씬 적은 GPU 메모리로도 거대한 모델을 파인튜닝할 수 있습니다. 예를 들어, 24GB의 GPU 메모리로도 65B(650억) 파라미터 모델을 튜닝하는 것이 가능해집니다.
- 성능 유지: 정밀한 양자화 기법 덕분에, 4비트로 압축했음에도 불구하고 16비트로 파인튜닝한 모델과 거의 동등한 수준의 성능을 유지합니다.
- 접근성 향상: 고가의 하이엔드 GPU가 없는 연구자나 개발자도 비교적 저렴한 소비자용 GPU로 LLM을 파인튜닝할 수 있게 되어 AI 기술의 민주화에 기여합니다.
IV. LoRA vs. QLoRA: 상세 비교 분석
그렇다면 언제 LoRA를 쓰고, 언제 QLoRA를 써야 할까요? 두 기술의 장단점을 명확히 비교해 보겠습니다.
메모리 사용량
단연 QLoRA의 압승입니다. 4비트 양자화는 QLoRA의 가장 큰 특징이자 장점입니다. QLoRA를 사용하면 LoRA 대비 약 30% 정도의 메모리를 절약할 수 있습니다. 예를 들어, LoRA로 21GB의 메모리가 필요했다면 QLoRA로는 14GB 정도면 충분할 수 있습니다. GPU 메모리가 조금 모자라서 학습을 시작조차 못 하는 모델이 있다면 QLoRA가 유일한 해결책이 될 수 있습니다.
학습 속도
여기서는 트레이드오프가 발생합니다. QLoRA는 메모리를 아끼는 대신, 학습 시간이 더 오래 걸립니다. 가중치를 계산할 때마다 4비트에서 16비트로 역양자화하는 과정이 추가되기 때문입니다. 경험적으로 QLoRA는 LoRA보다 약 30% 정도 학습 시간이 더 소요될 수 있습니다. 만약 충분한 GPU 메모리를 확보할 수 있고, 빠른 학습 속도가 더 중요하다면 LoRA가 더 나은 선택일 수 있습니다.
성능 (정확도)
놀랍게도, QLoRA는 극심한 메모리 압축에도 불구하고 성능 저하가 거의 없습니다. 여러 벤치마크 결과에 따르면, QLoRA로 튜닝한 모델은 LoRA나 전체 파인튜닝 모델과 비교했을 때 유의미한 성능 차이가 나지 않는 경우가 많습니다. 특정 벤치마크에서는 미세한 성능 하락이 관찰되기도 하지만, 대부분의 실제 사용 사례에서는 그 차이를 체감하기 어렵습니다.
하이퍼파라미터 튜닝
LoRA와 QLoRA 모두 비슷한 하이퍼파라미터를 공유하며, 이를 어떻게 설정하느냐가 성능에 큰 영향을 미칩니다.
- 랭크 ®: 학습할 파라미터의 수를 결정합니다. 랭크를 높이면 표현력은 좋아질 수 있지만, 파라미터 수가 늘어나고 과적합의 위험도 커집니다. 일반적으로 8, 16, 32, 64 등의 값을 사용하며, “메모리가 허용하는 한 가능한 크게” 설정하는 것이 좋다는 실험 결과도 있습니다.
- 알파 (alpha): LoRA의 스케일링 팩터입니다. 일반적으로 알파는 랭크의 2배로 설정하는 것이 국룰처럼 여겨집니다. (예:
r=16이면alpha=32). 랭크만 올리고 알파를 고정하면 성능이 오히려 나빠질 수 있습니다. - 대상 모듈 (target_modules): LoRA를 적용할 레이어를 지정합니다. 전통적으로는 어텐션 레이어의
query,key에만 적용했지만,value,output및mlp레이어까지 확장하면 성능이 향상되는 경향이 있습니다. 가능한 모든 선형 레이어에 적용하는 것이 좋은 성능을 보인다는 실험 결과가 많습니다.
| 비교 항목 | LoRA | QLoRA | 추천 상황 |
|---|---|---|---|
| 메모리 사용량 | 높음 | 낮음 | GPU 메모리가 부족할 때 QLoRA |
| 학습 속도 | 빠름 | 느림 | 빠른 실험 반복이 필요할 때 LoRA |
| 성능 | 우수 | 거의 동등 | 성능 저하가 우려된다면 LoRA, 하지만 대부분 QLoRA도 충분 |
| 핵심 기술 | 저계수 행렬 분해 | 저계수 행렬 + 4비트 양자화 | - |
V. 실제 적용 사례 및 활용
LoRA와 QLoRA는 다양한 실제 시나리오에서 LLM의 활용도를 높이고 있습니다.
- 챗봇 개인화: 기업은 자사 고객 문의 데이터나 내부 문서를 사용하여 LLM을 파인튜닝함으로써, 자사 제품에 대해 정확히 답변하는 맞춤형 챗봇을 만들 수 있습니다. 이 과정에서 QLoRA를 사용하면 비교적 적은 비용으로도 고품질의 챗봇 구축이 가능합니다.
- 코드 생성 어시스턴트: 특정 프로그래밍 언어, 프레임워크, 또는 회사 내부의 코드 스타일에 맞게 LLM을 튜닝하여 개발 생산성을 높이는 코드 어시스턴트를 만들 수 있습니다.
- 콘텐츠 생성: 특정 작가의 문체나 특정 브랜드의 목소리를 학습시켜, 그 스타일에 맞는 마케팅 카피, 블로그 글, 이메일 등을 자동으로 생성하는 데 활용할 수 있습니다.
저희 FinanceCoreAI에서도 금융 분야에 특화된 LLM을 개발하고 고객사에 제공할 때 LoRA와 QLoRA 기술을 적극적으로 활용하고 있습니다. 방대한 금융 보고서, 뉴스, 규제 문서를 학습시켜 금융 전문가 수준의 분석 및 요약 능력을 갖춘 모델을 만들 때, 전체 파인튜닝은 비용 부담이 매우 큽니다. 이때 QLoRA를 사용하면 합리적인 비용으로 각 고객사의 특정 요구사항(예: 특정 자산 분석, 내부 리스크 평가 기준)에 맞는 맞춤형 모델을 신속하게 제공할 수 있습니다.
미래를 향한 효율적인 걸음
LoRA와 QLoRA는 LLM 시대의 '게임 체인저’입니다. 이 기술들은 막대한 컴퓨팅 자원의 장벽을 낮추어, 더 많은 개발자와 기업이 AI의 혜택을 누릴 수 있도록 만들었습니다.
- LoRA는 속도와 효율성 사이의 훌륭한 균형점을 제공하며, 빠른 프로토타이핑과 실험에 이상적입니다.
- QLoRA는 메모리 효율성을 극한으로 끌어올려, 제한된 하드웨어 환경에서도 거대 모델을 다룰 수 있는 길을 열어주었습니다.
결론적으로, GPU 메모리가 충분하고 빠른 학습이 우선이라면 LoRA를, 메모리가 부족하거나 비용을 최소화하며 고성능을 유지하고 싶다면 QLoRA를 선택하는 것이 현명한 전략입니다.
AI 기술은 계속해서 발전하고 있으며, 파인튜닝 기술 또한 더욱 효율적이고 강력해질 것입니다. LoRA와 QLoRA와 같은 PEFT 기법을 이해하고 활용하는 것은, 빠르게 변화하는 AI 생태계에서 경쟁력을 유지하고 혁신을 이끌어가는 중요한 열쇠가 될 것입니다.