Google が gemma-trainer スキルを発表——自分のPCで、AIに自分専用のGemmaを微調整させる

オープンソースのトレーニングマニュアルが、教師ありファインチューニング、選好最適化、報酬スコアリングの3ルートとLoRAパラメータをすべて固定値で用意。Unslothと組み合わせれば、8GBのコンシューマー向けGPU1枚から始められます。
著者:DEV · Google AI07-18 · 8 分で読了⚑ チュートリアル
🎧 ポッドキャスト版0:00 / --:--
0:00 / --:--
ツール解説 · 小互解読
1分で要点
  • Google がオープンソースの gemma-skills リポジトリに、自分のPC上でGemmaをファインチューニングする方法をAIアシスタントに教える gemma-trainer というスキルを新規追加しました。
  • 本体はAI Agent向けに書かれたマニュアル(SKILL.md)と、すぐ使える5本のPythonスクリプトです。あなたが日常会話で指示すれば、アシスタントがそれに沿ってパラメータを選び、トレーニングを実行します。
  • 3つのトレーニング方式をカバー——SFTで新しい知識を教え、DPOでスタイルの選好を調整し、RMでスコアリングモデルを1本訓練する。各ルートのデータ形式と主要パラメータはすべて固定値で決まっています。
  • 優先されるのは Unsloth。公式によれば最大70%の省VRAM、速度は2倍とされ、コンシューマー向けGPU1枚で12Bクラス、あるいはそれ以上のモデルをファインチューニングでき、画像や音声のトレーニングにも対応します。
  • 訓練後は GGUF のような軽量フォーマットに変換でき、LiteRT-LM を使ってスマートフォンやIoTデバイスに組み込んで動かせます。
⚑本稿は Google が DEV Community 上で発表した自社ツール紹介記事に基づきます。性能数値(省VRAM70%、速度2倍)は Unsloth 公式の発表値です。以下の仕組みの詳細はオープンソースリポジトリ google-gemma/gemma-skills のコードを出典としています。
できること

自分のPCで、自分の分野だけを理解するGemmaを作る

欲しいのは専用モデルです——自分のニッチな分野の専門用語を訳し、自分の好みに合わせて答え、自分の仕事だけをこなす。オープンソースのGemmaはもともとこうしたカスタマイズのために作られていますが、実際にファインチューニングしようとすると、まず複雑な環境構築とわかりにくいガイドの山を突破しなければなりませんでした。

Google の Gemma チームは最近、この最初のハードルを取り払いました。オープンソースの gemma-skills リポジトリに、gemma-trainer という新しいスキルを追加したのです。

これがあれば、AIアシスタントに「あるデータセットでGemma 4 E2Bをファインチューニングして」と一言伝えるだけで、アシスタントはまずあなたのデータを検証し、適切なLoRAパラメータを選び、省リソースのデフォルト設定でトレーニングを開始し、最後に結果を評価してくれます。ローカルでのGemmaファインチューニングの一連の流れが、アシスタントがそのまま理解して実行できるマニュアルになったわけです。
💡注目ポイント:ローカルでGemmaをファインチューニングする際の一連の判断(どの訓練方式を選ぶか、LoRAパラメータをどう設定するか、VRAM不足をどう防ぐか、訓練後にどうエッジデバイス向けフォーマットへ変換するか)を1本のスキルファイルに固定し、Unslothと組み合わせることで、8GB VRAMのコンシューマー向けGPU1枚から始められ、テキスト・画像・音声の3種類のトレーニングを一括カバーしています。
📦 オープンソースリポジトリ · 無料
github.com/google-gemma/gemma-skills
正体は何か

本体はAI向けに書かれたマニュアル

gemma-trainer の本体は SKILL.md ファイル1本と、すぐ使える5本のPythonスクリプトのテンプレートです。GUIは付いておらず、あなたが直接呼び出して使うトレーニングライブラリでもありません。

SKILL.md はAI Agent向けに書かれた設計図です。ローカルファインチューニングのベストプラクティス、各パラメータの適正値、避けるべき落とし穴が、すべて固定値として書き込まれています。あなたのアシスタントはこれを読むことで、「なんとなくトレーニング方法を知っている」状態から、「この環境ではどのスクリプトをどう調整し、各ツマミをいくつに設定すべきか知っている」状態に変わります。リポジトリ内の5本のスクリプトはそれぞれ役割が異なり、1本が教師ありファインチューニングを、1本が選好の最適化を、1本がスコアリングモデルの訓練を、1本がデータ形式の検証専用を、もう1本がデータ蒸留を担当します。

