LoRA에 4비트 양자화를 더해, 베이스 모델은 4비트로 압축해 고정하고 작은 LoRA 어댑터만 16비트로 학습하는 파인튜닝 기법이다. GPU 메모리가 부족해 일반 LoRA로도 모델이 올라가지 않을 때 쓰며, 개인 GPU 한 장으로도 큰 모델을 파인튜닝할 수 있다.
| 방식 | 베이스 모델 | 학습하는 부분 | 메모리 |
|---|---|---|---|
| 전체 파인튜닝 | 16비트, 전부 수정 | 모든 가중치 | 가장 많음 |
| LoRA | 16비트, 고정 | 어댑터만 | 중간 |
| QLoRA | 4비트, 고정 | 어댑터만 | 가장 적음 |
LoRA는 학습할 파라미터를 줄여 주지만, 베이스 모델 자체는 16비트로 메모리에 올려야 한다. QLoRA는 이 부분을 4비트로 저장해 가중치 메모리를 약 4분의 1로 줄인다.
7B 모델 가중치만 계산한 대략값이다. 실제 학습 때는 활성값과 옵티마이저 메모리가 더 든다.
원 논문은 65B 모델을 48GB GPU 한 장으로 파인튜닝할 수 있다는 걸 보여 주었고, 이후 오픈소스 파인튜닝이 널리 퍼지는 계기가 됐다. 정보 손실을 줄이는 4비트 형식(NF4)과 메모리 급증을 막는 장치도 함께 제안됐다.
transformers, bitsandbytes, peft를 함께 쓴다. 순서는 이렇다.
| 단계 | 할 일 |
|---|---|
| 1. 4비트 로드 | BitsAndBytesConfig에 load_in_4bit=True, bnb_4bit_quant_type="nf4" |
| 2. 학습 준비 | prepare_model_for_kbit_training 호출 |
| 3. 어댑터 부착 | LoraConfig로 rank·대상 레이어 지정 |
| 4. 학습·저장 | 어댑터 파일만 저장된다 |
계산 정밀도는 bnb_4bit_compute_dtype을 bfloat16으로 두는 경우가 많다. TRL, Axolotl, Unsloth 같은 학습 도구도 QLoRA 설정을 옵션으로 제공한다.
GPU에 16비트 모델이 넉넉히 올라가면 일반 LoRA가 낫다. QLoRA는 계산할 때마다 4비트 가중치를 풀어 쓰므로 학습이 더 느려지고, 압축 때문에 품질이 조금 떨어질 수 있다. 소비자용 GPU나 무료 클라우드 노트북에서 큰 모델을 다뤄야 할 때 고르면 된다.
배포할 때도 주의할 점이 있다. 어댑터를 모델에 합칠 때는 4비트 모델보다 원래 16비트 베이스 모델에 합치는 편이 안전하다. 합친 뒤 필요하면 추론용으로 다시 양자화한다.
가장 흔한 건 소비자용 GPU나 무료 클라우드 노트북에서 공개된 모델을 자기 데이터로 파인튜닝하는 방식이다. 결과물이 작은 어댑터 파일이라 저장·공유·교체도 쉽다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 개인 GPU·무료 클라우드 노트북 | 공개 모델을 4비트로 올리고, 내 대화·지시 데이터로 어댑터만 학습 |
| 학습 도구 (TRL, Axolotl, Unsloth) | 설정에서 QLoRA 옵션을 켜고 특정 분야 말투나 답변 형식을 익히게 함 |
| 사내 특화 모델 실험 | 큰 GPU 없이 데이터셋별 어댑터를 여러 개 만들어 비교하고, 좋은 것만 16비트 베이스에 합쳐 배포 |