AI.zip
  • AI 모델
  • 방법론
  • AI 서비스
  • 가격 비교
  • 블로그

AI.zip

AI 모델, 서비스, 방법론을 큐레이션하는 에디토리얼 플랫폼

탐색

  • AI 모델
  • AI 서비스
  • 방법론
  • 블로그

커뮤니티

  • 소개
  • 디스코드 참여
  • 문의

법적고지

  • 이용약관
  • 개인정보처리방침

© 2026 ai.zip. All rights reserved.

Discord 커뮤니티
블로그LLM 파인튜닝 실전 가이드: QLoRA로 나만의 모델 만들기 (2025)

LLM 파인튜닝 실전 가이드: QLoRA로 나만의 모델 만들기 (2025)

튜토리얼
2026년 3월 28일약 3분

핵심 포인트

  • 1.파인튜닝을 해야 하는 경우 파인튜닝은 모든 상황에서 필요하지 않습니다
  • 2.먼저 파인튜닝이 진짜 필요한지 판단하세요: 파인튜닝이 진짜 필요한 경우: 특정 산업 용어, 말투, 형식을 일관되게 써야 할 때 API 비용을 대폭 줄이고 싶을 때 (소형 파인튜닝 모델 > 대형 범용 모델) 지연 시간을 극단적으로 줄여야 할 때 인터넷 연결 없는 온프레미스 환경 QLoRA: 저사양에서 파인튜닝하는 방법 QLoRA(Quantized Low-Rank Adaptation)는 RTX 3090(24GB VRAM) 한 장으로도 70B 모델을 파인튜닝할 수 있게 해주는 기법입니다
  • 3.핵심 개념 LoRA의 원리: 모델의 모든 가중치를 업데이트하는 대신, 저랭크(low-rank) 행렬 2개만 학습합니다

파인튜닝을 해야 하는 경우

파인튜닝은 모든 상황에서 필요하지 않습니다. 먼저 파인튜닝이 진짜 필요한지 판단하세요:

mermaid
flowchart TD
    Start[커스텀 AI 필요] --> Q1{프롬프트만으로<br/>해결 가능?}
    Q1 -- Yes --> Prompt[System Prompt + Few-shot<br/>충분함]
    Q1 -- No --> Q2{지식을 추가해야 하나?}
    Q2 -- Yes --> RAG[RAG 구축<br/>파인튜닝보다 쉬움]
    Q2 -- No --> Q3{특정 스타일/형식<br/>일관성이 필요?}
    Q3 -- Yes --> FT[파인튜닝 고려]
    Q3 -- No --> Q4{응답 속도/비용<br/>극단적 최적화?}
    Q4 -- Yes --> FT
    Q4 -- No --> Prompt

파인튜닝이 진짜 필요한 경우:

  • 특정 산업 용어, 말투, 형식을 일관되게 써야 할 때
  • API 비용을 대폭 줄이고 싶을 때 (소형 파인튜닝 모델 > 대형 범용 모델)
  • 지연 시간을 극단적으로 줄여야 할 때
  • 인터넷 연결 없는 온프레미스 환경

QLoRA: 저사양에서 파인튜닝하는 방법

QLoRA(Quantized Low-Rank Adaptation)는 RTX 3090(24GB VRAM) 한 장으로도 70B 모델을 파인튜닝할 수 있게 해주는 기법입니다.

핵심 개념

LoRA의 원리: 모델의 모든 가중치를 업데이트하는 대신, 저랭크(low-rank) 행렬 2개만 학습합니다.

원본 가중치 W (고정)
+ 델타 = A × B  (A: r×d, B: d×r, r << d)
────────────────
실제 사용 가중치 = W + A × B

전체 파라미터의 0.1~1%만 학습 → 메모리 90% 이상 절감

QLoRA 추가: 기본 모델을 4비트로 양자화해 메모리를 더 줄이고, 그 위에 LoRA 어댑터를 학습합니다.


실전: Llama 3.1 8B 파인튜닝

환경 설정

bash
pip install transformers datasets peft trl accelerate bitsandbytes

데이터 준비파인튜닝 데이터는

지시-응답 쌍입니다:

python
# 데이터 형식 (Alpaca 스타일)
training_data = [
    {
        "instruction": "다음 고객 리뷰의 감정을 분석하세요",
        "input": "배송이 3일이나 걸렸어요. 제품은 괜찮은데 배송이 너무 느려요.",
        "output": "감정: 혼합 (부정적 배송 경험 + 긍정적 제품 평가)
주요 불만: 배송 속도
만족 요인: 제품 품질"
    },
    # 최소 수백~수천 개 필요
]

# HuggingFace Dataset 형식으로 변환
from datasets import Dataset

def format_prompt(example):
    return {
        "text": f"#

## 지시:
{example['instruction']}

### 입력:
{example['input']}

### 응답:
{example['output']}"
    }

dataset = Dataset.from_list(training_data).map(format_prompt)

QLoRA 학습

python
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, TaskType
from trl import SFTTrainer, SFTConfig
import torch

# 4비트 양자화 설정
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.float16,
    bnb_4bit_use_double_quant=True,
)

# 모델 로드
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B-Instruct",
    quantization_config=bnb_config,
    device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")

