Agent 系列之 LLM Compiler框架解析

An LLM Compiler for Parallel Function Calling论文详细介绍了一种名为LLMCompiler的新方法,用于在语言模型中并行执行多个函数调用,以提高效率和准确性。

论文摘要

【论文标题】:《An LLM Compiler for Parallel Function Calling》;

【发布时间】:2023.12.04;

【论文链接】:https://arxiv.org/abs/2312.04511;

【内容摘要】

这篇论文介绍了一种名为LLMCompiler的新方法,用于在语言模型中并行执行多个函数调用,以提高效率和准确性。该方法基于经典编译器的原则,包括规划、任务获取和执行三个组件。通过自动优化执行计划,LLMCompiler可以与开源和私有模型一起使用,并已在各种任务上进行了测试,取得了比现有方法更高的速度、成本节省和准确性的结果。

图片

主要内容

方法描述

图片

LLMCompiler,旨在通过自动识别任务之间的依赖关系来优化大规模多模态推理问题的执行效率。该方法包括三个组件:一个LLM规划器(LLM Planner),一个任务获取单元(Task Fetching Unit)和一个执行器(Executor)。其中,LLM规划器负责生成一系列任务及其依赖关系,并使用预定义的提示引导其创建依赖并确保正确的语法;任务获取单元根据策略将任务分配给执行器,同时替换变量为前一任务的实际输出;执行器异步地执行任务,并将结果传递给后续任务

此外,该方法还支持动态重新规划,即在未知中间结果的情况下适应执行流程。当出现复杂的分支结构时,执行器会将中间结果发送回LLM规划器,以便重新计划和分派任务。

解决的问题

LLMCompiler的目标是优化大规模多模态推理问题的执行效率。传统的工具增强型LLMs通常需要手动指定任务之间的依赖关系,这可能会导致计算效率低下。而LLMCompiler则可以自动识别任务之间的依赖关系,并将其转化为执行顺序,从而实现更高效的计算。此外,LLMCompiler还支持动态重新规划,可以在未知中间结果的情况下适应执行流程,进一步提高了计算效率。

图片

LangChain实现

图片

LLMCompiler 有以下主要组件:

        Planner:流式传输任务的 DAG。每个任务都包含一个工具、参数和依赖项列表。

        Task Fetching Unit:调度并执行任务。一旦满足任务的依赖性,该单元就会安排任务。由于许多工具涉及对搜索引擎或 LLM 的其他调用,因此额外的并行性可以显着提高速度(论文声称提高了 3.6 倍)。

        Joiner:由LLM根据整个历史记录(包括任务执行结果)动态重新计划或结束,决定是否响应最终答案或是否将进度传递回(重新)计划代理以继续工作。

代码不贴了,可参考github:https://github.com/langchain-ai/langgraph/blob/main/examples/llm-compiler/LLMCompiler.ipynb?ref=blog.langchain.dev

总结一下,LLM Compiler与AcWOO类似,都通过宏观的计划与执行减少了Prompt内容,但LLM Compiler通过支持任务并发执行实现效率的显著提升。


关于我:AI产品经理(目前在寻找新机会),主要关注AI Agent 应用。公众号:AI奋进者。如有好的想法欢迎一起沟通交流。

Agent系列文章已经逐步更新:

Agent 系列之 ReWOO框架解析icon-default.png?t=N7T8https://blog.csdn.net/letsgogo7/article/details/138259507

Agent系列之 Plan-and-Solve Prompting 论文解析icon-default.png?t=N7T8https://blog.csdn.net/letsgogo7/article/details/138259154

Agent系列之LangChain中ReAct的实现原理浅析icon-default.png?t=N7T8https://blog.csdn.net/letsgogo7/article/details/138197137

Agent系列之ReAct: Reasoning and Acting in LLM 论文解析icon-default.png?t=N7T8https://blog.csdn.net/letsgogo7/article/details/138259590Agent 系列之 LLM Compiler框架解析icon-default.png?t=N7T8https://blog.csdn.net/letsgogo7/article/details/138284351

### 错误分析 PyTorch 的 C++ 扩展功能依赖于 Microsoft Visual Studio 提供的 `cl.exe` 编译器来完成构建过程。当 PyTorch 尝试检测该编译器是否存在以及其版本时,如果系统无法找到对应的文件,则会抛出 `[WinError 2] 系统找不到指定的文件` 的警告或错误消息[^1]。 此问题通常由以下几个原因之一引起: - **缺少必要的开发工具链**:Microsoft Visual Studio 或其组件未正确安装。 - **环境变量配置不完整**:系统的 PATH 变量中缺失指向 `cl.exe` 的路径。 - **Python 和 PyTorch 版本兼容性问题**:某些特定组合可能引发额外的问题。 以下是针对上述原因的具体解决方案。 --- ### 解决方案 #### 方法一:确认并修复 Visual Studio 安装 确保已安装支持 C++ 开发的 Microsoft Visual Studio,并验证是否包含以下工作负载: - **Desktop development with C++** - 如果尚未安装,请通过访问 [Visual Studio 下载页面](https://visualstudio.microsoft.com/) 并下载社区版(免费),选择上述选项进行安装[^3]。 安装完成后,重新启动计算机以使更改生效。 #### 方法二:手动设置环境变量 即使安装了 Visual Studio,仍需确保 `cl.exe` 路径被加入到系统的 PATH 中。可以通过运行命令提示符执行以下操作来检查当前可用的编译器位置: ```cmd where cl.exe ``` 如果没有返回任何有效路径,则需要手动添加。例如,默认情况下,`cl.exe` 存在于类似于以下目录的位置: ``` C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\<version>\bin\HostX64\x64\ ``` 将其复制至系统环境变量中的 PATH 字段内。修改方法如下: 1. 进入控制面板 -> 系统和安全 -> 系统 -> 高级系统设置; 2. 单击“高级”标签页下的“环境变量”按钮; 3. 在“系统变量”部分定位到 Path,点击编辑; 4. 添加上述路径后保存退出。 随后重启终端窗口再次测试 `where cl.exe` 命令输出结果应显示新增加的内容[^2]。 #### 方法三:升级或降级 Python/PyTorch 版本 有时不同版本间的差异也会造成此类冲突现象发生。可以尝试调整使用的库版本号直至匹配成功为止。比如对于 Python 3.9 用户来说,推荐先卸载现有包再按照官方文档指引精确指明目标发行物名称来进行重置动作: ```bash pip uninstall torch torchvision torchaudio pip install torch==<compatible_version> torchvision==<compatible_version> ``` 另外值得注意的是,在 Windows 上预编译好的 wheel 文件可以直接加速整个流程而无需经历源码级别的定制化组装环节。因此建议优先考虑采用这种方式获取最新稳定发布的资源链接地址作为依据实施部署计划安排表单填写完毕之后提交给相关负责人员审核批准后再正式投入使用当中去实践检验效果如何达到预期标准水平之上才行得通哦! --- ### 示例代码片段 下面提供一段简单的自定义扩展模块示例用于演示正常工作的状态表现形式以便对比参考学习之用处更大些吧? ```python from setuptools import setup, Extension import torch.utils.cpp_extension as cpp_ext def main(): module_name = 'example' sources = ['src/example.cpp'] ext_modules = [ cpp_ext.CppExtension( name=module_name, sources=sources, extra_compile_args=['/O2'] # Example flag for MSVC ) ] setup(name='Example', ext_modules=ext_modules, cmdclass={'build_ext': cpp_ext.BuildExtension}) if __name__ == '__main__': main() ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值