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

파인튜닝 LoRA의 확장형 QLoRA 는 무엇인가? QLoRA 이해하기

김형준 2026. 5. 19. 18:18
반응형

QLoRA 개요

1. 정의

QLoRA(Quantized Low-Rank Adaptation)는 사전학습된 대형 언어 모델을 저비트, 보통 4-bit로 양자화한 상태로 고정하고, 그 위에 LoRA adapter만 추가하여 학습하는 파라미터 효율적 미세조정 방식입니다.

한 문장으로 정의하면 다음과 같습니다.

QLoRA = 4-bit로 압축한 원본 LLM + 학습 가능한 LoRA adapter
 

즉, QLoRA는 LoRA의 확장형입니다.

LoRA는 원본 모델을 고정하고 작은 low-rank adapter만 학습합니다.
QLoRA는 여기에 원본 모델을 4-bit로 양자화하여 메모리 사용량을 더 줄이는 방식을 추가합니다.

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

구분설명
LoRA 원본 모델을 고정하고 작은 adapter만 학습
QLoRA 원본 모델을 4-bit로 양자화한 뒤 adapter만 학습
목적 적은 GPU 메모리로 큰 LLM을 fine-tuning
핵심 base model은 압축하고, 학습은 LoRA adapter에서만 수행
대표 사용 상황 단일 GPU, 저메모리 GPU, Jetson 같은 edge device 환경

2. QLoRA가 필요한 이유

2.1 Full Fine-Tuning의 메모리 문제

대형 언어 모델을 full fine-tuning하려면 모델 전체 파라미터를 업데이트해야 합니다.

예를 들어 7B 모델을 학습한다고 하면 단순히 7B개의 weight만 필요한 것이 아닙니다. 학습 중에는 다음 항목이 모두 필요합니다.

1. 모델 weight
2. gradient
3. optimizer state
4. activation
5. temporary buffer
 

특히 Adam optimizer는 보통 각 파라미터마다 2개의 momentum state를 추가로 가집니다. 따라서 실제 학습 메모리는 모델 weight 크기보다 훨씬 커집니다.

예를 들어 FP16 기준으로 7B 모델의 weight만 대략 다음 정도입니다.

7B parameters × 2 bytes = 약 14GB
 

하지만 학습에는 gradient, optimizer state, activation까지 필요하므로 실제로는 수십 GB 이상의 GPU 메모리가 필요합니다.

2.2 LoRA만으로도 부족할 수 있음

LoRA는 원본 모델을 freeze하고 adapter만 학습하므로 full fine-tuning보다 훨씬 가볍습니다. 그러나 원본 모델 자체를 FP16/BF16으로 메모리에 올려야 한다면 여전히 부담이 큽니다.

예를 들어 7B 모델을 FP16으로 올리면 weight만 약 14GB입니다. 13B 모델은 weight만 약 26GB입니다.

즉, LoRA는 학습 대상 파라미터를 줄이지만, base model을 메모리에 올리는 비용은 여전히 큽니다.

2.3 QLoRA의 해결 방식

QLoRA는 이 문제를 다음 방식으로 해결합니다.

1. base model을 4-bit로 양자화한다.
2. 양자화된 base model은 freeze한다.
3. LoRA adapter만 FP16/BF16 등으로 학습한다.
4. gradient는 adapter에 대해서만 계산한다.
 

따라서 base model의 메모리 사용량을 크게 줄이고, 실제 학습은 작은 adapter에서만 수행할 수 있습니다.


3. QLoRA의 핵심 구조

QLoRA는 다음 세 요소로 구성됩니다.

1. Quantized Base Model
2. LoRA Adapter
3. Dequantization-based Forward Computation
 

3.1 Quantized Base Model

원본 LLM의 weight를 4-bit로 저장합니다.

예를 들어 원래 weight가 FP16이면 각 파라미터가 16-bit입니다.

FP16 = 16-bit = 2 bytes
 

4-bit 양자화하면 각 파라미터는 4-bit입니다.

4-bit = 0.5 bytes
 

단순 계산으로는 weight 저장량이 4분의 1 수준으로 줄어듭니다.

16-bit → 4-bit
메모리 약 75% 감소
 

3.2 LoRA Adapter

