专栏名称: 计算机视觉深度学习和自动驾驶
讨论计算机视觉、深度学习和自动驾驶的技术发展和挑战
目录
相关文章推荐
现代快报  ·  王曼昱亚洲杯女单夺冠 ·  8 小时前  
现代快报  ·  王曼昱亚洲杯女单夺冠 ·  8 小时前  
每天学点做饭技巧  ·  45岁导演饺子成都街头被偶遇,穿橙色冲锋衣搭 ... ·  18 小时前  
每天学点做饭技巧  ·  汪小菲马筱梅过情人节被偶遇,西装革履,状态已 ... ·  3 天前  
51好读  ›  专栏  ›  计算机视觉深度学习和自动驾驶

Octopus: 软件API函数调用的设备端语言模型

计算机视觉深度学习和自动驾驶  · 公众号  ·  · 2024-04-08 04:14

正文

24年4月斯坦福和哈佛的论文“Octopus: On-device language model for function calling of software APIs”

在快速发展的人工智能领域,大语言模型 (LLM) 因其先进的文本处理和生成能力而发挥着至关重要的作用。本研究引入了一种新策略,旨在利用设备上的 LLM 来调用软件 API。精心编译源自软件 API 文档的数据集,并对具有 2B、3B 和 7B 参数能力的LLMs进行微调,专门提高他们在软件 API 交互方面的熟练程度。该方法专注于完善模型对 API 结构和语法的掌握,显着提高 API 函数调用的准确性。此外,提出条件掩码技术,确保以所需格式输出并降低错误率,同时保持推理速度。还提出一个新基准,旨在评估LLMs在 API 交互中的有效性,为后续研究奠定基础。事实证明,经过微调的模型 Octopus 在软件 API 调用方面比 GPT-4 具有更好的性能。


GPT-4、Alpaca 和 Llama 等大语言模型 (LLM) 中 外部计算工具 的集成标志着在增强其能力方面取得了实质性进展。最初,集成工作主要围绕特定于模型的微调方法(Lin et al. 2024,Hu et al. 2023),尽管有效,但在广泛和灵活的应用中遇到了挑战。随着示范性演示这种提示的采用,发生了显着的转变,扩大了工具可访问性的范围。该范围包括专门的代码解释器和广泛的检索框架,显着增强了模型解释和执行复杂指令的能力(Zhou et al. 2023)。也注意到工具交互模拟环境(Shen 2024a;Du 2024;Xi 2023)和 API 参与框架(Li2023)的发展。此外,高级推理(Valmeekam et al. 2022;Hao et al. 2023;Lewkowycz et al. 2022)策略的结合显着提高了模型解释和解决复杂任务的效率。

初始数据集包含来自 RapidAPI Hub(世界上最大的 API 存储库之一)的 API 文档。为了促进大语言模型理解 API 使用模式,编译一个全面的 API 文档集合,重点关注大约 30,000 个最常用API。该数据集获取分为两个主要阶段:初始收集和处理各个 API 文档片段,然后进行细致的细化过程去优化用于训练目的的数据集。

如图所示:通过严格的工作流程将数据集 A 细化为数据集 B。该过程涉及三个关键步骤:对可通过特定 API 解决的肯定查询进行采样,并生成相应的响应和 CoT;识别无法解决的查询,并用不相关的函数体增强;采用语义分析将类似的功能加入到数据点中。经过 GPT-4 的严格验证,数据集 B 作为优化的训练数据集出现,有望显着提升模型效率。

为了验证框架的有效性,在四个著名的开源模型上对其进行了微调: CodeLlama7b、Google Gemma 2B & 7B 和 Stable Code LM 3B。 所有模型均采用标准化训练模板。 用 LoRA 和 8 bit量化技术,A100 80GB GPU 的时间分配如下: CodeLlama7b 和 Google Gemma 7B 为 90 小时,Google Gemma 2B 为 30 小时,Stable Code LM 3B 为 60 小时。 学习率设置为 5×10−5,并使用线性调度器优化结果。 在推理阶段,用户查询触发函数检索和执行,将生成的函数及其参数映射到相应的API,进行最终响应,确保在正确的函数和参数名称生成的情况下得到准确的结果。

尝试了不同的Lora设置,最好的设置是选择Lora等级为16,并将该方法应用于“q proj”,“v proj”,“o proj”、“up proj”和“down proj”等模数。如图附上所选模型的训练和验证损失。在训练过程中,逐步在数据集点上使用更多类似的示例进行训练,进行课程学习。

小参数大语言模型(LLM)的使用面临着一个关键挑战: 生成输出时鲁棒性明显下降。 在模型中也观察到了这一挑战,这需要使用精确的函数名称及其相应的参数来强制执行响应。 预期的输出格式要求参数封装在括号内,函数名称与预定义的存储库对齐,并且参数值符合其指定的类型。







请到「今天看啥」查看全文