AL,ML 학부연구생/공부 기록

PEFT 중 LoRA 파인튜닝은 무엇인가? LoRA 이해하기

김형준 2026. 5. 18. 16:10
반응형

LoRA 개요

1. 정의

LoRA(Low-Rank Adaptation)는 대형 언어 모델(LLM)의 전체 가중치를 직접 학습하지 않고, 기존 가중치는 고정한 상태에서 작은 추가 학습 모듈만 학습하는 파라미터 효율적 미세조정(Parameter-Efficient Fine-Tuning, PEFT) 기법입니다.

일반적인 full fine-tuning은 모델의 모든 파라미터를 업데이트합니다. 예를 들어 7B 모델이면 약 70억 개 파라미터 전체가 학습 대상입니다. LoRA는 모델의 가중치 대부분을 그대로 두고, 일부 레이어에 작은 행렬 두 개를 추가한 뒤 그 행렬만 학습합니다.

정리하면 다음과 같습니다.


기존 fine-tuning 모델 전체 가중치 W를 직접 업데이트
LoRA 기존 W는 고정하고, 작은 보정값 ΔW만 학습
목적 적은 메모리와 적은 학습 파라미터로 모델을 특정 작업에 적응
핵심 아이디어 “큰 변화도 실제로는 낮은 차원의 작은 변화로 표현할 수 있다”는 가정

즉, LoRA는 큰 모델을 통째로 다시 학습하지 않고, 모델 내부에 작은 조정 장치를 붙여서 원하는 작업에 맞게 조정하는 방식입니다.


2. LoRA가 필요한 이유

2.1 Full Fine-Tuning의 문제

대형 언어 모델을 특정 작업에 맞게 학습시키려면 보통 fine-tuning을 합니다. 예를 들어 의료 대화에서 agenda item을 추출하는 모델을 만들고 싶다면, Llama 같은 사전학습 모델을 의료 대화 데이터로 추가 학습시켜야 합니다.

그러나 full fine-tuning에는 다음 문제가 있습니다.

문제설명
메모리 사용량 큼 모델 전체 파라미터, gradient, optimizer state를 모두 저장해야 함
저장 공간 큼 작업마다 전체 모델 checkpoint를 저장해야 함
학습 비용 큼 GPU 메모리와 시간이 많이 필요
배포 비효율 작업별로 큰 모델 파일을 따로 관리해야 함
과적합 위험 데이터가 적은 경우 전체 모델을 수정하면 일반 성능이 손상될 수 있음

예를 들어 7B 모델을 full fine-tuning하면 단순히 모델 가중치만 필요한 것이 아닙니다. 학습 중에는 gradient, optimizer state, activation까지 필요합니다. Adam optimizer를 사용하면 optimizer state가 매우 커지므로 실제 메모리 요구량은 모델 크기보다 훨씬 커집니다.

2.2 LoRA의 해결 방식

LoRA는 다음 방식으로 문제를 줄입니다.

기존 모델 파라미터는 freeze합니다.
작은 adapter 행렬만 학습합니다.
작업별로 adapter만 저장합니다.
추론 시 원본 모델 + adapter를 조합합니다.

따라서 작업 A, 작업 B, 작업 C가 있어도 모델 전체를 각각 저장할 필요가 없습니다. 원본 모델 하나와 LoRA adapter 여러 개만 저장하면 됩니다.


3. LoRA의 핵심 수식

3.1 기본 선형 레이어

Transformer 내부에는 많은 선형 변환이 있습니다. 예를 들어 어떤 레이어의 weight를 W라고 하면 일반적인 계산은 다음과 같습니다.

h = W x
 

여기서:

기호의미
x 입력 벡터
W 원래 모델의 weight matrix
h 출력 벡터

Full fine-tuning에서는 W 자체를 업데이트합니다.

W ← W + update
 

3.2 LoRA 적용 후

LoRA에서는 W를 직접 바꾸지 않습니다. 대신 W 옆에 작은 보정값 ΔW를 추가합니다.