base model은 양자화되어 고정되고, 실제 학습은 LoRA adapter에서만 일어납니다.

기존 LoRA 수식은 다음과 같습니다.

output = W x + B A x
 

QLoRA에서는 W가 양자화된 weight입니다.

output = dequantize(W_4bit) x + B A x
 

여기서:

기호의미
W_4bit 4-bit로 저장된 원본 모델 weight
dequantize(W_4bit) 계산 시 임시로 복원된 weight
A, B 학습 가능한 LoRA 행렬
BAx LoRA adapter가 만드는 보정값

3.3 Forward Computation

QLoRA에서 계산은 대략 다음과 같습니다.

1. 4-bit weight를 메모리에 저장한다.
2. forward 계산 시 필요한 부분을 dequantize한다.
3. dequantized weight로 base model 출력을 계산한다.
4. LoRA adapter 출력을 더한다.
5. loss를 계산한다.
6. backward에서 adapter만 업데이트한다.
 

중요한 점은 4-bit base model 자체는 학습되지 않는다는 것입니다.


4. QLoRA와 LoRA의 차이

4.1 핵심 차이

항목LoRAQLoRA
원본 모델 상태 FP16/BF16인 경우가 많음 4-bit 양자화
원본 모델 학습 여부 freeze freeze
학습 대상 LoRA adapter LoRA adapter
메모리 사용량 full fine-tuning보다 작음 LoRA보다 더 작음
계산 복잡도 상대적으로 단순 양자화/역양자화 처리 필요
적합 환경 GPU 메모리가 어느 정도 있을 때 메모리 제약이 큰 환경
대표 목적 효율적 fine-tuning 초저메모리 fine-tuning

4.2 직관적 비교

LoRA는 다음과 같습니다.

큰 모델은 그대로 메모리에 올림
큰 모델은 학습하지 않음
작은 adapter만 학습
 

QLoRA는 다음과 같습니다.

큰 모델을 4-bit로 압축해서 메모리에 올림
큰 모델은 학습하지 않음
작은 adapter만 학습
 

즉, QLoRA는 LoRA의 장점에 base model 메모리 절약을 추가한 방식입니다.


5. QLoRA의 수식

5.1 일반 LoRA 수식

기존 선형 레이어는 다음과 같습니다.

h = W x
 

LoRA 적용 후:

h = W x + ΔW x
 

여기서:

ΔW = B A
 

따라서:

h = W x + B A x
 

5.2 QLoRA 수식

QLoRA에서는 W가 4-bit로 저장되어 있습니다.

W_q = Quantize(W)
 

계산 시에는 다음처럼 사용합니다.

h = Dequantize(W_q) x + B A x
 

여기서:

기호의미
W 원래 FP16/BF16/FP32 weight
W_q 4-bit로 양자화된 weight
Dequantize(W_q) 계산을 위해 임시 복원한 weight
A, B 학습되는 LoRA adapter
B A x task-specific 보정값

중요한 점은 다음입니다.

W_q는 업데이트하지 않는다.
A와 B만 업데이트한다.
 

6. Quantization이란 무엇인가

QLoRA를 이해하려면 quantization, 즉 양자화를 이해해야 합니다.

6.1 Quantization 정의

Quantization은 모델의 weight를 고정밀 숫자 형식에서 저정밀 숫자 형식으로 변환하는 압축 기법입니다.

예를 들어:

FP32 → FP16
FP16 → INT8
FP16 → INT4
 

LLM에서 QLoRA는 보통 4-bit quantization을 사용합니다.

6.2 왜 양자화하는가

목적은 다음과 같습니다.

1. 메모리 사용량 감소
2. 큰 모델을 작은 GPU에 올리기
3. 학습 또는 추론 비용 감소
4. edge device 배포 가능성 증가
 

6.3 양자화의 기본 원리

실수 weight가 있다고 하겠습니다.

[-1.2, -0.8, 0.0, 0.3, 0.9, 1.4]
 

이 값을 4-bit로 표현하려면 가능한 값의 개수가 제한됩니다.

4-bit는 다음 개수의 값을 표현할 수 있습니다.

2^4 = 16개 값
 

즉, 연속적인 실수를 16개의 대표값 중 하나로 근사합니다.

예:

-1.2 → code 0
-0.8 → code 2
0.0  → code 8
0.3  → code 10
0.9  → code 13
1.4  → code 15
 

