Skip to content
Published on

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

Authors

프롤로그 — 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.11% — 7M70M 파라미터로 잡으면 fp16에 14140MB. 옵티마이저 상태는 이 어댑터만 잡으므로 마찬가지로 작다. 활성화는 비슷하지만, 베이스가 4비트면 활성화 메모리도 줄어든다. **총 820GB**로 7B를 학습할 수 있다. RTX 4090 24GB 한 장으로 충분하다.

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

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

  • 분야가 베이스에서 크게 벗어났을 때 — 의료·법률·다른 언어·도메인 특화 어휘. LoRA는 베이스 분포의 작은 적응에 강하지만, 큰 분포 이동은 풀 파인튜닝이 더 안전하다.
  • 품질 마지막 1%를 짜내야 할 때 — 평가 벤치마크에서 최상위를 노릴 때, LoRA가 풀 파인튜닝에 살짝 못 미치는 경우가 있다.
  • 베이스를 가지고 있을 때 — 사내 베이스 모델 빌더라면 LoRA를 거치지 않고 바로 풀로 갈 수 있다.

그 외 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를 별도 어댑터로 적용. 여러 어댑터 핫스왑 가능.

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

  • rank r — 어댑터의 크기. 보통 8~64. 클수록 표현력 ↑, 메모리 ↑.
  • alpha — 스케일링 계수. 보통 r의 2배 (r=16이면 alpha=32). (alpha/r) * A*B가 실제 업데이트.
  • target_modules — 어떤 레이어에 LoRA를 붙일지. attention의 q/k/v/o가 기본이지만, MLP까지 붙이면 품질이 더 좋아진다.

실전 가이드 (2026 기준)

  • r=16, alpha=32가 안전한 기본값. r=8은 메모리 빠듯할 때, r=64는 품질을 짜낼 때.
  • target_modules는 q_proj·k_proj·v_proj·o_proj·gate_proj·up_proj·down_proj 7개에 다 붙이는 게 표준이 됐다 ("all-linear"). 처음 LoRA 논문은 q·v만 했지만, 모든 선형층에 다는 것이 일반적이다.
  • learning rate는 풀 파인튜닝보다 10~100배 크게(1e-4 ~ 5e-4). LoRA의 작은 파라미터는 더 공격적인 학습률을 견딘다.
  • dropout은 0.05~0.1. 과적합 방지.

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를 두 요소로 분해한다:

  • 크기(magnitude) m — W의 각 열의 norm.
  • 방향(direction) — norm으로 나눈 단위 벡터.

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

실험 결과

  • 같은 r에서 LoRA보다 1~3 포인트 더 좋은 벤치마크 점수.
  • 작은 r(r=4·8)에서 DoRA의 이점이 더 크다 — 풀 파인튜닝에 더 가까운 표현력.
  • 추가 메모리는 거의 무시할 수준(magnitude 벡터만 추가).

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보다는 크지만 풀 파인튜닝의 절반 이하.

단점

  • SVD 계산 비용이 추가됨(매 N 스텝).
  • 학습 속도가 LoRA보다 느리다(가중치 전체 업데이트).
  • 코드 통합이 LoRA만큼 매끄럽지 않다.

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


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

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

  • PiSSA (Principal Singular values and Singular vectors Adaptation, 2024) — A·B를 랜덤이 아니라 베이스 W의 SVD 상위 성분으로 초기화. 학습 초기 안정성과 수렴 속도 향상.
  • LoRA+ (2024) — A와 B의 학습률을 다르게 설정. B의 학습률을 A보다 16배 정도 크게 두면 수렴이 빨라진다는 관찰.
  • rsLoRA (Rank-Stabilized LoRA, 2024) — 스케일링을 alpha/sqrt(r)로 바꿔서 큰 r에서도 학습이 안정적이게 한다. 기본 LoRA는 r이 커지면 학습률 튜닝이 어려워지는 문제 해결.
  • VeRA (Vector-based Random Matrix Adaptation, 2024) — A·B를 고정(랜덤 초기화 후 동결)하고 두 작은 벡터 d, b만 학습. 파라미터를 LoRA의 1/10로 줄임. 멀티 태스크에 효율적.
  • LoftQ (LoRA-Fine-Tuning-Aware Quantization, 2023) — QLoRA의 양자화 오차를 LoRA 어댑터가 보상하도록 초기화. QLoRA 시작점 품질 ↑.
  • OFT/BOFT (Orthogonal Fine-Tuning, 2023) — 가중치의 직교 변환만 학습. 멀티 모달·이미지 모델에서 유용.
  • AdaLoRA (2023) — 레이어별 중요도에 따라 r을 동적 할당.

