大型模型服務 - 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 可互操作。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP