添加微信号:AIGC_Tech,公众号小助手会拉你进群!点击下方名片关注AIGC Studio公众号!
点击下方名片关注AIGC Studio公众号!获取最新AI前沿应用/AIGC实践教程!
FunctionGemma 是 Google 推出的一款轻量级开源模型,旨在为创建您自己的专用函数调用模型奠定基础。FunctionGemma 并非设计用于直接对话,而是旨在经过进一步微调后实现高性能,这在同等规模的模型中很常见。FunctionGemma 基于 Gemma 3 270M 模型构建,并采用了与 Gemini 模型相同的研究和技术,专门针对函数调用进行了训练。该模型与 Gemma 3 具有相同的架构,但使用不同的聊天格式。该模型非常适合纯文本函数调用。其独特的小巧体积使其能够部署在资源有限的环境中,例如笔记本电脑、台式机或您自己的云基础设施,从而普及最先进的 AI 模型,并有助于促进所有人的创新。此外,与基础 Gemma 270M 类似,该模型经过优化,具有极高的通用性,在单回合场景下可在各种硬件上实现高性能,但应使用单回合或多回合特定任务数据进行微调,以在特定领域获得最佳准确率。为了展示如何通过专门化 270M 参数模型在特定代理工作流程中实现高性能,重点介绍了 Google AI Edge Gallery 应用中的两个用例。
Tiny Garden:一个经过精心调校的模型,专为语音控制的互动游戏而设计。它处理游戏逻辑,管理虚拟地块,将"在顶行种植向日葵"和"给1号和2号地块的花浇水"之类的命令分解为应用程序特定的函数(例如,plant_seed,water_plots)和坐标目标。这展示了该模型无需服务器连接即可驱动自定义应用程序机制的能力。
移动操作:为了帮助开发者构建自己的专家代理,我们发布了一个数据集和 微调方案 ,用于演示如何微调 FunctionGemma 模型。该模型可以将用户输入(例如,"创建午餐日历事件"、"打开手电筒")转换为触发 Android 操作系统工具的函数调用。本交互式笔记本演示了如何使用基础的 FunctionGemma 模型,从零开始构建一个"移动操作"微调模型,以便在 Google AI Edge 图库应用中使用。此用例展示了该模型作为离线私人代理执行个人设备任务的能力。
相关链接
介绍:https://ai.google.dev/gemma/docs/functiongemma 模型:https://huggingface.co/google/functiongemma-270m-it
输入和输出
输入:文本字符串,例如问题、提示或待摘要的文档总共输入了 32K 个词条的上下文信息 输出:根据输入生成的文本,例如问题的答案或文档摘要。每个请求的总输出上下文最多为 32K 个令牌,减去请求输入令牌。
基本用法
以下是使用 FunctionGemma 和 Hugging Face Transformers 库从 JSON 定义生成函数调用的代码示例。
首先安装依赖项:
$ pip install torch
$ pip install transformers
然后使用Transformer加载模型和处理器:
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 = [
# ESSENTIAL SYSTEM PROMPT:
# This line activates the model's function calling logic.
{
"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 过滤:在数据准备过程中的多个阶段应用了严格的 CSAM(儿童性虐待材料)过滤,以确保排除有害和非法内容。 敏感数据过滤:为了使 Gemma 预训练模型安全可靠,我们使用自动化技术从训练集中过滤掉某些个人信息和其他敏感数据。 其他方法:根据 我们的政策,基于内容质量和安全性进行过滤。
硬件
Gemma 使用张量处理单元 (TPU)硬件(TPUv4p、TPUv5p 和 TPUv5e)进行训练。训练视觉语言模型 (VLM) 需要强大的计算能力。TPU 专为机器学习中常见的矩阵运算而设计,在该领域具有以下几个优势:
性能:TPU 专为处理训练 VLM 过程中涉及的大量计算而设计。与 CPU 相比,它们可以显著加快训练速度。 内存:TPU 通常配备大量高带宽内存,能够在训练过程中处理大型模型和大批量数据。这有助于提高模型质量。 可扩展性:TPU Pod(大型 TPU 集群)为处理日益复杂的大型基础模型提供了可扩展的解决方案。您可以将训练任务分布在多个 TPU 设备上,从而实现更快、更高效的处理。 成本效益:在许多情况下,与基于 CPU 的基础设施相比,TPU 可以为训练大型模型提供更具成本效益的解决方案,尤其是在考虑到由于训练速度更快而节省的时间和资源时。这些优势与谷歌致力于可持续运营的承诺相一致 。
软件
训练使用了JAX和 ML Pathways。JAX使研究人员能够利用包括 TPU 在内的最新一代硬件,从而更快、更高效地训练大型模型。ML Pathways 是谷歌最新推出的人工智能系统构建工具,旨在构建能够跨多个任务进行泛化的系统。它尤其适用于基础模型,包括像本文中的大型语言模型。JAX 和 ML Pathways 的结合使用方式如Gemini 系列模型论文中所述:"JAX 和 Pathways 的'单控制器'编程模型允许单个 Python 进程协调整个训练过程,从而显著简化开发工作流程。"
评估结果
在所有安全测试领域,与之前的Gemma模型相比,在儿童安全、内容安全和表征危害这几个方面都取得了显著进步。所有测试均在未启用安全过滤器的情况下进行,以评估模型的性能和行为。该模型产生的策略违规极少,并且在避免无根据推断方面,其表现较之前的Gemma模型有了显著提升。本次评估的局限性在于,测试仅使用了英语提示。
预期用途
此模型并非设计用于直接对话。
开放式大型语言模型 (LLM) 在各个行业和领域都有广泛的应用。以下列出的潜在用途并非全部。此列表旨在提供模型创建者在模型训练和开发过程中考虑的潜在用例的背景信息。
内容创作与传播
文本生成:这些模型可用于生成创意文本格式,例如诗歌、剧本、代码、营销文案和电子邮件草稿。 聊天机器人和对话式人工智能:为客户服务、虚拟助手或交互式应用程序提供强大的对话界面。 文本摘要:生成文本语料库、研究论文或报告的简洁摘要。
研究与教育
自然语言处理 (NLP) 研究:这些模型可以作为研究人员试验 NLP 技术、开发算法并为该领域的进步做出贡献的基础。 语言学习工具:支持互动式语言学习体验,帮助纠正语法错误或提供写作练习。 知识探索:通过生成摘要或回答有关特定主题的问题,帮助研究人员探索大量文本。
局限性
训练数据
训练数据的质量和多样性对模型的性能有着显著的影响。训练数据中的偏差或缺失会导致模型响应的局限性。 训练数据集的范围决定了模型能够有效处理的主题领域。
背景和任务复杂性
模型更擅长完成那些可以通过清晰提示和指示来界定的任务。开放式或高度复杂的任务可能对它们来说具有挑战性。 模型的性能会受到所提供上下文量的影响(在一定范围内,上下文越长,通常输出效果越好)。
语言歧义和细微差别
自然语言本身就非常复杂。模型可能难以理解细微的差别、讽刺或比喻等语言表达方式。
事实准确性
模型会根据从训练数据集中学习到的信息生成响应,但它们并非知识库。它们可能会生成不正确或过时的事实陈述。
常识
模型依赖于语言中的统计模式。在某些情况下,它们可能缺乏运用常识推理的能力。
感谢你看到这里,添加小助手 AIGC_Tech 加入官方 AIGC读者交流群,下方扫码加入 AIGC Studio 星球,获取前沿AI应用、AIGC实践教程、大厂面试经验、AI学习路线以及IT类入门到精通学习资料等,欢迎一起交流学习💗~
没有评论:
发表评论