LabHub

블로그

LLM 파인튜닝 2026 완벽 가이드 - LoRA · QLoRA · DoRA · GaLore · Unsloth · Axolotl · TRL · PEFT · MLX-LM 심층 분석

한국어English日本語

프롤로그 — 2026년, 파인튜닝이 "사용자 도구"가 된 해

2021년 6월, Microsoft의 Edward Hu가 발표한 LoRA 논문은 "백만 개의 파라미터만 학습해도 GPT-3 수준의 적응이 된다"고 보여줬다. 그때만 해도 파인튜닝은 슈퍼컴퓨터의 일이었다. 2023년 5월, Tim Dettmers가 QLoRA를 내놓으며 65B 모델을 단일 48GB GPU에 욱여넣었다. 그때부터 파인튜닝은 "연구자의 일"에서 "엔지니어의 일"이 되었다.

그리고 2026년 5월 현재, 파인튜닝은 "사용자 도구"다. M3 Ultra Mac Studio 한 대로 70B 모델을 LoRA 튜닝할 수 있다. Unsloth가 4비트 양자화를 자동으로 처리하고, TRL의 SFTTrainer가 5줄로 SFT를 끝낸다. Axolotl과 LLaMA-Factory는 YAML 한 장으로 모든 하이퍼파라미터를 외부화했다. Apple의 MLX-LM은 M4 Max MacBook Pro에서 Mistral 7B를 LoRA 학습한다. 이 모든 것이 4년 사이에 일어났다.

파인튜닝은 더 이상 "모델을 처음부터 다시 학습"하는 게 아니다. 90% 이상의 경우, 답은 LoRA 계열 PEFT(Parameter-Efficient Fine-Tuning)다. 그리고 PEFT 안에서도 어떤 변형을 고르냐가 효율·품질·하드웨어 요구사항을 결정한다.

이 글이 다루는 것:

  1. 풀 파인튜닝 vs PEFT — 언제 무엇을 쓰나
  2. LoRA의 수학과 직관 (Hu et al. 2021)
  3. QLoRA — 4비트 NF4와 더블 양자화 (Dettmers 2023)
  4. DoRA — 가중치 분해 (NVIDIA 2024)
  5. GaLore — 그라디언트 프로젝션 (Zhao 2024)
  6. PiSSA, LoRA+, rsLoRA, VeRA, LoftQ, OFT, BOFT
  7. PEFT 0.14 — Hugging Face 통합 API
  8. TRL 0.13 — SFT, DPO, ORPO, KTO, IPO, GRPO, RLOO
  9. Unsloth — 2배 빠른 학습
  10. Axolotl 0.6 — YAML 설정 기반 멀티 GPU
  11. LLaMA-Factory — 100개 이상 모델, 웹 UI
  12. MLX-LM과 MLX-Tuner — Apple Silicon 온디바이스
  13. Torchtune — Meta PyTorch의 레시피
  14. 데이터셋 — ShareGPT, OpenHermes, Magpie, Tülu, Nectar
  15. DPO vs PPO — RLHF의 대안
  16. 합성 데이터 — Augmentoolkit, Distilabel, Self-Instruct
  17. 서빙을 위한 양자화 — GGUF, AWQ, GPTQ, EXL2
  18. 하드웨어 — H100/H200, A100, 4090/5090, M3/M4, MI300X
  19. 클라우드 — Together, Modal, RunPod, vast.ai, Lambda Labs
  20. 한국·일본 모델의 파인튜닝
  21. 어떤 도구를 골라야 하나
  22. 참고 자료

1장 · 풀 파인튜닝 vs PEFT — GPU 메모리 산수

파인튜닝의 첫 결정은 "전체 가중치를 학습할 것인가, 일부만 학습할 것인가"다. 답은 거의 항상 일부만이다. 이유는 GPU 메모리 산수로 명확하다.

풀 파인튜닝의 메모리 산수

7B 모델을 풀 파인튜닝한다고 하자. fp16 가중치만 14GB. Adam 옵티마이저는 가중치당 모멘텀과 분산 두 개의 상태를 fp32로 들고 있으므로 가중치 4배 = 56GB. 그라디언트는 가중치와 같은 크기로 14GB. 활성화는 시퀀스 길이에 비례해서 추가로 수십 GB. 총 100GB 이상이 7B 모델 풀 파인튜닝의 현실이다. H100 80GB 한 장으로는 불가능하다.

70B는 이 숫자를 10배로 곱하면 된다. 1TB의 메모리. 8x H100 노드 한 대로도 빠듯하다.

PEFT의 메모리 산수

LoRA로 7B를 학습하면? 베이스 가중치 14GB는 그대로(혹은 4비트로 3.5GB). LoRA 어댑터는 보통 베이스의 0.1~1% — 7M~70M 파라미터로 잡으면 fp16에 14~140MB. 옵티마이저 상태는 이 어댑터만 잡으므로 마찬가지로 작다. 활성화는 비슷하지만, 베이스가 4비트면 활성화 메모리도 줄어든다. 총 8~20GB로 7B를 학습할 수 있다. RTX 4090 24GB 한 장으로 충분하다.

풀 파인튜닝이 합리적인 경우

그럼에도 풀 파인튜닝이 답인 경우가 있다:

그 외 95% 케이스는 PEFT가 답이다.


2장 · LoRA — Low-Rank Adaptation (Hu et al. 2021)

LoRA의 아이디어는 한 문장으로: "가중치 업데이트는 저랭크다." 풀 파인튜닝 시 가중치 W가 W + dW로 바뀐다고 하면, dW는 보통 풀 랭크가 아니라 매우 낮은 랭크를 가진다는 관찰이다.

수학

베이스 가중치 W (크기 d×k)에 대해, LoRA는 두 작은 행렬 A (크기 d×r)와 B (크기 r×k)의 곱으로 dW를 근사한다 — 여기서 r << min(d, k). 학습 시 W는 동결하고 A·B만 업데이트한다. 추론 시에는 두 가지 옵션이 있다:

  1. 병합 — W + A·B를 미리 계산해 새 가중치로 저장. 추론 오버헤드 없음.
  2. 어댑터 유지 — W를 그대로 두고 A·B를 별도 어댑터로 적용. 여러 어댑터 핫스왑 가능.

핵심 하이퍼파라미터는 세 개다:

실전 가이드 (2026 기준)


3장 · QLoRA — 4비트 NF4와 더블 양자화 (Dettmers 2023)

Tim Dettmers의 QLoRA(2023년 5월)는 한 문장 요약: "베이스를 4비트로 양자화한 상태에서 LoRA 학습하면 메모리가 4배 줄어든다."

핵심 기여 3가지

  1. NF4 (NormalFloat 4-bit) — 정규분포에 최적화된 4비트 양자화. 사전 학습된 가중치가 평균 0, 분산 작은 정규분포에 가까우니, 정규분포의 분위수에 4비트 인코딩을 할당한다. INT4보다 정확.
  2. Double Quantization — 양자화 상수(스케일)도 양자화한다. 첫 번째 양자화로 각 블록당 fp32 스케일 1개, 이걸 다시 양자화해서 메모리를 더 줄인다. 평균 0.5비트/파라미터 추가 절약.
  3. Paged Optimizers — NVIDIA Unified Memory로 옵티마이저 상태를 CPU↔GPU 페이지로 스왑. OOM을 피해 학습 안정성 ↑.

실전 메모리 절감

7B fp16 = 14GB → 7B NF4 = 3.5GB. 4배 절감. 옵티마이저 상태도 LoRA 어댑터만 다루므로 작다. 결과: 7B 모델을 RTX 3090 24GB 한 장으로 학습 가능.

QLoRA는 2026년 현재 LoRA 학습의 사실상 기본값이 됐다. Unsloth·Axolotl·LLaMA-Factory 모두 QLoRA를 1급 옵션으로 제공한다.

QLoRA의 미세한 단점

