跳到正文
原文
LMSYS:Blog(Chatbot Arena 团队)·· 2 小时前精选AI 评分63

SGLang v0.3 发布:DeepSeek MLA 吞吐提升至 7 倍,torch.compile 延迟降低 1.5 倍

News SGLang v0.3 Release: 7x Faster DeepSeek MLA, 1.5x Faster torch.compile, Multi-Image/Video LLaVA-OneVision We're excited to announce the release of SGLang v0.3, which brings significant performance enhancements and expanded support for novel model architectures. Here are the key updates: - Up to 7x higher... The SGLang Team September 4, 2024

AI 导读

SGLang 团队发布 v0.3,对 DeepSeek MLA 实现权重吸收、FP8 KV cache 等优化,吞吐较基线提升 3 到 7 倍。集成 torch.compile 后小批量场景延迟最高降低 1.5 倍,并新增 LLaVA-OneVision 的交错文本、多图和视频支持,以及 Gemma-2 的交错窗口注意力支持,上下文长度扩展到 8K。

推荐理由

官方发布给出各优化的具体加速倍数和可复现基准命令,读者可据此评估是否升级推理部署方案。

正文 · AI 翻译

我们很高兴地宣布发布 SGLang v0.3,它带来了显著的性能提升,并扩展了对新型模型架构的支持。以下是主要更新:

  • DeepSeek 多头潜在注意力(MLA)吞吐量提升最高达 7 倍
  • 在小批量大小下,使用 torch.compile 延迟降低最高达 1.5 倍
  • 在 LLaVA-OneVision 中支持交错文本和多图像/视频
  • 在 Gemma-2 中支持交错窗口注意力,上下文长度延长 2 倍

在这篇博客文章中,我们将带您了解这些关键特性。请随时报告任何问题或贡献想法和代码。

DeepSeek 多头潜在注意力(MLA)吞吐量优化

多头潜在注意力(MLA)是 DeepSeek 团队为提高推理效率而引入的一种新注意力变体。由于它与标准注意力机制不同,现有的开源库尚未完全优化此操作。在 SGLang v0.3 中,我们为 MLA 实现了多种优化,包括权重吸收、分组解码内核、FP8 批量矩阵乘法和 FP8 KV 缓存量化。基准测试结果表明,采用 MLA 优化的 SGLang v0.3 吞吐量比基线系统高 3 到 7 倍。该基准测试在 ShareGPT 数据集上,使用 H100 GPU(轻量模型张量并行度为 1,大型模型张量并行度为 8)测量了这些模型在 BF16 和 FP8 下的峰值输出吞吐量。可复现的说明见附录。尽管令人鼓舞,但仍有很大的改进空间。我们正在积极进行更多优化,以完全复现 DeepSeek 论文中的结果。相关 PR: #905、 #1060、 #1138、 #469、 #1285、 #1286。

Torch.compile 延迟优化

Torch.compile 是 PyTorch 2.0 的主要特性。在 NVIDIA GPU 上,它执行激进的融合并生成高效的 Triton 内核。我们将 torch.compile 集成到 SGLang 中,用于线性/归一化/激活层,并将其与 FlashInfer 注意力和采样内核结合。我们对批量大小 1 到 32 启用 torch.compile,在此范围内观察到最大的加速效果。通过这种组合,SGLang 在批量大小为 1 时比 gpt-fast 更快,并支持所有在线服务功能,包括连续批处理和用于前缀缓存的 RadixAttention。我们正在积极与 torch.compile 和 torchao 团队合作,将他们的最新优化整合到 SGLang 中。要在 SGLang 中使用 torch.compile,请在启动服务器时添加 --enable-torch-compile。在以下基准测试中,使用 torch.compile 的 SGLang 速度提升最高达 1.5 倍。可复现的说明见附录。

支持交错文本、多图像和视频的 LLaVA-OneVision