日常会話で指示「Gemma 4 E2Bをファインチューニングして」
→
Agent が
gemma-trainer を読む
→
スクリプトを選び
パラメータを決定
→
トレーニング実行
→
評価と
イテレーション

このスキルは特定の流派を選ばず、具体的なAIツールとは無関係で、Gemini から Claude までどれでも使えます。Google 自身のコマンドラインツール Antigravity(agy)と組み合わせることも可能です。使い方は一言で言えるほどシンプルです——gemma-trainer フォルダをAIアシスタントのスキルディレクトリにコピーするだけで、アシスタントはすぐにやり方がわかります。

さらに興味深いのは、アシスタントが単に言われた通りに実行するだけでなく、スキルに書かれた能力の制約に基づいてミスを未然に防いでくれる点です。実例があります——あるトレーニング依頼で、誤って Gemma 4 31B を音声タスクに使おうとしたところ、アシスタントがその場で指摘しました。31Bはテキストと画像しか扱えないモデルで、音声機能は一切なく、E2B か 12B への変更を提案してきたのです。

Agent が Gemma 4 31B には音声機能がないと指摘し、E2B か 12B への変更を提案している画面
音声機能のないモデルで音声のファインチューニングを要求すると、アシスタントがそれを止め、実行可能な代替モデルを提示してくれます。出典:DEV / Google AI
3つの訓練ルート

知識を教える、選好を調整する、スコアを学ばせる——どう選ぶか

このスキルではファインチューニングを3つの方式に分類しており、それぞれ目的が異なります。モデルに何を学ばせたいかがはっきりすれば、どのルートを選ぶべきかがわかります。

SFT
教師ありファインチューニング
何をする新しい分野の知識、専門タスク、固定の出力フォーマットを教える
何を与える一問一答形式の対話データ
出力元のモデルに載せるアダプター
DPO
直接選好最適化
何をするスタイル・語調・安全境界を調整し、人の選好に合わせる
何を与える1つの質問に、より良い回答とより悪い回答をペアで用意
前提事前にSFTを済ませておく必要がある。でないと崩壊しやすい
RM
報酬モデリング
何をする回答にスコアを付ける専用の評価モデルを訓練する
何を与えるDPOと同じ形式の、良し悪しペアのデータ
出力モデルにスコア出力用のヘッドを追加

DPOには厳格なルールがあります——必ず自分の分野で先にSFTを終わらせてから、DPOに進むことです。あなたのデータを一度も見たことのない基礎モデルにいきなりDPOをかけると、たいてい失敗するか、出力フォーマットを壊してしまいます。

3つの方式で学習率が桁単位で異なる

見落とされがちですが、実は物事の本質をよく表している細部があります。3つのルートで推奨される学習率(1ステップごとにパラメータをどれだけ動かすか)は大きくかけ離れており、しかも「教える量が多いほど歩幅も大きい」という単純な話ではありません。DPOはモデルがすでに身につけているものの上でスタイルを軽く補正するだけなので、歩幅が少しでも大きいと以前学んだフォーマットが壊れてしまいます。だからSFTの200分の1という小ささが必要です。一方RMが訓練するのは新しく追加され、ゼロから学ぶスコアリング用ヘッドなので、逆に3つの中で最も歩幅が大きくなります。

RMスコアリングモデルを訓練
1e-3
SFT新しい知識を教える
2e-4
DPO選好を調整
1e-6

バーは桁の大小を示すだけで、線形比例ではありません。実際の数値はRM=1e-3、SFT=2e-4、DPO=1e-6で、DPOはSFTよりさらに200分の1小さくなります。

この2種類のデータがどんな形をしているか、スキルに標準サンプルが用意されているので、それに沿って自分のデータセットを準備できます。

SFT データ形式 · 1件の対話は一問一答
{
  "messages": [
    {"role": "user", "content": "Tell me a joke."},
    {"role": "model", "content": "Why did the computer go to the doctor? It had a virus!"}
  ]
}
DPO データ形式 · 1つの質問に良い回答と悪い回答をそれぞれ1つずつ
{
  "prompt": "Write a python function to compute factorial.",
  "chosen": "def factorial(n):\n    return 1 if n <= 1 else n * factorial(n - 1)",
  "rejected": "factorial is computed using recursion or loops. Just import math."
}

