AI & MACHINE LEARNING

AI 파인튜닝 LoRA QLoRA 실전 가이드

junetapa 2026. 2. 27 업데이트 2026. 6. 6 10 min read

요즘 LLM을 내 데이터에 맞게 학습시키고 싶다는 분들이 정말 많아졌다. 그런데 GPU 메모리는 한정적이고, 풀 파인튜닝은 비용이 엄청나죠. 그래서 등장한 게 바로 LoRA와 QLoRA이다. 오늘은 이 두 기법을 실전에서 어떻게 활용하는지, 솔직한 경험을 바탕으로 정리해 보겠다.

요즘 LLM을 내 데이터에 맞게 학습시키고 싶다는 분들이 정말 많아졌다. 그런데 GPU 메모리는 한정적이고, 풀 파인튜닝은 비용이 엄청나죠. 그래서 등장한 게 바로LoRAQLoRA이다. 오늘은 이 두 기법을 실전에서 어떻게 활용하는지, 솔직한 경험을 바탕으로 정리해 보겠다.

2026년 6월 업데이트 — 도구·모델 최신화 베이스 모델 기준을 2026년 현역 모델(Llama 3.3 / Qwen3 / Gemma 3, 라이선스 유연한 Qwen3·DeepSeek)로 교체하고, Hugging Face PEFT의 DoRA·rsLoRA 같은 신규 변형, Unsloth(2배 빠른 속도·메모리 최대 70~80% 절감, Qwen3·Gemma 3 지원), bitsandbytes 4bit(NF4·이중 양자화) 설정, RTX 4090/5090 기준 실측 VRAM을 반영해 갱신했다. 코드 예시는 현재 PEFT API로 실제 동작하도록 수정했다.

LoRA와 QLoRA, 도대체 뭐가 다른 걸까?

1-1. LoRA(Low-Rank Adaptation)의 핵심 원리

LoRA는 2021년 Microsoft에서 발표한 기법으로, 모델의 전체 가중치를 업데이트하는 대신저랭크(low-rank) 행렬 두 개를 추가로 학습시키는 방식이다. 예를 들어, 원래 가중치 행렬이 4096×4096 크기라면, 이걸 직접 건드리지 않고 4096×16과 16×4096 크기의 작은 행렬 두 개만 학습다. 학습 파라미터 수가 극적으로 줄어들기 때문에 메모리와 시간을 크게 절약할 수 있다.

실제로 7B 모델 기준, 풀 파인튜닝에는 A100 80GB가 최소 2장 필요하지만, LoRA를 적용하면 단일 A100 하나로도 충분다. 학습 결과물도 원본 모델 용량이 아니라 수십 MB 수준의 어댑터 파일만 저장하면 되니까 관리도 편하죠.

LoRA 저랭크 분해 (Low-Rank Adaptation)입력 xd × 1원본 가중치 Wd × d (동결 )A (Down)d × rB (Up)r × d학습 가능+출력 h = Wx + BAx원본 + 어댑터 합산동결된 가중치학습 파라미터 (0.1~1%)r = rank (보통 8~64) → 파라미터 수를 극적으로 줄이는 핵심
LoRA 아키텍처 — 원본 가중치는 동결하고 저랭크 행렬 A, B만 학습한다

1-2. QLoRA는 여기서 한 발 더 나간다

QLoRA는 2023년 워싱턴 대학에서 발표한 기법(NeurIPS Oral)으로, LoRA에4비트 양자화(quantization)를 결합한 것이다. 기본 모델을 4비트로 양자화해서 메모리에 올리고, 그 위에 LoRA 어댑터를 16비트(보통 bfloat16)로 학습다. 2026년 현재 기준으로 보면 이 조합 덕분에 7B 모델은 약 12GB, 13B 모델도 24GB 한 장(RTX 4090/5090)에서 파인튜닝할 수 있다. 개인 개발자에게는 사실상 게임 체인저이다.

핵심은 NF4(NormalFloat4)라는 데이터 타입과 이중 양자화(Double Quantization) 기법인데, 이론적 성능 손실을 최소화하면서 메모리를 극단적으로 줄여준다. bitsandbytes에서 load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16 네 가지가 사실상 표준 설정이다.

1-3. 한눈에 보는 비교

