
LLMCOMPILER是一个框架,可以通过自动识别可以并行执行哪些任务并相互依存的方式来实现与LLMS(包括开源和封闭源模型)的平行函数呼叫的有效编排。
TL; DR: LLMS的推理功能使他们能够使用用户提供的功能执行多个函数调用,以克服其固有的局限性(例如知识截止,差的算术技能或缺乏私人数据访问权限)。尽管多功能调用使他们能够解决更复杂的问题,但当前的方法通常需要为每个功能进行顺序推理和行动,这可能会导致高潜伏期,成本,有时甚至不准确。 LLMCompiler通过将问题分解为可以并行执行的多个任务来解决此问题,从而有效地策划了多功能呼叫。使用LLMCompiler,用户指定工具以及可选的内在示例, LLMCompiler自动为功能调用计算优化的编排。 LLMCompiler可以与诸如Llama之类的开源模型以及OpenAI的GPT型号一起使用。在一系列的任务中,LLMCompiler始终显示出延迟的速度,节省成本和准确性的提高。有关更多详细信息,请查看我们的论文。
conda create --name llmcompiler python=3.10 -y
conda activate llmcompiler
git clone https://github.com/SqueezeAILab/LLMCompiler
cd LLMCompiler
pip install -r requirements.txt
要在论文中重现评估结果,请运行以下命令。您需要首先将OpenAI API密钥注册到环境中: export OPENAI_API_KEY="sk-xxx"
python run_llm_compiler.py --benchmark {benchmark-name} --store {store-path} [--logging] [--stream]
要运行使用VLLM框架服务的自定义模型,请运行以下命令。可以在VLLM文档中找到用于使用VLLM框架的自定义模型的详细说明。请注意,默认配置文件中的预定义提示是针对(非chat)Llama-2 70B量身定制的,可能需要对不同型号进行调整。
python run_llm_compiler.py --model_type vllm --benchmark {benchmark-name} --store {store-path} --model_name {vllm-model-name} --vllm_port {vllm-port} [--logging]
--benchmark :基准名称。使用hotpotqa , movie和parallelqa分别评估HOTPOTQA上的LLMCompiler,电影推荐和ParalleLQA基准。--store :保存结果的路径。问题,True标签,预测和延迟示例将以JSON格式存储。--logging :(可选)启用记录。尚未支持VLLM。--do_benchmark :(可选)在详细的运行时统计信息上进行其他基准测试。--stream :(可选,建议)启用流媒体。它通过将任务从计划者流到了任务获取单元和执行者之后的任务来提高延迟,而不是阻止执行者,直到从计划者生成所有任务为止。--react :(可选)使用React代替LLMCompiler进行基线评估。您可以选择使用--model_type azure ,而不是使用Azure端点而不是OpenAI端点。在这种情况下,您需要提供关联的Azure配置作为环境中的以下字段: AZURE_ENDPOINT , AZURE_OPENAI_API_VERSION , AZURE_DEPLOYMENT_NAME和AZURE_OPENAI_API_KEY 。
您可以使用--model_type friendli使用friendli端点。在这种情况下,您需要在环境中提供友谊API密钥: FRIENDLI_TOKEN 。此外,您需要安装友谊客户端:
pip install friendli-client
运行结束后,您可以通过运行以下命令来获得结果摘要:
python evaluate_results.py --file {store-path}
要在自定义基准或用例上使用llmcompiler,您只需要提供功能及其描述以及示例提示即可。请参阅configs/hotpotqa , configs/movie和configs/parallelqa作为示例。
gpt_prompts.py :定义封闭式示例提示tools.py :定义要使用的函数(即工具)及其描述(即说明和参数) 我们计划很快更新以下功能:
LLMCompiler已作为以下论文的一部分开发。如果您发现图书馆对您的工作有用,请列举以下论文,我们感谢它:
@article{kim2023llmcompiler,
title={An LLM Compiler for Parallel Function Calling},
author={Kim, Sehoon and Moon, Suhong and Tabrizi, Ryan and Lee, Nicholas and Mahoney, Michael and Keutzer, Kurt and Gholami, Amir},
journal={arXiv},
year={2023}
}