저장할 때는 code만 저장하고, 계산할 때는 scale 등을 이용해 실수값으로 복원합니다.


7. 4-bit 양자화의 의미

7.1 bit 수 비교

형식bitbyte설명
FP32 32-bit 4 bytes 고정밀
FP16 16-bit 2 bytes 일반적인 학습/추론
BF16 16-bit 2 bytes 학습 안정성 좋음
INT8 8-bit 1 byte 양자화 추론
INT4 / 4-bit 4-bit 0.5 bytes QLoRA에서 많이 사용

FP16에서 4-bit로 줄이면 weight 저장량은 대략 4분의 1이 됩니다.

7.2 예시 계산

7B 모델을 기준으로 보면:

FP16 weight 크기:
7B × 2 bytes = 약 14GB
 

4-bit로 저장하면:

7B × 0.5 bytes = 약 3.5GB
 

물론 실제로는 scale, zero-point, quantization metadata 등이 추가되므로 정확히 3.5GB만 쓰는 것은 아닙니다. 하지만 FP16보다 훨씬 작아집니다.


9. QLoRA 전체 학습 절차

9.1 절차 요약

1. base model 선택
2. 4-bit quantization으로 모델 로드
3. 원본 모델 freeze
4. LoRA adapter 삽입
5. 학습 데이터 준비
6. forward 시 4-bit weight를 dequantize하여 계산
7. loss 계산
8. backward에서 LoRA adapter만 업데이트
9. validation 평가
10. adapter 저장
 

16. QLoRA에서 학습되는 것과 학습되지 않는 것

16.1 학습되는 것

LoRA A matrix
LoRA B matrix
필요 시 일부 bias
필요 시 task-specific head
 

16.2 학습되지 않는 것

4-bit base model weight
원본 attention weight
원본 MLP weight
원본 embedding 대부분
 

16.3 프로젝트 기준

Agenda LLM에서 QLoRA가 학습하는 것은 다음입니다.

발화가 clinically relevant인지 판단
type을 agenda_item/detail/medication/social_history/follow_up/question_unanswered 중 하나로 분류
한 문장 summary 생성
지정된 JSON 형식 유지
pipe-delimited context 활용
 

반대로 QLoRA 모델이 직접 학습하지 않는 것은 다음입니다.

linking
first-mention detection
resolution tracking
context buffer eviction
 

프로젝트 문서에서는 이 기능들을 system tracker와 context manager가 처리하도록 분리합니다.


 


22. QLoRA의 장점

22.1 매우 낮은 메모리 사용량

QLoRA의 가장 큰 장점입니다.

base model은 4-bit로 저장
학습은 adapter만 수행
 

따라서 큰 모델을 단일 GPU나 제한된 환경에서도 fine-tuning할 수 있습니다.

22.2 저장 공간 절약

학습 후 저장할 것은 adapter입니다.

base model: 한 번만 저장
task adapter: 작업별 저장
 

예:

llama-3.2-3b-base
adapter-clinical-agenda
adapter-medication-summary
adapter-dialogue-state
 

22.3 여러 작업에 유연하게 적용

같은 base model에 여러 adapter를 붙일 수 있습니다.

base model + adapter A
base model + adapter B
base model + adapter C

23. QLoRA의 단점

23.1 양자화 손실

4-bit로 줄이면 원래 weight 정보를 완벽하게 보존하지 못합니다.

가능한 문제:

미세한 표현력 손실
특정 task에서 성능 하락
수치 안정성 문제
 

23.2 구현 복잡도 증가

LoRA보다 QLoRA는 설정이 더 복잡합니다.

bitsandbytes 설정
compute dtype 설정
NF4/FP4 선택
double quantization 선택
device_map 관리
 

37. QLoRA를 한 문장으로 이해하기

QLoRA는 다음 문장으로 이해하면 됩니다.

큰 LLM은 4-bit로 압축해서 메모리에 올리고, 실제 학습은 작은 LoRA adapter만 수행하는 fine-tuning 방식
 

더 구체적으로는 다음입니다.

Base model:
  4-bit quantized, frozen

LoRA adapter:
  FP16/BF16, trainable

Training:
  adapter만 업데이트

Inference:
  quantized base model + trained adapter
 