항목풀 파인튜닝LoRAQLoRA
학습 파라미터 수전체 (100%)0.1~1%0.1~1%
기본 모델 정밀도16비트16비트4비트
7B 모델 최소 VRAM~120GB~24GB~12GB
학습 속도느림빠름보통 (양자화 오버헤드)
성능 (품질)최고매우 우수우수 (소폭 하락 가능)
저장 용량전체 모델어댑터만 (수십 MB)어댑터만 (수십 MB)
개인 GPU 사용 가능 여부사실상 불가조건부 가능충분히 가능
7B 모델 기준 VRAM 사용량 비교120GB90GB60GB30GB0GB~120GBA100 × 2장풀 파인튜닝~28GBLoRAA100 × 1장~10GBQLoRARTX 4090 여유!77% 절감92% 절감
7B 모델 파인튜닝 시 VRAM 사용량 — QLoRA는 풀 파인튜닝 대비 92% 절감

실전 환경 세팅과 학습 과정

2-1. 필수 라이브러리와 환경 구성

실전에서 가장 많이 쓰이는 조합은Hugging Face Transformers + PEFT + TRL + bitsandbytes이다. QLoRA를 쓸 거라면 bitsandbytes는 반드시 필요하고, 데이터셋 처리에는 datasets 라이브러리를 씁니다. 2026년 기준으로는 Unsloth를 같이 쓰는 게 거의 기본인데, 동일 품질로 학습 속도를 약 2배 올리면서 메모리는 70~80%까지 절감해 준다. Llama 3/3.1/3.2, Qwen3(MoE 포함), Gemma 3, Mistral, DeepSeek, Phi-4까지 폭넓게 지원하고, 무료 Colab GPU에서도 잘 돌아간다.

베이스 모델은 2026년 현역 기준으로 고르자. 라이선스가 유연한 Qwen3(Apache 2.0)·DeepSeek(MIT) 계열이 상업 활용과 파인튜닝 생태계가 가장 잘 갖춰져 있고, 한국어·다국어가 중요하면 Qwen3, 로컬 단일 GPU 위주라면 Gemma 3나 Qwen3 소형 모델이 무난하다. 2년 전 기준의 Llama 2 같은 구형 모델로 시작할 이유는 없다.

환경 구성 시 가장 중요한 건 CUDA 버전과 PyTorch 버전의 호환성이다. bitsandbytes가 특정 CUDA 버전에서만 작동하는 경우가 많아서, 처음 세팅할 때 여기서 시간을 많이 잡아먹다. 솔직히 말하면 Docker 이미지나 Unsloth 공식 노트북을 쓰는 게 정신 건강에 좋다.

아래는 PEFT + bitsandbytes로 QLoRA를 구성하는 실제 동작 코드의 핵심 부분이다.

Python — QLoRA (PEFT + bitsandbytes)from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training import torch model_id = "Qwen/Qwen3-8B" # 2026 현역 베이스 모델 (Apache 2.0) # 1) 4bit 양자화 설정 (NF4 + 이중 양자화) bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16, ) tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, quantization_config=bnb_config, device_map="auto" ) model = prepare_model_for_kbit_training(model) # 2) LoRA 어댑터 설정 (DoRA는 use_dora=True 한 줄로 활성화) lora_config = LoraConfig( r=16, lora_alpha=32, lora_dropout=0.05, bias="none", task_type="CAUSAL_LM", target_modules=["q_proj","k_proj","v_proj","o_proj", "gate_proj","up_proj","down_proj"], use_dora=False, # True로 바꾸면 DoRA, use_rslora=True면 rsLoRA ) model = get_peft_model(model, lora_config) model.print_trainable_parameters() # 학습 파라미터 0.1~1% 확인
파인튜닝 파이프라인 워크플로우데이터 준비정제 & 포맷팅모델 로딩4bit 양자화(Q)LoRA 설정r, alpha, target학습 (Train)loss 모니터링평가벤치마크 테스트머지 & 배포merge_and_unloadQLoRA는 2단계에서 4bit 양자화가 추가된다 (bitsandbytes 필수)
LoRA/QLoRA 파인튜닝 전체 워크플로우 — 데이터 준비부터 배포까지 6단계

2-2. 핵심 하이퍼파라미터 설정

LoRA 파인튜닝에서 가장 중요한 하이퍼파라미터는 세 가지이다:

학습률은 풀 파인튜닝보다 높게 잡아야 다. 보통 1e-4 ~ 2e-4 범위가 잘 동작하고, 에포크는 데이터셋 크기에 따라 1~5 사이를 권장다. 과적합이 생각보다 빨리 오기 때문에 validation loss를 꼭 모니터링하자.

2-2-1. 알아두면 좋은 LoRA 변형들 (DoRA·rsLoRA)

2026년에는 기본 LoRA 외에 변형 기법들이 PEFT에 정식 포함돼 있다. DoRA(Weight-Decomposed Low-Rank Adaptation)는 가중치를 크기(magnitude)와 방향(direction)으로 분해해 LoRA보다 학습 안정성과 표현력을 높이면서도 추론 시 추가 비용이 없다. NVIDIA가 발표해 ICML 2024에 채택됐고, LoraConfig(use_dora=True) 한 줄로 켤 수 있다. rsLoRA(rank-stabilized LoRA)는 use_rslora=True로 활성화하며, rank가 클 때 스케일링을 안정화해 r을 키워도 성능이 무너지지 않게 해준다. 어렵게 생각하지 말고, 기본 LoRA로 먼저 돌려보고 품질이 아쉬울 때 DoRA나 rsLoRA를 옵션으로 켜 비교해 보면 된다.

2-3. 데이터셋 준비의 현실

솔직히 말하면,파인튜닝 성패의 80%는 데이터 품질에 달려 있다. 모델 크기나 하이퍼파라미터보다 훨씬 중요다. 제가 실제로 경험한 바로는, 잘 정제된 데이터 500개가 대충 모은 데이터 5,000개보다 성능이 좋았다.

데이터 포맷은 instruction-input-output 형태가 가장 보편적이고, 대화형 모델을 만들 때는 multi-turn conversation 형식을 씁니다. 중요한 건 실제 서비스에서 들어올 질문 패턴과 최대한 비슷한 데이터를 만드는 것이다.

실전에서 얻은 꿀팁 모음

3-1. 반드시 기억할 실전 팁 5가지

3-2. 자주 만나는 문제와 해결법

OOM 에러가 날 때:batch size를 1로 줄이고 gradient_accumulation_steps를 8~16으로 올리자. 그래도 안 되면 max_seq_length를 줄이거나, r 값을 낮추자. QLoRA로 전환하는 것도 방법이다.

Loss가 안 떨어질 때:데이터 포맷을 먼저 확인하자. 특히 특수 토큰(BOS, EOS, 구분자)이 제대로 들어가 있는지 점검해야 다. 학습률이 너무 낮은 것도 원인이 될 수 있다.

학습은 잘 됐는데 추론 결과가 이상할 때:추론 시 프롬프트 템플릿이 학습 시와 동일한지 확인하자. 이 부분에서 실수하는 경우가 생각보다 정말 많다.

LoRA vs QLoRA, 장단점 정리

4-1. 각 기법의 장단점

구분LoRA 장점LoRA 단점
메모리풀 파인튜닝 대비 대폭 절감QLoRA 대비 2~3배 더 필요
속도양자화 오버헤드 없이 빠름큰 모델은 여전히 고가 GPU 필요
품질풀 파인튜닝에 근접한 성능극한 성능에는 한계

구분QLoRA 장점QLoRA 단점
메모리소비자 GPU로도 대형 모델 학습 가능양자화로 인한 미세한 정보 손실
속도접근성이 극적으로 향상됨양자화/역양자화 오버헤드로 약간 느림
품질비용 대비 매우 우수한 성능LoRA 대비 소폭 성능 하락 가능
LoRA vs QLoRA 선택 가이드 플로우차트LLM 파인튜닝 시작GPU VRAM40GB 이상?YES최고 성능필요?YESLoRA 추천A100 + 16bitNONOQLoRA 추천4bit 양자화 + LoRAColab/Kaggle 무료 GPUQLoRA + Unsloth 최적 조합프로토타입 → QLoRA로 빠르게 실험 | 프로덕션 → LoRA/풀 파인튜닝으로 전환
상황별 LoRA vs QLoRA 선택 흐름도 — GPU 환경과 목표에 따라 최적 기법이 달라진다

4-2. 상황별 선택 가이드

마무리: 누구에게 추천하는가

5-1. 이런 분들에게 추천합니다

LoRA 파인튜닝은 다음과 같은 분들에게 추천한다:

QLoRA 파인튜닝은 다음과 같은 분들에게 추천한다:

5-2. 마지막으로 드리는 말씀

LoRA와 QLoRA 덕분에 LLM 파인튜닝의 진입 장벽이 정말 많이 낮아졌다. 불과 2년 전만 해도 수천만 원짜리 GPU 클러스터가 필요했던 작업을 이제는 개인 PC에서 할 수 있게 되었으니까. 하지만 도구가 아무리 좋아도 결국좋은 데이터명확한 목표가 있어야 의미 있는 결과를 얻을 수 있다.

처음이라면 QLoRA로 작은 모델부터 시작해 보자. 직접 해봐야 감이 온다. 완벽한 세팅을 찾으려고 하지 말고, 일단 돌려보고 결과를 보면서 조금씩 개선해 나가는 게 가장 빠른 길이다. 여러분의 파인튜닝 여정을 응원한다!

LoRA QLoRA 파인튜닝 AI & ML junetapa
junetapa
junetapa
AI 도구를 직접 써보고 솔직한 경험을 공유하는 개발자.
Twitter Facebook URL 복사