主流模型推理框架的全面评测
部署大模型,除了选模型本身,推理框架的选择同样关键。不同的框架在推理速度、显存占用、功能特性上差异巨大,选错了不仅浪费硬件资源,还会严重影响用户体验。
我花了三周时间,在统一硬件环境下(2×RTX 4090)对目前最主流的三个推理框架——Ollama、vLLM、SGLang——进行了全面对比测试。这篇文章就是我的评测报告。
# 使用Ollama
ollama pull qwen2.5:14b
ollama run qwen2.5:14b# 使用vLLM
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-14B-Instruct \
--tensor-parallel-size 2# 使用SGLang
import sglang as sgl
@sgl.function
def hello_world(s):
s += "Hello, "
s += sgl.gen("name", max_tokens=10)框架 | 7B模型 | 14B模型 |
|---|---|---|
Ollama | 480ms | 890ms |
vLLM | 320ms | 610ms |
SGLang | 350ms | 650ms |
vLLM在首Token延迟上表现最优,比Ollama快了约30%。
框架 | 7B模型 (tokens/s) | 14B模型 (tokens/s) |
|---|---|---|
Ollama | 38 | 18 |
vLLM | 52 | 26 |
SGLang | 48 | 24 |
vLLM吞吐量最高,SGLang紧随其后,Ollama最慢。
框架 | 1并发 | 4并发 | 8并发 | 16并发 |
|---|---|---|---|---|
Ollama | 18 | 42 | 55 | 62 |
vLLM | 26 | 72 | 98 | 112 |
SGLang | 24 | 68 | 92 | 105 |
vLLM的并发处理能力遥遥领先,得益于PagedAttention和Continuous Batching技术。Ollama在低并发下尚可,高并发时表现较差。
框架 | 7B (FP16) | 14B (FP16) | 7B (INT4) |
|---|---|---|---|
Ollama | 14.2GB | 27.8GB | 5.1GB |
vLLM | 13.8GB | 27.2GB | 4.8GB |
SGLang | 14.0GB | 27.5GB | 4.9GB |
三者显存占用差异不大,vLLM稍有优势。
特性 | Ollama | vLLM | SGLang |
|---|---|---|---|
OpenAI兼容API | ✅ | ✅ | ✅ |
多GPU并行 | ✅ | ✅ | ✅ |
量化支持 | ✅ GGUF | ✅ GPTQ/AWQ | ✅ GPTQ/AWQ |
Continuous Batching | ❌ | ✅ | ✅ |
结构化输出 | ❌ | ✅ | ✅ |
LoRA适配器 | ❌ | ✅ | ✅ |
多模态 | ✅ (部分) | ✅ | ✅ |
使用难度 | ★☆☆☆☆ | ★★★☆☆ | ★★★★☆ |
文档完善度 | ★★★★★ | ★★★★☆ | ★★★☆☆ |
推荐:Ollama
推荐:vLLM
推荐:vLLM
推荐:SGLang
推荐:Ollama → vLLM 组合
gpu_memory_utilization和max_model_len是核心参数,需要根据实际情况调整。vLLM调优三板斧:
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-14B-Instruct \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.9 \
--max-num-batched-tokens 8192 \
--max-num-seqs 256 \
--enable-chunked-prefillgpu-memory-utilization:显存利用率,一般设0.85~0.95max-num-batched-tokens:批处理的最大token数,影响吞吐max-num-seqs:最大并发序列数enable-chunked-prefill:分块预填充,降低首Token延迟框架 | 一句话总结 |
|---|---|
Ollama | 本地尝鲜、个人学习的最佳选择 |
vLLM | 生产环境的王者,高并发的首选 |
SGLang | 结构化生成场景的利器,潜力巨大 |
对我来说,vLLM是目前最均衡、最成熟的生产级推理框架。但如果你的场景对结构化输出有严格要求,SGLang值得深入研究。
你正在用哪个推理框架?有什么心得体会?欢迎在评论区聊聊!