解锁开源模型高性能服务: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)

相关文章
|
11月前
|
存储 缓存 开发者
Mooncake 最新进展:SGLang 和 LMCache 基于 Mooncake 实现高效 PD 分离框架
近期,Mooncake 项目与 SGLang、vLLM 等主流大模型推理框架实现合作和适配,这些开源大模型推理框架可以通过使用 Mooncake 发布的 whl 包,支持 pip安装,docker 镜像部署等,实现了 PD 分离框架,极大提升了模型推理效率。
|
3月前
|
存储 缓存 算法
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 技术深度解析
|
7月前
|
机器学习/深度学习 缓存 人工智能
MoE模型加速秘籍:vLLM混合KV缓存管理解析​
vLLM是高效分布式大模型推理引擎,采用分页注意力、连续批处理等技术实现高吞吐与低延迟。本文详解其架构设计与关键技术,包括KV缓存管理、调度机制、推测解码与分布式扩展等,助你深入理解性能优化原理。
1312 1
|
3月前
|
人工智能 安全 API
资源有限,跑大模型太难?手把手教你用 llama.cpp 安全部署任意 GGUF 模型(含 DeepSeek-R1 实战)
无需高端显卡,手把手教你用 llama.cpp 本地安全部署任意 GGUF 模型!支持 DeepSeek-R1 实战,实现离线运行、流式输出与 OpenAI 兼容 API。涵盖 Docker 安全加固、模型切换、双模客户端调用,适用于企业知识库、智能客服等场景,个人开发者与企业皆可快速落地。
|
4月前
|
并行计算 安全 测试技术
H100 真的被封印了吗?我用 vLLM+FP8 把吞吐拉爆了
H100未被封印!通过vLLM+FP8量化,实现Llama-3-8B推理吞吐提升60%,并发能力飙升5倍。利用PagedAttention与FP8 KV Cache,显存效率跃升,单卡承载达千级请求,实测60 QPS为稳定服务红线,为大模型生产部署提供高性能、低成本新范式。
543 0
H100 真的被封印了吗?我用 vLLM+FP8 把吞吐拉爆了
|
11月前
|
存储 缓存 人工智能
Mooncake 最新进展:SGLang 和 LMCache 基于 Mooncake 实现高效 PD 分离框架
Mooncake 的架构设计兼具高性能和灵活性,为未来的扩展性和生态建设奠定了坚实基础。

热门文章

最新文章