簡介:
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 架構,包括:
分散式推理: vLLM 支持分散式推理,允許您跨多個 GPU 擴展 LLM 推理。
Tensor 並行: 支持 Tensor 並行,進一步提升分散式推理的效能。
流式輸出: vLLM 支持流式輸出,允許您在生成 token 時立即接收它們,而無需等待整個序列完成。
OpenAI API 兼容性: vLLM 提供與 OpenAI API 兼容的伺服器,方便從 OpenAI 遷移或整合。
主要優勢:
安裝:
可以使用 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 工作流程。