跳到主内容
@wquguru
精选92meng shao技巧与观点

从零手搓 SGLang:Datawhale与SGLang官方联合开源课程

[开源推荐] 从零手搓 SGLang

原文
发到 X
推荐理由

做推理引擎的同学必看,这门课由SGLang官方成员亲自编写进阶部分,从手搓Mini-SGLang到理解Paged Attention等核心机制,路径清晰且极具实战价值,值得收藏系统学习。

[开源推荐] 从零手搓 SGLang

Datawhale 和 RadixArk(SGLang)联合发起的开源课程:先建立 LLM 推理的概念体系,再从零手搓一个 mini-sglang,最后对照真实 SGLang 源码吃透前沿优化,直至走通给 SGLang 提 PR 的全流程。 https://github.com/datawhalechina/zero-to-sglang

课程结构:四个 Part 的设计逻辑

Part 0 - 编码伦理与开源精神;部署第一个 SGLang 服务 先立规矩再讲技术,这个安排很罕见也很有态度

Part I - LLM/推理/GPU/KV Cache/Benchmark 五章概念 零代码零 GPU 门槛,建立 prefill vs decode、compute-bound vs memory-bound、Roofline model 的认知底座

Part II - 十章手搓 mini-sglang 课程核心,「正确性 → 效率 → 服务化 → 调度 → 内存管理 → 扩展」的递进顺序

Part III - Attention 后端、量化、分层缓存、DP Attention/EP/PP、PD 分离 进入真实 SGLang 源码,摸前沿优化

Part IV - Cookbook 部署、Profiling 与 Trace、PR 工作流 最终目标是把学习者转化为 SGLang 的贡献者

项目亮点

1. 进阶部分(Part III 的 Attention Backends、量化、分层缓存、PD 分离,以及 Part IV 的 Profiling 与 PR 工作流)由 SGLang 官方成员(@YichiZ03、fcranzhou)亲自编写。市面上讲推理引擎的中文系统教程本就稀缺,由框架作者团队下场写教学项目的,非常难得。

2. 大模型竞争的重心正从训练转向推理:同样的卡,好的推理引擎能多扛几倍请求。KV Cache、Continuous Batching、Paged Attention、投机解码这些技术名词流传很广,但「从第一行代码开始自己实现一遍」的路径几乎没有。这门课的解法是典型的「手搓式学习」:前向生成 → KV Cache → HTTP 服务 → 调度器 → 分页内存 → RadixAttention,每章加一个能力,参照实现放在官方仓库 sgl-project/mini-sglang。

抽读后的评价

· 概念讲得透且有定量分析。比如讲训练与推理的成本差异时,用 8B 模型实际算出训练一次约 7.7×10²¹ FLOPs ≈ 90 张 H100 一天,再对比推理的边际成本,让「为什么推理优化是核心命题」落在数字上而非口号上;讲 prefill/decode 特性差异时配合 Roofline model 定位瓶颈。

· 教学设计成熟。每章固定「引言 → 学习目标 → 正文」,章与章之间有明确的承接关系(第 1 章结尾预告第 2 章沿真实代码追踪请求流转);手搓部分先把「模型调用」与「推理引擎」的区别讲清(模型负责神经网络计算,引擎负责组织这些计算),再引入 Req/Batch/Context 等对象和控制路径/数据路径的区分。

· 配套工程规范。有统一写作模板和 CI 脚本(check_chapters.py)自动检查章节结构、缩进、图片格式,中英文双轨同步,VitePress 在线阅读站点自动部署。这种规范化程度在教育类开源项目里少见。

一个特别的亮点:Part 0.1 的编码伦理章

它反映了 SGLang 维护者的真实社区经验,观点相当鲜明: · 反对 AI slop 式贡献:不反对用 AI 写代码,但要求「作者自己认真读过、知道它为什么这么写」,因为 AI 让写 500 行代码从一下午变成 30 秒,但 reviewer 阅读的成本没有变,这是隐形的责任转嫁; · Profile 永远是第一步:先测真实负载下目标代码占多少耗时,「这一小时能帮你省下两个星期」,性能 PR 必须带前后对比、可复现命令和 profile 证据三样东西; · 明确的价值观:「不欢迎把开源当刷简历工具的人。问题不在动机里有简历,在把手段和目的搞反」。

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →

相似阅读

关联信息,但可能不是同一事件