在人工智能的浪潮中,大型语言模型(LLM)的应用如雨后春笋般涌现。然而,这些模型的服务效率一直是一个棘手的问题。今天,让我们深入探讨 LMSYS.org 团队开发的 SGLang Runtime(SRT),这个令人兴奋的开源项目正在为 LLM 服务带来革命性的变化。
🌟 引言:高效 LLM 服务的重要性
想象一下,你正在使用一个 AI 聊天机器人,等待它的回复就像是在等待一个慢吞吞的老旧电脑启动。这种体验无疑会让人感到沮丧。这正是高效 LLM 服务如此重要的原因。LMSYS.org 团队通过运营 Chatbot Arena 平台一年多,服务了数百万用户,深刻理解了这一点。他们将这些宝贵的经验转化为不断优化的底层服务系统,从高层的多模型服务框架 FastChat,到高效的服务引擎 SGLang Runtime。
🔍 SGLang:不仅仅是另一个 LLM 服务引擎
SGLang 的目标是成为一个通用的、高性能的 LLM 和视觉语言模型(VLM)服务引擎。虽然市面上已经有了 TensorRT-LLM、vLLM、MLC-LLM 和 Hugging Face TGI 等选择,但 SGLang 团队发现这些工具各有局限性。有些难以使用,有些难以定制,还有些性能不够理想。这促使他们开发了 SGLang v0.2,旨在创造一个不仅易用、易于修改,而且性能卓越的服务引擎。
📊 性能大比拼:SGLang vs. TensorRT-LLM vs. vLLM
SGLang 在各种规模的模型、不同的 GPU 以及不同的精度下都展现出了令人印象深刻的性能。让我们详细分析一下测试结果:
🏋️♂️ Llama-8B on 1 x A100 (bf16)
在这个"小型"模型上,SGLang 和 TensorRT-LLM 在离线设置中都能达到惊人的 5000 tokens/s 的吞吐量,而 vLLM 则略显落后。这意味着 SGLang 能够在处理大量请求时保持极高的效率。
在在线测试中,SGLang 和 TensorRT-LLM 同样表现出色,能够轻松支持每秒 10 次以上的请求,而 vLLM 在高请求率下延迟显著增加。这表明 SGLang 在实时应用场景中也能保持稳定的性能。
🐘 Llama-70B on 8 x A100 (bf16)
对于这个"大型"模型,我们看到了类似的趋势。在离线基准测试中,SGLang 和 TensorRT-LLM 都能扩展到很高的吞吐量。这展示了 SGLang 在处理大规模模型时的优秀扩展性。
在在线测试中,TensorRT-LLM 由于其高效的内核实现和运行时,展现出了出色的延迟性能。但值得注意的是,SGLang 作为一个纯 Python 实现,能够与之匹敌,这凸显了 SGLang 优秀的系统设计。
🚀 Llama-70B on 8 x H100 (fp8)
在这个 FP8 性能测试中,SGLang 的批处理调度器表现得非常高效,能够通过更大的批处理大小持续提高吞吐量,在这种情况下实现了最高的吞吐量。这一结果突出显示了 SGLang 在利用最新硬件和优化技术方面的优势。
其他系统由于内存不足、缺乏广泛的手动调优或其他开销而无法扩展其吞吐量或批处理大小。这凸显了 SGLang 在资源利用效率方面的优势。
🌋 Llama-405B on 8 x H100 (fp8)
在这个"超大型"模型上,由于模型规模庞大,大部分时间都花在 GPU 内核上,不同框架之间的差距缩小。但 SGLang 仍然优于 vLLM,尽管改进不那么显著。这表明即使在极端规模的模型上,SGLang 仍能保持其性能优势。
💡 SGLang 的技术创新
SGLang 的优势来自于其出色的系统工程和创新设计:
- RadixAttention:这是一种自动 KV 缓存重用技术,能够显著提高内存使用效率。
- 压缩状态机:用于快速约束解码,提高生成质量和效率。
- 高效 Python 批处理调度器:这是 SGLang 的一大亮点,它能够很好地扩展,经常匹配甚至超越基于 C++ 构建的闭源实现。
- FlashInfer 集成:利用高性能的注意力 CUDA 核心,进一步提升计算效率。
- torch.compile 集成:受 gpt-fast 启发,进一步优化模型执行。
🔮 SGLang vs. 其他框架
让我们来对比一下 SGLang、TensorRT-LLM 和 vLLM 的主要特征:
特性 | SGLang | TensorRT-LLM | vLLM |
---|---|---|---|
性能 | 优秀 | 优秀 | 一般 |
易用性 | 良好 | 较差 | 良好 |
可定制性 | 高 | 低 | 中等 |
源码可用性 | 完全开源 | 部分开源 | 完全开源 |
编程语言 | Python | C++ | Python |
SGLang 在性能、易用性和可定制性方面都表现出色,特别是它的完全开源特性使得它在社区支持和持续改进方面具有明显优势。
🛠️ 快速上手 SGLang
想要亲自试试 SGLang 吗?这里有一个简单的入门指南:
- 安装 SGLang(可以通过 pip、从源代码或使用 Docker)
- 启动服务器:
# Llama 8B
python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3.1-8B-Instruct
# Llama 405B
python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tp 8
- 使用 OpenAI 兼容的 API 发送请求:
curl http://localhost:30000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "default",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0
}'
- 运行基准测试:
python3 -m sglang.bench_serving --backend sglang --num-prompts 1000
🎭 结语:SGLang,开源 LLM 服务的未来
SGLang 不仅仅是一个高性能的 LLM 服务引擎,它代表了开源社区在推动 AI 技术边界方面的巨大潜力。通过将复杂的系统工程与用户友好的设计相结合,SGLang 展示了如何在不牺牲性能的情况下提高可用性和可定制性。
随着 SGLang 团队继续开发新功能,如长上下文和 MoE 优化,我们可以期待看到更多的创新和突破。对于 AI 研究人员、开发者,甚至是对 AI 技术感兴趣的爱好者来说,SGLang 都提供了一个绝佳的平台来探索和推动 LLM 服务的未来。
让我们共同期待 SGLang 为 AI 服务带来的更多惊喜和突破!
参考文献:
- LMSYS.org. (2024). Achieving Faster Open-Source Llama3 Serving with SGLang Runtime (vs. TensorRT-LLM, vLLM). https://lmsys.org/blog/2024-07-25-sglang-llama3/
- SGLang GitHub Repository. https://github.com/sgl-project/sglang
- Yin, L., Zhang, Y., Sheng, Y., et al. (2024). SGLang: A High-Performance Open-Source LLM Serving Engine.
- NVIDIA. (2024). TensorRT-LLM Documentation. https://developer.nvidia.com/tensorrt
- vLLM Project. (2024). vLLM: Easy, Fast, and Cheap LLM Serving. https://vllm.ai/
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于