h = W x + ΔW x
 

여기서 ΔW는 다음과 같이 두 개의 작은 행렬 곱으로 표현됩니다.

ΔW = B A
 

따라서 전체 계산은 다음과 같습니다.

h = W x + B A x
 

여기서:

기호의미
W 기존 모델의 원래 가중치, 학습하지 않음
A 작은 down-projection 행렬, 학습함
B 작은 up-projection 행렬, 학습함
ΔW LoRA가 만들어내는 보정 가중치
r rank, LoRA 내부 차원

3.3 차원 예시

원래 weight W의 크기가 다음과 같다고 하겠습니다.

W: 4096 × 4096
 

그러면 W의 파라미터 수는 다음과 같습니다.

4096 × 4096 = 16,777,216
 

약 1,677만 개입니다.

LoRA rank r = 8이라면 A와 B는 보통 다음 크기를 가집니다.

A: 8 × 4096
B: 4096 × 8
 

LoRA 학습 파라미터 수는 다음과 같습니다.

A 파라미터 수 = 8 × 4096 = 32,768
B 파라미터 수 = 4096 × 8 = 32,768
총합 = 65,536
 

비교하면 다음과 같습니다.

방식학습 파라미터 수
W 전체 학습 16,777,216
LoRA rank 8 65,536

즉, 해당 레이어 기준으로 학습 파라미터 수가 약 256분의 1 수준으로 줄어듭니다.


4. Low-Rank의 의미

4.1 Rank란 무엇인가

행렬의 rank는 행렬이 표현할 수 있는 독립적인 정보의 차원입니다. 쉽게 말하면, 어떤 큰 행렬이 실제로는 몇 개의 핵심 방향으로 설명될 수 있는지를 나타냅니다.

LoRA의 가정은 다음과 같습니다.

대형 모델을 특정 작업에 맞게 조정할 때 필요한 변화량 ΔW는 전체 차원을 모두 사용할 필요가 없고, 낮은 rank의 작은 행렬로도 충분히 표현할 수 있다.

즉, 모델 전체를 크게 바꿔야 하는 것처럼 보이지만 실제로는 특정 작업에 필요한 변화가 비교적 저차원 구조를 가진다고 보는 것입니다.

4.2 직관적 설명

예를 들어 어떤 LLM이 이미 언어 이해, 문법, 일반 지식, 추론 능력을 가지고 있다고 하겠습니다. 의료 대화 요약 작업을 추가로 학습할 때는 모델 전체 지식을 처음부터 다시 배우는 것이 아닙니다.

필요한 것은 대체로 다음과 같은 조정입니다.

의료 대화에서 어떤 발화가 중요한지 구분
증상, 약물, 검사, follow-up을 잘 요약
출력 형식을 JSON으로 맞춤
불필요한 인사말은 irrelevant로 분류
환자 발화와 의사 발화를 구분

이런 변화는 모델 전체 지식의 완전한 재학습이 아니라, 기존 능력 위에 얹는 작업별 조정에 가깝습니다. LoRA는 이 조정을 작은 행렬로 표현합니다.


5. LoRA가 적용되는 위치

LoRA는 Transformer의 모든 가중치에 붙일 수도 있지만, 일반적으로 특정 projection layer에만 붙입니다.

대표적인 적용 위치는 다음과 같습니다.

위치설명
q_proj Query projection
k_proj Key projection
v_proj Value projection
o_proj Attention output projection
gate_proj MLP gate projection
up_proj MLP up projection
down_proj MLP down projection

5.1 Attention 내부 적용

Transformer attention에서는 입력 hidden state가 Q, K, V로 변환됩니다.

Q = Wq x
K = Wk x
V = Wv x
 

LoRA를 q_proj와 v_proj에 적용하면 다음과 같습니다.

Q = Wq x + Bq Aq x
V = Wv x + Bv Av x
 

즉, 원래 attention 계산 구조는 유지하되 query와 value 계산에 작은 학습 가능한 보정 경로를 추가합니다.

 