이 변형들은 "기본 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배 빠르게."

어떻게 빠른가

  • 수동 Triton 커널 — Transformers의 일반 PyTorch 커널을 직접 작성한 Triton 커널로 대체. attention·RMSNorm·rotary embedding 모두 커스텀.
  • 메모리 효율적 backward — 체크포인팅·재계산을 최적화해 활성화 메모리 50% 감소.
  • 4비트 자동 양자화 — Unsloth가 자동으로 NF4 양자화 + double quantization 적용.
  • 모델 특화 패치 — Llama·Mistral·Gemma·Phi·Qwen 각각에 최적화된 path.

사용 예

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시간).

제약

  • 멀티 GPU 지원이 vanilla보다 약하다(2026년 5월 기준, Unsloth Pro의 멀티 GPU가 별도 유료).
  • 지원 모델이 정해진 목록 내. 새 아키텍처는 패치를 기다려야 한다.

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

강점

  • 멀티 GPU·DeepSpeed·FSDP 1급 지원. 4x H100에서 70B 학습이 자연스럽다.
  • 모든 PEFT 변형 지원(LoRA·QLoRA·DoRA·GaLore).
  • 데이터셋 포맷 자동 변환 — alpaca, sharegpt, jsonl 등 자동 인식.
  • WandB·MLflow 통합.

약점

  • YAML이 거대해질 수 있다. 옵션이 100개 넘는다.
  • 디버깅 시 코드 안으로 들어가야 함 — 추상화의 대가.

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

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

특징

  • 100개 이상 모델 지원 — Llama, Mistral, Gemma, Qwen, Phi, ChatGLM, Yi, Baichuan, InternLM 등 거의 모든 메이저 오픈 모델.
  • LLaMA Board 웹 UI — 학습·평가·체크포인트 관리를 브라우저에서.
  • 모든 학습 방식 — Full, LoRA, QLoRA, DoRA, GaLore, BAdam, freeze, PT, SFT, RLHF(PPO·DPO·KTO·ORPO·SimPO).
  • 중국어·영어 데이터셋 빌트인 — Alpaca-zh, Belle, Firefly, Magpie 등.

사용

pip install llamafactory
llamafactory-cli webui

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

누가 쓰나

  • 모델 빌더의 빠른 실험(YAML 짜기 전 프로토타입).
  • 비코더 R&D — 데이터 사이언티스트가 코드 없이 파인튜닝.
  • 사내 모델 카드 시연 — 영업·마케팅이 직접 데모.

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의 의미

  • M3 Ultra Mac Studio (192GB 통합 메모리)로 70B 모델 LoRA 파인튜닝이 가능.
  • M4 Max MacBook Pro (128GB)로 Mistral 7B / Llama 3.2 8B 풀 파인튜닝이 가능.
  • 노트북에서 데이터가 외부로 나가지 않고 파인튜닝 — 의료·법률·기밀 데이터에 강점.

사용 예

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

제약

  • 학습 속도는 H100보다 느리다 — Apple GPU의 FLOPS가 데이터센터 GPU에 못 미친다.
  • 멀티 머신 분산은 지원이 약하다.
  • 새 모델 아키텍처는 MLX 변환을 기다려야 한다.

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


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

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

