vllm 是一個快速且易於使用的庫,用於快速推論大型語言模型。
vLLM:快速且易於使用的 LLM 推理與服務引擎
簡介:
vLLM 是一個用於大規模語言模型 (LLM) 推理與服務的高吞吐量和高效的 Python 庫。 它旨在簡化 LLM 的部署,並顯著提高推理速度,同時降低成本。 vLLM 專注於優化記憶體管理和調度,以實現卓越的效能。
核心特性:
PagedAttention: vLLM 的核心創新是 PagedAttention 演算法。 傳統的注意力機制需要為每個 token 儲存所有先前的 key 和 value,這導致了巨大的記憶體佔用,尤其是在長序列中。 PagedAttention 將注意力 key 和 value 分成頁面,類似於作業系統中的虛擬記憶體分頁。 這允許 vLLM 動態地管理和共享注意力記憶體,從而顯著減少記憶體浪費,並支持更長的序列和更大的批處理大小。
連續批處理: vLLM 支持連續批處理,這意味著它可以動態地將來自不同請求的 token 組合為一個批次進行處理。 這最大限度地利用了 GPU 資源,並提高了吞吐量。
高效的 CUDA 內核: vLLM 使用高度優化的 CUDA 內核來實現 PagedAttention 和其他操作。 這些內核經過精心設計,以充分利用 GPU 的並行處理能力。
易於使用: vLLM 提供了一個簡單易用的 Python API,可以輕鬆地整合到現有的 LLM 應用程式中。 它還支持多種流行的 LLM 框架,如 Hugging Face Transformers。
支持多種模型架構: vLLM 支持多種流行的 LLM 架構,包括:
- Llama 2
- Llama
- Mistral
- MPT
- Falcon
- GPT-2
- GPT-J
- GPTNeoX
- 更多模型正在添加中。
分散式推理: vLLM 支持分散式推理,允許您跨多個 GPU 擴展 LLM 推理。
Tensor 並行: 支持 Tensor 並行,進一步提升分散式推理的效能。
流式輸出: vLLM 支持流式輸出,允許您在生成 token 時立即接收它們,而無需等待整個序列完成。
OpenAI API 兼容性: vLLM 提供與 OpenAI API 兼容的伺服器,方便從 OpenAI 遷移或整合。
主要優勢:
- 更高的吞吐量: 與傳統的 LLM 推理方法相比,vLLM 可以顯著提高吞吐量,通常可以提高 10 倍甚至更多。
- 更低的延遲: vLLM 可以降低延遲,從而提供更快的響應時間。
- 更低的成本: 通過提高 GPU 利用率,vLLM 可以降低 LLM 推理的成本。
- 支持更長的序列: PagedAttention 允許 vLLM 處理更長的序列,而不會耗盡記憶體。
- 易於部署: vLLM 可以輕鬆地部署在各種環境中,包括雲伺服器、本地機器和邊緣設備。
安裝:
可以使用 pip 安裝 vLLM:
pip install vllm
快速入門:
以下是一個使用 vLLM 進行文本生成的簡單示例:
from vllm import LLM, SamplingParams
# 加載模型
llm = LLM(model="facebook/opt-125m")
# 定義採樣參數
sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=256)
# 生成文本
prompts = ["Hello, my name is", "The capital of France is"]
outputs = llm.generate(prompts, sampling_params)
# 打印輸出
for output in outputs:
print(output.prompt)
print(output.outputs[0].text)
用例:
vLLM 適用於各種 LLM 應用,包括:
- 聊天機器人: 構建高性能的聊天機器人,可以處理複雜的對話。
- 文本生成: 生成高品質的文本,用於各種目的,如內容創建、代碼生成和摘要。
- 機器翻譯: 提供快速準確的機器翻譯服務。
- 問答: 構建可以回答複雜問題的問答系統。
- 代碼補全: 提供快速準確的代碼補全建議。
貢獻:
vLLM 是一個開源項目,歡迎社群貢獻。 您可以通過提交問題、提出功能請求或提交拉取請求來參與。
總結:
vLLM 是一個強大的 LLM 推理與服務引擎,它提供了卓越的效能、易用性和靈活性。 無論您是構建聊天機器人、生成文本還是執行其他 LLM 任務,vLLM 都可以幫助您提高效率並降低成本。 它的 PagedAttention 機制是其核心創新,使其能夠處理長序列並實現高吞吐量。 強烈建議您嘗試 vLLM,看看它如何改進您的 LLM 工作流程。