Gemma 4 ガイド

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

約 10 分
gemma 4unslothファインチューニングloraqloragguf
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 は、usermodel ロールを持つ標準的な対話形式を使用します。

{
  "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 の記事群をそのまま辿り、今の判断にいちばん近い次の記事へ進んでください。

次に何を読めばいいか迷っていますか?

ガイド一覧に戻って、モデル比較、ローカル導入、ハードウェア計画の3方向から続けて見ていけます。