解锁开源模型高性能服务:SGLang Runtime 应用场景与实践

简介: SGLang 是一个用于大型语言模型和视觉语言模型的推理框架。

引言

SGLang 是一个用于大型语言模型和视觉语言模型的推理框架。基于并增强了多个开源 LLM 服务引擎(包括LightLLM、vLLM和Guidance )的许多优秀设计。SGLang 利用了FlashInfer注意力性能 CUDA 内核,并集成了受gpt-fast启发的 torch.compile 。

此外,SGLang 还引入了RadixAttention等创新技术,用于自动 KV 缓存重用和压缩状态机,用于快速约束解码。SGLang 以其高效的批处理调度程序而闻名,该调度程序完全用 Python 实现。SGLang 高效的基于 Python 的批处理调度程序具有良好的扩展性,通常可以匹敌甚至超越用 C++ 构建的闭源实现。

项目开源地址:https://github.com/sgl-project/sglang

近期,SGLang发布的benchmark显示,在A100 GPU上的许多测试场景中,SGLang性能优于 vLLM,在 Llama-70B 上的吞吐量高达 3.1 倍。如下为SGLang 官方提供的部分测试benchmark。

1 x A100 (bf16) 上的 Llama-8B

从小模型 Llama-8B 开始,下图展示了每个引擎在离线设置下在六个不同数据集上可以实现的最大输出吞吐量。TensorRT-LLM 和 SGLang 都可以在输入较短的数据集上实现高达每秒 5000 个 token 的出色吞吐量。

image.png

下面的在线benchmark图显示了与离线情况类似的趋势。SGLang 表现出色。

image.png

8 卡 A100 (bf16) 上的 Llama-70B

转向在 8 个 GPU 上具有张量并行性的更大的 Llama-70B 模型,趋势与 8B 的情况类似。在下面的离线基准测试中,TensorRT-LLM 和 SGLang 都可以扩展到高吞吐量。

image.png

在下面的在线图中,TensorRT-LLM 得益于其高效的内核实现和运行时,表现出了出色的延迟性能。

image.png

魔搭最佳实践

在魔搭的免费Notebook环境(22G显存)中使用SGLang+Qwen2-7B-Instruct

环境安装

pip install --upgrade pip
pip install "sglang[all]"
# Install FlashInfer CUDA kernels
wget "https://modelscope.oss-cn-beijing.aliyuncs.com/resource/flashinfer-0.1.2%2Bcu121torch2.3-cp310-cp310-linux_x86_64.whl"
pip install flashinfer-0.1.2+cu121torch2.3-cp310-cp310-linux_x86_64.whl
# Update transformers for Llama3.1
# pip install --upgrade transformers

模型下载

模型链接:https://modelscope.cn/models/qwen/Qwen2-7B-Instruct

使用ModelScope CLI完成模型下载

modelscope download --model=qwen/Qwen2-7B-Instruct --local_dir ./Qwen2-7B-Instruct

模型部署

使用The SGLang Runtime (SRT) 完成模型高效serving,注意,本文为了让模型可以在消费级显卡(22G显存)上运行,使用了--disable-cuda-graph参数,会损失一部分推理性能。

python -m sglang.launch_server --model-path /mnt/workspace/Qwen2-7B-Instruct --port 30000 --dtype bfloat16  --disable-cuda-graph --context-length 512

请求调用

curl

curl http://localhost:30000/generate \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Once upon a time,",
    "sampling_params": {
      "max_new_tokens": 16,
      "temperature": 0
    }
  }'

支持OpenAI格式的API调用

python

import openai
client = openai.Client(
    base_url="http://127.0.0.1:30000/v1", api_key="EMPTY")
# Chat completion
response = client.chat.completions.create(
    model="default",
    messages=[
        {"role": "system", "content": "You are a helpful AI assistant"},
        {"role": "user", "content": "以杭州的春天为题,写一篇100字的短文"},
    ],
    temperature=0,
    max_tokens=150,
)
print(response)

性能评估

我们也针对vLLM和SGLang做了性能评估,首先敲重点:

  • SGLang适用场景
  • 框架整体性能,尤其是sampler性能,相比模型执行性能更加具有显著优势
  • 适用场景:小模型
  • 适用场景:大batch(尤其是MoE模型)
  • 主要性能差距:
  • 采样器(sampler):greedy 约10倍差距,sampled 约20倍差距
  • 调度:SGLang Runtime增量式维护model inputs data structures,使得模型调度开销更小,同时支持num_continue_decode_steps来实现调度一次,运行k步decode,进一步减小框架额外开销。

image.png

  • 注意事项
  • 可能出于性能考虑,SGLang现在的版本不支持presence_penalty,presence_penalty用于用户控制模型生成时整个序列中的重复度。

Qwen2-7B-Instruct,H800 x 1

在我们有限的具体测试场景上,性能对比如下:

整体性能

prefill

decode

性能评估

SGLang runtime 显著优于vLLM

接近

SGLang runtime 性能比vLLM高一倍

针对batch size 128 + cudagraph + temperature=1.0 的场景,具体性能如下:

Mean TTFT

P99 TTFT

Mean TPOT

P99 TPOT

Thorughput( requests/s)

Thorughput( tokens/s)

SGLang Runtime

20.31

111.82

12.95

14.59

24.57

19109.23

vLLM

21.37

119.69

27.03