38. QLoRA 핵심 암기 표

개념설명
QLoRA Quantized Low-Rank Adaptation
기반 LoRA
핵심 4-bit base model + trainable LoRA adapter
base model 양자화되고 freeze됨
학습 대상 LoRA A/B 행렬
주요 목적 저메모리 LLM fine-tuning
주요 기술 NF4, double quantization, paged optimizer
장점 큰 모델을 작은 GPU에서 학습 가능
단점 양자화 손실, 구현 복잡도, 배포 변환 필요
LoRA와 차이 base model을 4-bit로 줄인다는 점
프로젝트 적용 Llama 3.2 3B Agenda LLM fine-tuning

39. 최종 정리

LoRA는 다음 방식입니다.

output = W x + B A x
 

QLoRA는 여기에 quantization을 추가합니다.

output = Dequantize(W_4bit) x + B A x
 

여기서:

W_4bit = 4-bit로 압축된 base model weight
A, B = 학습 가능한 LoRA adapter
 

따라서 QLoRA의 본질은 다음입니다.

원본 모델 전체를 학습하지 않는다.
원본 모델은 4-bit로 압축해서 메모리 사용량을 줄인다.
작은 adapter만 학습한다.
큰 모델을 제한된 자원에서도 task-specific하게 조정한다.
 

프로젝트 기준으로는 QLoRA가 Agenda LLM을 clinical agenda extraction 형식에 맞게 학습시키는 방법입니다. 반면 system tracker, context manager, metrics는 QLoRA의 직접 대상이 아닙니다. QLoRA는 “발화를 보고 relevant/type/summary를 생성하는 LLM”을 만드는 학습 기법이고, 그 뒤의 linking, resolution tracking, buffer eviction은 별도 시스템 구성요소가 처리합니다.

 

 

 


 

1. Base model을 4-bit로 양자화한다는 뜻

**“Base model을 4-bit로 양자화한다”**는 것은 LLM 안에 들어 있는 거대한 숫자 가중치들을 더 작은 숫자 형식으로 압축해서 저장하는 것입니다.

즉, 원래 모델이 가지고 있던 weight를 그대로 고정밀 숫자로 저장하지 않고, 4-bit짜리 작은 코드값으로 바꿔서 메모리 사용량을 줄이는 과정입니다.

간단히 말하면 다음입니다.

원래 모델 weight: FP16, BF16, FP32 같은 큰 숫자 형식
↓
4-bit 양자화
↓
압축된 4-bit weight
 

2. 여기서 대상은 무엇인가

양자화의 대상은 base model의 weight입니다.

Base model은 이미 사전학습이 끝난 원본 LLM입니다.

예:

Llama 3B
Llama 7B
Mistral 7B
Qwen 7B
Gemma 2B
 

이 모델들은 내부에 엄청나게 많은 숫자 weight를 가지고 있습니다.

예를 들어 Llama 7B라면 대략 70억 개의 weight가 있습니다.

7B model = 약 7,000,000,000개의 숫자 weight
 

이 weight들이 모델의 지식과 계산 규칙을 담고 있습니다.

예를 들어 모델이 다음을 이해할 수 있는 이유도 모두 weight에 저장된 패턴 때문입니다.

문법
단어 의미
의학 지식
문장 구조
추론 패턴
요약 방식
질문 응답 방식
 

따라서 4-bit 양자화의 대상은 다음입니다.

대상 = base model 내부의 weight matrix들
 

예를 들면 Transformer 내부의 다음 weight들이 대상입니다.

Wq, Wk, Wv, Wo
MLP weight
embedding weight
output projection weight
 

3. bit가 무엇인가

bit는 컴퓨터가 정보를 저장하는 가장 작은 단위입니다.

1 bit = 0 또는 1 하나
 

4-bit는 0과 1 네 개로 표현하는 숫자입니다.

4-bit = 0000 ~ 1111
 

4-bit로 표현할 수 있는 값의 개수는 다음과 같습니다.

2^4 = 16개
 

즉, 4-bit는 총 16개의 서로 다른 값을 표현할 수 있습니다.

예:

0000
0001
0010
0011
...
1111
 

4. 원래 모델 weight는 어떤 형태인가

LLM의 weight는 보통 실수입니다.

