本文引见了两种无需编写代码即可设置开源LLM API主机的处置打算。
近几个月来,开源的大型言语模型不时在迅速开展。Meta公司颁布了LLaMA,随后又颁布了一系列其余模型,这造成很多企业运转自己的LLM的兴味激增。
领有自己的LLM(例如LLaMA2)提供了一些好处:企业可以更好地控制大型言语模型的经常使用,确保数据的隐衷,准许定制以顺应特定需求,并促成与现有系统的无缝集成。但是,企业运转自己的LLM也有许多应战,其中包含设置必要的IT基础设备,选用适当的LLM,经常使用自己的数据运转并或许微调模型,裁减模型以满足需求,以及处置容许疑问。
幸运的是,有许多可用的处置打算可以简化开局经常使用开源LLM的环节。本文将引见两种无需编写代码即可设置开源LLM API主机的处置打算。
为什么选用Web API主机?
web运行程序和LLM主机如何交互
机器学习名目的固有应战之一是开发周期长。当企业宿愿将LLM配置减少到现有产品中时,将开发和部署模型所需的期间最小化是至关关键的。
开源LLM尤其具备应战性,由于这些大型言语模型是用各种编程言语和框架编写的。当尝试将这些模型兼并到现有运行程序中时,这种多样性或许会带来集成应战。
最小化开发和集成期间的一个处置打算是建设一个Web API。假设企业曾经在经常使用像GPT-4或Cohere这样的商业LLMAPI,那么为企业的开源LLM设置一个API可以让企业在对现有代码启动最小更改的状况下测试和比拟模型。这种方法提供了在开源API和商业API之间轻松切换的灵敏性。
除了集成之外,Web API还可以处置其余应战。例如,企业的Web运行程序或许运转在无主机或虚构机上,而没有用于运转LLM的公用配件。
在这种状况下,LLM API准许企业解耦运行程序的不同局部并区分运转它们。例如,可以将LLM部署在装备A100GPU的独自虚构机上,并使Web主机可以经过API端点访问它。这种解耦象征着随着模型的开发,可以修正底层主机并对其启动裁减,而无需对Web主机启动任何更改。
须要留意的是,API部署或许不是运行程序的最终处置打算。随着企业在开发环节中的实验和停顿,或许会发现将LLM集成到运行程序中的更有效的方法。当企业从原型转移到消费,坚持灵敏和开发的方法,由于可以深化了解其选用的LLM的才干和后劲。
应该经常使用哪种言语模型?
开源LLM畛域的多样性也使得为其运行程序选用正确的模型变得艰巨。LLaMA是一个很好的终点。其受欢迎水平使其成为一个有目共睹的选用,由于许多库和名目都支持它。此外,曾经在LLaMA和LLaMA2之上构建了许多模型,这象征着假设企业构建的产品可以与其中一个模型一同上班,那么使其名目顺应其余模型的或许性很大。
尤其是LLaMA2,其令人印象深入的基准在开源模型中锋芒毕露。假设企业的指标是尽或许凑近最先进的APILLM,那么LLaMA2或许是其最好的选用。它也有不同的大小,从70亿个到700亿个参数不等。这种可裁减性准许企业调整模型的复杂性,而无需对运行程序启动严重更改(虽然须要审核配件设置以顺应模型的大小)。
LLaMA2的另一个好处是其准许商业经常使用的容许。这实践上象征着可以将其用于简直任何运行程序。容许证中有一些关于用户数量的正告,但这些限度只实用于很少的产品。
但是,一旦企业经常使用选用的模型启动了测试,或许想要探求其余系列LLM。MPT和CerebrasGPT系列模型也具备很高的性能,并且可认为企业的特定用例提供共同的好处。
在选用了LLM之后,下一步是找到一个框架,该框架可以将LLM作为API端点服务,只有很少的编码或不须要编码。以下将讨论两个框架,它们可以协助企业极速有效地启动并运转LLMAPI主机。
经常使用vLLM启动API主机
vLLM是一个配置弱小的Python库,可以极速繁难地访问各种模型。vLLM由加州大学伯克利分校的钻研人员开发,不只支持LLaMA和LLaMA2,还支持其余先进的开源言语模型,例如MPT、OPT、Falcon、Dolly和BLOOM。
vLLM最有目共睹的特性之一是它运转的速度。在一些实验中,它吞吐量曾经证实比HuggingFace的LLM要高14~24倍。这种速度加上其现成的API端点配置,使vLLM成为启动言语模型Web API主机的高效工具。
要运转vLLM,须要一台装备Python3.8或更高版本、CUDA 11.0-11.8和适合GPU的Linux主机。或许,可以经常使用NVIDIAPyTorch Docker镜像,该镜像附带了一切必要的预装置包和库。(假设选用Docker镜像,必定在经常使用vLLM之前卸载Pytorch)。
经常使用一个繁难的命令就可以轻松装置vLLM:
pip install vllm
其装置环节或许须要几分钟,详细取决于网络衔接。在装置之后,启动LLaMA2 API端点就像运转以下命令一样繁难:
python -m vllm.entrypoints.api_server --env MODEL_NAME=openlm-research/open_llama_13b
该命令在上启动主机。企业可以经常使用-host和-port参数指定地址和端口,并且可以用自己的模型的称号交流MODEL_NAME参数。
要审核主机,可以运转curl命令:
curl\-d '{"prompt": "The most famous book of J.R.R. Tolkien is","temperature": 0,"max_tokens": 50}'
假设一切反常,应该从主机接纳模型的输入。
vLLM的关键好处之一是它与OpenAI API的兼容性。假设其运行程序曾经与OpenAI模型一同上班,可以运转一个模拟OpenAIAPI的vLLM主机:
python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-2-13b-hf
之后,只有要扭转其代码指向API调用到主机,而不是OpenAI API:
openai.api_key = "EMPTY"openai.api_base = "http://localhost:8000/v1"
假设经常使用-host和-port参数更改自动设置,可以相应地更改api_base变量。
vLLM还支持跨多个主机的并行GPU推理和散发。假设主机有多个GPU,可以经过经常使用tensor-parallel-size参数轻松调整vLLM来应用它们:
python -m vllm.entrypoints.api_server \--env MODEL_NAME=openlm-research/open_llama_13b \--tensor-parallel-size 4
这个特性关于须要高计算才干的运行程序特意有用。
vLLM的另一个清楚特性是令牌流。这象征着模型可以在生成输入标志时前往它们,而不是期待整个序列成功。假设企业的运行程序生成较长的照应,并且不想让用户期待很长期间,则这一特性特意有用。
但是vLLM并非没有其局限性。它不支持LoRA和QLoRA适配器,这是在不修正原始模型权重的状况下对开源LLM启动微调的罕用技术。vLLM也不支持量化,量化是一种使LLM足够紧凑以顺应较小GPU的技术。虽然存在这些限度,vLLM依然是极速测试LLM的十分繁难的工具。
创立OpenLLM主机
OpenLLM是另一个宽泛经常使用的为言语模型创立Web主机的平台。它以其繁难性和多配置性而知名,使其成为开发人员和钻研人员的抢手选用。
要装置OpenLLM,须要确保其主机满足必要的先决条件。一旦确认,装置环节就很繁难了。口头如下命令:
pip install openllm
在成功装置后,可以间接从命令行启动主机。上方是如何做到这一点的一个例子:
openllm start llama --model-id openlm-research/open_llama_7b_v2 \--max-new-tokens 200 \--temperature 0.95 \
OpenLLM的一个突出特性是它对适配器(如LoRA)的支持。该特性准许企业将完整的LLM和几个轻量级适配器组合在一同,从而使企业能够在单个模型上运转多个运行程序。
OpenLLM还与LangChain等盛行库无缝集成。这种集成简化了编写运行程序或将代码移植到新的LLM的环节,节俭了开发人员贵重的期间和精神。
但是,OpenLLM也不是没有缺陷。与vLLM不同,它不支持批处置推理,这或许成为高经常使用率运行程序的瓶颈。此外,OpenLLM不足对跨多个GPU的散布式推理的内置支持。虽然存在这些限度,OpenLLM依然是部署言语模型主机的强健且用户友好的平台。它关于构建LLM运行程序的原型特意有用,特意是假构想要启动LLM微调的话。
原文题目:How to launch an LLM API server with minimal coding,作者:Ben Dickson
链接:。