5.2 Query

Q(Query)는 현재 토큰이 “무엇을 찾고 있는지”를 나타내는 벡터입니다.

수식으로는 다음과 같습니다.

Q = Wq x
 

여기서:

기호의미
x 입력 hidden state
Wq Query projection matrix
Q query vector

즉, 원래 입력 x를 Wq라는 행렬로 변환해서 Query 벡터를 만듭니다.

5.2.2 역할

Q는 현재 토큰의 관점에서 만들어집니다.

예를 들어 she라는 토큰의 Q는 다음 의미에 가깝습니다.

나는 내가 가리키는 대상이 누구인지 찾고 싶다.
 

pain이라는 토큰의 Q는 다음 의미에 가깝습니다.

나는 어떤 부위의 통증인지, 누가 겪는 통증인지 알고 싶다.
 

즉, Q는 현재 토큰이 다른 토큰에게 던지는 질문입니다.


5.3 K: Key

5.3.1 정의

K(Key)는 각 토큰이 “나는 이런 정보를 가지고 있다”라고 표시하는 벡터입니다.

수식은 다음과 같습니다.

K = Wk x
 

여기서:

기호의미
x 입력 hidden state
Wk Key projection matrix
K key vector

5.3.2 역할

K는 각 토큰의 검색용 태그 또는 주소표 역할을 합니다.

예를 들어 patient라는 토큰의 K는 다음 정보와 관련될 수 있습니다.

나는 사람/환자/주어에 관한 정보다.
 

chest라는 토큰의 K는 다음 정보와 관련될 수 있습니다.

나는 신체 부위 정보다.
 

pain이라는 토큰의 K는 다음 정보와 관련될 수 있습니다.

나는 증상 정보다.
 

Q와 K는 서로 비교됩니다.

Q · K
 

이 값이 크면 현재 토큰이 해당 토큰을 많이 참고합니다.
이 값이 작으면 적게 참고합니다.


5.4 V: Value

5.4.1 정의

V(Value)는 attention으로 선택되었을 때 실제로 가져오는 정보입니다.

수식은 다음과 같습니다.

V = Wv x
 

여기서:

기호의미
x 입력 hidden state
Wv Value projection matrix
V value vector

5.4.2 역할

Q와 K는 “얼마나 참고할지”를 정하는 데 사용됩니다.
V는 “참고한 뒤 실제로 가져올 내용”입니다.

즉:

Q와 K = 관련도 계산용
V = 실제 정보 전달용
 

예를 들어 she가 patient를 강하게 참고한다고 하면, 모델은 patient의 V를 많이 가져옵니다. 그 결과 she의 표현에는 “patient와 관련된 정보”가 반영됩니다.


5.5 Q, K, V 전체 흐름

Transformer attention의 전체 흐름은 다음과 같습니다.

1. 각 토큰의 hidden state x에서 Q, K, V를 만든다.

2. 현재 토큰의 Q와 모든 토큰의 K를 비교한다.

3. 비교 점수에 softmax를 적용해서 attention weight를 만든다.

4. attention weight를 이용해 각 토큰의 V를 가중합한다.

5. 그 결과가 현재 토큰의 새로운 표현이 된다.
 

수식으로는 다음과 같습니다.

Attention(Q, K, V) = softmax(QKᵀ / √d) V
 

각 부분의 의미는 다음과 같습니다.

5.6 어디에 붙이는 것이 좋은가

일반적으로 다음 기준을 따릅니다.

설정특징
q_proj, v_proj만 적용 가장 가벼움. 메모리 절약 큼
q_proj, k_proj, v_proj, o_proj 적용 attention 전체 조정 가능
attention + MLP 전체 적용 성능은 좋아질 수 있으나 학습 파라미터 증가
all linear 적용 가장 강력하지만 비용 증가

작은 데이터셋에서는 너무 많은 레이어에 LoRA를 붙이면 과적합이 발생할 수 있습니다. 반대로 복잡한 작업에서는 q_proj, v_proj만으로 부족할 수 있습니다.