訓練時、覚えるのは「どう答えるか」だけで、質問文は覚えない

スクリプトの中には、もう一つ見落としやすい工夫が隠れています。入力するのは「ユーザーの質問+モデルの回答」を1セットにしたものですが、訓練時に両方を学習させるわけではありません。スクリプトはまずモデルの回答が始まる位置を見つけ、回答部分のみに対して損失を計算し損失(loss)とは、モデルの答えが合っているかどうかを表す減点のことです。回答部分だけを採点対象にすることで、モデルは「どう答えるか」だけを学び、ユーザーの質問文を覚え込むことはありません、ユーザーの質問部分は丸ごとスキップします。こうすることでモデルは「この種の質問にはこう答える」というパターンを学び、あなたの質問文そのものを丸暗記することはありません。

ユーザーの質問
モデルの回答
Why did the computer go to the doctor? It had a virus!
スキップ、学習対象外ここだけ学習
失敗の最大要因

データ形式の設定ミスが、訓練結果が悪くなる最大の原因です。だからこそこのスキルには専用の検証スクリプト dataset_prep.py が用意されており、訓練を始める前にデータを一通りチェックしてくれます。SFTデータでは最後の発言が必ずモデルの回答であることを確認し、DPOデータでは「より良い」と「より悪い」の2つの回答が完全に同一でないことを確認します(同一だとモデルが選好を何も学べないため)。さらに質問文を単独でトークン化し、この前置き部分が「良い回答」「悪い回答」双方の中で完全に一致した語で現れているかを照合します。これは分かち書きがずれて訓練が知らぬ間に狂ってしまう落とし穴を、専門にふさぐための仕組みです。

手元にデータがない?大規模モデルに作らせればいい

ファインチューニングで最も不足しがちなのはデータです。このスキルにはデータ蒸留(distillation)用のスクリプト distill_dataset.py も同梱されています。発想はシンプルで、大規模な「教師」モデル(たとえば Gemma 4 31B)に高品質な訓練データを生成させ、そのデータを使って小型の「生徒」モデル(たとえば E2B)を訓練するというものです。データの作り方は2パターン用意されています。

response モード
回答を補う
あなたが質問のセットを用意し、教師モデルが一つひとつに高品質な回答を補うことで、質問応答データセットを組み上げる
synthesize モード
自分で出題
さらに手軽な方式——教師モデル自身が指示とそれに対応する回答をブレインストーミングして生成し、データセットを丸ごと作り上げる

教師モデルはローカルの Ollama 上で動かすこともでき、データ生成から訓練まで一切外部に出さず、すべて自分のPC内で完結させられます。

GPUにどう収めるか

大型モデルをどうやって自分のGPUに収めるか

自分のPCでファインチューニングをする際、最も恐れるのはVRAM不足で訓練が途中で落ちてしまうこと(VRAM超過、いわゆるOOM)です。gemma-trainer はLoRA、QLoRA、そして Unsloth という3つの仕組みで大型モデルをコンシューマー向けGPUに収めます。

たとえるなら

大型モデルのファインチューニングとは、本を丸ごと書き直すことではありません。LoRA のやり方は、元の本にはまったく手を加えず、その脇に訓練可能な小さな付箋の束を貼り付け、変更点はすべて付箋の上に書き込むというものです。QLoRA はさらに省エネで、まず元の本をより省スペースな方式(4-bit圧縮)で縮小コピーしてから、その上に付箋を貼って訓練します。こうして元のモデルは凍結されたまま動かず、あなたが訓練しているのはその小さな付箋の束だけなので、VRAMが自然と節約されるわけです。

凍結された大型モデル 🧊 元のパラメータは不動 4-bit圧縮でVRAM節約 LoRA アダプター この小さな束が あなたの訓練対象
元のモデルは凍結・圧縮したまま、脇に貼った小さなアダプターの束だけを訓練するため、VRAM要件が大幅に下がる

具体的な役割分担はこうです——GPU1枚の環境では Unsloth を優先します。Gemma 4 をネイティブサポートしており、公式によれば標準的な Hugging Face トレーニングと比べて最大70%省VRAM、速度は2倍とされています。GPU複数枚の環境や、Unslothがインストールできない場合にのみ、Hugging Face の TRL と PEFT の組み合わせにフォールバックします。どちらの経路でも QLoRA(4-bit量子化)モデルパラメータを、よく使われる16bit精度から4bitへ圧縮して保存する方式。サイズとVRAM消費が約4分の1にまで下がり、代償はごくわずかな精度低下だけ の有効化が推奨されています。これが12Bや31BといったサイズのGemmaをコンシューマー向けVRAMに収める鍵になります。

