找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4664

积分

0

好友

621

主题
发表于 4 天前 | 查看: 32| 回复: 0

谷歌开源 FunctionGemma 模型标题图

Google 近日开源了一款名为 FunctionGemma 的轻量级模型。它的目标很明确:为开发者构建自己的专用函数调用模型提供一个强大的起点。与通常用于对话的模型不同,FunctionGemma 专为函数调用任务而生,需要经过进一步的微调才能在其特定领域发挥出最佳性能。

FunctionGemma 基于 Gemma 3 的 270M 参数模型构建,共享相同的架构,但采用了与 Gemini 模型相关的研究和技术,并专门针对函数调用进行了优化训练。它的核心优势在于小巧的体积,这使得它可以轻松部署在资源受限的环境,例如个人笔记本电脑、台式机,或是你自己的云基础设施上,旨在让尖端的 AI 模型变得更普及。

该模型在单轮场景下具有很高的通用性,但官方建议使用特定任务的数据进行微调,以获得在特定应用领域的最佳准确率。为了展示如何通过专门化这个小模型来实现高性能,Google 在 Google AI Edge Gallery 应用中重点介绍了两个用例。

  • Tiny Garden:一个经过精心调校的模型,专为语音控制的互动游戏设计。它能理解“在顶行种植向日葵”这类自然语言命令,并将其解析为 plant_seed 这样的应用程序特定函数和坐标。这展示了模型无需连接服务器即可驱动自定义应用逻辑的能力。
  • 移动操作:为了帮助开发者构建自己的专家代理,Google 发布了一个数据集和微调方案。演示了如何将 FunctionGemma 微调成一个能将“打开手电筒”等用户指令转换为触发 Android 系统工具函数调用的模型。这个用例突显了模型作为离线私人助理,在个人设备上执行任务的能力。

FunctionGemma 在设备端的 AI 功能调用场景示意图

模型信息与使用

模型地址

输入与输出

  • 输入:文本字符串,例如问题或提示。上下文长度支持高达 32K 个词元(tokens)。
  • 输出:根据输入生成的文本。每个请求的总输出上下文最多为 32K 个词元(需减去输入占用的部分)。

基本用法示例

以下是如何使用 FunctionGemma 配合 Hugging Face Transformers 库,根据 JSON 定义生成函数调用的代码示例。

首先,安装必要的依赖:

pip install torch
pip install transformers

然后,使用 Transformers 库加载模型和处理器:

from transformers import AutoProcessor, AutoModelForCausalLM

processor = AutoProcessor.from_pretrained("google/functiongemma-270m-it", device_map="auto")
model = AutoModelForCausalLM.from_pretrained("google/functiongemma-270m-it", dtype="auto", device_map="auto")

接着,使用 JSON Schema 定义一个函数,并设置系统指令来激活模型的函数调用逻辑。将用户查询作为输入,模型将生成对应的函数调用。

weather_function_schema = {
    "type": "function",
    "function": {
        "name": "get_current_temperature",
        "description": "Gets the current temperature for a given location.",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The city name, e.g. San Francisco",
                },
            },
            "required": ["location"],
        },
    }
}

message = [
    # 关键系统提示:这行激活模型的函数调用逻辑。
    {
        "role": "developer",
        "content": "You are a model that can do function calling with the following functions"
    },
    {
        "role": "user",
        "content": "What's the temperature in London?"
    }
]

inputs = processor.apply_chat_template(message, tools=[weather_function_schema], add_generation_prompt=True, return_dict=True, return_tensors="pt")

out = model.generate(**inputs.to(model.device), pad_token_id=processor.eos_token_id, max_new_tokens=128)
output = processor.decode(out[0][len(inputs["input_ids"][0]):], skip_special_tokens=True)

print(output)
# 输出示例:<start_function_call>call:get_current_temperature{location:<escape>London<escape>}<end_function_call>

模型训练与数据

训练数据集
模型基于包含多种来源文本的数据集进行训练,总计使用了 6T 个词元。训练数据的知识截止日期为 2024 年 8 月。关键数据组成部分包括:

  • 公共工具定义:网络上常见的 API 接口定义。
  • 工具使用交互:包含提示、函数调用、函数响应以及模型总结或请求澄清的自然语言响应组合。

数据预处理
训练数据经过了严格清洗和过滤:

  • CSAM 过滤:在多个阶段应用了严格的儿童性虐待材料过滤。
  • 敏感数据过滤:使用自动化技术过滤掉个人信息等敏感数据。
  • 其他方法:基于内容质量和安全策略进行额外过滤。

硬件与软件

硬件
模型使用 Google 的张量处理单元(TPU)进行训练,包括 TPUv4p、TPUv5p 和 TPUv5e。TPU 专为机器学习中的矩阵运算优化,在性能、内存、可扩展性和成本效益方面具有优势,特别适合训练大型模型。

软件

  • 训练使用了 JAXML Pathways。JAX 使研究人员能充分利用 TPU 等硬件,ML Pathways 则是用于构建能跨任务泛化 AI 系统的工具。这种组合简化了大型模型的训练开发流程。

评估结果与预期用途

评估结果
在安全测试中,与之前的 Gemma 模型相比,FunctionGemma 在儿童安全、内容安全和表征危害等方面均有显著进步。模型产生的策略违规极少,在避免无根据推断方面表现更好。(注:测试主要使用英语提示。)

预期用途
需要再次强调,此模型并非设计用于直接对话。它是一个需要针对特定函数调用任务进行微调的基础模型。其潜在用途包括:

  • 构建专用代理:如上述的移动操作助手、游戏逻辑控制器。
  • API 调用自动化:将自然语言指令转换为标准的 API 调用。
  • 研究与开发:作为探索小型化、专用化 Transformer 模型在边缘计算场景中应用的起点。

局限性
与所有模型一样,FunctionGemma 也有其局限性:

  • 训练数据依赖:模型性能受训练数据质量和范围限制。
  • 任务复杂性:更适合有明确定义的任务,高度复杂或开放式的任务具有挑战性。
  • 事实准确性:可能生成不正确或过时的信息。
  • 语言细微差别:可能难以理解讽刺、比喻等复杂表达。
  • 常识推理:在某些需要常识判断的场景中可能存在不足。

对于想要深入探索开源AI模型,并动手实践本地化部署与微调的开发者来说,FunctionGemma 提供了一个非常有趣的“样板”。你可以在 云栈社区人工智能开源实战板块找到更多相关的讨论与技术文档资源。




上一篇:专家主导的AI应用现代化:如何让AI工具与人类开发者高效协作
下一篇:AI重塑量化投研:从因子挖掘到系统架构师的范式转移
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 19:11 , Processed in 0.878933 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表