4비트 베이스는 fp16 베이스보다 학습이 살짝 불안정할 수 있다. 그래서 매우 큰 분포 이동(언어 전환·도메인 특화)은 fp16 베이스가 더 안전하다. 또한 4비트로 양자화된 베이스에 어댑터를 학습한 뒤, 어댑터를 다시 fp16 베이스에 합칠 때 미세한 품질 손실이 있을 수 있다. LoftQ가 이걸 해결하려 시도한다(7장).


4장 · DoRA — Weight-Decomposed LoRA (NVIDIA 2024)

NVIDIA의 Shih-Yang Liu가 2024년 발표한 DoRA(Weight-Decomposed Low-Rank Adaptation). 한 줄 요약: "가중치 변화를 방향과 크기로 분해하면 LoRA가 더 잘 한다."

직관

가중치 행렬 W를 두 요소로 분해한다:

DoRA는 방향에는 LoRA를 적용하고, 크기 m은 별도의 학습 가능 파라미터로 둔다. 풀 파인튜닝의 학습 패턴을 분석해 보면, 풀 파인튜닝은 크기와 방향을 모두 크게 바꾸지만 LoRA는 둘이 결합돼 어색하게 움직인다는 것이 DoRA 논문의 관찰이다.

실험 결과

PEFT 지원

Hugging Face PEFT 0.10부터 DoRA를 use_dora=True 한 줄로 활성화. 2026년 현재 새 LoRA 학습의 30% 정도가 DoRA로 쓰인다는 비공식 통계가 있다.


5장 · GaLore — Gradient Low-Rank Projection (Zhao 2024)

Jiawei Zhao(Meta)의 2024년 3월 논문 GaLore. 한 줄 요약: "가중치는 풀 랭크지만 그라디언트는 저랭크다 — 그라디언트를 저랭크로 프로젝션해서 메모리를 줄이자."

어떻게 다른가

LoRA는 어댑터(저랭크)를 학습해 가중치 자체는 동결한다. 결과적으로 학습되는 파라미터가 적다 — 표현력의 상한이 있다. GaLore는 전체 가중치를 학습하되, 옵티마이저 상태(Adam의 모멘텀·분산)를 저랭크 부분공간에 둔다. 매 SVD로 그라디언트의 주성분 방향을 찾고, 그 방향만 옵티마이저 상태로 들고 있는다.

결과: 풀 파인튜닝의 표현력 + LoRA에 가까운 메모리.

메모리 절감

7B 풀 파인튜닝의 옵티마이저 상태는 56GB(fp32 Adam) → GaLore로는 7~14GB로 줄어든다. 가중치 자체와 활성화는 풀 학습과 같으므로 총 메모리는 LoRA보다는 크지만 풀 파인튜닝의 절반 이하.

단점

GaLore는 "LoRA로는 안 되지만 풀 파인튜닝은 메모리 부족"인 틈새를 노린다. 2026년 현재 niche지만 점유율이 올라가는 중이다.


6장 · PEFT 변형들 — PiSSA, LoRA+, rsLoRA, VeRA, LoftQ, OFT, BOFT

LoRA 이후 수많은 변형이 나왔다. 2026년 현재 PEFT 0.14가 지원하는 주요한 것들을 짧게 정리한다.

이 변형들은 "기본 LoRA보다 살짝 더 좋다"는 미세한 이득들이다. 90% 케이스는 그냥 LoRA로 충분하다. 변형은 평가 벤치마크에서 최상위를 노릴 때 시도한다.


7장 · Hugging Face PEFT 0.14 — 통합 API

Hugging Face의 PEFT 라이브러리는 위에 나열한 모든 변형의 통합 API다. 2026년 5월 현재 0.14가 stable, 0.15가 beta다.

기본 사용 패턴

from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B")

config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules="all-linear",
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
    use_dora=False,  # True로 두면 DoRA
)

model = get_peft_model(model, config)
model.print_trainable_parameters()
# trainable params: 24,313,856 || all params: 3,236,000,000 || trainable%: 0.75

어댑터 저장과 로드

model.save_pretrained("./my-lora-adapter")

# 나중에 로드
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B")
model = PeftModel.from_pretrained(base, "./my-lora-adapter")

어댑터 병합

merged = model.merge_and_unload()
merged.save_pretrained("./merged-model")

멀티 어댑터

PEFT는 하나의 베이스에 여러 어댑터를 동시에 두고 핫스왑할 수 있다 — 같은 모델 인스턴스를 영어·일본어·한국어 어댑터로 즉시 전환할 수 있다. 추론 서버에서 매우 유용.


8장 · TRL 0.13 — SFT, DPO, ORPO, KTO, IPO, GRPO, RLOO

TRL(Transformer Reinforcement Learning)은 Hugging Face의 RLHF·정렬(alignment) 라이브러리다. 2026년 5월 현재 0.13이 stable, GRPO·RLOO 같은 최신 알고리즘이 1급 시민으로 추가됐다.

SFTTrainer (Supervised Fine-Tuning)

가장 자주 쓰는 도구. 채팅 데이터셋으로 SFT를 끝낸다.

from trl import SFTTrainer, SFTConfig

config = SFTConfig(
    output_dir="./sft-output",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    learning_rate=2e-4,
    bf16=True,
    packing=True,
    max_seq_length=4096,
)

trainer = SFTTrainer(
    model=model,
    args=config,
    train_dataset=dataset,
    peft_config=lora_config,  # PEFT와 통합
)
trainer.train()

DPOTrainer (Direct Preference Optimization)

페어 데이터(prompt, chosen, rejected)로 정렬. PPO보다 훨씬 단순하고 안정적.

ORPOTrainer (Odd Ratio Preference Optimization)

SFT와 DPO를 한 번에 하는 신생 알고리즘(2024). 별도의 reference 모델이 없어서 메모리 절감.

KTO (Kahneman-Tversky Optimization)

전망 이론(prospect theory)에서 영감을 받은 정렬. 페어가 아닌 단일 라벨(좋다/나쁘다) 데이터로도 정렬 가능.

GRPO (Group Relative Policy Optimization)

DeepSeek-R1이 사용한 알고리즘. 추론 능력 학습에 강하다. 2026년 현재 reasoning 모델 학습의 표준.

RLOO (REINFORCE Leave-One-Out)

베이스라인 추정에 leave-one-out을 써서 PPO보다 단순하면서도 효과적.


9장 · Unsloth — 2배 빠른 학습, 메모리 50% 절감

Unsloth(Daniel Han·Michael Han 형제, 2024)는 단일 GPU 파인튜닝의 게임 체인저다. 한 줄 요약: "수동으로 짠 Triton 커널로 LoRA/QLoRA 학습을 2배 빠르게."

어떻게 빠른가

사용 예

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/llama-3.2-3b-instruct-bnb-4bit",
    max_seq_length=4096,
    load_in_4bit=True,
)

model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
                    "gate_proj", "up_proj", "down_proj"],
    lora_alpha=32,
    use_rslora=False,
    use_dora=False,
)

이후 SFTTrainer로 학습. 결과: RTX 4090 24GB로 Llama 3.2 8B를 4시간에 학습 (같은 데이터로 vanilla Transformers는 8~10시간).

제약


10장 · Axolotl 0.6 — YAML로 모든 것을

Axolotl(OpenAccess AI Collective, 2023~)은 한 줄 요약: "YAML 한 장으로 모든 하이퍼파라미터를 외부화하라."

왜 YAML인가

파이썬 스크립트로 짠 학습 코드는 재현이 어렵다. 누가 어떤 학습률·배치 크기·어댑터 설정으로 학습했는지를 git에 남기려면 코드 자체가 변수다. YAML은 이를 단일 진실 원천(single source of truth)으로 만든다.

설정 예시

base_model: meta-llama/Llama-3.2-3B
model_type: LlamaForCausalLM
tokenizer_type: AutoTokenizer

load_in_4bit: true
adapter: qlora
lora_r: 16
lora_alpha: 32
lora_target_modules:
  - q_proj
  - k_proj
  - v_proj
  - o_proj

datasets:
  - path: tatsu-lab/alpaca
    type: alpaca

sequence_len: 4096
sample_packing: true
gradient_accumulation_steps: 4
micro_batch_size: 2
num_epochs: 3
learning_rate: 2e-4
bf16: auto
optimizer: paged_adamw_32bit

