Gemma 4 가이드
Unsloth으로 Gemma 4 파인튜닝하는 방법: 단계별 가이드

2026년 6월 14일 업데이트: Gemma 4는 이제 E2B, E4B, 12B, 26B A4B, 31B 다섯 가지 주요 모델로 구성됩니다. 12B는 256K 컨텍스트와 네이티브 오디오/비디오를 갖춘 중간 티어이므로 런타임 문서에서는 현재 지원 상태도 확인하세요.
Unsloth는 E2B, E4B, 26B-A4B, 31B 등 Gemma 4의 원래 변체를 출시 당일부터 지원했으며, 공식 Gemma 4 제품군에는 이제 12B도 포함됩니다. 최신 12B 노트북이나 로더가 같은 형태로 제공되는지는 Unsloth의 현재 모델 페이지를 확인하세요. 표준 Hugging Face 학습 방식에 비해 최대 2배 빠른 속도와 70% 적은 VRAM 사용량을 자랑하므로, 개인용 하드웨어를 사용하는 모든 분에게 가장 실질적인 선택지가 됩니다.
이 가이드에서는 적절한 모델 변체 선택부터 최종 어댑터를 Ollama, llama.cpp 또는 LM Studio용으로 내보내는 방법까지 모든 과정을 다룹니다.
어떤 Gemma 4 모델을 파인튜닝해야 할까요?
답은 본인의 하드웨어 사양과 달성하려는 목표에 달려 있습니다.
| 모델 | 학습 시 VRAM (LoRA, bf16) | 적합한 환경 |
|---|---|---|
| E4B | ~8–10 GB | 노트북, RTX 3060/4060, 무료 버전 Colab |
| E2B | ~6–8 GB | 멀티모달 + 오디오 작업, 저예산 환경 |
| 26B-A4B | ~24+ GB (16-bit LoRA) | 속도/품질 균형, RTX 3090/4090 |
| 31B | ~20 GB (QLoRA 4-bit) | 최고의 품질, NVIDIA A100 / 듀얼 GPU 환경 |
몇 가지 중요한 참고 사항:
대부분의 사용자에게는 E4B가 가장 좋은 시작점입니다. 무료 Google Colab(T4 GPU)에서도 실행 가능하며, 12 GB 이상의 VRAM을 갖춘 모든 RTX GPU에서 작동합니다. 또한 텍스트와 멀티모달(이미지 + 오디오) 파인튜닝을 모두 지원합니다. Unsloth에서 전용 무료 Colab 노트북을 제공합니다.
26B-A4B MoE 모델에서는 QLoRA를 피하세요. 26B-A4B는 MoE(Mixture-of-Experts) 구조이므로 Unsloth는 4-bit QLoRA 대신 16-bit LoRA 사용을 권장합니다. MoE 라우팅과 4-bit 양자화는 궁합이 좋지 않습니다. 이 모델에서는 load_in_4bit=True 대신 load_in_16bit=True를 사용하세요.
최고의 품질이 중요하다면 31B가 훌륭한 타겟입니다. Dense 모델이므로 QLoRA가 잘 작동하며, 현재 아레나(Arena) AI 텍스트 리더보드에서 오픈 모델 중 3위를 기록하고 있습니다.
시작 전: Unsloth 설치 및 업데이트
아직 Unsloth가 설치되어 있지 않다면 여기서 시작하세요. 두 가지 사용 방식이 있습니다: Unsloth Studio(코드 없는 웹 UI 버전)와 Unsloth Core(코드 기반 워크플로우를 위한 Python 라이브러리).
옵션 A — Unsloth Studio (코딩 불필요, 초보자 권장)
macOS, Linux 또는 WSL:
curl -fsSL https://unsloth.ai/install.sh | sh
Windows PowerShell:
irm https://unsloth.ai/install.ps1 | iex
설치가 완료되면 Studio를 실행합니다:
unsloth studio -H 0.0.0.0 -p 8888
그 후 브라우저에서 http://localhost:8888을 엽니다. 처음 실행 시 비밀번호를 설정한 다음, 마법사를 통해 Gemma 4를 검색하고 모델 크기와 데이터셋을 선택하면 됩니다. Unsloth Studio가 나머지를 모두 처리하며, UI에서 진행 상황을 모니터링하고 완료 후 내보낼 수 있습니다.
옵션 B — Unsloth Core (코드 기반)
이미 설치되어 있는 경우 먼저 업데이트를 진행합니다:
pip install --upgrade --force-reinstall --no-cache-dir unsloth unsloth_zoo
신규 설치(PyTorch 백엔드 자동 감지)의 경우:
pip install unsloth --torch-backend=auto
데이터셋 준비하기
Gemma 4는 이전 모델(Gemma 1/2/3) 전용 형식이 아닌 user와 model 역할을 사용하는 표준 대화 형식을 사용합니다. 학습 데이터는 다음과 같은 구조여야 합니다:
{
"messages": [
{
"role": "user",
"content": "다음 리뷰의 감성을 분류해줘: '배송은 늦었지만 제품은 아주 훌륭합니다.'"
},
{
"role": "model",
"content": "혼합(Mixed) — 배송에 대해서는 부정적, 제품에 대해서는 긍정적입니다."
}
]
}
Gemma 4 전용 포맷 규칙:
- 답변 역할에는
assistant가 아닌"role": "model"을 사용하세요. 이는 토크나이저의 채팅 템플릿과 일치합니다. - Gemma 4에서는 공식적으로 시스템 프롬프트를 지원합니다. 대화 시작 부분에
{"role": "system", "content": "..."}메시지를 포함할 수 있습니다. - 학습 중에 사고(thinking) 모드를 활성화하려면 시스템 프롬프트 시작 부분에
<|think|>를 추가하세요. 모델의 추론 능력을 보존하고 싶다면 추론 스타일의 예제와 직접적인 답변 예제를 섞어서 구성하세요. Unsloth는 추론 능력을 유지하기 위해 최소 75% 이상의 추론 예제를 포함할 것을 권장합니다. - 멀티턴(multi-turn) 대화의 경우 최종 답변만 학습 타겟에 포함하세요. 이전 단계의 사고 블록을 다음 턴에 다시 입력으로 피드(feed)하지 마세요.
데이터셋 크기 가이드라인:
- 스타일 또는 말투 교정: 200~1,000개의 고품질 예제
- 특정 분야 적응 (의료, 법률, 기술): 10,000~50,000개 예제
- 지시어 이행 (Instruction following): 5,000~20,000개 예제
- 분류 또는 추출 작업: 500~5,000개 예제
항상 데이터의 10~20%는 평가용으로 남겨 두세요. 하나의 오염되거나 잘못된 예제가 수십 개의 깨끗한 예제보다 학습 결과에 더 큰 악영향을 미칠 수 있습니다.
텍스트 파인튜닝: 코드 분석
다음 예제는 LoRA를 사용하여 Gemma 4 E4B를 텍스트 작업용으로 파인튜닝하는 코드입니다. 데이터셋 URL 부분을 본인의 데이터로 교체하세요.
from unsloth import FastLanguageModel
import torch
from datasets import load_dataset
from trl import SFTTrainer, SFTConfig
max_seq_length = 2048 # 처음에는 보수적으로 시작하세요.
# 데이터셋 로드
dataset = load_dataset("json", data_files={"train": "your_dataset.jsonl"}, split="train")
# 모델 로드
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "google/gemma-4-e4b-it",
max_seq_length = max_seq_length,
load_in_4bit = False, # E4B 및 31B Dense 모델은 QLoRA(4-bit)도 가능
load_in_16bit = True, # bf16 LoRA — 권장 시작점
full_finetuning = False,
)
# LoRA 어댑터 연결
model = FastLanguageModel.get_peft_model(
model,
r = 16, # LoRA 랭크 — 높을수록 용량은 커지나 VRAM 더 많이 소모
target_modules = [
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",
],
lora_alpha = 16,
lora_dropout = 0,
bias = "none",
use_gradient_checkpointing = "unsloth", # 긴 컨텍스트나 빠듯한 VRAM 환경에서 필수
random_state = 3407,
max_seq_length = max_seq_length,
)
# 학습 실행
trainer = SFTTrainer(
model = model,
train_dataset = dataset,
tokenizer = tokenizer,
args = SFTConfig(
max_seq_length = max_seq_length,
per_device_train_batch_size = 1,
gradient_accumulation_steps = 4,
warmup_steps = 10,
max_steps = 100, # 실제 학습 시에는 num_train_epochs 등으로 변경
logging_steps = 1,
output_dir = "outputs_gemma4",
optim = "adamw_8bit",
seed = 3407,
dataset_num_proc = 1,
),
)
trainer.train()
메모리가 부족하신가요? 우선 두 가지를 확인해 보세요: per_device_train_batch_size를 1로 낮추고, max_seq_length를 줄이세요. use_gradient_checkpointing="unsloth" 설정은 필수입니다. 이는 VRAM 사용량을 획기적으로 줄이고 학습 중 실제 컨텍스트 길이를 늘리도록 설계되었습니다.
26B-A4B MoE 모델 파인튜닝
MoE 모델은 약간 다른 로더(loader)가 필요합니다. FastLanguageModel 대신 FastModel을 사용하고 16-bit LoRA 설정을 유지하세요:
import os
import torch
from unsloth import FastModel
model, tokenizer = FastModel.from_pretrained(
model_name = "unsloth/Gemma-4-26B-A4B-it",
max_seq_length = 2048,
load_in_4bit = False, # MoE 모델에서 QLoRA는 권장하지 않음
load_in_16bit = True, # bf16 LoRA
full_finetuning = False,
)
로드 후에는 위의 E4B 예제와 동일한 방식으로 LoRA 어댑터를 연결하고 학습하면 됩니다. MoE 파인튜닝의 경우 랭크 16과 짧은 컨텍스트 길이로 시작한 후, 파이프라인이 안정화되었을 때 확장하는 것을 권장합니다.
멀티모달 파인튜닝 (E2B 및 E4B)
E2B와 E4B는 이미지와 오디오를 기본적으로 처리할 수 있도록 설계된 멀티모달 변체입니다. 이미지 관련 학습이 필요한 경우 FastVisionModel을 사용하세요:
from unsloth import FastVisionModel
from unsloth.trainer import UnslothVisionDataCollator
from trl import SFTTrainer, SFTConfig
model, tokenizer = FastVisionModel.from_pretrained(
model_name = "google/gemma-4-e4b-it",
max_seq_length = 2048,
load_in_4bit = False,
use_gradient_checkpointing = "unsloth",
)
model = FastVisionModel.get_peft_model(
model,
finetune_vision_layers = False, # VRAM 절약을 위해 처음에는 텍스트 레이어만 시도
finetune_language_layers = True,
finetune_attention_modules = True,
finetune_mlp_modules = True,
r = 16,
lora_alpha = 16,
lora_dropout = 0,
bias = "none",
target_modules = "all-linear",
)
trainer = SFTTrainer(
model = model,
tokenizer = tokenizer,
data_collator = UnslothVisionDataCollator(model, tokenizer),
train_dataset = dataset,
args = SFTConfig(
per_device_train_batch_size = 1,
gradient_accumulation_steps = 4,
learning_rate = 2e-4,
output_dir = "outputs_gemma4_vision",
),
)
trainer.train()
주의: Gemma 4 멀티모달 프롬프트에서는 이미지가 텍스트 지시어보다 앞에 와야 합니다. 다음과 같은 형식입니다:
{
"messages": [
{
"role": "user",
"content": [
{"type": "image", "image": "path/to/image.jpg"},
{"type": "text", "text": "이 이미지에서 무슨 일이 일어나고 있는지 설명해줘."}
]
},
{
"role": "model",
"content": "..."
}
]
}
오디오 파인튜닝(E2B / E4B 전용)의 경우: 오디오 클립은 짧고 특정 작업 중심이어야 합니다. 오디오 워크플로우를 위해서는 Unsloth의 Vision RL 노트북 예제를 참고하는 것을 권장합니다.
파인튜닝된 모델 저장 및 내보내기
학습이 끝나면 배포 환경에 따라 여러 가지 방식으로 내보낼 수 있습니다.
LoRA 어댑터로 저장 (가장 빠르고 가벼움)
model.save_pretrained("gemma4_e4b_adapter")
tokenizer.save_pretrained("gemma4_e4b_adapter")
이렇게 하면 어댑터 가중치만 저장되어 전체 모델 대신 수백 MB 정도의 파일만 생성됩니다. 추론 시에는 베이스 모델이 필요합니다.
머지 및 GGUF로 내보내기 (llama.cpp / Ollama / LM Studio용)
model.save_pretrained_gguf(
"gemma4_e4b_finetuned",
tokenizer,
quantization_method = "q4_k_m" # 또는 "q8_0", "f16"
)
생성된 .gguf 파일은 llama.cpp에서 직접 실행하거나, 커스텀 Modelfile을 통해 Ollama로 가져오거나, LM Studio에서 로드하여 사용할 수 있습니다.
Unsloth Studio에서 내보내기
Studio UI를 사용했다면 학습 완료 후 'Export' 탭으로 이동하세요. GGUF, safetensors 또는 둘 다 선택할 수 있으며 머지 과정은 자동으로 진행됩니다.
꼭 확인하세요: 내보낸 모델이 다른 런타임(Ollama, llama.cpp 등)에서 이상하게 작동한다면, 대부분 채팅 템플릿이나 EOS 토큰 설정이 틀렸기 때문입니다. 추론 시에도 학습 때 사용한 것과 동일한 채팅 템플릿을 사용해야 합니다.
무료 Colab 노트북
Unsloth는 모든 Gemma 4 크기에 대해 무료 Google Colab 노트북을 제공합니다. E2B/E4B 노트북은 무료 T4 GPU에서 실행 가능하며, 26B-A4B 및 31B 노트북은 A100(Colab Pro)이 필요합니다.
| 모델 | 작업 종류 | 링크 |
|---|---|---|
| E2B | 텍스트 | Colab에서 열기 |
| E2B | 비전 | Colab에서 열기 |
| E2B | 오디오 | Colab에서 열기 |
| 26B-A4B | 비전 (A100) | Colab에서 열기 |
| 31B | 비전 (A100) | Colab에서 열기 |
일반적인 문제 해결
학습 중 메모리 부족(OOM): max_seq_length를 먼저 줄이고, 그다음 per_device_train_batch_size를 1로 낮추세요. use_gradient_checkpointing="unsloth"가 설정되어 있는지 반드시 확인하세요.
26B-A4B 모델에서 QLoRA 사용 성능 저하: MoE 아키텍처와 4-bit 양자화는 궁합이 좋지 않습니다. MoE 모델에서는 16-bit LoRA(load_in_16bit=True)를 고수하세요.
내보내기 후 채팅 템플릿 불일치: 모델 답변이 이상하다면 추론 런타임이 학습 때와 동일한 Gemma 4 채팅 템플릿을 사용하고 있는지 확인하세요. 내보내기 성능 저하의 가장 흔한 원인입니다.
파인튜닝 후 추론 능력 저하: Gemma 4의 내장된 추론 능력을 유지하고 싶다면 학습 데이터에 추론 스타일 예제와 일반 답변 예제를 섞어 대칭을 맞추세요. 추론 성능 보존을 위해 최소 75% 이상의 추론 예제 구성을 권장합니다.
공식 학습 참조 문서는 Unsloth 문서를 확인하세요.
관련 가이드
관련 가이드
지금 고민 중인 결정과 가장 잘 맞는 다음 가이드를 따라 Gemma 4 클러스터를 계속 탐색해 보세요.

Unsloth에서 Gemma 4를 지원하나요? 로컬 실행 및 파인튜닝 현황
Unsloth가 Gemma 4를 지원하는지에 대한 답변과 함께, 로컬 실행 지원, 파인튜닝 지원 및 모델별 주의 사항을 다루는 실전 가이드입니다.

Gemma 4 Unsloth 가이드: 사용 시점 및 주의 사항
Unsloth가 Gemma 4 워크플로우에서 어떤 역할을 하는지 이해하고, 본격적인 튜닝 단계로 넘어가기 전에 결정해야 할 사항들을 확인하세요.

DiffusionGemma가 LM Studio에서 작동하나요? 현재 상태 (2026년 6월)
LM Studio의 llama.cpp와 MLX 엔진 모두 2026년 6월 현재 DiffusionGemma 로드에 실패합니다. 오류가 무엇을 의미하는지, 어디서 추적되는지, 실제로 작동하는 도구는 무엇인지 설명합니다.
다음에 무엇을 읽을지 아직 고민 중인가요?
가이드 허브로 돌아가 모델 비교, 설정 워크스루, 하드웨어 계획 페이지를 둘러보세요.