# LoRA 설정
lora_config = LoraConfig(
    r=16,                    # 랭크 (작을수록 파라미터 적음, 16~64 권장)
    lora_alpha=32,           # 스케일링 파라미터 (r의 2배 권장)
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type=TaskType.CAUSAL_LM,
)

model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: 6,815,744 || all params: 8,037,986,304 || trainable%: 0.085

# 학습
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    args=SFTConfig(
        output_dir="./output",
        num_train_epochs=3,
        per_device_train_batch_size=4,
        gradient_accumulation_steps=4,
        warmup_steps=100,
        learning_rate=2e-4,
        fp16=True,
        logging_steps=10,
        save_steps=500,
    ),
    dataset_text_field="text",
    max_seq_length=2048,
)

trainer.train()
trainer.save_model("./my-finetuned-model")

GPU 메모리 요구사항 가이드

모델기법최소 VRAM권장 VRAM
Llama 3.1 8BQLoRA12GB16GB
Llama 3.1 8BLoRA (fp16)20GB24GB
Llama 3.1 70BQLoRA40GB80GB
Qwen 2.5 14BQLoRA20GB24GB
Mistral 7BQLoRA10GB16GB

클라우드 GPU 옵션:

  • RunPod: RTX 3090 (24GB) $0.44/시간
  • Lambda Labs: A100 (80GB) $1.10/시간
  • Google Colab Pro+: A100 (40GB) 월 $50 무제한

OpenAI 파인튜닝 API (코딩 없는 방법)

직접 학습 환경을 구축하기 어렵다면 OpenAI의 파인튜닝 API를 사용합니다:

python
from openai import OpenAI

client = OpenAI()

# 1. 데이터 업로드
with open("training_data.jsonl", "rb") as f:
    file = client.files.create(file=f, purpose="fine-tune")

# 2. 파인튜닝 시작
job = client.fine_tuning.jobs.create(
    training_file=file.id,
    model="gpt-4o-mini",  # 가장 저렴한 옵션
    hyperparameters={"n_epochs": 3}
)

# 3. 완료 후 사용
response = client.chat.completions.create(
    model=job.fine_tuned_model,  # ft:gpt-4o-mini:org:custom:id
    messages=[{"role": "user", "content": "..."}]
)

데이터 형식 (JSONL):

json
{"messages": [{"role": "system", "content": "당신은 고객서비스 직원입니다"}, {"role": "user", "content": "환불 요청합니다"}, {"role": "assistant", "content": "안녕하세요! 불편을 드려 죄송합니다..."}]}

파인튜닝 vs 프롬프트 엔지니어링 비용 비교

시나리오: 하루 10만 건 분류 태스크

방법모델월 비용레이턴시
System PromptGPT-4o~$7501-2초
System PromptGPT-4o-mini~$600.5초
파인튜닝GPT-4o-mini ft~$300.3초
자체 QLoRALlama 3.1 8BGPU 비용만0.1초

파인튜닝으로 비용 50~90% 절감 가능합니다.


결론파인튜닝 시작 전 체크리스트:

  1. ✅ 프롬프트 최적화로 충분하지 않은가?
  2. ✅ 학습 데이터가 최소 500개 이상 있는가?
  3. ✅ 데이터 품질이 일관적인가?
  4. ✅ GPU 또는 클라우드 환경이 준비됐는가?

빠르게 시작하고 싶다면: OpenAI gpt-4o-mini 파인튜닝 → 코드 최소화, 학습 데이터만 준비 성능과 비용 최적화가 목표라면: QLoRA + Llama 3.1 8B → 자체 인프라에서 완전 제어

이 글에서 다루는 AI

OpenAI: GPT-4o

OpenAI · 모델

OpenAI: GPT-4o-mini

OpenAI · 모델

Anthropic: Claude Sonnet 4.5

Anthropic · 모델

ai.zip 커뮤니티에 참여하세요

AI 소식·유용한 링크 공유, 새 모델/서비스 토론까지 -- Discord에서 함께해요.

Discord 참여하기

이전글

Claude API 완전 가이드: Tool Use, Vision, Streaming 실전 활용

다음글

AI 프로덕트 관리 가이드: AI 기능 기획부터 출시까지 (2025)

댓글

0개

댓글을 작성하려면

로그인

해주세요

글 정보

튜토리얼
2026년 3월 28일3분

관련 모델

OpenAI: GPT-4o

OpenAI

OpenAI: GPT-4o-mini

OpenAI

Anthropic: Claude Sonnet 4.5

Anthropic

관련 서비스

OpenAI API Platform

Anthropic: Claude Haiku 4.5

Anthropic · 모델

OpenAI API Platform

서비스

Claude API

서비스

Vertex AI

서비스

Amazon Bedrock

서비스

Corrective RAG (CRAG)

RAG (Retrieval-Augmented Generation)

Self RAG

RAG (Retrieval-Augmented Generation)

ORPO

Fine-tuning

Fine-tuning

Transfer Learning

Claude API

Vertex AI

관련 방법론

Corrective RAG (CRAG)

RAG (Retrieval-Augmented Generation)

Self RAG

RAG (Retrieval-Augmented Generation)

ORPO

Fine-tuning