もう一つ注意すべき落とし穴があります。Gemma 4 自体は最大256Kという非常に長いコンテキストに対応していますが、ローカル訓練でこれを欲張ってはいけません。スキルの推奨は2048〜8192で、それを超えるとVRAM不足で簡単に落ちます。

どんなPCが必要なのか

QLoRAとUnslothを組み合わせれば、多くの人が思うよりハードルは低くなります。Unsloth 公式が示す数値によれば、Gemma 4 の各サイズをファインチューニングするのに必要なのはコンシューマー向けGPU1枚から。小型モデルなら無料の Google Colab でも動きます。

モデルファインチューニングVRAM(QLoRA)必要なGPUの目安
Gemma 4 E2B約8GBエントリー向けコンシューマーGPU(例:RTX 3060 12G)、または無料 Colab の T4
Gemma 4 E4B10〜17GBミドルレンジのコンシューマーGPU
Gemma 4 31B約22GBハイエンドコンシューマーGPU(例:RTX 4090 / 3090(24G))
Gemma 4 26B-A4B40GB以上A100クラスのプロ向けGPUが必要

VRAM数値は Unsloth 公式の Gemma 4 トレーニングドキュメントに基づくQLoRA / LoRAファインチューニングの参考値です。フルファインチューニング(圧縮なし)はこの数倍を要し、通常マルチGPUが必要になります。

そのままコピペできるLoRAパラメータのレシピ

このスキルには、よく使うLoRAパラメータのデフォルト値がすべて書き込まれています。訓練を始める際はそのまま埋めるだけで使えます。

パラメータ推奨値役割
rank(r)16 または 32付箋の「厚み」。高いほど複雑な挙動を学べるが、VRAMもより消費する
lora_alpha32 または 64スケーリング係数。経験則として rank の2倍に設定する
lora_dropout0.05モデルに固定パターンだけに頼らせず、より頑健な特徴を学ばせる
学習率SFT 2e-4
DPO 1e-6
RM 1e-3
1ステップごとの移動量。3方式で桁が大きく異なるため取り違え注意
コンテキスト長2048〜8192ローカル訓練でのVRAM超過防止。256Kフルは避ける

パラメータが決まれば、実行はコマンド一発です。AIアシスタントを介さず自分でスクリプトを直接叩くことも可能です。たとえばデフォルト設定で E2B に対して一度SFTを実行する場合はこうなります。

SFT を1回実行 · スクリプトを直接叩く
python sft_train.py \
  --model google/gemma-4-E2B \
  --dataset your_data.json \
  --lora-r 16 --lora-alpha 32 \
  --epochs 3 --lr 2e-4

DPOと報酬モデリングにはそれぞれ専用の dpo_train.py、reward_train.py があり、パラメータの書式は同じです。Unslothがインストールできない場合は --force-hf を付けると自動的に Hugging Face 側にフォールバックします。

もう一歩深く: DPOはどうやってモデル1本分のVRAMを節約しているか

DPO訓練は理論上、モデルを同時に2つロードする必要があります——訓練中の1つと、「参照」用(reference、新しいモデルがずれていないか判定するため)の1つです。これだと2倍のVRAMを消費してしまいます。gemma-trainer のやり方は、参照モデルを直接「空」に設定するというものです。参照出力が必要になった瞬間だけ、訓練中のLoRA付箋の束を一時的にオフにし、モデルを元の状態に戻して都度計算し直し、使い終わったらまたオンに戻します。1本のモデルを2本分として使うことで、VRAMをかなり節約できるわけです。Unsloth 使用時にはさらに、DPOトレーナーを高速化する追加パッチが当てられます。

画像・音声を扱う · ポケットに収める

画像や音声も教えられ、さらにスマホに収められる

Gemma 4 はもともとマルチモーダルで、画像や音声を処理できます。画像や音声を訓練しようとすると変更点は思いのほか小さく、データ形式の content ブロックのタイプを text から image または audio に切り替えるだけです。

音声を教える · type を text から audio に切り替える(画像も同様に image に切り替え)
{
  "messages": [
    {"role": "user", "content": [
        {"type": "text", "text": "Describe this audio."},
        {"type": "audio", "url": "path/to/audio.wav"}
    ]},
    {"role": "assistant", "content": [
        {"type": "text", "text": "This is an audio file of a bird chirping."}
    ]}
  ]
}

音声にはいくつかコツがあります——16kHzモノラルのサンプリングを使う必要があり、スクリプト側にも専用のパッチが当てられていて、音声データ型が合わずに訓練エラーになる古くからの不具合を修正済みです。自分で踏まずに済みます。画像・音声ファインチューニングに対応する型番もはっきり示されており、音声は E2B、E4B、12B のみ対応で、31Bは非対応です。これがまさに、先ほどアシスタントに止められた理由でもあります。

訓練が終われば、モデルはそのままあなたのポケットまで運ばれます。Unsloth ネイティブのエクスポート機能、または llama.cpp を使ってモデルを GGUF のような軽量フォーマットに変換し、LiteRT-LM に渡せば、スマートフォン、Web、IoTデバイスに組み込んで動かせるようになり、CPU、GPU、NPUのハードウェアアクセラレーションも活用できます。「ローカルでファインチューニングし、ローカルにデプロイする」という流れが一本の鎖としてつながります。

サイト内関連記事
Google が Pixel 10 で Gemma 4 を動かす: AIをスマホに詰め込むエッジ実装
ファインチューニング済みGemmaがスマホに収まった後どう動くのか知りたければ、まさにそのエッジ側の話を扱ったこの記事へ。
実践 · 使ってみる

実践: Gemmaを古朝鮮文学の翻訳家に育てる

実際に動作した実例を一つ——Gemma 4 E2B を『洪吉童伝』(古朝鮮文学の一作品)の翻訳専門家にファインチューニングします。プロセス全体を通して、あなたがやることはアシスタントに一言伝えるだけです。

実際にファインチューニングを1回実行 · 伝える言葉はこれだけ
Fine-tune Gemma 4 E2B on the dataset bebechien/HongGildongJeon.
bebechien/HongGildongJeon というデータセットで、Gemma 4 E2Bをファインチューニングして。

ここからアシスタントが4ステップに付き合ってくれます。まず検証スクリプトであなたのデータが形式に合っているか確認し、次にモデルに言語の微妙なニュアンスを教え込めつつVRAMを圧迫しすぎないLoRAパラメータのセットを選び、省リソースのデフォルト設定で訓練を開始し、最後に結果を評価して、その表現をもとにパラメータを調整しながら次のラウンドへ進みます。転写の類似度を専門にチェックするスクリプトのような、カスタム評価スクリプトをその場で書かせることもできます。訓練が終わると、アシスタントはこのラウンドの結果と、次のラウンドで改善できる点を明記した完全なレポートをまとめてくれます。

トレーニング完了後の総合レポート。次のラウンドで改善できる点を示している
訓練が終わると、アシスタントが今回の結果と次ラウンドの改善方向を明記した総合レポートを提示します。出典:DEV / Google AI

始め方は? gemma-trainer フォルダをAIアシスタントのスキルディレクトリにコピーするだけで、アシスタントはすぐにやり方がわかります。gemma-skills リポジトリ全体はGitHub上でオープンソース公開されています——github.com/google-gemma/gemma-skills。

サイト内関連記事
Gemma 4 テクニカルレポート: オープンソースモデルが小さなパラメータで仕事をこなす方法
ファインチューニングされる側の Gemma 4 自体がどれほどの実力なのか先に知りたければ、公式テクニカルレポートを解説したこの記事へ。
✅ 自分のPCでGemmaをファインチューニングする際の判断チェックリスト
3つの訓練ルートのデータ形式、一言で済むトリガーprompt、LoRAパラメータの早見表、そしてローカルファインチューニングの判断チェックリスト。そのままコピーしてすぐ使えます。
出典: bebechien「Master Local Fine-Tuning with "gemma-trainer"」、DEV Community、2026-07-07。仕組みの詳細はオープンソースリポジトリ google-gemma/gemma-skills の SKILL.md およびトレーニングスクリプトを出典としています。性能数値は Unsloth 公式の発表値です。
出典
DEV · Google AIDEV · Google AI·原文を見る
↑ 本文ここまで
✓ この記事は全文無料です

メンバーは全文 Markdown のコピー・保存に加え、自分の AI に購読・質問させることができます。

原文を読む ↗
📮 新着解説をメールでいち早く

役に立ちましたか?メールを登録すると、新着解説を公開と同時にお届けします。解除はいつでも。