大型模型服务 - VLLM、LLAMA CPP 服务器和 SGLang
在过去的两年里,大型语言模型 (LLM) 和视觉语言模型 (VLM) 的普及率激增。得益于 GPU 技术的最新进展,这些模型已在数万亿个 token 上进行了预训练,并允许开发者轻松利用最先进的 AI,方法是微调它们或直接使用它们。
但是,如何托管这些模型呢?在本文中,我们将比较三种最流行的解决方案:vLLM、llama.cpp 和 SGLang。
vLLM
vLLM 由加州大学伯克利分校的研究人员于 2023 年 6 月发布,是一个基于称为 PagedAttention 技术的高性能模型 LLM 后端。PagedAttention 优化了内存管理,使 vLLM 能够高效地进行大规模推理。自发布以来,vLLM 作为库和服务器解决方案都获得了关注,支持各种 LLM 架构。
vLLM 包含一个与 OpenAI 兼容的 API 服务器,允许开发者轻松从专有 LLM 服务切换而无需更改代码。它还提供非常高速的动态 LoRA(低秩自适应)加载,这是需要动态加载和卸载轻量级模型自适应时的关键功能。此外,vLLM 支持多 GPU 和多节点服务,使其在垂直和水平方向上都具有高度可扩展性。
vLLM 还维护一个 Docker 镜像,以便在流行的云服务上轻松部署。但是,需要注意的是,Docker 镜像需要最新的 CUDA 版本 (12.4) 才能运行,这对于某些较旧的环境来说可能是一个障碍。vLLM 在最初发布时是服务开源 LLM 的最快方法。
llama.cpp
llama.cpp 是最初为基于 LLaMa 的模型设计的低级 C/C++ 实现,但后来扩展到支持各种其他 LLM 架构。
虽然速度不如 vLLM,但 llama.cpp 支持在 GPU 和 CPU 节点上进行推理,甚至支持 MacOS 上的 Metal,使其成为最灵活的选择。另一方面,vLLM 只能在 CUDA 节点上运行。
llama.cpp 还为 Python、Go 和 Node.js 等流行编程语言提供绑定,可用作库,并包含一个 Docker 镜像以方便部署。
llama.cpp 的另一个优点是它支持可变位量化,这允许以 3 位或 5 位进行量化,以便在受限硬件上获得最大的性能。
SGLang
SGLang 是 LLM 服务解决方案领域的新成员。SGLang 由流行的 Chatbot Arena 平台的创建者 LMSYS 开发,旨在解决高流量情况。根据 LMSYS 的一篇博文,SGLang 目前是可用的最快 LLM 后端。
SGLang 配备了一个与 OpenAI 兼容的 API,方便与现有软件集成。它还支持多 GPU 和多节点设置。与 vLLM 一样,它提供预构建的 Docker 镜像,方便部署。
但是,SGLang 也有一些限制。它目前仅支持有限数量的 LLM 架构。此外,SGLang 不支持动态 LoRA 加载,这意味着如果您需要快速在多个轻量级模型自适应之间切换,则灵活性较差。
您应该选择哪一个?
选择合适的大型模型服务解决方案取决于您的特定需求。
- 如果您计划在本地托管模型,尤其是在使用 GPU 和 CPU 或需要编程语言支持灵活性时,llama.cpp 是您的最佳选择。它提供了多功能性,虽然与竞争对手相比性能略慢,但非常适合多平台环境。
- 对于速度至关重要的生产环境,SGLang 是最佳选择(如果支持您的模型架构)。它是目前可用的最快解决方案,非常适合高需求的应用程序。
- 如果您需要动态 LoRA 加载,或者您的模型架构不受 SGLang 支持,那么 vLLM 仍然是首选。它在灵活性和速度之间取得了平衡,使其仍然是一个极好的选择。
虽然我们已经介绍了撰写本文时最流行的三种 LLM 后端,但重要的是要密切关注最新的发展,因为似乎每 8 个月就会出现一种新的解决方案。幸运的是,在这些解决方案之间切换并非一项艰巨的任务,因为大多数解决方案都通过与 OpenAI 兼容的 API 可互操作。
广告