Gemma 4ファインチューニングガイド
GoogleのGemma 4をUnslothで学習します。
Google の Gemma 4 12B、E2B、E4B、26B-A4B、31B を Unsloth。Unsloth は Gemma 4 の画像、テキスト、音声、RL ファインチューニングをすべてサポートします。
Unsloth は Gemma 4 を学習します 約1.5倍高速 で 約60% 少ない VRAM FA2 構成よりも(精度低下なし)
多くの共通 Gemma 4 学習におけるバグを修正しました (Unsloth 由来ではありません)。
Gemma 4 E2B は 8GB VRAM。E4B には 10GB VRAM が必要です。
Gemma 4 をファインチューニングする 私たちの 無料の Google Colab ノートブック:
Gemma 4 は、私たちの UI で無料で実行・学習できます。 Unsloth Studio✨ ノートブック:
さらに多くの ノートブックはこちら.
Gemma 4 は 強化学習 (RL)でも 9GB VRAM で学習できます。
Gemma 4 E2B LoRA は 8〜10GB VRAM で動作します。E4B LoRA には 17GB VRAM が必要です。
31B QLoRA は 22GB で動作し 、26B-A4B LoRA には 40GB 超が必要です
エクスポート/GGUF などへのモデルの保存 と フルファインチューニング (FFT) でも動作します。
🐛 バグ修正 + ヒント
もし Gemma-4 E2B と E4B の損失が 13〜15 であれば、それは完全に正常です — これはマルチモーダルモデルによくある癖です。Gemma-3N、Llama Vision、Mistral vision モデルなどでも同様でした。
Gemma 26B と 31B は、1〜3 かそれ以下でより低い損失になります。Vision では 2 倍高くなるので 3〜5 です
🍇勾配蓄積によって損失が大きく見える場合があります


13〜15 より高い損失(100 や 300 など)が出る場合、勾配蓄積が正しく考慮されていない可能性が高いです — 私たちは これを Unsloth と Unsloth Studio の一部として修正しました。
勾配蓄積について詳しくは、こちらのバグ修正ブログをご覧ください: https://unsloth.ai/blog/gradient
⁉️Gemma-4 31B と 26B-A4B の推論での IndexError
31B と 26B で推論を行うと、このエラーが表示されることがあります:
原因は以下です:
Gemma-4 31B と 26B-A4B には num_kv_shared_layers = 0。Python では、 -0 == 0なので layer_types[:-0] は次のように崩れます layer_types[:0] == []。キャッシュは 0 個のレイヤースロットで構築され、最初の attention forward で次の内部でクラッシュします Cache.update.
⛔ use_cache = True E2B、E4B では生成が意味不明でした
問題を参照: 「[Gemma 4] use_cache=False は attention 計算を破壊し、ゴミの logits を生成します #45242」
Gemma-4 E2B と E4B はレイヤー間で KV 状態を共有します(num_kv_shared_layers = 20 と 18)。キャッシュは、初期レイヤーが後続レイヤーに再利用させるための KV を保存する唯一の場所です。 use_cache=False (これはすべての QLoRA チュートリアルが設定し、また gradient_checkpointing=True gradient_checkpointing=True によって強制されます) Gemma4TextModel.forward はキャッシュの構築をスキップするため、KV 共有レイヤーは現在の隠れ状態から K と V をローカルに再計算する処理に落ちます。logits はめちゃくちゃになり、学習損失は発散します。
修正前(unsloth/gemma-4-E2B-it、プロンプト「1+1 はいくつ?」):
修正後:
📻音声の float16 オーバーフロー
Gemma4AudioAttention 使用します config.attention_invalid_logits_value = -1e9 の masked_fill 呼び出しで使用しています。fp16(Tesla T4)では、-1e9 は fp16 の最大値 65504 をオーバーフローし、次を引き起こします:
原因は self.config.attention_invalid_logits_value :
💡 Gemma-4 のヒント
もし 推論能力を維持したいなら 、推論スタイルの例と直接回答を混ぜることができます(推論を最低 75% は維持してください)。そうしない場合は完全に出力しても構いません。 使用するのは
gemma-4推論なしの chat template にはgemma-4-thinking推論ありのバリアントに使用します。 大きい 26B と 31B には推論ありを、小さいものには推論なしを使用してください。推論モードを有効にするには
enable_thinking = True / Falseでtokenizer.apply_chat_template推論有効:
以下が出力されます
<bos><|turn>system\n<|think|><turn|>\n<|turn>user\n2+2 はいくつ?<turn|>\n<|turn>model\n推論無効:
以下が出力されます
<bos><|turn>user\n2+2 はいくつ?<turn|>\n<|turn>model\n<|channel>thought\n<channel|>Gemma 4 は 140 言語に対応しているため、多言語ファインチューニングに強力です。
学習するなら E4B QLoRA よりも E2B LoRA E4B の方が大きく、量子化精度の差はごくわずかだからです。Gemma 4 E4B LoRA はさらに優れています。
ファインチューニング後は GGUF (llama.cpp/Unsloth/Ollama など用)
⚡ クイックスタート
🦥 Unsloth Studioガイド
Gemma 4 は Unsloth Studio私たちの新しいローカル AI 向けオープンソース Web UI で実行・ファインチューニングできます。
Unsloth Studio を使えば、モデルをローカルで MacOS、Windows、Linux 上で実行し、NVIDIA GPU で学習できます。Intel、MLX、AMD の学習サポートも今月中に対応予定です。

