Mini-SGLang: Efficient Inference Engine in a Nutshell
Mini-SGLang: Efficient Inference Engine in a Nutshell
发表时间: 2025-12 · Blog post by Ziyi Xu (lmsys.org)
原文: https://lmsys.org/blog/2025-12-17-minisgl
作者/机构:Ziyi Xu
发布时间:2025年12月17日
速读
一句话结论 本文推出了一个仅有 5K 行 Python 代码的轻量级大语言模型推理框架 Mini-SGLang,它通过保留重叠调度等核心优化机制,在大幅降低系统复杂度的同时,实现了与全量 SGLang 几乎一致的在线服务性能,并在离线吞吐量上超越了同类轻量级基线。
要解决什么问题 现有的高性能推理框架(如 SGLang)虽然功能全面且性能优异,但其代码库已经膨胀到了近 300K 行 Python 代码,这种极高的系统复杂度带来了两个严重的卡点。首先,对于系统和机器学习研究人员而言,在如此庞大且复杂的框架中注入新的优化逻辑风险极高,极易破坏系统隐含的不变量从而引发难以察觉的系统错误;而如果为了验证新想法从零开始构建推理引擎,又需要耗费大量精力去处理前端服务器、分词器、NCCL 通信等底层基础设施细节,开发成本极其高昂。其次,在具体的执行机制上,大语言模型推理不仅仅是 GPU 计算,CPU 还需要负责批处理调度、内存管理和 token 处理等繁重工作。如果缺乏有效的调度机制,这种 CPU 侧的执行开销会导致 GPU 在等待 CPU 下达指令期间处于空闲状态,严重拖慢整体的推理吞吐量。
怎么做的 为了绕开上述卡点,作者构建了 Mini-SGLang,其核心思路是将最先进的推理引擎提炼为一个仅有 5K 行 Python 代码的极简、高模块化代码库,同时保留决定性能的关键优化机制。这种设计既接管了底层基础设施的繁重工作,又为快速验证研究原型提供了透明且易于扩展的平台。该系统采用了与 SGLang 相同的高层架构,由前端 API 服务器、分词器服务器以及为每个 GPU 分配的后端调度器构成。其关键设计包含以下几个部件:第一是 Overlap Scheduling(重叠调度)机制,它让 CPU 在 GPU 处理当前批次请求的同时,提前准备下一个批次的请求,从而有效隐藏了 CPU 的执行开销,消除了 GPU 的空闲等待时间;第二是集成了高性能的注意力计算核心,在 NVIDIA Hopper 架构上,预填充阶段使用 FlashAttention-3,解码阶段使用 FlashInfer,并采用 TVM FFI 进行 Python 绑定以替代默认的 PyTorch 接口,从而实现更轻量、更快速的即时编译内核调用;第三是保留了现代推理系统必备的高级特性,包括用于高效复用键值缓存的 Radix Attention、用于控制显存占用的 Chunked Prefill,以及用于扩展分布式服务的 Tensor Parallelism。此外,系统还内置了兼容 OpenAI 格式的基准测试工具,方便与 vLLM、TensorRT-LLM 等框架进行端到端对比,并提供了细粒度的 NVTX 注解用于内核调试,甚至包含一个交互式的 Shell 模式供用户直接在命令行测试模型行为。
效果如何 实验评估分为离线吞吐量和在线服务延迟两部分。在离线吞吐量测试中,硬件环境为单张 NVIDIA H200 GPU,对比基线是代表同类轻量级教学与研究路线的 Nano-vLLM。由于 Nano-vLLM 基线目前的限制,作者专门选择了 Qwen3-0.6B 和 Qwen3-14B 两个规模的模型进行测试。结果显示,得益于重叠调度机制对 CPU 开销的有效隐藏,Mini-SGLang 在两个模型上的吞吐量(每秒处理的 token 数)均稳定超越了 Nano-vLLM 基线(作者还提供了专门的环境变量用于关闭重叠调度以进行消融实验验证)。在在线服务延迟测试中,硬件环境为 4 张 H200 GPU,采用 4 路张量并行部署了 32B 参数的 Qwen3-32B 模型。作者使用真实的 Qwen 轨迹数据回放了 1000 个请求,对比基线是代表全量生产级路线的 SGLang。测试测量了吞吐量、90 分位数的首个 token 延迟(P90 TTFT)以及 token 间延迟(TBT)。结果表明,Mini-SGLang 实现了与 SGLang 几乎完全相同的性能,证明了其轻量化的设计并没有以牺牲吞吐量或延迟为代价。
主要贡献
本文介绍了Mini-SGLang,这是一个专为大语言模型(LLM)设计的轻量级且高性能的推理框架。该框架衍生自SGLang项目,其核心目标是揭开现代服务系统复杂性的面纱。尽管其代码库非常紧凑,但Mini-SGLang保留了定义最先进性能的高级特性,包括用于高效KV缓存复用的Radix Attention、用于控制内存占用的Chunked Prefill、用于减少CPU开销的Overlap Scheduling,以及用于可扩展分布式服务的Tensor Parallelism。此外,Mini-SGLang提供了与OpenAI兼容的API,并开箱即用地支持Llama-3和Qwen-3等模型,使其既能作为功能强大的推理引擎,也能作为供研究人员和开发者使用的透明参考实现。
设计原则与动机
SGLang的复杂性壁垒:尽管SGLang凭借全面的功能集实现了最先进的推理性能,但其代码库已经变得极其庞大,包含近30万行Python代码。为了消除学习者和研究人员面临的复杂性壁垒,作者构建了Mini-SGLang,主要聚焦于两个核心目标:提供学习资源和实现快速的研究原型设计。
教育目的的极简代码库:Mini-SGLang具有干净且高度模块化的代码库,仅包含5000行Python代码。这种极简设计使得初学者能够显著更轻松地理解现代LLM服务引擎的核心组件。尽管代码极简,Mini-SGLang依然支持在线和离线推理,并实现了基本的现代优化技术,包括Tensor Parallelism、Overlap Scheduling、Chunked Prefill、Radix Cache以及JIT CUDA kernels。这使其成为一个极为全面的学习资源。
快速的研究原型设计:许多机器学习和系统研究人员在将他们的优化集成到现有框架时面临巨大困难。一方面,将新逻辑注入到像SGLang这样复杂的框架中存在极大风险:开发者很容易破坏系统的隐式不变量,从而引发难以察觉的错误。另一方面,从零开始构建推理引擎非常繁琐,需要耗费大量精力处理基础设施细节(例如前端服务器、分词、NCCL通信),仅仅是为了达到最先进的基准性能。Mini-SGLang在两者之间取得了完美的平衡。它最初是作为一个研究原型,用于快速验证新的系统想法,而无需花费数周时间处理全规模的代码库或从头重新实现基础设施。它提供了一个开箱即用、高性能的框架,易于检查、扩展和优化。它处理了基础设施的繁重工作,同时保持了足够的灵活性以进行快速原型设计。此外,Mini-SGLang提供了兼容OpenAI的基准测试工具,便于进行端到端的性能分析,并与SGLang、vLLM和TensorRT-LLM等各种服务引擎进行比较。对于内核开发者,Mini-SGLang还提供了细粒度的NVTX annotations,这对于内核调试和性能分析非常有价值。
核心特性与方法细节
系统架构设计:Mini-SGLang与SGLang共享相同的高层系统架构。该架构主要由一个前端API服务器、一个分词器服务器(tokenizer server)以及为每个GPU配备的后端调度器(backend scheduler)组成。
Overlap Scheduling缓解CPU开销:LLM推理不仅仅涉及GPU计算;大量的工作是由CPU处理的,包括批处理调度(batch scheduling)、内存管理和token处理。如果没有进行优化,这种CPU开销会导致GPU处于空闲状态,从而严重损害整体性能。为了缓解这一问题,Mini-SGLang实现了与SGLang类似的Overlap Scheduling(重叠调度)机制。该机制通过在GPU忙于处理当前批次请求时,在CPU上提前准备下一批次的请求,从而有效地隐藏了CPU的开销。正如Nsight-Systems的性能分析所示,这种方法使GPU保持持续的利用率,消除了GPU的空闲时间并最大化了系统吞吐量。
消融实验支持:为了方便研究人员运行没有Overlap Scheduling的消融实验,Mini-SGLang提供了便捷的配置方式,用户只需设置环境变量MINISGL_DISABLE_OVERLAP_SCHEDULING=1即可禁用该功能。
集成高性能内核:Mini-SGLang集成了最先进的注意力机制内核以确保顶级的推理性能。在NVIDIA Hopper架构上,它利用FlashAttention-3作为prefill(预填充)内核,并使用FlashInfer作为decode(解码)内核。遵循FlashInfer和SGLang的实践经验,Mini-SGLang还集成了即时编译(JIT)内核以获得更好的运行时性能。在Python绑定方面,系统采用了TVM FFI,由于其轻量级的设计,它比默认的PyTorch接口运行速度快得多。
交互式Shell模式:为了便于直接交互和测试,Mini-SGLang内置包含了一个简单的shell模式。此功能允许用户直接从命令行与LLM进行对话,提供了一种无需部署独立客户端即可测试模型并观察其行为的便捷方式。
实验环境
- 硬件配置:NVIDIA H200 GPU(单卡用于离线吞吐量测试,4张H200 GPU用于在线服务延迟测试)。
- 模型配置:测试了Qwen3系列模型,包括Qwen3-0.6B、Qwen3-14B(用于评估规模化性能的离线测试)和Qwen3-32B(用于在线测试,采用4路张量并行配置即
tp=4)。 - 数据集/工作负载:在线测试使用了来自Qwen trace的真实工作负载,重放了1000个请求。
- 基线系统:Nano-vLLM(用于离线吞吐量对比)和SGLang(用于在线服务延迟对比)。
实验结果
-
离线推理吞吐量(Offline Inference Throughput):在单张H200 GPU上,对比了Mini-SGLang与Nano-vLLM在Qwen3-0.6B和Qwen3-14B模型上的离线吞吐量(单位为 tokens per second)。实验结果表明,得益于有效地隐藏了CPU开销的Overlap Scheduling机制,Mini-SGLang在两个Qwen3模型上的吞吐量均持续优于Nano-vLLM基线。
-
在线服务延迟(Online Serving Latency):在4张H200 GPU上,使用Qwen3-32B模型(4-way TP),通过重放1000个真实请求,对比了Mini-SGLang与SGLang的吞吐量、90百分位首字延迟(P90 TTFT)和生成字间延迟(TBT)。结果表明,Mini-SGLang实现了与SGLang几乎完全相同的性能,这证实了其轻量级设计并未在吞吐量或延迟上做出任何妥协。
-
可复现性代码:论文提供了Mini-SGLang与SGLang在线对比的启动命令以供复现:
# Mini-SGLang
python -m minisgl --model "Qwen/Qwen3-32B" --tp 4 --cache naive
# SGLang
python3 -m sglang.launch_server --model "Qwen/Qwen3-32B" --tp 4 \
--disable-radix --port 1919 --decode-attention flashinfer
结论
Mini-SGLang成功地将最先进推理引擎的强大功能提炼成了一个紧凑且易于理解的代码库。通过保留Overlap Scheduling和高性能注意力内核等关键优化,它在提供令人印象深刻的性能的同时,也作为一个极其宝贵的教育工具和灵活的研究平台。作者鼓励社区探索其源代码并运行基准测试,以亲身体验Mini-SGLang如何使高性能LLM推理变得前所未有的易用。
补充细节:致谢
社区与个人贡献:作者特别感谢了SGLang团队和社区(特别是Liangsheng Yin、Lianmin Zheng等人)提供的慷慨支持与反馈。同时,感谢MisakaVan在测试、文档和代码改进方面的突出贡献,以及Yi Pan对C++ NCCL通信器的初始PyTorch实现所做的工作。
课程应用与系统启发:作者感谢了来自上海交通大学的Wenxin Zheng,他在2025年夏季学期基于Mini-SGLang的实验课程中担任助教,并在课程组织和学生指导方面提供了支持。此外,Mini-SGLang的系统设计从SGLang、FlashInfer、vLLM和Nano-vLLM中汲取了大量灵感,这些优秀的项目共同帮助Mini-SGLang成为了一个干净且健壮的系统。
💬 评论讨论
欢迎在这里分享您的想法和见解!