大模型推理引擎對比 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)來進一步加速模型的響應速度和降低計算成本

  1. 多 GPU 並行參數
  1. 內存優化參數
  1. 量化加速參數
  1. 分佈式參數

—nnode: 設置分佈式訓練的總節點數。例如 –nnodes 2 表示使用 2 個節點進行分佈式推理。

  1. 其他參數

三、核心技術對比

  1. SGLang
  1. vLLM

四、性能表現對比

吞吐量測試預估值:

延遲對比估算

7zU9wq

五、適用場景對比

六、優缺點分析

qttBrj

七、選型建議

八、地址整理

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