googleFunctionGemma: 実行およびファインチューニング方法

FunctionGemma をデバイスやスマートフォンでローカルに実行およびファインチューニングする方法を学びましょう。

FunctionGemmaはGoogleが設計した関数呼び出しとファインチューニング向けの新しい270Mパラメータモデルです。ベースは Gemma 3 270Mでテキストのみのツール呼び出し向けに特別に訓練されており、その小さなサイズは自分の携帯電話にデプロイするのに最適です。

フル精度モデルを実行できます 550MBのRAM (CPU)で、そして今あなたは ファインチューニング Unslothでローカルに実行できます。日次サポートのためにUnslothと提携してくれたGoogle DeepMindに感謝します!

実行チュートリアルFunctionGemmaのファインチューニング

無料ノートブック:

⚙️ 使用ガイド

Googleは推論のためにこれらの設定を推奨しています:

  • top_k = 64

  • top_p = 0.95

  • temperature = 1.0

  • 最大コンテキスト長 = 32,768

チャットテンプレート形式は下記を使用したときに見られます:

def get_today_date():
    """ 今日の日付を取得する """
    return {"today_date": "2025年12月18日"}
    
tokenizer.apply_chat_template(
    [
        {"role" : "user", "content" : "今日の日付は何ですか?"},
    ],
    tools = [get_today_date], add_generation_prompt = True, tokenize = False,
)

FunctionGemmaチャットテンプレート形式:

circle-info

FunctionGemmaはシステムまたは developerメッセージ次の関数で関数呼び出しが可能なモデルです Unslothのバージョンにはこれが組み込まれているので、渡し忘れても大丈夫です。ですからぜひ unsloth/functiongemma-270m-itarrow-up-right

🖥️ FunctionGemmaを実行する

下記にローカルデスクトップガイドを示します、またはPhone Deployment Guide(電話へのデプロイガイド)をご覧ください。

Llama.cpp チュートリアル(GGUF):

llama.cppで実行するための手順(ほとんどのデバイスに収めるために4ビットを使用します):

1

最新の llama.cppGitHubで入手してくださいarrow-up-right。以下のビルド手順にも従うことができます。を変更してください -DGGML_CUDA=ON-DGGML_CUDA=OFF GPUを持っていない場合やCPUで推論したい場合は Apple Mac / Metalデバイスの場合、次を設定してください -DGGML_CUDA=OFF その後通常通り続行してください — Metalサポートはデフォルトで有効です。

2

Hugging Faceから直接プルできます。モデルが非常に小さいため、量子化していないフル精度のBF16バリアントを使用します。

3

モデルをダウンロードするには(をインストールした後) モデルをダウンロードするには( を選択できます。 BF16 または他の量子化バージョン(モデルサイズが小さいため4ビット未満に下げることは推奨されません)。

4

次に会話モードでモデルを実行します:

📱 電話へのデプロイ

その小ささゆえに、FunctionGemmaは電話上でも実行・デプロイできます。量子化に配慮したトレーニング(QAT)を用いて精度の70%を回復し、それをエッジデバイスに直接デプロイするという合理化されたワークフローをPyTorchと協力して作成しました。

  • FunctionGemmaをローカルにデプロイする先: Pixel 8 iPhone 15 Pro で、 約50トークン/秒の推論速度を得られます

  • プライバシー重視、即時応答、オフライン機能を手に入れましょう

  • 私たちの 無料のColabノートブックarrow-up-right を使ってQwen3 0.6Bをファインチューニングして電話用にエクスポートできます — 単にGemma3に変更し、次の手順に従ってください: Gemma 3 Executorchドキュメントarrow-up-right.

📱Run LLMs on your Phonechevron-right

電話へのデプロイについてはiOSとAndroidのチュートリアルをご覧ください:

appleiOSチュートリアルandroidAndroidチュートリアル

🦥 FunctionGemmaのファインチューニング

Googleは次のように述べています: FunctionGemmaはファインチューニングすることを意図しています 特定の関数呼び出しタスク、マルチターンの場合を含めて。Unslothは現在FunctionGemmaのファインチューニングをサポートしています。私たちは2つのファインチューニング用ノートブックを作成し、モデルを通じてトレーニングする方法を示しています、 フルファインチューニングまたはColabノートブック経由のLoRAを無料で:

の中で、 ツール呼び出し前に推論するファインチューニングノートブックarrow-up-right私たちは ファンクション呼び出しの前に「考える/推論する」ようにファインチューニングします。チェイン・オブ・ソート(思考連鎖)による推論はツール利用能力を向上させるためにますます重要になっています。

FunctionGemmaは関数呼び出しに特化した小さなモデルです。独自のチャットテンプレートを利用します。ツール定義とユーザープロンプトが提供されると、構造化された出力を生成します。次にこの出力を解析してツールを実行し、結果を取得して最終回答の生成に使用できます。

ターンタイプ
内容

Developerプロンプト

<start_of_turn>developer

次の関数で関数呼び出しが可能です:

関数宣言

<start_function_declaration>declaration:get_weather{

description: "都市の天気を取得する",

parameters: { city: STRING }

}

<end_function_declaration>

<end_of_turn>

ユーザーターン

<start_of_turn>user

パリの天気はどうですか?

<end_of_turn>

関数呼び出し

<start_of_turn>model

<start_function_call>call:get_weather{

city: "paris"

}

<end_function_call>

関数レスポンス

<start_function_response>response:get_weather{temperature:26}

<end_function_response>

アシスタントの締めくくり

パリの天気は摂氏26度です。

<end_of_turn>

ここでは、インタリーブされた推論ではなく単一の思考ブロックを使用する単純化されたバージョンを実装します(したがって)、 <think></think>その結果、私たちのモデルとのやり取りは次のようになります:

Thinking + 関数呼び出し

<start_of_turn>model

<think>

ユーザーはパリの天気を求めています。私はget_weatherツールを持っています。city引数で呼び出すべきです。

</think>

<start_function_call>call:get_weather{

city: "paris"

}

<end_function_call>

🪗モバイルアクション向けのFunctionGemmaのファインチューニング

また、FunctionGemmaにモバイルアクションを実行させる方法を示すノートブックも作成しました。 モバイルアクションファインチューニングノートブックarrow-up-rightその中で、評価も有効にし、デバイス上でのアクション向けにファインチューニングすることがうまく機能することを示しており、評価損失が下がる様子が見られます:

例えばプロンプトが与えられた場合 「Team Sync Meeting」というリマインダーを2025年6月6日(金)午後2時に設定してください。

モデルを次のような出力を出せるようにファインチューニングしました:

🏃‍♂️FunctionGemmaによるマルチターンツール呼び出し

また、FunctionGemmaがマルチターンのツール呼び出しを行える方法を示すノートブックも作成しました。 マルチターンツール呼び出しノートブックarrow-up-rightその中で、FunctionGemmaが長いメッセージ変更の中でツールを呼び出せることを示しています。例えば以下を参照してください:

まず以下のようにツールを指定する必要があります:

次にすべてのツールのマッピングを作成します:

ツール呼び出しと解析のコードも必要です:

そして今、モデルを呼び出すことができます!

私たちがFunctionGemmaのために作成した3つのノートブックを試してみてください:

最終更新

役に立ちましたか?