FunctionGemma 微调指南

发布: (2026年2月19日 GMT+8 08:54)
8 分钟阅读

Source: Google Developers Blog

请提供您想要翻译的具体文本内容,我会将其翻译成简体中文并保持原有的格式、Markdown 语法以及技术术语不变。谢谢!

Jan 16, 2026

在 Agentic AI 的世界里,调用工具的能力是将自然语言转化为可执行软件操作的关键。上个月,我们发布了 FunctionGemma,这是我们针对函数调用专门微调的 Gemma 3 270M 模型的特化版本。它旨在帮助开发者构建快速且具成本效益的代理,将自然语言转化为可执行的 API 操作。

具体的应用往往需要专业模型。在本文中,我们演示如何微调 FunctionGemma,以处理 工具选择歧义——即模型在需要调用一个或多个看似相似的函数时进行选择。我们还推出了 FunctionGemma Tuning Lab,这是一款演示工具,使得在不编写任何训练代码的情况下即可完成此过程。

为什么要为工具调用进行微调?

如果 FunctionGemma 已经支持工具调用,为什么仍然需要微调?

答案在于 上下文和策略。通用模型并不知道你的业务规则。微调的常见用例包括:

  • 消除选择歧义 – 当用户询问 “旅行政策是什么?” 时,基础模型可能会默认进行 Google 搜索。而企业模型则应搜索内部知识库。
  • 超专业化 – 训练模型掌握公共数据中不存在的细分任务或专有格式,例如处理 domain‑specific mobile actions(如控制设备功能)或解析内部 API 以构建高度复杂的监管报告。
  • 模型蒸馏 – 使用大模型生成合成训练数据,然后微调一个更小、更快的模型,以高效运行特定工作流。

案例研究:内部文档 vs. Google 搜索

让我们来看一个来自技术指南的实际示例,演示如何使用Hugging Face TRL库对 FunctionGemma 进行微调。

挑战

目标是训练模型区分两种特定工具:

  • search_knowledge_base – 内部文档
  • search_google – 公共信息

当被问到 “用 Python 编写一个简单递归函数的最佳实践是什么?” 时,通用模型会默认使用 Google。
当被问到 “差旅餐饮报销上限是多少?” 时,模型需要知道这是一个内部政策问题。

解决方案

为了评估性能,我们使用了 bebechien/SimpleToolCalling 数据集,其中包含需要在上述两种工具之间做出选择的示例对话。

该数据集被划分为训练集和测试集。将测试集单独保留可以让我们在 未见 数据上评估模型,确保模型学习的是底层路由逻辑,而不是仅仅记住示例。

⚠️ 关于数据分布的关键说明

数据的划分方式与数据本身同等重要。

from datasets import load_dataset

# Load the raw dataset
dataset = load_dataset("bebechien/SimpleToolCalling", split="train")

# Convert to conversational format
dataset = dataset.map(
    create_conversation,
    remove_columns=dataset.features,
    batched=False,
)

# 50 % training / 50 % testing split (no shuffling)
dataset = dataset.train_test_split(test_size=0.5, shuffle=False)

在指南中,特意使用了 50/50 划分shuffle=False,以突出模型在大量未见数据上的提升。

警告: 如果你的源数据按类别排序(例如,先是所有 search_google 示例,随后是所有 search_knowledge_base 示例),关闭洗牌会导致模型只在一种工具上进行训练,而在另一种工具上进行测试,从而导致性能灾难性下降。

最佳实践:

  • 确保源数据已经混合,
  • 当顺序未知时设置 shuffle=True,这样模型在训练期间能够看到所有工具的平衡表示。

结果

模型使用 SFTTrainer(监督微调)进行 8 个 epoch 的微调。训练数据明确教会模型哪些查询属于哪个领域。

训练损失曲线
损失(错误率)在开始时急剧下降,表明模型快速适应了新的路由逻辑。

微调后,模型的行为发生了显著变化。它现在严格遵循企业政策。例如,当被问到:

“创建新的 Jira 项目的流程是什么?”

微调后的模型会正确输出:

call:search_knowledge_base{query:Jira project creation process}

因此,通过恰当的数据处理和针对性的微调,模型能够可靠地将查询路由到相应的内部或外部知识源。

Source:

介绍 FunctionGemma 调优实验室

并不是每个人都想管理 Python 依赖、配置 SFTConfig,或从头编写训练循环。现在推出 FunctionGemma 调优实验室

screenshot

FunctionGemma 调优实验室是托管在 Hugging Face Spaces 上的用户友好演示。它简化了教会模型你的特定函数模式的整个过程。

关键特性

  • 无代码界面 – 在 UI 中直接定义函数模式(JSON),无需 Python 脚本。
  • 自定义数据导入 – 上传包含 用户提示工具名称工具参数 的 CSV。
  • 一键微调 – 使用滑块调整学习率和 epoch,立即开始训练。默认设置适用于大多数使用场景。
  • 实时可视化 – 实时观看训练日志和损失曲线,监控收敛情况。
  • 自动评估 – 实验室会在训练前后自动评估性能,立即反馈改进效果。

开始使用调优实验室

要在本地运行实验室,使用 Hugging Face CLI 克隆仓库并启动应用:

hf download google/functiongemma-tuning-lab --repo-type=space --local-dir=functiongemma-tuning-lab
cd functiongemma-tuning-lab
pip install -r requirements.txt
python app.py

就这样——你已经可以使用自己的函数模式微调 FunctionGemma 了!

结论

无论您是选择使用 TRL 编写自己的训练脚本,还是使用 FunctionGemma Tuning Lab 的演示可视化界面,微调都是释放 FunctionGemma 完全潜能的关键。它可以将通用助手转变为具备以下能力的专用代理:

  • 遵循严格的业务逻辑
  • 处理复杂的专有数据结构

感谢阅读!

参考文献

博客文章

代码示例

Hugging Face Space

0 浏览
Back to Blog

相关文章

阅读更多 »