如何采用最少的代码启动LLM API服务器

译文
人工智能
本文介绍了两种无需编写代码即可设置开源LLM API服务器的解决方案。

译者 | 李睿

审校 | 重楼

近几个月来,开源的大型语言模型一直在迅速发展。Meta公司发布了LLaMA,随后又发布了一系列其他模型,这导致很多企业运行自己的LLM的兴趣激增。

拥有自己的LLM(例如LLaMA2)提供了一些优势:企业可以更好地控制大型语言模型的使用,确保数据的隐私,允许定制以适应特定需求,并促进与现有系统的无缝集成。然而,企业运行自己的LLM也有许多挑战,其中包括设置必要的IT基础设施,选择适当的LLM,使用自己的数据运行并可能微调模型,扩展模型以满足需求,以及解决许可问题。

幸运的是,有许多可用的解决方案可以简化开始使用开源LLM的过程。本文将介绍两种无需编写代码即可设置开源LLM API服务器的解决方案。

为什么选择Web API服务器?

web应用程序和LLM服务器如何交互

机器学习项目的固有挑战之一是开发周期长。当企业希望将LLM功能添加到现有产品中时,将开发和部署模型所需的时间最小化是至关重要的。

开源LLM尤其具有挑战性,因为这些大型语言模型是用各种编程语言和框架编写的。当尝试将这些模型合并到现有应用程序中时,这种多样性可能会带来集成挑战。

最小化开发和集成时间的一个解决方案是建立一个Web API。如果企业已经在使用像GPT-4或Cohere这样的商业LLM API,那么为企业的开源LLM设置一个API可以让企业在对现有代码进行最小更改的情况下测试和比较模型。这种方法提供了在开源API和商业API之间轻松切换的灵活性。

除了集成之外,Web API还可以解决其他挑战。例如,企业的Web应用程序可能运行在无服务器或虚拟机上,而没有用于运行LLM的专用硬件。

在这种情况下,LLM API允许企业解耦应用程序的不同部分并分别运行它们。例如,可以将LLM部署在配备A100 GPU的单独虚拟机上,并使Web服务器可以通过API端点访问它。这种解耦意味着随着模型的开发,可以修改底层服务器并对其进行扩展,而无需对Web服务器进行任何更改。

需要注意的是,API部署可能不是应用程序的最终解决方案。随着企业在开发过程中的试验和进展,可能会发现将LLM集成到应用程序中的更有效的方法。当企业从原型转移到生产,保持灵活和开发的方法,因为可以深入了解其选择的LLM的能力和潜力。

应该使用哪种语言模型?

开源LLM领域的多样性也使得为其应用程序选择正确的模型变得困难。LLaMA是一个很好的起点。其受欢迎程度使其成为一个引人注目的选择,因为许多库和项目都支持它。此外,已经在LLaMA和LLaMA2之上构建了许多模型,这意味着如果企业构建的产品可以与其中一个模型一起工作,那么使其项目适应其他模型的可能性很大。

尤其是LLaMA2,其令人印象深刻的基准在开源模型中脱颖而出。如果企业的目标是尽可能接近最先进的API LLM,那么LLaMA2可能是其最好的选择。它也有不同的大小,从70亿个到700亿个参数不等。这种可扩展性允许企业调整模型的复杂性,而无需对应用程序进行重大更改(尽管需要检查硬件设置以适应模型的大小)。

LLaMA2的另一个优点是其允许商业使用的许可。这实际上意味着可以将其用于几乎任何应用程序。许可证中有一些关于用户数量的警告,但这些限制只适用于很少的产品。

然而,一旦企业使用选择的模型进行了测试,可能想要探索其他系列LLM。MPT和Cerebras GPT系列模型也具有很高的性能,并且可以为企业的特定用例提供独特的优势。

在选择了LLM之后,下一步是找到一个框架,该框架可以将LLM作为API端点服务,只需很少的编码或不需要编码。以下将探讨两个框架,它们可以帮助企业快速有效地启动并运行LLM API服务器。

使用vLLM启动API服务器

vLLM是一个功能强大的Python库,可以快速方便地访问各种模型。vLLM由加州大学伯克利分校的研究人员开发,不仅支持LLaMA和LLaMA2,还支持其他先进的开源语言模型,例如MPT、OPT、Falcon、Dolly和BLOOM。

vLLM最引人注目的特性之一是它运行的速度。在一些实验中,它吞吐量已经证明比Hugging Face的LLM要高14~24倍。这种速度加上其现成的API端点功能,使vLLM成为启动语言模型Web API服务器的高效工具。

要运行vLLM,需要一台配备Python3.8或更高版本、CUDA 11.0-11.8和合适GPU的Linux服务器。或者,可以使用NVIDIA PyTorch Docker镜像,该镜像附带了所有必要的预安装包和库。(如果选择Docker镜像,必须在使用vLLM之前卸载Pytorch)。

使用一个简单的命令就可以轻松安装vLLM:

pip install vllm

其安装过程可能需要几分钟,具体取决于网络连接。在安装之后,启动LLaMA2 API端点就像运行以下命令一样简单:

python -m vllm.entrypoints.api_server --env MODEL_NAME=openlm-research/open_llama_13b

该命令在http://localhost:8000上启动服务器。企业可以使用-host和-port参数指定地址和端口,并且可以用自己的模型的名称替换MODEL_NAME参数。

要检查服务器,可以运行curl命令:

curl http://localhost:8000/generate \
    -d '{
        "prompt": "The most famous book of J.R.R. Tolkien is",
        "temperature": 0,
        "max_tokens": 50
    }'

如果一切正常,应该从服务器接收模型的输出。

vLLM的主要优点之一是它与OpenAI API的兼容性。如果其应用程序已经与OpenAI模型一起工作,可以运行一个模仿OpenAI API的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

链接:https://bdtechtalks.com/2023/08/14/llm-api-server-nocode/。

想了解更多AIGC的内容,请访问:

51CTO AI.x社区

https://www.51cto.com/aigc/

责任编辑:姜华 来源: 51CTO内容精选
相关推荐

2023-08-25 13:25:00

云计算云平台

2010-07-19 21:24:34

启动Telnet服务器

2011-02-21 17:58:40

vsFTPd

2019-05-29 15:58:28

分段排查法服务器

2010-05-12 18:15:05

IIS服务器

2011-02-22 14:19:28

vsFTPd启动关闭

2011-03-07 09:37:32

Vsftpd启动CentOS

2011-02-24 09:57:40

vsFTPd启动关闭

2017-05-31 09:15:34

HPEIntegrity服务器

2010-04-19 13:07:58

服务器IDC

2010-01-04 16:54:00

Ubuntu DNS

2009-02-26 21:02:20

虚拟服务器VMwareEMC

2011-06-30 09:57:45

Unix服务器刀片服务器云计算

2014-09-22 09:52:06

2010-07-27 16:38:11

Debian NFS服

2012-12-27 10:17:21

云服务器

2013-01-04 13:28:23

云服务器SaaSPaaS

2010-12-28 17:13:32

管理服务器

2011-06-22 10:24:57

服务器CPU数据中心

2020-12-14 08:17:50

代码
点赞
收藏

51CTO技术栈公众号