134.54

15.71

12220.8

主要的性能差异在于Sampler:sampler部分性能差10倍(greedy)/ 20倍(sampled)

Qwen2-72B-Instruct,H800 x 4

在我们有限的具体测试场景上,性能对比如下:

整体性能

prefill

decode

性能评估

SGLang runtime 比vLLM高10%

vLLM比SGLang runtime高约30%

SGLang runtime 性能比vLLM高约20%

针对batch size 128 + enforce eager + temperature=1.0 的场景,具体性能如下:

Mean TTFT

P99 TTFT

Mean TPOT

P99 TPOT

Thorughput( requests/s)

Thorughput( tokens/s)

SGLang Runtime

75.18

398.23

51.97

173.62

6.4

4978.43

vLLM

97.51

528.64

40.83

51.22

6.2

4764.47

主要的性能差异在于Sampler:sampler部分性能差10倍(greedy)/ 20倍(sampled)

相关文章
|
7月前
|
机器学习/深度学习 测试技术 API
Qwen3.5 中等规模模型系列正式开源:更强智能,更低算力
通义千问Qwen3.5发布四款中等规模多模态模型,支持256K原生上下文(可扩至1M)、201种语言及统一视觉语言训练。凭借Gated Delta+MoE混合架构与百万Agent强化学习,35B-A3B仅激活3B参数即超越旧旗舰,性能、效率与部署成本兼具。(239字)
10199 23
|
存储 缓存 开发者
Mooncake 最新进展:SGLang 和 LMCache 基于 Mooncake 实现高效 PD 分离框架
近期,Mooncake 项目与 SGLang、vLLM 等主流大模型推理框架实现合作和适配,这些开源大模型推理框架可以通过使用 Mooncake 发布的 whl 包,支持 pip安装,docker 镜像部署等,实现了 PD 分离框架,极大提升了模型推理效率。
|
存储 机器学习/深度学习 缓存
性能最高提升7倍?探究大语言模型推理之缓存优化
本文探讨了大语言模型(LLM)推理缓存优化技术,重点分析了KV Cache、PagedAttention、Prefix Caching及LMCache等关键技术的演进与优化方向。文章介绍了主流推理框架如vLLM和SGLang在提升首Token延迟(TTFT)、平均Token生成时间(TPOT)和吞吐量方面的实现机制,并展望了未来缓存技术的发展趋势。
4258 13
性能最高提升7倍?探究大语言模型推理之缓存优化
|
8月前
|
人工智能 安全 API
资源有限,跑大模型太难?手把手教你用 llama.cpp 安全部署任意 GGUF 模型(含 DeepSeek-R1 实战)
无需高端显卡,手把手教你用 llama.cpp 本地安全部署任意 GGUF 模型!支持 DeepSeek-R1 实战,实现离线运行、流式输出与 OpenAI 兼容 API。涵盖 Docker 安全加固、模型切换、双模客户端调用,适用于企业知识库、智能客服等场景,个人开发者与企业皆可快速落地。
|
8月前
|
存储 缓存 算法
SGLang Hierarchical Sparse Attention 技术深度解析
阿里云Tair联合SGLang、蚂蚁AI Infra及震旦团队,推出面向Sparse Attention的分层稀疏化框架:将全量KV Cache存于CPU,GPU仅驻留Top-k LRU Buffer,结合Sparse Diff Kernel与IO Kernel实现高效增量传输。实测DeepSeek DSA场景下,单请求显存从8GB降至200MB,吞吐提升3倍,突破长上下文推理的带宽与容量双重瓶颈。(240字)
SGLang Hierarchical Sparse Attention 技术深度解析
|
9月前
|
并行计算 安全 测试技术
H100 真的被封印了吗?我用 vLLM+FP8 把吞吐拉爆了
H100未被封印!通过vLLM+FP8量化,实现Llama-3-8B推理吞吐提升60%,并发能力飙升5倍。利用PagedAttention与FP8 KV Cache,显存效率跃升,单卡承载达千级请求,实测60 QPS为稳定服务红线,为大模型生产部署提供高性能、低成本新范式。
1199 0
H100 真的被封印了吗?我用 vLLM+FP8 把吞吐拉爆了
|
8月前
|
并行计算 监控 安全
高效 GPU 加速:DeepSeek-R1 系列模型在 llama.cpp 上的生产级部署指南
本文详解如何在RTX 30/40系显卡上,通过llama.cpp高效部署DeepSeek-R1-8B模型。涵盖CUDA镜像选择、GPU卸载调优、显存控制与高可用架构,结合Docker、Prometheus监控及负载均衡,实现低延迟、高吞吐的生产级推理,助力大模型落地应用。
|
8月前
|
测试技术 API
小而强,GLM-4.7-Flash开源
GLM-4.7-Flash正式开源,30B总参、3B激活参数,兼顾性能与效率,支持免费调用。在编程、中文写作、翻译等多场景表现优异,已上线智谱平台,替代GLM-4.5-Flash,提供全新轻量化部署选择。
2895 1
|
SQL JSON API
什么!我把SQL编辑器装进了大模型?
本文旨在通过约束解码技术,赋予大型语言模型在生成SQL等结构化内容时更高的准确性、可控性与可解释性,从而满足企业级场景对“精准生成”的严苛要求。
2324 125
什么!我把SQL编辑器装进了大模型?

热门文章

最新文章