예를 들어 어떤 weight들이 다음과 같다고 하겠습니다.

0.18372
-0.49211
1.28491
0.00312
-2.10344
 

이런 값들은 보통 FP32, FP16, BF16 같은 형식으로 저장됩니다.

형식크기설명
FP32 32-bit 고정밀 실수
FP16 16-bit 절반 정밀도 실수
BF16 16-bit 학습에 자주 쓰는 실수
4-bit 4-bit 매우 압축된 저정밀 값

FP16은 weight 하나를 저장하는 데 16-bit를 씁니다.
4-bit는 weight 하나를 저장하는 데 4-bit만 씁니다.

따라서 단순 계산으로는 다음과 같습니다.

FP16 → 4-bit
16-bit → 4-bit
저장량 1/4로 감소
 

5. 왜 4-bit로 줄이는가

목적은 메모리 절약입니다.

예를 들어 7B 모델을 FP16으로 저장하면 weight만 대략 다음 크기입니다.

7,000,000,000개 × 2 bytes = 약 14GB
 

그런데 4-bit로 저장하면 weight 하나가 0.5 byte입니다.

7,000,000,000개 × 0.5 bytes = 약 3.5GB
 

즉, weight 저장량만 보면 다음처럼 줄어듭니다.

약 14GB → 약 3.5GB
 

그래서 큰 모델을 작은 GPU 메모리에도 올릴 수 있습니다.


6. 양자화가 실제로 하는 일

양자화는 연속적인 실수값을 제한된 개수의 대표값으로 바꾸는 과정입니다.

원래 weight는 매우 다양한 실수값을 가집니다.

-1.238
-0.912
-0.305
0.047
0.286
0.731
1.502
 

하지만 4-bit는 16개 값밖에 표현하지 못합니다.

따라서 원래 weight들을 16개의 대표값 중 가장 가까운 값으로 바꿉니다.

예를 들어 16개의 대표값이 있다고 가정하겠습니다.

[-1.5, -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1,
  0.1,  0.3,  0.5,  0.7,  0.9,  1.1,  1.3,  1.5]
 

그러면 원래 weight는 다음처럼 근사됩니다.

원래 weight가장 가까운 대표값
-1.238 -1.3
-0.912 -0.9
-0.305 -0.3
0.047 0.1
0.286 0.3
0.731 0.7
1.502 1.5

즉, 정확한 값을 그대로 저장하지 않고, 가까운 대표값의 번호만 저장합니다.


7. 4-bit 양자화 과정

4-bit 양자화는 대략 다음 순서로 진행됩니다.

7.1 1단계: 원본 weight를 가져온다

예를 들어 어떤 layer의 weight가 있다고 하겠습니다.

W = [
  0.12, -0.44, 0.87,
  1.23, -1.10, 0.05
]
 

이 값들은 원래 FP16이나 BF16 형태입니다.


7.2 2단계: weight의 범위를 확인한다

먼저 이 weight들이 어느 범위에 있는지 봅니다.

최솟값 = -1.10
최댓값 = 1.23
 

모델 전체를 한 번에 양자화하지 않고, 보통은 block 또는 group 단위로 나눠서 양자화합니다.

예:

64개 weight 단위
128개 weight 단위
256개 weight 단위
 

이유는 layer마다, block마다 weight 분포가 다르기 때문입니다.


7.3 3단계: 대표값 또는 scale을 정한다

4-bit는 16개 값만 표현할 수 있으므로, 원래 실수값을 16개 코드로 매핑해야 합니다.

가장 단순한 방식은 uniform quantization입니다.

범위를 16구간으로 나눈다.
각 weight를 가장 가까운 구간으로 보낸다.
 

하지만 QLoRA에서는 보통 더 정교한 방식인 NF4를 많이 사용합니다.

NF4는 NormalFloat 4-bit입니다.

의미는 다음입니다.

LLM weight가 대체로 정규분포와 비슷하다는 점을 이용해서,
자주 나오는 값 주변을 더 정밀하게 표현하는 4-bit 방식
 

즉, 단순히 같은 간격으로 나누는 것이 아니라, weight 분포에 맞게 16개 대표값을 배치합니다.


7.4 4단계: 각 weight를 4-bit 코드로 바꾼다