6. LoRA 학습 절차

6.1 전체 절차

LoRA 학습은 다음 순서로 진행됩니다.

  1. 사전학습 모델 로드
  2. 모델 파라미터 freeze
  3. LoRA adapter 삽입
  4. 학습 데이터 준비
  5. adapter만 학습
  6. 검증 데이터로 평가
  7. adapter 저장
  8. 추론 시 원본 모델과 adapter 결합

6.2 단계별 설명

1단계. Base Model 선택

예시:

Llama 3.2 3B
Mistral 7B
Qwen 계열 모델
Gemma 계열 모델
 

프로젝트 문서 기준으로는 Llama 3.2 3B를 primary model로 사용하고, fine-tuning은 QLoRA rank 32–64로 계획되어 있습니다.

2단계. 데이터 형식 정의

예를 들어 agenda extraction 모델을 학습한다면 입력과 출력은 다음처럼 구성할 수 있습니다.

 
{
  "input": "[Context]: Patient presents with chronic cough | Cough produces yellow mucus\n[Utterance]: [Patient] Night sweats too, maybe for a week.",
  "output": "{\"relevant\": true, \"type\": \"detail\", \"summary\": \"Patient reports night sweats for approximately one week\"}"
}
 

프로젝트 문서에서도 모델 입력은 [Context]와 [Utterance]이고, 출력은 relevant, type, summary의 3개 필드로 제한됩니다.

3단계. Tokenization

입출력 문장을 tokenizer로 변환합니다.

문자열 → token id sequence
 

학습에서는 보통 instruction 부분은 loss에서 제외하고, output 부분에 대해서만 loss를 계산하는 방식을 사용합니다.

예:

입력: [Context] ... [Utterance] ...
정답: {"relevant": true, ...}
 

모델이 정답 JSON을 생성하도록 학습합니다.

4단계. LoRA 설정

대표적인 설정값은 다음과 같습니다.

항목의미
r LoRA rank
lora_alpha LoRA scaling factor
lora_dropout adapter 경로 dropout
target_modules LoRA를 붙일 레이어
bias bias 학습 여부
task_type causal LM, seq2seq 등

예시 설정:

 
r = 16
lora_alpha = 32
lora_dropout = 0.05
target_modules = ["q_proj", "v_proj"]
 

5단계. 학습

학습 중 업데이트되는 것은 LoRA adapter의 A, B 행렬뿐입니다.

원본 모델 W: 고정
LoRA A: 학습
LoRA B: 학습
 

6단계. 저장

학습 후 저장되는 것은 보통 adapter weight입니다.

adapter_model.safetensors
adapter_config.json
 

원본 모델을 다시 저장할 필요가 없습니다.

7단계. 추론

추론 시에는 다음 구조로 사용합니다.

Base Model + LoRA Adapter
 

또는 adapter를 base model에 merge하여 사용할 수 있습니다.


7. LoRA의 주요 하이퍼파라미터

7.1 r, rank

r은 LoRA의 내부 차원입니다.

ΔW = B A
A: r × input_dim
B: output_dim × r
 

r이 작으면 학습 파라미터가 적고 가볍습니다.
r이 크면 표현력이 커지지만 메모리 사용량과 과적합 위험이 증가합니다.

r 값특징
4 매우 가벼움, 단순 작업에 적합
8 일반적인 저비용 설정
16 성능과 비용 균형
32 복잡한 instruction tuning에 자주 사용
64 더 강한 적응 가능, 비용 증가
128 이상 큰 데이터 또는 고난도 작업에서 고려

프로젝트 문서에서는 QLoRA rank 32–64를 계획하고 있습니다. 이는 agenda extraction처럼 출력 형식과 도메인 적응이 모두 필요한 작업에서 비교적 강한 adapter를 쓰려는 설정입니다.

7.2 lora_alpha

lora_alpha는 LoRA 보정값의 scale을 조절합니다.

일반적으로 LoRA 출력은 다음처럼 scaling됩니다.

h = W x + (alpha / r) B A x
 

여기서 alpha / r이 scaling factor입니다.

설정영향
alpha가 작음 LoRA 영향 약함
alpha가 큼 LoRA 영향 강함
alpha/r 실제 보정 강도

예:

r = 16
alpha = 32
alpha/r = 2
 

7.3 learning rate

LoRA는 전체 모델보다 학습 파라미터가 적기 때문에 full fine-tuning보다 learning rate를 크게 잡는 경우가 많습니다.

일반 범위:

1e-4 ~ 2e-4: 일반 LoRA/QLoRA instruction tuning
5e-5: 안정적인 task fine-tuning
1e-5: 작은 실제 데이터로 calibration
 

프로젝트 문서에서도 3단계 학습률을 다음처럼 설정합니다.

단계데이터학습률
Phase 1 Synthetic + NoteChat subset 1e-4
Phase 2 MTS-Dialog + ACI + PriMock + AMI 5e-5
Phase 3 Penn Medicine train conversations 1e-5

해당 구성은 “대규모 일반 적응 → 작업 적응 → 실제 데이터 보정” 순서입니다.


8. LoRA의 장점

8.1 학습 파라미터 수 감소

LoRA의 가장 큰 장점은 학습할 파라미터 수가 매우 적다는 점입니다.

예를 들어 전체 모델이 7B라도 실제 학습 파라미터는 수백만 개에서 수천만 개 수준일 수 있습니다. 이는 전체 대비 1% 미만인 경우가 많습니다.

8.2 GPU 메모리 절약

원본 모델을 업데이트하지 않으므로 gradient와 optimizer state를 전체 파라미터에 대해 저장할 필요가 없습니다.

메모리 측면에서 대략 다음과 같이 차이가 납니다.

방식메모리 부담

 

Full fine-tuning 매우 큼
LoRA 중간 이하
QLoRA 더 작음

8.3 저장 공간 절약

작업별로 전체 모델 checkpoint를 저장하지 않고 adapter만 저장합니다.

예:

base_model/
adapter_medical_summary/
adapter_code_generation/
adapter_clinical_agenda/
adapter_customer_service/
 

작업별 adapter만 교체하면 같은 base model을 여러 용도로 사용할 수 있습니다.

8.4 배포 유연성

하나의 base model에 여러 adapter를 붙일 수 있습니다.

예:

Adapter목적
clinical_agenda_lora 의료 대화 agenda 추출
summarization_lora 문서 요약
legal_lora 법률 문서 분석
customer_support_lora 고객 상담 응답

8.5 과적합 완화

작은 데이터셋에서 전체 모델을 업데이트하면 모델의 일반 능력이 손상될 수 있습니다. LoRA는 변경 가능한 부분을 제한하므로 과도한 변형을 줄일 수 있습니다.


9. LoRA의 단점

9.1 표현력 제한

LoRA는 low-rank 업데이트만 허용합니다. 따라서 작업이 매우 복잡하거나 기존 모델 능력과 크게 다른 경우에는 full fine-tuning보다 성능이 낮을 수 있습니다.

예:

기존 모델이 거의 모르는 언어 학습
매우 특수한 수학/코드 도메인
새로운 modality 처리
기존 tokenizer로 표현이 어려운 도메인
 

 


10. LoRA와 Prompt Tuning의 차이

Prompt tuning은 모델 앞에 학습 가능한 virtual token을 붙이는 방식입니다.

구분Prompt TuningLoRA
학습 대상 입력 앞의 virtual prompt embedding  
모델 내부 수정 거의 없음  
성능 작은 모델에서는 제한적일 수 있음  
LoRA 모델 내부 projection에 low-rank adapter 삽입  
표현력 LoRA가 일반적으로 더 큼  

Prompt tuning은 매우 가볍지만, 모델 내부 계산 자체를 조정하는 능력은 LoRA보다 약한 경우가 많습니다.