강점

약점


11장 · LLaMA-Factory — 100개 이상 모델, 웹 UI

HiYouga(Zheng et al., 2023)의 LLaMA-Factory는 한 줄 요약: "파인튜닝의 GUI 시대."

특징

사용

pip install llamafactory
llamafactory-cli webui

브라우저에서 모델·데이터셋·학습 방식을 클릭으로 선택, 학습 시작. 비코더 사용자도 접근 가능. 한국·일본·중국 회사의 사내 LLM 파인튜닝에 빠르게 보급됐다.

누가 쓰나


12장 · MLX-LM과 MLX-Tuner — Apple Silicon 온디바이스

Apple은 2023년 12월 MLX(Machine Learning eXperience) 프레임워크를 공개했다. PyTorch와 유사한 API지만, 통합 메모리 아키텍처(Unified Memory Architecture)에 최적화돼서 M1~M4 칩에서 CPU와 GPU가 같은 메모리 풀을 본다.

MLX-LM의 의미

사용 예

pip install mlx-lm
python -m mlx_lm.lora \
    --model mistralai/Mistral-7B-v0.3 \
    --train \
    --data ./my_data \
    --iters 1000 \
    --lora-layers 16 \
    --batch-size 4

제약

그래도 "내 노트북에서 파인튜닝"의 의미는 크다. 한국·일본의 작은 팀이 클라우드 비용 없이 실험을 돌릴 수 있다.


13장 · Torchtune — Meta PyTorch의 공식 레시피

Torchtune은 Meta PyTorch 팀이 2024년 4월 공개한 라이브러리. 한 줄 요약: "PyTorch 네이티브, 메모리 효율, 레시피 기반."

철학

사용

pip install torchtune
tune download meta-llama/Llama-3.2-3B-Instruct \
    --output-dir /tmp/Llama-3.2-3B \
    --hf-token <YOUR_TOKEN>

tune run lora_finetune_single_device \
    --config llama3_2/3B_lora_single_device

강점

약점


14장 · 데이터셋 — ShareGPT, OpenHermes, Magpie, Tülu, Nectar

좋은 파인튜닝의 70%는 데이터다. 2026년 현재 자주 쓰이는 오픈 SFT 데이터셋들.

데이터 품질이 양보다 중요

LIMA 논문(Meta, 2023)이 보여줬다: 1,000개의 잘 큐레이션된 예시가 50,000개의 평범한 예시보다 SFT 결과가 좋다. 2026년 현재 학습 데이터 큐레이션은 "더 많이"가 아니라 "더 좋게"가 표준이 됐다.


15장 · DPO vs PPO — RLHF의 진화

InstructGPT(2022)와 ChatGPT(2022) 시대는 PPO(Proximal Policy Optimization)가 표준이었다. PPO는 다음을 요구한다: 베이스 모델, reward 모델, reference 모델, actor, critic. 4개 모델을 동시에 GPU에 올려야 했다 — 메모리 폭주.

DPO의 등장 (2023)

Stanford의 Rafailov et al.가 2023년 5월 발표한 DPO(Direct Preference Optimization)는 한 줄 요약: "reward 모델 없이 직접 페어 데이터로 정책을 최적화하라."

수학적으로 DPO는 PPO와 동일한 최적화를 페어 데이터에 대한 단순한 분류 손실로 변환한다. 결과:

2026 현재의 경쟁

언제 PPO를 쓰나? 거의 안 쓴다. 2026년 현재 PPO는 학습 인프라가 이미 잘 구축된 큰 lab에서만 보존된다(예: OpenAI 내부). 새로 시작한다면 DPO나 그 후계자가 답.


16장 · 합성 데이터 — Augmentoolkit, Distilabel, Self-Instruct

좋은 SFT 데이터가 없으면? 만들어라. 2026년 현재 합성 데이터 생성이 파인튜닝의 1급 시민이 됐다.

Self-Instruct (Wang et al., 2022)

원조. 작은 시드 인스트럭션 175개를 LLM에 줘서 새 인스트럭션을 생성하게 하고, 다시 LLM이 답을 만드는 부트스트래핑. Alpaca·Wizard·Magpie의 토대.