예를 들어 원래 weight가 다음과 같다고 하겠습니다.

0.12
-0.44
0.87
1.23
-1.10
0.05
 

이 값들을 각각 가장 가까운 4-bit 코드로 바꿉니다.

예:

원래 weight4-bit 코드
0.12 1001
-0.44 0101
0.87 1101
1.23 1110
-1.10 0001
0.05 1000

실제로 저장되는 것은 원래 실수값이 아니라 이 4-bit 코드입니다.


7.5 5단계: 복원에 필요한 scale 정보를 저장한다

4-bit 코드만 있으면 원래 실수값으로 다시 근사할 수 없습니다.
따라서 scale 같은 보조 정보가 필요합니다.

예를 들어:

코드 1001은 실제로 0.12 근처를 의미한다.
코드 0101은 실제로 -0.44 근처를 의미한다.
 

이런 매핑 정보를 저장해야 합니다.

QLoRA에서는 이 scale 정보도 다시 압축하는 double quantization을 사용할 수 있습니다.


7.6 6단계: 계산할 때는 임시로 복원한다

모델이 실제 계산을 할 때는 4-bit 코드만으로 곱셈을 하기 어렵습니다.

그래서 계산 순간에 다음처럼 복원합니다.

4-bit weight code
↓
dequantize
↓
FP16/BF16에 가까운 계산용 weight
 

QLoRA 수식으로 쓰면 다음과 같습니다.

output = Dequantize(W_4bit) x + B A x
 

여기서:

항의미
W_4bit 4-bit로 저장된 base model weight
Dequantize(W_4bit) 계산할 때 임시로 복원한 weight
x 입력 hidden state
B A x LoRA adapter가 추가하는 보정값

8. 양자화와 역양자화

4-bit 양자화에는 두 방향이 있습니다.

8.1 Quantization

원래 실수 weight를 4-bit 코드로 바꾸는 과정입니다.

FP16 weight → 4-bit code
 

예:

0.731 → 1100
 

8.2 Dequantization

4-bit code를 계산 가능한 실수 근사값으로 다시 바꾸는 과정입니다.

4-bit code → approximate FP16/BF16 value
 

예:

1100 → 0.70
 

중요한 점은 dequantization이 원래 값을 완벽하게 복원하는 것은 아니라는 점입니다.

원래 값: 0.731
복원 값: 0.70
 

즉, 약간의 오차가 생깁니다.


9. 양자화 오차

4-bit로 줄이면 원래 weight와 복원 weight 사이에 차이가 생깁니다.

원래 weight = 0.731
복원 weight = 0.70
오차 = 0.031
 

이 차이를 양자화 오차라고 합니다.

양자화 오차가 너무 크면 모델 성능이 떨어질 수 있습니다.

그래서 QLoRA에서는 다음 방법들을 사용해 오차를 줄입니다.

NF4 사용
block-wise quantization
double quantization
LoRA adapter로 task-specific 보정
 

10. 왜 base model을 4-bit로 줄여도 학습이 가능한가

중요한 질문입니다.

QLoRA에서는 base model 전체를 새로 학습하지 않습니다.

대신 다음처럼 합니다.

base model = 4-bit로 압축하고 고정
LoRA adapter = 새로 학습
 

즉, base model은 이미 많은 언어 지식과 일반 능력을 가지고 있습니다.
4-bit로 줄이면 약간의 정밀도 손실은 있지만, 기본 능력은 상당 부분 유지됩니다.

그 위에 LoRA adapter가 작업에 필요한 조정을 추가합니다.

예:

base model:
일반 언어 이해, 문법, 문맥 이해, 의료 용어 일부 이해

LoRA adapter:
이 프로젝트의 출력 형식, relevant/type/summary 판단 방식, clinical agenda extraction 방식 학습
 

따라서 base model을 4-bit로 줄여도 adapter가 특정 작업에 맞게 보정할 수 있습니다.


11. QLoRA에서 “base model을 4-bit로 양자화한다”의 정확한 의미

이 문장은 다음을 모두 포함합니다.

1. 사전학습된 원본 LLM을 준비한다.
2. LLM 내부의 weight들을 대상으로 한다.
3. FP16/BF16/FP32 weight를 4-bit 코드로 압축한다.
4. 코드와 scale 정보를 저장한다.
5. 학습 중 base model weight는 고정한다.
6. forward 계산 때는 필요한 weight를 dequantize해서 사용한다.
7. 실제 업데이트는 LoRA adapter에만 적용한다.
 

따라서 단순히 “파일 크기를 줄인다”가 아니라, 학습 가능한 구조를 유지하면서 원본 모델의 메모리 점유를 줄이는 절차입니다.


12. 쉬운 비유 1: 고화질 사진 압축

Base model을 고화질 사진이라고 생각하면 됩니다.

원본 모델 = 4K 고화질 사진
4-bit 양자화 = 압축된 JPG 사진
 

고화질 사진은 정보가 아주 풍부하지만 용량이 큽니다.

장점: 선명함
단점: 용량 큼
 

압축 사진은 용량이 작습니다.

장점: 저장하기 쉬움
단점: 약간 흐려짐
 

QLoRA는 이 압축 사진 위에 작은 보정 레이어를 붙이는 것과 같습니다.

압축된 사진은 그대로 둔다.
사진 전체를 다시 그리지 않는다.
필요한 부분만 작은 보정 스티커로 수정한다.
 

13. 쉬운 비유 2: 두꺼운 교과서 요약본

Base model은 두꺼운 교과서입니다.

base model = 1000페이지짜리 교과서
 

4-bit 양자화는 이 교과서를 압축 요약본으로 만드는 것과 비슷합니다.

원본 교과서 = 자세하고 무겁다.
압축 요약본 = 가볍고 들고 다니기 쉽다.
 

하지만 요약본은 일부 세부사항이 줄어듭니다.

QLoRA에서는 이 요약본을 직접 고치지 않습니다.
대신 옆에 포스트잇을 붙입니다.

요약본 = 4-bit base model
포스트잇 = LoRA adapter
 

포스트잇에는 특정 과목의 시험에 필요한 내용을 추가로 적습니다.

예:

이 프로젝트에서는 relevant/type/summary 형식으로 답해야 함
medication은 약물, 용량, 복약순응도 정보일 때 사용
follow_up은 검사, 처방, 재방문 계획일 때 사용
 

즉, 교과서 전체를 다시 쓰는 것이 아니라, 압축된 교과서 + 시험용 포스트잇으로 학습하는 방식입니다.


14. 쉬운 비유 3: 큰 기계를 압축 모드로 실행

Base model을 거대한 기계라고 생각하겠습니다.

base model = 거대한 언어 처리 기계
 

원래는 고성능 부품으로 움직입니다.

FP16/BF16 weight = 정밀한 고성능 부품
 

4-bit 양자화는 부품을 더 작고 가벼운 버전으로 바꾸는 것입니다.

4-bit weight = 작고 가벼운 부품
 

이렇게 하면 기계가 차지하는 공간과 무게가 줄어듭니다.

하지만 기계 전체를 새로 제작하지는 않습니다.

QLoRA는 여기에 작은 조절 장치를 붙입니다.

LoRA adapter = 작은 조절 장치
 

기계 본체는 그대로 쓰고, 조절 장치만 학습해서 특정 작업에 맞게 작동하도록 만드는 것입니다.


15. 핵심 요약

base model을 4-bit로 양자화한다
 

는 말은 다음 뜻입니다.

LLM 내부의 거대한 weight 숫자들을 4-bit 코드로 압축해서,
모델을 훨씬 적은 메모리로 저장하고 실행할 수 있게 만드는 과정
 

대상은 다음입니다.

base model 내부의 weight matrix
 

과정은 다음입니다.

FP16/BF16 weight 준비
→ weight 분포 확인
→ 4-bit 대표값 또는 codebook 설정
→ 각 weight를 4-bit code로 변환
→ scale 정보 저장
→ 계산 시 dequantize해서 사용
 

QLoRA에서의 목적은 다음입니다.

큰 모델을 작은 메모리에 올리고,
원본 모델은 고정한 채,
LoRA adapter만 학습하기 위해
 

가장 쉬운 비유는 다음입니다.

원본 모델 = 두꺼운 교과서
4-bit 양자화 = 가벼운 요약본
LoRA adapter = 시험에 맞춘 포스트잇
QLoRA = 요약본은 그대로 두고, 포스트잇만 학습하는 방식
 
반응형