Gemma 4 ガイド
Unsloth で Gemma 4 をファインチューニングする方法:ステップバイステップガイド

Unsloth は、E2B、E4B、26B A4B、31B の全 4 種類の Gemma 4 バリアントを初日からサポートしています。標準的な Hugging Face での学習と比較して、学習速度は最大 2 倍、VRAM 使用量は最大 70% 削減されるため、コンシューマー向けハードウェアを使用するユーザーにとって最も実用的な選択肢となります。
本ガイドでは、適切なモデルバリアントの選択から、学習済みアダプターを Ollama、llama.cpp、または LM Studio で使用するためのエクスポートまで、そのすべてを解説します。
どの Gemma 4 モデルをファインチューニングすべきか?
答えは、使用しているハードウェアと、何を達成したいかによって決まります。
| モデル | 学習に必要な VRAM (LoRA, bf16) | 最適な用途 |
|---|---|---|
| E4B | 約 8–10 GB | ノート PC, 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 であれば余裕を持って実行でき、テキストだけでなくマルチモーダル(画像・音声)の学習もサポートしています。
- 26B A4B MoE での QLoRA は避けてください。 26B A4B は Mixture-of-Experts モデルであるため、Unsloth は 4-bit QLoRA ではなく 16-bit LoRA を推奨しています。MoE ルーティングと 4-bit 量子化の相性があまり良くありません。
- 品質を最優先するなら 31B が目標となります。 Dense(高密度)モデルであるため QLoRA が効果的に機能します。
準備:Unsloth のインストールと更新
Unsloth が未インストールの場合は、ここから始めてください。利用方法は 2 つあります。Unsloth Studio(ノーコード Web 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 を検索し、モデルサイズとデータセットを選択すれば、あとは Studio が処理してくれます。
オプション B — Unsloth Core(コードベース)
既存のインストールがある場合は、まず更新してください。
pip install --upgrade --force-reinstall --no-cache-dir unsloth unsloth_zoo
データセットの準備
Gemma 4 は、user と model ロールを持つ標準的な対話形式を使用します。
{
"messages": [
{
"role": "user",
"content": "このレビューの感情を分類してください:'発送は遅かったですが、製品は素晴らしいです。'"
},
{
"role": "model",
"content": "混合(Mixed) — 発送についてはネガティブ、製品についてはポジティブな感情です。"
}
]
}
Gemma 4 固有のルール:
- レスポンスには
"role": "model"("assistant" ではない)を使用してください。 - 各会話の冒頭に
{"role": "system", "content": "..."}を含めることができます。 - 学習中に思考 (thinking) モードを有効にするには、システムプロンプトの冒頭に
<|think|>を入れます。モデルの推論能力を維持したい場合は、推論スタイルの例と直接回答の例を混ぜることをお勧めします。
テキストのファインチューニング:コード例
以下は、Gemma 4 E4B を LoRA で学習させる例です。
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,
load_in_16bit = True, # bf16 LoRA — 推奨される開始設定
full_finetuning = False,
)
# LoRA アダプターの適用
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 = 16,
lora_dropout = 0,
bias = "none",
use_gradient_checkpointing = "unsloth",
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,
logging_steps = 1,
output_dir = "outputs_gemma4",
optim = "adamw_8bit",
seed = 3407,
),
)
trainer.train()
26B A4B MoE モデルの学習
MoE モデルでは load_in_16bit=True を維持してください。
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,
load_in_16bit = True,
full_finetuning = False,
)
マルチモーダル学習 (E2B / E4B)
画像を含むタスクでは FastVisionModel を使用します。
from unsloth import FastVisionModel
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,
finetune_language_layers = True,
target_modules = "all-linear",
)
重要: マルチモーダルのプロンプトでは、メッセージ内容リストの中で画像がテキスト指示よりも前にある必要があります。
保存とエクスポート
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 で直接読み込んだり、Ollama にインポートしたり、LM Studio でロードしたりできます。
よくある問題と対策
- 学習中にメモリ不足になる:
max_seq_lengthを減らすか、per_device_train_batch_sizeを 1 に下げてください。use_gradient_checkpointing="unsloth"が設定されているか確認してください。 - エクスポート後に動作がおかしい: 推論時のチャットテンプレートや EOS トークンが、学習時と一致しているか確認してください。これが最も多い原因です。
- 推論能力が低下した: 学習データに、推論プロンプトと直接回答のみのプロンプトを適切な比率で混ぜてください。推論動作を維持するには、少なくとも 75% を推論形式の例とすることを Unsloth は推奨しています。
関連記事
関連記事
Gemma 4 の記事群をそのまま辿り、今の判断にいちばん近い次の記事へ進んでください。

Unsloth は Gemma 4 に対応している? ローカル実行とファインチューニングの状況
Unsloth が Gemma 4 をサポートしているかという疑問に対し、ローカル実行、ファインチューニングのサポート、および重要なモデル固有の注意点を詳しく解説します。

Gemma 4 Unsloth ガイド:いつ使うべきか、そして注意点は何か
Gemma 4 のワークフローの中で Unsloth がどのような役割を果たすのか、そして調整(チューニング)を始める前に何を判断すべきかを理解するためのガイド。

llama.cpp は Gemma 4 に対応している? GGUF の状況、修正、動作確認済みモデル
llama.cpp が Gemma 4 をサポートしているかという疑問に対し、公式 GGUF リンク、現在のサポート状況、そして「サポート済み」が具体的に何を意味するのかを詳しく回答します。
次に何を読めばいいか迷っていますか?
ガイド一覧に戻って、モデル比較、ローカル導入、ハードウェア計画の3方向から続けて見ていけます。
