企業級模型推理部署工具vllm使用指南 - 部署最新deepseek-v3-0324模型
vLLM(Virtual Large Language Model)是由加州大學伯克利分校團隊開發的高性能大模型推理框架,其核心特點圍繞顯存優化、高吞吐量、靈活性和易用性展開。
對比 ollama 作為個人開發者部署模型工具而言,vLLM 專注于高并發請求和大規模生產環境,適用于企業級應用和需要高效推理的場景。vLLM 通過優化內存管理和并發處理,適合處理高負載的生產環境 。
一、vLLM 核心優勢
高性能相關
1. PagedAttention 技術(分頁注意力機制)
核心創新:借鑒操作系統虛擬內存分頁機制,將注意力計算中的Key/Value 緩存(KV Cache)劃分為固定大小的“頁”,動態分配顯存,顯著減少內存碎片化。
- 傳統問題:傳統框架需為每個請求預分配連續顯存空間,導致利用率低(僅 20%-40%)。
- vLLM 解決方案:按需分配顯存頁,支持動態擴展,顯存利用率提升至接近 100%。
例如,LLaMA-7B 模型顯存占用可從 14GB 壓縮至 4GB(使用 INT4 量化)。 支持長上下文(如 128K 或 10M token)的高效處理,減少顯存浪費。
2. 連續批處理(Continuous Batching)
動態合并請求:實時合并多個推理請求,避免靜態批處理的等待延遲,最大化 GPU 利用率。
吞吐量提升:
- 相比 Hugging Face Transformers,吞吐量提升 24 倍(如 LLaMA-7B 模型)。
- 在高并發場景下,吞吐量可達傳統框架的 5-10 倍。
3. 量化支持(模型壓縮與加速)
兼容主流量化方法:支持 GPTQ、AWQ、SqueezeLLM、FP8 KV Cache 等,顯著降低顯存占用和計算開銷。
量化效果:
- INT4 量化:將 7B 模型顯存需求從 14GB 壓縮至 4GB,同時保持精度損失<1%。
- 適用于消費級顯卡(如 RTX 4090)部署 7B-13B 模型。
4. 高性能與分布式推理
多 GPU 張量并行:支持分布式部署,例如在 4 塊 A100 GPU 上運行 70B 參數模型。
CUDA 優化:使用 CUDA/HIP 圖(CUDA Graphs)加速模型執行。 -高性能 CUDA 內核優化,減少計算延遲。
易用性相關
5. 易用性與兼容性
與 Hugging Face 無縫集成:支持 50+主流模型(如 LLaMA、Qwen、Mistral、XVERSE 等)。
OpenAI API 兼容:可直接替換 OpenAI 接口,提供標準 API 服務(如/v1/completions)。
靈活的部署選項:支持流式輸出、前綴緩存、多 LoRA 適配及離線批量推理。
6. 解碼算法多樣性
并行采樣(Parallel Sampling):單次前向傳播生成多個輸出(如多種回答),降低計算成本。
波束搜索(Beam Search):提升生成文本的準確性和多樣性。
自定義解碼策略:支持根據場景選擇最優解碼算法。
二、部署環境準備
vLLM 是一個 Python 庫,包含預編譯的 C++ 和 CUDA (12.1) 二進制文件。
依賴環境
- 操作系統:Linux
- Python:3.8 - 3.12
- GPU:計算能力 7.0 或更高(例如 V100、T4、RTX20xx、A100、L4、H100 等)
ps: vLLM 只能在 Linux 系統上才能完全運行。
使用 pip 安裝
可以使用 python 的 pip 工具安裝 vLLM:
# (Recommended) Create a new conda environment.
#(推薦)創建一個新的 conda 環境。
conda create -n myenv python=3.10 -y
conda activate myenv
# Install vLLM with CUDA 12.1.
# 安裝帶有 CUDA 12.1 的 vLLM。
pip install vllm
使用 docker 安裝
vLLM 提供了一個官方 Docker 鏡像用于部署。該鏡像可用于運行與 OpenAI 兼容服務器,并且可在 Docker Hub 上以 vllm/vllm-openai 的形式獲取。
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HUGGING_FACE_HUB_TOKEN=<secret>" \
-p 8000:8000 \
--ipc=host \
vllm/vllm-openai:latest \
--model mistralai/Mistral-7B-v0.1
使用 ipc=host 標志或 --shm-size 標志來允許容器訪問主機的共享內存。 vLLM 使用 PyTorch,而 PyTorch 在底層使用共享內存在進程之間共享數據,特別是在張量并行推理中。
默認情況下,為實現最廣泛分發,vLLM 將為所有 GPU 類型進行構建。如果您只是針對機器運行的當前 GPU 類型進行構建,則可以為 vLLM 添加參數 --build-arg torch_cuda_arch_list= "" 來查找當前 GPU 類型并為其構建。
三、模型下載啟動
這里用 DeepSeek 最新模型 V3-0324 模型下載來給大家作為參考。
圖片
在 huggingface 搜索 deepseek-ai/DeepSeek-V3-0324 即可找到 deepseek v3 的最新模型,
點擊 Use this model 即可找到下載模型命令,
圖片
在 vllm 種,我們要下載模型并使用其中一個模型來啟動服務器,請使用 vllm serve 命令,例如:
vllm serve "deepseek-ai/DeepSeek-V3-0324"
安裝并啟動后,服務啟動在 http://localhost:8000/。
分布式推理和服務
vLLM 支持分布式張量并行推理和服務。目前,我們支持 Megatron-LM 的張量并行算法。我們還支持將管道并行作為在線服務的測試版功能。我們使用 Ray 或 python 的原生多進程來管理分布式運行時。在單節點部署時可以使用多進程,多節點推理目前需要 Ray。
這也是 vllm 對比 ollama 的核心優勢。能有效地利用多核 CPU 和 GPU 資源,顯著提升 LLM 的推理速度
單節點多 GPU 部署
要運行多 GPU 服務,在啟動服務器時傳入張量并行 --tensor-parallel-size 參數。例如要在 4 個 GPU 上運行 API 服務器:
# 設置張量并行(需多GPU)
vllm serve "deepseek-ai/DeepSeek-V3-0324" \
--tensor-parallel-size 4 \ # 根據GPU數量調整
多節點多 GPU 部署
可以將張量并行與管道并行結合使用。張量并行大小是每個節點要使用的 GPU 數量,管道并行大小是要使用的節點數量.例如,如果 2 個節點中有 8 個 GPU(每個節點 4 個 GPU),則可以將張量并行大小設置為 4,將管道并行大小設置為 2。
vllm serve "deepseek-ai/DeepSeek-V3-0324" \
--tensor-parallel-size 4 \ # 根據GPU數量調整
--pipeline-parallel-size 2 # 根據節點數量調整
關鍵參數說明
參數 | 說明 |
| GPU 張量并行度,需與 GPU 數量匹配(如 4 卡設為 4)。 |
| 最大批量請求大小,默認 16,可調高以提升吞吐。 |
| 磁盤交換空間,避免顯存溢出(如設為 20GiB)。 |
| 啟用異步執行,減少等待時間。 |
更多關于多節點多 GPU 部署的信息可以參考官方文檔:https://docs.vllm.ai/en/stable/serving/distributed_serving.html
四、跟 vLLM 推理服務交互
通過 python 代碼交互
服務器運行后,可以通過 python 代碼調用其 API:
from openai import OpenAI
client = OpenAI(base_url='http://localhost:3000/v1', api_key='na')
# Use the following func to get the available models
# model_list = client.models.list()
# print(model_list)
chat_completion = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V3-0324",
messages=[
{
"role": "user",
"content": "Tell me something about large language models."
}
],
stream=True,
)
for chunk in chat_completion:
print(chunk.choices[0].delta.content or"", end="")
通過 cli 交互
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "deepseek-ai/DeepSeek-V3-0324",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}
五、總結
通過本文,你已掌握 vLLM 從環境配置到高性能推理服務部署的全流程。vLLM 憑借其靈活性和高效性,成為大模型落地的首選工具。無論是本地開發還是云服務器部署,只需根據硬件資源調整參數,即可快速實現高并發、低延遲的推理服務。