
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}
}