FunctionGemma 微调指南

发布: (2026年1月17日 GMT+8 17:23)
7 min read

I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have it, I’ll translate it into Simplified Chinese while preserving the formatting, markdown, and any code blocks or URLs.

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

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

答案在于 上下文和策略。通用模型不了解你的业务规则。常见的微调原因包括:

  • 解决选择歧义
    当用户询问“旅行政策是什么?”时,基础模型可能会默认进行公开的 Google 搜索。企业微调模型则应查询内部知识库。

  • 超专精
    训练模型精通公共数据中不存在的细分任务或专有格式,例如处理特定领域的移动操作(控制设备功能)或解析内部 API 以生成复杂的监管报告。

  • 模型蒸馏
    使用大模型生成合成训练数据,然后微调一个更小、更快的模型,以高效运行该特定工作流。

Source: https://ai.google.dev/gemma/docs/functiongemma/finetuning-with-functiongemma

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

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

挑战

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

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

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

解决方案

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

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

在我们使用 50 / 50 的训练‑测试比例评估基础 FunctionGemma 模型时,结果并不理想:基础模型会选择错误的工具,或是提供“讨论”政策的答案而不是执行函数调用。

⚠️ 数据分布的关键提示

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

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 % train / 50 % test 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 的微调。训练数据明确教会模型哪些查询属于哪个领域。

Training loss curve
该图展示了损失(错误率)随时间下降的趋势。开头的急剧下降表明模型快速适应了新的路由逻辑。

微调后,模型的行为发生了显著变化。它现在严格遵循企业政策。例如,当被问到 “创建新 Jira 项目的流程是什么?” 时,微调后的模型会正确输出:

call:search_knowledge_base{query:Jira project creation process}

介绍 FunctionGemma 调优实验室

并非所有人都想管理 Python 依赖、配置 SFTConfig,或从头编写训练循环。现在推出 FunctionGemma Tuning Lab

screenshot

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

关键特性

  • 无代码界面 – 在 UI 中直接定义函数模式(JSON),无需 Python 脚本。
  • 自定义数据导入 – 上传包含 User PromptTool NameTool Arguments 的 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 调优实验室 的演示可视化界面,微调都是释放 FunctionGemma 完全潜力的关键。它将通用助手转变为能够:

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

感谢阅读!

参考文献

博客文章

代码示例

HuggingFace Space

Back to Blog

相关文章

阅读更多 »

AI-雷达.it

AI‑Radar.it 的封面图片 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazona...