?????????舉例上一篇文章已經過去了幾個月,大模型領域風云變幻,之前的vLLM安裝稍有過時,這里補充一個快速安裝教程:? ? ? ?
# 第一步:創建虛擬環境并激活進入
conda create -n vllm-0.8.4 python=3.10 -y
conda activate vllm-0.8.4# 第二步:通過pip安裝指定版本的vllm
pip install vllm==0.8.4
????????通過上面這種方式,只要你是使用vLLM0.8.4版本,就無須考慮cuda的安裝和pytorch的安裝,?pip會幫你一鍵搞定,不用像我上一篇文章中那么費力了。
????????然后再開啟本文內容。在之前的vLLM文章中我介紹了最簡單快速的OpenAI風格的api server部署。這篇文章繼續介紹vLLM框架的兩個常用推理功能,它們分別是:分布式部署和在線量化推理
若友友們忘記了之前內容可以看這里:vllm部署本地大模型①https://blog.csdn.net/qq_39780701/article/details/144571846
一、分布式部署
? ? ? ? 顧名思義,將一個模型放在多張顯卡上面,這樣做的目的是為了能夠加載更大參數的模型。vLLM實現起來非常簡單,不賣關子了,直接給出CLI命令:
-
單機單卡(無分布式):如果您的模型規模適中,能夠完全加載到一個GPU上,那么無需采用分布式推理方案。此時,僅需利用單一GPU執行推理任務即可滿足需求。
# 舉例:單機單卡
vllm serve 模型路徑
-
單機多卡(張量并行):當模型規模超出單個GPU的容量,但可以在配備多個GPU的單一服務器內全部加載時,可以采取張量并行的方法進行推理。這里所說的張量并行度即代表您計劃使用的GPU數量。例如,在擁有2個GPU的單一節點環境下,您可以將張量并行度設置為2,以充分利用這些資源。
# 舉例:單機雙卡
vllm serve 模型路徑 --tensor-parallel-size 2


?
【注】其實就是設置 tensor-paralled-size 參數。這里可以和lmdeploy對比記憶,它是設置 tp 參數。 還有一個和lmdeploy框架一樣的地方,vllm推理框架也會在一開始就向系統申請大約90%的顯存空間。哪怕是你做了量化,顯存占用依舊是90%,這并不意味著量化無效。
-
多節點多 GPU(張量并行 + 流水線并行):對于那些龐大到連單個節點也無法承載的模型,可以結合使用張量并行與流水線并行來實現跨節點的分布式推理。在這種情況下,張量并行度表示每個節點中參與運算的GPU數目,而流水線并行度則對應于參與計算的節點數。舉例來說,若您在2個節點中共有8個GPU(每個節點4個),則可將張量并行度設為4,并將流水線并行度設定為2,以此最大化資源利用率和處理效率。
# 舉例:雙機八卡
vllm serve gpt2 \--tensor-parallel-size 4 \--pipeline-parallel-size 2
【注】流水線并行其實就是設置 pipeline-parallel-size 參數。我這里沒有環境去測試,具體的操作希望大家可以參考官方文檔去實踐,我就不誤人子弟了,鏈接在這里:分布式推理與服務
二、在線量化推理
????????vLLM 也引入了 KV-Cache 量化技術,通過將 KV 緩存量化為 FP8 格式以減少內存占用。這種優化不僅增加了緩存中可存儲的 token 數量,還進一步提升了系統的吞吐能力。具體來說,vLLM 的 FP8 KV 緩存實現主要是通過大約翻倍的 KV 緩存分配空間來增強吞吐量。這樣的改進使(面試題:在線量化推理的作用是什么?):
- 能夠處理具有更長上下文長度的單個請求
- 能夠同時處理更多的并發請求批次
廢話少說上命令吧,更多的參數值見下表:
vllm serve 模型絕對路徑 --kv_cache_dtype fp8
kv_cache_dtype ?參數值 | 描述 | 支持條件 |
---|---|---|
"auto" | 使用模型的默認“未量化”數據類型,不進行額外的量化處理 | 無特殊要求 |
"fp8" ?或?"fp8_e4m3" | 使用 FP8 格式(E4M3 版本)存儲 KV 緩存,減少內存占用并提升性能 | CUDA 11.8+ 或 ROCm(AMD GPU) |
"fp8_e5m2" | 使用 FP8 格式(E5M2 版本)存儲 KV 緩存,適合更高精度需求的場景 | CUDA 11.8+ |

?

?【注】為了防止混淆,我們回憶一下lmdeploy的kv-cache參數 “--quant-policy”