Augmentoolkit (e-p-armstrong, 2024)

원문 텍스트에서 QA 페어를 생성하는 파이프라인. PDF·책·내부 문서를 SFT 가능한 형식으로 변환.

Distilabel (Argilla → Hugging Face, 2024)

Argilla 팀(현 Hugging Face 소속)이 만든 합성 데이터 프레임워크. 단계별 파이프라인을 정의 — 인스트럭션 생성, 답 생성, AI 평가, 필터링. UltraFeedback이 Distilabel로 만들어졌다.

NeMo Curator (NVIDIA)

대규모 데이터 큐레이션 — 디덥, 품질 필터링, PII 제거. 사전학습·SFT 모두에 쓰임.

Magpie 기법

Llama-3-Instruct에 빈 프롬프트만 주면 모델이 스스로 "사용자 차례"를 생성한다 — 이걸 인스트럭션으로 쓰고, 다시 모델이 답하게 한다. 비용 0(자가 생성)으로 1M+ 데이터를 만든다. 단점: 모델의 편향이 그대로.

합성 데이터의 함정


17장 · 서빙을 위한 양자화 — GGUF, AWQ, GPTQ, EXL2

파인튜닝된 모델을 서빙하려면 양자화가 필요하다. 학습 시 QLoRA 4비트와 별개로, 추론 시 양자화 포맷이 따로 있다.

워크플로

  1. fp16/bf16으로 LoRA 학습 → 어댑터를 베이스에 머지.
  2. 머지된 모델을 GGUF (CPU/Mac), AWQ (서버 GPU), EXL2 (RTX 추론)로 변환.
  3. 변환된 모델을 vLLM, TGI, llama.cpp, Ollama로 서빙.

2026년 현재 가장 흔한 흐름: PyTorch에서 LoRA 학습 → 머지 → GGUF로 양자화 → Ollama로 서빙.


18장 · 하드웨어 — H100/H200, A100, 4090/5090, M3/M4, MI300X

파인튜닝의 하드웨어는 2026년 다음과 같다.

NVIDIA 데이터센터

NVIDIA 컨슈머

Apple Silicon

AMD

어떻게 고르나


19장 · 클라우드 — Together, Modal, RunPod, vast.ai, Lambda Labs, Replicate

GPU를 사지 않고 빌리는 게 보통이다. 2026년 현재 주요 옵션.

가격 감각 (2026년 5월 기준 대략)


20장 · 한국·일본 모델의 파인튜닝

한국·일본 LLM 생태계는 자기 베이스 모델 빌더와 파인튜닝 커뮤니티 모두 활발하다.

한국

일본

한·일 파인튜닝 패턴


21장 · 어떤 도구를 골라야 하나 — 결정 트리

마지막 정리. 상황별 권장 조합.

처음 LoRA를 해보는 개인

회사 내부 데이터로 사내 모델

한국어/일본어 특화 모델

추론(reasoning) 모델

노트북에서 작게

빠른 프로토타입


22장 · 참고 자료

핵심 논문

라이브러리 공식 문서

한·일 LLM 생태계


에필로그 — 파인튜닝은 더 이상 비밀이 아니다

이 글의 한 문장 요약: 2026년 LLM 파인튜닝은 "사용자 도구"다. LoRA가 단순한 어댑터에서 출발해 DoRA·GaLore까지 진화하는 동안, Unsloth가 단일 GPU 학습을 2배 빠르게 만들었고, Axolotl과 LLaMA-Factory가 진입 장벽을 사라지게 했다. M3 Ultra Mac Studio 한 대로 70B 모델을 LoRA 튜닝할 수 있는 시대가 됐다.

남은 질문은 "할 수 있나"가 아니라 "무엇을 학습시킬 것인가"다. 좋은 데이터, 좋은 평가, 좋은 사용 사례 — 이것이 2026년 파인튜닝 엔지니어의 진짜 일이다.

"도구는 더 이상 병목이 아니다. 데이터가 병목이다."

— LLM 파인튜닝 2026, 끝.

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다