For the complete documentation index, see llms.txt. This page is also available as Markdown.

FunctionGemma: 実行とファインチューニングの方法

FunctionGemma をお使いの端末やスマートフォンでローカル実行・ファインチューニングする方法を学びます。

FunctionGemmaは、関数呼び出しとファインチューニング向けに設計された、Googleによる新しい2.7億パラメータのモデルです。ベースは 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のチャットテンプレート形式:

FunctionGemmaではシステムまたは 開発者メッセージ として 次の関数を使って関数呼び出しができるモデルです Unsloth版にはこれが組み込み済みで、渡し忘れても補完されます。そのため、次を使ってください unsloth/functiongemma-270m-it

🖥️ FunctionGemmaを実行

ローカルデスクトップ向けガイドは以下をご覧ください。または、Phone Deployment Guideをご覧いただけます。

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

llama.cppで実行するための手順です(多くのデバイスに収めるため、4-bitを使用します):

1

最新の llama.cppGitHubはこちらから入手してください。以下のビルド手順に従うこともできます。変更してください -DGGML_CUDA=ON-DGGML_CUDA=OFF GPUがない場合、またはCPU推論だけを使いたい場合。 Apple Mac / Metalデバイスの場合、次を設定し -DGGML_CUDA=OFF 、あとは通常どおり進めてください。Metalサポートはデフォルトで有効です。

2

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

3

(次をインストール後に)モデルをダウンロード: pip install huggingface_hub hf_transfer )。選択できるのは BF16 または他の量子化版です(ただし、モデルサイズが小さいため4-bitより下にするのは推奨されません)。

4

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

📱 スマホへのデプロイ

サイズが小さいため、FunctionGemmaはスマートフォン上でも実行・デプロイできます。PyTorchと協力して、量子化認識学習(QAT)を使って70%の精度を回復し、その後エッジデバイスへ直接デプロイする簡略化されたワークフローを作成しました。

  • FunctionGemmaをローカルでデプロイして Pixel 8 iPhone 15 Pro 約50トークン/秒の推論速度

  • を実現しましょう

  • プライバシー重視、即時応答、オフライン機能を利用できます 無料のColabノートブック を使ってQwen3 0.6Bをファインチューニングし、スマホデプロイ用にエクスポートできます。Gemma3に変更して、 Gemma 3 Executorch docs.

📱Run LLMs on your Phone

を参照してください

iOSチュートリアルAndroidチュートリアル

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

Googleは次のように述べています FunctionGemmaはファインチューニングを前提としている ため、あなた固有の関数呼び出しタスク、マルチターンのユースケースを含めて調整できます。Unslothは現在FunctionGemmaのファインチューニングをサポートしています。私たちは2つのファインチューニング用ノートブックを作成し、Colabノートブックを使って フルファインチューニングまたはLoRAで無料学習する方法

では ツール呼び出し前に推論するファインチューニングノートブック関数呼び出しの前に「考える/推論する」ようにファインチューニングします。連鎖的思考推論は、ツール利用能力を向上させるうえでますます重要になっています。

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

ターン種別
内容

開発者プロンプト

<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>で実装します。その結果、モデルとのやり取りは次のようになります:

思考 + 関数呼び出し

<start_of_turn>model

<think>

ユーザーはパリの天気を求めている。get_weatherツールがあるので、city引数を付けて呼び出すべきだ。

</think>

<start_function_call>call:get_weather{

city: "paris"

}

<end_function_call>

🪗モバイル操作向けFunctionGemmaのファインチューニング

FunctionGemmaにモバイル操作を行わせる方法を示すノートブックも作成しました。 モバイル操作ファインチューニングノートブックでは評価も有効にしており、オンデバイス操作向けにファインチューニングすると、評価損失が下がることからもうまく機能する様子を示しています:

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

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

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

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

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

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

さらに、ツール呼び出しとパースのコードも必要です:

さあ、モデルを呼び出せます!

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

最終更新

役に立ちましたか?