FunctionGemma 270M:そのまま使えるとき、ファインチューニングが必要なとき

🌐 English · 日本語 · မြန်မာ

Google の FunctionGemma は、最近公開された小型モデルの中でも特に興味深い一つです。パラメータ数はわずか2億7000万で、担う仕事はただ一つ——自然言語を構造化された関数呼び出しに変換することです。ノートPC、Raspberry Pi、さらにはスマートフォンでも動くほど小さいモデルですが、初めて使う人が見落としがちな重要な点があります。Google はこのモデルを「ファインチューニングして使うこと」を前提に設計しているのです。では、そのまま何ができて、どんなときにファインチューニングが必須になるのでしょうか。詳しく見ていきましょう。

FunctionGemma とは何か

FunctionGemma は Google の Gemma 3 270M をベースに、関数呼び出しに特化して学習させた専用モデルです。「懐中電灯をつけて」「昼食の予定をカレンダーに入れて」といった要求を、実行可能な API 呼び出しに変換します。主なスペックは次のとおりです。

  • 2億7000万パラメータ — 現代の基準では非常に小さい(一般的な「小型」モデルでも10億以上)
  • 32Kトークンのコンテキスト長 — 大きなツールスキーマやマルチターンの履歴を扱うのに十分
  • テキスト専用 — 画像・音声入力には非対応
  • 極めて低いメモリ使用量 — フル精度でも CPU 上で約550MBのRAMで動作し、ほぼどんな端末でも実行できる
  • チャットモデルではない — Google は明言しています。FunctionGemma は一般的な対話を想定していません。会話役ではなく「ルーター」です。

設計思想を理解しておく価値があります。一つの巨大なモデルにすべてをやらせるのではなく、FunctionGemma は人間の言葉とソフトウェアに定義された操作との間をつなぐ、高速でプライベートなローカルの「翻訳者」として働きます。Google はこれを二つのショーケースアプリで示しました。一つは音声操作ゲームの Tiny Garden で、「一番上の列にひまわりを植えて」といった命令をゲーム内の関数に分解します。もう一つは Android のシステムツールを起動するエージェント Mobile Actions です——いずれもスマートフォン上で完全にオフラインで動作します。

ファインチューニングなしで使えること

ベースモデル(functiongemma-270m-it)は、特定の種類のタスクなら、そのままでも十分に実用的です。ゼロショットで次のことができます。

1. 明確なスキーマの、単純な単一ターンのツール呼び出しを処理する。 わかりやすい名前と明快なパラメータを持つ少数の関数(get_weather(city)、set_timer(minutes))を渡せば、ベースモデルでも素直な要求を正しい呼び出しに対応づけられます。コミュニティのファインチューンは別として、多くの開発者はまさにこの形で素のモデルをプロトタイピングに使っています。

2. 関数を呼び出さないべきときを判断する。 モデルカードによれば、ゼロショットでの BFCL Irrelevance スコアは70.6です。つまり、ユーザーの要求が利用可能なツールのどれにも合致しないとき、呼び出しをでっち上げずにそれを認識する能力がそれなりにあるということです。

3. プロトタイピングの土台として使う。 標準的なチャットテンプレートのワークフロー(トークナイザーのチャットテンプレート経由でツールスキーマを渡す)を用いるため、既存のパイプラインに半日で組み込み、学習に投資する前にベースモデルがどこまでやれるかを確認できます。

実践的なゼロショットのコツ:

  • モデルが学習時に使ったシステムプロンプトをそのまま使う。「You are a model that can do function calling with the following functions」——ここから外れると出力が目に見えて劣化します。
  • temperature は非常に低く(0.1前後)保つ。求めるのは創造性ではなく、決定的なルーティングです。
  • ツールの数は少なく、パラメータ名は説明的に。関数が少なく明快なほど、ゼロショットの性能は上がります。
  • 出力は必ずコード側でスキーマに照らして検証する。このサイズのモデルでは、不正あるいは誤った呼び出しは起こります。ユーザーではなく、アプリケーション層がそれを受け止めるべきです。

ファインチューニングが必要になるとき

Google 自身のベンチマークが示す正直な姿はこうです。Mobile Actions タスクにおいて、ベースモデルの正解率は58%でした。そして、タスク固有のデータセットでファインチューニングすると、それが85%まで跳ね上がりました。この差こそが小型モデルの本質です。2億7000万パラメータのモデルには曖昧さを扱うだけの汎用的な推論力がないため、専門化してこそ真価を発揮します。