철학

  • 레시피 = 학습 스크립트. 각 사용 사례(LoRA·풀·QLoRA·DPO 등)별로 독립된 스크립트가 있다.
  • 상속이 아닌 복제 — 새 사용 사례는 기존 레시피를 복사해서 수정. 추상화 지옥 회피.
  • PyTorch 네이티브 — Hugging Face Transformers 의존성 없음. 모델·옵티마이저·데이터셋 모두 직접 구현.

사용

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

강점

  • 메모리 효율 — 활성화 체크포인팅, fp8 옵티마이저(experimental).
  • FSDP2 네이티브 지원 — 멀티 GPU 자연스럽게.
  • PyTorch 팀 직접 유지보수 — 새 PyTorch 기능을 빨리 받는다.

약점

  • 생태계가 Hugging Face보다 작다.
  • 모델 지원이 Axolotl·LLaMA-Factory보다 좁다.

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

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

  • ShareGPT — ChatGPT 대화를 사용자가 공유한 데이터(GPT-3.5~4 시대). 90K+ 대화. 다양성 좋음. 라이선스 회색지대(OpenAI 약관 vs 사용자 공유).
  • OpenHermes 2.5 (Teknium) — 1M+ 큐레이션 인스트럭션. Hermes 시리즈의 학습 데이터.
  • Magpie (Xu et al., 2024) — Llama-3-Instruct를 self-prompting해 만든 데이터. "내가 자기 자신에게 질문하게 하기" 기법.
  • Tülu 3 SFT Mix (Allen AI, 2024) — Tülu 시리즈의 SFT 혼합. 다양한 인스트럭션과 추론 데이터.
  • Nectar (Berkeley, 2023) — 7-wise GPT-4 랭킹 페어 데이터. DPO에 자주 쓰임.
  • UltraFeedback — 64K 페어 데이터, AI 피드백 기반.
  • HelpSteer / HelpSteer2 (NVIDIA) — Helpfulness·Correctness·Coherence·Complexity·Verbosity 5축 점수.
  • Code Alpaca — 20K 코드 인스트럭션.
  • Dolphin (Eric Hartford) — uncensored 데이터셋 시리즈.

데이터 품질이 양보다 중요

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와 동일한 최적화를 페어 데이터에 대한 단순한 분류 손실로 변환한다. 결과:

  • reward·critic 모델 불필요 → GPU 메모리 절반.
  • 학습이 안정적 — PPO의 reward hacking 회피.
  • 코드가 단순 — 수십 줄이면 끝.

2026 현재의 경쟁

  • DPO — 여전히 RLHF의 기본값.
  • ORPO — SFT와 DPO를 하나로. reference 모델 불필요. 메모리 더 절감.
  • KTO — 페어가 아닌 단일 라벨로도 정렬 가능. 데이터 수집이 편함.
  • GRPO — 추론 모델 학습에 강함(DeepSeek-R1이 사용).
  • RLOO — PPO의 단순화, 효율적.
  • SimPO — 더 단순한 페어 손실. 2024년 부상.

언제 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+ 데이터를 만든다. 단점: 모델의 편향이 그대로.

합성 데이터의 함정

  • 모델 붕괴(model collapse) — 합성 데이터로만 계속 학습하면 다양성이 사라진다.
  • 품질 필터링 필수 — AI 판정·휴먼 샘플 검사가 없으면 노이즈만 쌓인다.
  • 라이선스 — 어떤 모델로 만든 합성 데이터를 어디까지 쓸 수 있나(OpenAI 약관 등).

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

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

  • GGUF (llama.cpp) — CPU·Apple Silicon·임베디드의 표준. Q4_K_M, Q5_K_M, Q8_0 등 다양한 양자화 옵션. Ollama, LM Studio, Jan이 모두 GGUF.
  • AWQ (Activation-aware Weight Quantization) — 활성화 분포를 보고 중요한 가중치를 보존하는 4비트 양자화. 서버 GPU 추론에 자주 쓰임.
  • GPTQ — 가중치별 reconstruction error 최소화. AWQ 이전의 표준, 여전히 널리 쓰임.
  • EXL2 (ExLlama) — 양자화율을 레이어별로 다르게 — "중요한 레이어는 6비트, 덜 중요한 레이어는 3비트"식. 동일 비트레이트에서 품질 최상.
  • bitsandbytes 8/4-bit — 학습용 양자화. 서빙에도 쓸 수 있지만 추론 속도는 위 포맷들보다 느리다.

워크플로

  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 데이터센터

  • H100 (Hopper, 80GB HBM3) — 2022년 출시, 여전히 표준. fp8 지원. 한 장에 약 $30,000.
  • H200 (Hopper refresh, 141GB HBM3e) — 2024년 출시. 더 큰 VRAM, 더 빠른 대역폭. 70B 모델 추론·학습에 유리.
  • A100 (Ampere, 40/80GB) — 2020년, 여전히 클라우드 표준. H100보다 싸고 가용성 좋다.
  • B200/B100 (Blackwell, 2024 GA → 2025 본격) — Hopper 후속. fp4 추론, 더 큰 칩.

NVIDIA 컨슈머

  • RTX 4090 (24GB GDDR6X) — 단일 GPU 파인튜닝의 가성비 왕. 7~8B QLoRA 학습 가능.
  • RTX 5090 (32GB GDDR7, 2025) — 차세대. 70B QLoRA 가능 한계 직전.
  • RTX 6000 Ada (48GB) — 워크스테이션. 13~30B 학습.

Apple Silicon

  • M3 Ultra (192GB UMA, Mac Studio) — 70B 모델을 통합 메모리에 올린다.
  • M4 Max (128GB UMA, MacBook Pro) — 노트북에서 13~30B 학습.
  • M4 Pro (64GB) — 7~13B 학습 가능.

AMD

  • MI300X (192GB HBM3) — 2023년 발표, 2024년 클라우드 채택 확대. ROCm·PyTorch 지원. H100의 대안.
  • MI325X / MI350 (2025~2026) — 차세대.

어떻게 고르나

  • 학습 빈도 적음 + 7B/13B → 클라우드 임대(시간 단위 0.5 0.5~3).
  • 매일 학습 + 7B/13B → RTX 4090/5090 단일.
  • 매일 학습 + 30B/70B → 클라우드 H100 8-GPU 노드.
  • 데이터 외부 유출 금지 → M3 Ultra Mac Studio (192GB).

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

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

  • Together.ai — 파인튜닝 API. 파일 업로드 → SFT/DPO/LoRA 끝. Llama·Mistral·Qwen 등 호스트. 사후 추론도 통합.
  • Modal — 서버리스 GPU. Python 데코레이터로 GPU 함수 정의. 학습 스크립트를 클라우드에 배포하는 게 자연스럽다.
  • RunPod — 시간 단위 GPU 임대. 4090, A100, H100 모두. 가격이 가장 저렴한 축. Pods와 Serverless.
  • vast.ai — P2P GPU 시장. 가장 저렴 — 다른 사람의 GPU를 빌린다. 안정성은 임차인에 따라 다름.
  • Lambda Labs — H100 / H200 GPU 클러스터에 강함. 대규모 분산 학습 친화적.
  • Replicate — 모델 호스팅 중심이지만 학습 API도 있음.
  • Coreweave — 대규모 H100 H200 클러스터.
  • Fireworks / Anyscale — 서빙 중심, 학습도 일부.
  • Hugging Face Endpoints / Inference / AutoTrain — HF 생태계에 가장 자연스러움.

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

  • A100 80GB: 1 1~2/시간 (RunPod, vast.ai)
  • H100 80GB: 2 2~4/시간
  • 8x H100 노드: 20 20~30/시간
  • 7B QLoRA 학습 1회 (3 epoch, 100K samples): A100에서 4~8시간, 4 4~16

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

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