12. LoRA와 Full Fine-Tuning 비교

항목Full Fine-TuningLoRA
학습 대상 전체 모델  
메모리 사용 매우 큼  
저장 파일 전체 모델 checkpoint  
성능 상한 높음  
과적합 위험 데이터 적으면 높음  
작업별 관리 비효율적  
LoRA 학습 대상 adapter만  
LoRA 메모리 작음  
LoRA 저장 파일 adapter만  
LoRA 성능 대부분 작업에서 효율 대비 우수  
LoRA 배포 base model + adapter  

정리하면 full fine-tuning은 가장 직접적이고 강력하지만 비용이 큽니다. LoRA는 약간의 성능 손실을 감수할 수 있는 대신 훨씬 효율적입니다.


13. LoRA와 QLoRA의 관계

13.1 QLoRA 정의

QLoRA는 Quantized LoRA입니다.

LoRA는 원본 모델을 보통 FP16 또는 BF16 상태로 두고 adapter만 학습합니다.
QLoRA는 원본 모델을 4-bit로 양자화한 상태에서 adapter만 학습합니다.

즉:

LoRA = 원본 모델 고정 + low-rank adapter 학습
QLoRA = 4-bit 원본 모델 고정 + low-rank adapter 학습
 

13.2 비교

항목LoRAQLoRA
원본 모델 precision FP16/BF16이 일반적  
QLoRA 원본 모델 precision 4-bit  
학습 대상 adapter  
QLoRA 학습 대상 adapter  
메모리 사용 작음  
QLoRA 메모리 사용 더 작음  
장점 안정적, 구현 단순  
QLoRA 장점 저메모리 환경에서 큰 모델 학습 가능  
단점 QLoRA보다 메모리 큼  
QLoRA 단점 양자화 관련 복잡성 증가  

프로젝트처럼 Jetson AGX Orin 환경에서 Llama 3.2 3B를 다루는 경우, QLoRA가 더 현실적입니다. 문서에서도 Llama 3.2 3B는 GGUF Q4_K_M 형태로 운용되고, fine-tuning은 QLoRA로 계획되어 있습니다.


14. LoRA의 내부 동작 상세

14.1 기존 weight update 관점

Full fine-tuning에서는 어떤 레이어의 weight가 다음처럼 바뀝니다.

W' = W + ΔW
 

여기서 ΔW는 W와 같은 크기의 큰 행렬입니다.

LoRA는 이 ΔW를 직접 학습하지 않고, 낮은 rank 행렬 곱으로 근사합니다.

ΔW ≈ B A
 

따라서:

W' = W + B A
 

그러나 실제 학습 중에는 W'를 직접 만들지 않고 forward 계산에서 다음처럼 더합니다.

output = W x + B A x
 

14.2 초기화 방식

일반적으로 LoRA에서는 A는 random initialization, B는 zero initialization을 사용합니다.

이유는 학습 시작 시 모델 출력이 원본 모델과 동일하도록 만들기 위해서입니다.

B = 0이면
B A x = 0
따라서 output = W x
 

즉, 학습 시작 시점에는 LoRA가 모델 행동을 바꾸지 않습니다. 이후 학습이 진행되면서 B와 A가 업데이트되어 점진적으로 보정 효과를 만듭니다.

14.3 Scaling

LoRA 출력은 보통 다음처럼 scaling됩니다.

output = W x + (alpha / r) B A x
 

이 scaling은 LoRA 보정값이 너무 작거나 너무 커지는 것을 조절합니다.


15. LoRA 파라미터 수 계산법

어떤 linear layer가 다음 shape을 가진다고 하겠습니다.

W: d_out × d_in
 

LoRA rank가 r이면:

A: r × d_in
B: d_out × r
 

LoRA 파라미터 수:

r × d_in + d_out × r
= r(d_in + d_out)
 

예시:

d_in = 4096
d_out = 4096
r = 16
 
LoRA params = 16 × (4096 + 4096)
            = 16 × 8192
            = 131,072
 

