vLLM 部署 DeepSeek
需要多人同時調用、追求吞吐量時的選擇。單人試用不需要它。
vLLM 解決什麼問題
傳統推理框架把每個請求的 KV cache 連續存放,造成大量記憶體碎片,導致同時能跑的請求數受限。 vLLM 用 PagedAttention 把 KV cache 切成分頁管理,記憶體利用率大幅提升,同樣顯存能服務更多併發請求。
| 比較 | llama.cpp | vLLM |
|---|---|---|
| 單請求速度 | 好 | 好 |
| 多併發吞吐 | 一般 | 明顯更好 |
| 顯存效率 | 一般 | 高(PagedAttention) |
| 安裝難度 | 中 | 較高(依賴多) |
| 量化支援 | GGUF 生態最全 | 支援 AWQ / GPTQ / FP8 |
安裝
# 建議在 Linux + NVIDIA GPU 環境 pip install vllm # 確認 CUDA 版本匹配 python -c "import torch; print(torch.version.cuda)"
啟動
# 基本啟動(Hugging Face 上的模型) vllm serve\ --host 0.0.0.0 \ --port 8000 \ --max-model-len 32768 \ --gpu-memory-utilization 0.90
關鍵參數
| 參數 | 作用 | 怎麼設 |
|---|---|---|
--max-model-len | 最大上下文 | 依任務設,越長越吃顯存 |
--gpu-memory-utilization | 可用顯存比例 | 0.85-0.95,留餘量避免 OOM |
--max-num-seqs | 最大同時處理請求數 | 依併發需求調 |
--tensor-parallel-size | 多卡切分數 | 多張卡時設為卡數 |
--quantization | 量化方式 | awq / gptq / fp8 |
調優順序
- 先確認單請求能跑通(不設併發)
- 逐次提高
--max-num-seqs,觀察吞吐與延遲變化 - 找到吞吐不再提升或延遲明顯變差的點
- 用
nvidia-smi確認顯存是否還有餘量
常見問題
- 啟動就 OOM。降低
--max-model-len或--gpu-memory-utilization。 - 吞吐上不去。檢查是否為 CPU 瓶頸(tokenize 速度)或 PCIe 頻寬。
- 模型不支援。vLLM 對新模型支援有延遲,需等社群適配或自行轉換。
什麼時候該用 vLLM
| 該用 | 不該用 |
|---|---|
| 多人同時使用(內部工具、對外服務) | 單人試用、偶爾跑一次 |
| 追求每秒處理的 token 數 | 顯存很小、只有一張消費級卡 |
| 需要精細控制批處理 | 只會用 Windows |
相關
llama.cpp(更簡單) · Ollama(最簡單) · 顯存計算器 · 本地部署總覽