한국

  • HyperCLOVA X / HyperCLOVA SEED (Naver) — 네이버의 자체 한국어 베이스. 2025년 SEED 공개로 일부 가중치를 외부에 풀었다. 한국어 어순·존댓말·문화 맥락 학습량이 글로벌 모델보다 많다.
  • KoLLM 시리즈 (Kakao) — 카카오의 한국어 베이스. 카카오톡 데이터로 강화.
  • EXAONE (LG AI Research) — 한국어·영어 모두 강력한 32B/8B 베이스. 오픈 가중치 공개.
  • Saltlux Luxia — Saltlux의 엔터프라이즈 한국어 모델. 콜센터·문서 파이프라인에 특화.
  • Bllossom — 한국어 SFT 데이터셋과 Llama 기반 한국어 파인튜닝 모델 시리즈. 커뮤니티 주도.
  • KULLM (고려대) — 학계 한국어 LLM. SFT 데이터셋 공개.

일본

  • ELYZA-japanese-Llama — Llama 베이스에 일본어 추가 사전학습+SFT. 자연스러운 일본어 출력.
  • LINE japanese-large-lm (LY Corporation) — LINE이 만든 일본어 LM. 1B / 3.6B / 36B 시리즈.
  • Rinna 시리즈 — 일본어 GPT/BERT 시리즈, 오랜 일본어 LM 빌더.
  • Karakuri-LM — 일본어 비즈니스 도메인 강화.
  • Stockmark — 일본어 비즈니스 뉴스·금융 도메인.
  • CyberAgent OpenCALM — 일본어 오픈 모델 시리즈.
  • PLaMo (Preferred Networks) — 일본어·영어 베이스.

한·일 파인튜닝 패턴

  • 베이스 + 언어 어댑터 — 글로벌 베이스(Llama·Qwen·Mistral)에 한국어/일본어 LoRA를 붙이는 패턴이 가장 흔하다.
  • 이중 학습 — 영어 인스트럭션 데이터에 자국어 데이터를 섞어 SFT, 그 다음 자국어 DPO로 톤 정렬.
  • 존댓말·경어 정렬 — 한국어·일본어 모두 화행이 풍부해서 톤이 큰 차별 요소. DPO/KTO가 자주 쓰임.

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

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

처음 LoRA를 해보는 개인

  • 하드웨어: RTX 4090 또는 RunPod A100 1장.
  • 데이터: Alpaca, OpenHermes 같은 시작용 SFT 데이터셋.
  • 도구: Unsloth + TRL SFTTrainer. 코드 30줄로 시작.
  • 베이스: Llama 3.2 3B 또는 Mistral 7B.

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

  • 하드웨어: 클라우드 H100 1~8장 또는 M3 Ultra(데이터 외부 금지 시).
  • 데이터: 사내 위키·티켓·고객 문의 변환 + 합성 QA(Augmentoolkit).
  • 도구: Axolotl(YAML 재현성) 또는 LLaMA-Factory(웹 UI).
  • 베이스: Llama 3.x, Qwen 2.5, Mistral 7B/22B 중 라이선스 적합한 것.

한국어/일본어 특화 모델

  • 베이스: HyperCLOVA SEED, EXAONE, Qwen 2.5(다국어 강함), ELYZA, LINE LM 중.
  • 데이터: 자국어 인스트럭션 + 영어 인스트럭션 혼합(7:3).
  • 도구: Axolotl + DPO. 한국어·일본어 톤 정렬이 큰 차별.

추론(reasoning) 모델

  • 데이터: 수학·코드 문제와 단계별 풀이.
  • 도구: TRL + GRPO. DeepSeek-R1식.
  • 베이스: Qwen 2.5-Math, Llama 3.1 8B/70B.

노트북에서 작게

  • 하드웨어: M3/M4 Mac.
  • 도구: MLX-LM.
  • 베이스: Mistral 7B, Llama 3.2 3B/8B.

빠른 프로토타입

  • 클라우드 API: Together.ai 파인튜닝 API — 파일 업로드 → 끝.
  • 시간: 1시간 안에 첫 SFT 결과 확인.

22장 · 참고 자료

핵심 논문

라이브러리 공식 문서

한·일 LLM 생태계


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

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

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

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

— LLM 파인튜닝 2026, 끝.