LLaVA-OneVision 是首个在三个重要计算机视觉场景中达到最先进性能的开源模型:单图像、多图像和视频任务。我们与 LLaVA 团队合作,将这些能力集成到 SGLang v0.3 中。您可以启动服务器并使用兼容 OpenAI 的视觉 API 进行查询,该 API 支持交错文本、多图像和视频格式。使用详情请见此处。作者验证了模型的准确性,并在 VideoDetailDescriptions 和 LLaVA-in-the-wild 数据集上报告了基准测试结果(参见 #1123)。SGLang 相比作者在 HuggingFace/transformers 中的原始实现,最高可实现 4.5 倍的加速。

支持交错窗口注意力的 Gemma-2

Google 的 Gemma-2 模型 使用交错窗口注意力来降低长上下文的计算复杂度,每隔一层交替使用局部滑动窗口注意力(4K 上下文长度)和全局注意力(8K 上下文长度)。我们增强了 SGLang v0.3,通过利用 FlashInfer 内核中优化的窗口注意力内核(跳过计算而非掩码)并改进我们的 KV 缓存管理器,完全支持 8K 上下文长度。其他缺乏此功能的库只能以 4K 上下文长度运行。您可以使用以下命令启动模型:

python3 -m sglang.launch_server --model-path google/gemma-2b   

致谢

DeepSeek MLA 优化由 Ke Bao 和 Yineng Zhang 贡献。torch.compile 优化由 Liangsheng Yin 贡献。LLaVA-OneVision 的贡献由 Kaichen Zhang 和 Bo Li 完成。交错窗口注意力由 Ying Sheng 贡献。我们也感谢所有 90 多位开源贡献者。

附录

DeepSeek MLA 的基准测试说明

# DeepSeekCoder-V2-Lite (BF16)
## Launch a server  
python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct --enable-mla --disable-radix --trust-remote-code  
python3 -m vllm.entrypoints.openai.api_server --model deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct --disable-log-requests --trust-remote-code --max-model-len 4096

## Run benchmark  
python3 -m sglang.bench_serving --backend sglang --num-prompts 5000  
python3 -m sglang.bench_serving --backend vllm --num-prompts 5000

# DeepSeekCoder-V2 (BF16)  
## Launch a server  
python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-Coder-V2-Instruct --disable-radix --tp 8 --trust-remote-code --enable-mla  
python3 -m vllm.entrypoints.openai.api_server --model deepseek-ai/DeepSeek-Coder-V2-Instruct --disable-log-requests --tensor-parallel-size 8 --trust-remote-code --max-model-len 4096

## Run benchmark  
python3 -m sglang.bench_serving --backend sglang --num-prompts 5000  
python3 -m sglang.bench_serving --backend vllm --num-prompts 5000

# DeepSeekCoder-V2 (FP8)  
## Launch a server  
python3 -m sglang.launch_server --model neuralmagic/DeepSeek-Coder-V2-Instruct-FP8 --enable-mla --quantization fp8 --kv-cache-dtype fp8_e5m2 --disable-radix --tp 8 --trust-remote-code  
python3 -m vllm.entrypoints.openai.api_server --model neuralmagic/DeepSeek-Coder-V2-Instruct-FP8 --quantization fp8 --disable-log-requests --tensor-parallel-size 8 --trust-remote-code --max-model-len 4096

## Run benchmark  
python3 -m sglang.bench_serving --backend sglang --num-prompts 5000  
python3 -m sglang.bench_serving --backend vllm --num-prompts 5000  

torch.compile 的基准测试说明

# SGLang  
## Launch a server  
python3 -m sglang.launch_server --model meta-llama/Meta-Llama-3-8B --enable-torch-compile

## Run benchmark  
python3 -m sglang.bench_serving --backend sglang --dataset-name random --random-input-len 128 --random-output-len 512 --random-range-ratio 1 --num-prompts 1

# vLLM  
## Launch a server  
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-8B --disable-log-requests

## Run benchmark  
python3 -m sglang.bench_serving --backend vllm --dataset-name random --random-input-len 128 --random-output-len 512 --random-range-ratio 1 --num-prompts 1  

来源:LMSYS:Blog(Chatbot Arena 团队) · lmsys.org