🦥 Unsloth Core(コードベース)ガイド
Gemma 4 用の無料ノートブックを用意しました:
そして、強化学習(RL)向けには: E2B (RL GRPO)
より大きい Gemma 4 モデル向けのノートブックも用意しましたが、A100 が必要です:
Gemma-4-26B-A4B — A100 GPU
Gemma-4-31B — A100 GPU
以下は単体の Gemma-4-26B-A4B-it テキスト SFT レシピです。これはテキストのみです。こちらの 画像ファインチューニング セクションもご覧ください。
MoE用ローダーの例(bf16 LoRA):
読み込んだら、LoRAアダプタを付けて、上のSFTの例と同様に学習します。
強化学習(RL)
これで、Gemma 4 を RL、GSPO、GRPO などで 無料ノートブック.
Gemma 4 E2B RL は 9GB で動作します。
このノートブックの目的は、Gemma 4 に Sudoku パズルを解く方法を学習させることです。 GRPO.
モデルは空のセルを埋める戦略を考案し、正しい配置と有効なパズルの完成に対して報酬を与えます。
vLLM ではサポートされていませんが、Unsloth を使えば Gemma 4 RL を実行できます。次の設定をすることで: fast_inference=False モデルを読み込むとき:

MoE のファインチューニング(26B-A4B)
この 26B-A4B モデルは、Gemma 4 ラインナップにおける速度と品質の中間点です。これは MoE トークンごとに有効になるパラメータが一部のみのモデルであるため、保守的なファインチューニング方針は次のとおりです:
使用する LoRA フルファインチューニングではなく
優先する 16ビット / bf16 LoRA メモリが許すなら
まずは短いコンテキストと小さな rank から始める
パイプラインが安定してから拡張する
最高品質を目指していて、より多くのメモリがあるなら、代わりに 31B を使ってください。
マルチモーダルのファインチューニング(E2B / E4B)
なぜなら E2B と E4B サポートする 画像 と 音声は、マルチモーダルのファインチューニングにおける Gemma 4 の主要なバリアントだからです。
マルチモーダルモデルは
FastVisionModel保つ
finetune_vision_layers = Falseまず言語層、アテンション層、MLP 層のみをファインチューニングする
必要に応じて後で vision 層や audio 層を有効にする
Gemma 4 マルチモーダル LoRA の例:
画像の例の形式
覚えておいてください: Gemma 4 のマルチモーダルプロンプトでは、画像を 先に テキスト指示の前に置きます。
音声の例の形式
音声は E2B / E4B 専用です。クリップは短く、タスクに特化したものにしてください。
ファインチューニング済みモデルの保存 / エクスポート
次の項目向けの、特定の推論 / デプロイガイドを確認できます: Unsloth Studio, llama.cpp, vLLM, llama-server, Ollama または SGLang.
GGUF に保存
Unsloth は GGUF への直接保存をサポートしています:
あるいは GGUF を Hugging Face にプッシュできます:
書き出したモデルが別のランタイムで悪く動作する場合、Unsloth は最も一般的な原因を示します: 推論時のチャットテンプレート / EOS トークンの誤り (学習時に使ったのと同じチャットテンプレートを使わなければなりません)。
詳細は推論ガイドをご覧ください:
Gemma 4 のデータベストプラクティス
Gemma 4 には、覚えておくべきいくつかの書式上の詳細があります。
1. 標準のチャットロールを使う
Gemma 4 では標準の以下を使います:
systemuserassistant
つまり、SFT データセットは古い Gemma 固有のロール形式ではなく、通常のチャット形式で記述する必要があります。
2. thinking モードは明示的です
SFT 中に thinking スタイルの振る舞いを保持したい場合:
形式を一貫させる
どちらを学習対象にするか決める 表示される思考ブロック または 最終回答のみ
して はいけません 互換性のない複数の思考形式を同じデータセットで混在させる
多くの本番用アシスタントでは、最も簡単な設定は次のものだけをファインチューニングすることです: 最終的に表示される回答のみ.
3. マルチターンのルール
マルチターン会話では、次のものだけを残します: 最終的に表示される回答 会話履歴の中に。 はいけません 以前の思考ブロックを後のターンに戻して入力してはいけません。
最終更新
役に立ちましたか?