원래 W는:

4096 × 4096 = 16,777,216
 

비율:

131,072 / 16,777,216 = 0.0078125
 

즉, 약 0.78%입니다.


16. LoRA가 학습하는 것

LoRA가 학습하는 것은 “새로운 지식 전체”라기보다, 기존 모델의 특정 표현을 작업에 맞게 조정하는 방향입니다.

예를 들어 의료 대화 agenda extraction에서 LoRA는 다음을 학습합니다.

환자의 주호소를 agenda_item으로 분류
증상 기간, 강도, 위치를 detail로 분류
약물 이름과 복용량을 medication으로 분류
검사, 처방, referral을 follow_up으로 분류
질문이 미해결이면 question_unanswered로 분류
출력을 지정된 JSON 형식으로 생성
불필요한 발화는 relevant=false로 처리

프로젝트 문서에서도 모델 출력은 relevant, type, summary 세 필드로 제한되며, linking이나 resolution tracking은 모델이 아니라 deterministic system tracker의 역할로 분리되어 있습니다.


17. LoRA와 Quantization

17.1 Quantization이란

Quantization은 모델 weight를 FP16, BF16 같은 고정밀 형식에서 INT8, INT4 같은 저정밀 형식으로 줄이는 방법입니다.

목적:

메모리 감소
추론 속도 향상 가능
저사양 장비 배포
 

17.2 LoRA와 Quantization 조합

LoRA는 양자화와 잘 결합됩니다.

대표 조합:

8-bit base model + LoRA
4-bit base model + LoRA = QLoRA
 

프로젝트에서는 Jetson 환경에서 GGUF Q4_K_M 형식을 사용합니다. 문서상 Llama 3.2 3B Q4_K_M의 예상 메모리는 약 2GB, 속도는 약 40–60 tok/s로 제시되어 있습니다.

 


18. LoRA를 한 문장으로 요약

LoRA는 거대한 LLM 전체를 다시 학습하지 않고, 기존 모델을 고정한 채 작은 low-rank 보정 행렬만 학습하여 특정 작업에 맞게 모델을 효율적으로 조정하는 방법입니다.

더 짧게 말하면 다음과 같습니다.

LoRA = 원본 모델은 그대로 두고, 작은 adapter만 학습하는 fine-tuning 방식
 

QLoRA까지 포함하면 다음과 같습니다.

QLoRA = 4-bit로 줄인 원본 모델 위에 LoRA adapter만 학습하는 저메모리 fine-tuning 방식
 

19. 핵심 암기 표

개념설명
LoRA Low-Rank Adaptation
목적 대형 모델을 적은 비용으로 fine-tuning
핵심 W는 고정, ΔW만 학습
수식 W' = W + BA
학습 대상 A, B 행렬
r LoRA rank, adapter 내부 차원
alpha LoRA 보정값 scale
dropout adapter 경로 regularization
target_modules LoRA를 붙일 레이어
장점 메모리 절약, 저장 공간 절약, 빠른 학습
단점 표현력 제한, 설정 민감도
QLoRA 4-bit 양자화 모델 + LoRA
프로젝트 적용 Llama 3.2 3B를 agenda extraction용으로 QLoRA fine-tuning

20. 최종 정리

LoRA를 이해할 때 가장 중요한 구조는 다음 하나입니다.

기존 모델:
output = W x

LoRA 적용:
output = W x + B A x
 

여기서 W는 학습하지 않습니다.
A와 B만 학습합니다.
A와 B는 작습니다.
그래서 학습이 가볍습니다.
하지만 W에 대한 보정 효과를 낼 수 있습니다.

따라서 LoRA는 LLM fine-tuning에서 가장 많이 쓰이는 효율화 기법 중 하나입니다. 특히 GPU 메모리가 제한된 환경, 여러 작업별 adapter를 관리해야 하는 환경, 데이터가 아주 많지는 않지만 특정 출력 형식과 도메인 적응이 필요한 환경에서 매우 적합합니다.

 

 

반응형