大模型推理引擎對比 SGLang vs vLLM,最佳選擇?
一、環境搭建
# 安裝最新的版本
conda create -n sglang python=3.12
conda activate sglang
#最好創建不同的環境
pip install vllm
pip install sglang==0.4.1.post7
#啓動的簡單命令
python3 -m sglang.launch_server --model ./DeepSeek-R1-Distill-Qwen-7B --host 0.0.0.0 --port 8123
python3 -m vllm.entrypoints.openai.api_server ./DeepSeek-R1-Distill-Qwen-7B --host 0.0.0.0 --port 8123
二、常用參數
vLLM 運行設置
在使用 vLLM 進行大語言模型(LLM)推理時,啓動參數的配置對顯存佔用和推理效率有顯著影響。以下是關鍵參數及其優化建議:
1、gpu_memory_utilization:該參數控制每個 GPU 的顯存預分配比例,默認值爲 0.9。適當調整此值可以平衡顯存佔用和推理性能。例如,將 gpu_memory_utilization 設置爲 0.15,可以將顯存佔用控制在 21GB,從而避免顯存過度佔用。
2、max_model_len:該參數定義模型的最大上下文長度,直接影響 KV 緩存的大小和顯存需求。適當減少 max_model_len 的值,可以降低顯存佔用。例如,將 max_model_len 設置爲 600,可以在單個 NVIDIA L4 GPU 上運行默認上下文長度較長的模型。
3、tensor_parallel_size:該參數指定模型權重在多少個 GPU 之間進行切分。增加 tensor_parallel_size 可以減少每個 GPU 的顯存負擔,但可能會引入額外的通信開銷。建議根據硬件配置和模型大小進行調整。
4、max_num_seqs 和 max_num_batched_tokens:這兩個參數控制每個批次中的併發請求數量和令牌數量。適當減少這些值,可以降低對 KV 緩存空間的需求,從而減少顯存佔用。例如,將 max_num_batched_tokens 設置爲 512,可以在初始基準測試中獲得較好的令牌間延遲(ITL)。 dtype:設置爲 “fp16” 可以啓用混合精度推理,減少顯存佔用。
5、offload_weights 和 offload_activations:啓用這些參數可以將模型權重和激活值部分卸載到 CPU,從而減少 GPU 顯存佔用
SGLang 運行設置
具體參考幫助文檔,使用 GPU 並行、內存優化、量化等技術。RadixAttention 是一種用於提升大型語言模型(LLM)效率的技術,它通過前綴緩存、跳轉約束解碼、無需額外開銷的 CPU 調度器、連續批處理、令牌注意力(分頁注意力)、張量並行性等技術優化模型的推理過程。此外,它還使用 FlashInfer 內核、分塊預填充和量化技術(包括 FP8/4/AWQ/GPTQ)來進一步加速模型的響應速度和降低計算成本
- 多 GPU 並行參數
-
–tp: 設置張量並行的 GPU 數量。例如 –tp 2 表示使用 2 個 GPU 進行張量並行。
-
–dp: 設置數據並行的 GPU 數量。例如 –dp 2 表示使用 2 個 GPU 進行並行。
- 內存優化參數
- –mem-fraction-static: 設置 KV 緩存池的大小比例,用於優化內存使用。例如 –mem-fraction-static 0.8 表示將 80% 的內存用於 KV 緩存池。
- 量化加速參數
-
–enable-torch-compile: 啓用 PyTorch 的編譯優化,加速模型推理。
-
–torchao-config: 指定 torch 量化配置文件,用於模型量化加速。
-
–quantization: 設置權重量化類型。例如 –quantization fp8 表示使用 fp8 權重量化。
-
–kv-cache-dtype: 設置 KV 緩存的量化數據類型。例如 –kv-cache-dtype fp8_e5m2 表示使用 fp8_e5m2 類型的 KV 緩存量化。
- 分佈式參數
—nnode: 設置分佈式訓練的總節點數。例如 –nnodes 2 表示使用 2 個節點進行分佈式推理。
- –node-rank: 設置當前節點的排名,用於分佈式訓練中的節點標識。例如 –node-rank 0 表示當前節點是第一個節點。
- 其他參數
-
–use-ray: 啓用 Ray 分佈式框架進行訓練。
-
–use-deeps: 啓用 DeepSpeed 加速庫進行訓練。
-
–use-lora: 啓用 LoRA 微調技術。
三、核心技術對比
- SGLang
-
RadixAttention:通過跨請求的 KV 緩存複用技術,顯著提升多輪對話和複雜邏輯生成的效率,尤其在結構化輸出(如 JSON 生成)中速度可達其他框架的 10 倍。
-
動態批處理:根據負載自動調整批次大小,結合智能路由和緩存感知負載均衡,實現高吞吐量(如 158,596 token/s)和低延遲。
-
分佈式支持:支持多 GPU 張量並行和多節點部署,並集成 DeepSeek-R1 等模型的 FP8 推理優化,顯存佔用更低。
- vLLM
-
PagedAttention:借鑑操作系統的虛擬內存分頁機制,將 KV 緩存分割管理,顯存浪費率低於 4%,顯著提升 GPU 利用率 28。
-
Continuous Batching:動態插入新請求至處理批次中,避免傳統靜態批次的資源閒置,吞吐量相比原生框架提升高達 24 倍。
-
Tensor Parallelism:支持多 GPU 並行計算,適用於大規模模型部署。
四、性能表現對比
吞吐量測試預估值:
延遲對比估算
五、適用場景對比
-
SGLang:
-
企業級高併發服務:如實時對話系統、大規模內容生成平臺,需處理數千併發請求的場景。
-
複雜邏輯生成:JSON 解碼、多步驟推理任務,依賴 RadixAttention 的緩存複用優勢。
-
-
vLLM:
-
在線推理服務:如智能客服、聊天機器人,依賴 Continuous Batching 的高吞吐能力。
-
資源受限環境:通過 PagedAttention 優化顯存佔用,適合中小型服務器部署。
-
六、優缺點分析
七、選型建議
-
選擇 SGLang:若需處理高併發、複雜邏輯任務,或部署超大規模模型(如 405B),且團隊具備一定技術能力進行定製化優化。
-
選擇 vLLM:若優先考慮穩定性、顯存效率,或需快速集成 Hugging Face 模型,且運行環境爲 Linux+NVIDIA GPU。
八、地址整理
SGLang GitHub: https://github.com/sgl-project/sglang
vLLM GitHub: https://github.com/vllm-project/vllm
sglang 的官方文檔:https://docs.sglang.ai
vllm 的官方文檔:https://docs.vllm.ai/en/latest/
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Ckhf7KAXvWGe1ZW9WnD0hg