次のような場合はファインチューニングを計画すべきです。

  • 関数スキーマがドメイン固有である場合。 独自アプリの操作、ニッチな API、一般的な例に似ていない特殊なパラメータ構造など。
  • マルチターンの挙動が必要な場合。 ターンをまたいで状態を追跡し、呼び出しを連鎖させる必要のある対話。
  • 本番品質の一貫性が必要な場合。 Google の位置づけは明確です。FunctionGemma は、ゼロショットのばらつきよりも専用モデルの決定的な挙動を求めるチームのためのものです。
  • 英語以外の言語、あるいは混在言語の入力を扱う場合。 コミュニティのプロジェクト(例えばベトナム語の銀行向けファインチューン)はこれがうまくいくことを示していますが、その言語の学習データが必要です。

ファインチューニングの実際(思っているより簡単です)

朗報です。2億7000万パラメータのモデルのファインチューニングは、2026年時点で最も手軽な部類に入ります。

標準的なレシピは、無料の Google Colab GPU 上での Unsloth + LoRA です。Unsloth は(Google と共同で作成した)すぐ使えるスターターノートブックを提供しており、モデルの読み込み、最適化された LoRA ファインチューニングの適用、チャットテンプレートの正しい処理までを行ってくれます。モデルが非常に小さいため、大きなモデルなら数時間かかる学習が数分で終わり、必要な VRAM もごくわずかです。

ワークフローはこうなります。

  1. データセットを作る——「利用可能なツール+ユーザーのプロンプト+正しい関数呼び出し出力」の例を用意します。Hugging Face 上の Google の Mobile Actions データセットが、真似すべき参照フォーマットです。数百万行も必要ありません。範囲の狭いスキーマなら、丁寧に作った数百〜数千の例で十分に効果があります。フロンティアモデルに合成の学習ペアを生成させるのがよく使われる手です。
  2. Unsloth ノートブックで学習する(Colab またはローカル——ただしローカルの Unsloth 学習は現時点で Apple Silicon 未対応です)。
  3. GGUF にエクスポートする(Q8_0、F16、または BF16)——ノートブックから直接行えます。
  4. ローカルで動かす——LM Studio、Ollama、llama.cpp で。さらに進めてスマートフォンにデプロイすることもできます。Google と PyTorch は量子化を考慮した学習(quantization-aware training)のワークフローを公開しており、Pixel 8 や iPhone 15 Pro のような端末で毎秒およそ50トークンを達成しています。

判断のフレームワーク

次の三つの問いを自分に投げかけてください。

  1. 私のツールセットは、少数で、汎用的で、単一ターンか? → まずベースモデルを試しましょう。特に厳格な出力検証を組み合わせれば、それで十分なこともあります。
  2. 独自スキーマ、マルチターンのフロー、特定言語で高い精度が必要か? → ファインチューニングを。Mobile Actions の58%→85%という跳躍が、専門化の見返りを物語っています。
  3. 一般的な会話とツール利用の両方が必要か? → その用途に FunctionGemma は全く向きません。より大きな汎用モデルを使うか、FunctionGemma を(ルーターとして)別のモデルと組み合わせて対話を担わせましょう。

まとめ

FunctionGemma は、AI の使い方についての本質的に異なる考え方を示しています。クラウド API から知能を「借りる」のではなく、すでに手元にあるハードウェアで動く小さな専門家を自分で育てる——プライベートで、オフラインで、推論コストは実質ゼロです。そのままでも有能なプロトタイピングエンジンであり、ファインチューニングすれば、あなた固有のアプリのための本番品質のルーターになります。ささやかなハードウェアで作る開発者にとって、この組み合わせはなかなか手強い選択肢です。

実践的な技術・コードのガイドは、Tech & Code ハブからご覧いただけます。


参考リンク:Hugging Face の FunctionGemma モデルカード(google/functiongemma-270m-it)、ai.google.dev の Google Mobile Actions ファインチューニングガイド、Unsloth の FunctionGemma ドキュメント。モデルの仕様やベンチマーク値は新しいバージョンの公開に伴って変わります。構築前に最新のモデルカードで確認してください。

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top