<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>1. 概览 on Machine Learning 学习笔记</title><link>https://kingye.me/study-ml/docs/book/sglang/overview/</link><description>Recent content in 1. 概览 on Machine Learning 学习笔记</description><generator>Hugo</generator><language>en</language><atom:link href="https://kingye.me/study-ml/docs/book/sglang/overview/index.xml" rel="self" type="application/rss+xml"/><item><title>1.1 第一版范围与阅读地图</title><link>https://kingye.me/study-ml/docs/book/sglang/overview/scope-and-reading-map/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kingye.me/study-ml/docs/book/sglang/overview/scope-and-reading-map/</guid><description>&lt;h1 id="第一版范围与阅读地图"&gt;第一版范围与阅读地图&lt;a class="anchor" href="#%e7%ac%ac%e4%b8%80%e7%89%88%e8%8c%83%e5%9b%b4%e4%b8%8e%e9%98%85%e8%af%bb%e5%9c%b0%e5%9b%be"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="这本书第一版解决什么问题"&gt;这本书第一版解决什么问题&lt;a class="anchor" href="#%e8%bf%99%e6%9c%ac%e4%b9%a6%e7%ac%ac%e4%b8%80%e7%89%88%e8%a7%a3%e5%86%b3%e4%bb%80%e4%b9%88%e9%97%ae%e9%a2%98"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;第一版首先解决的是“如何建立一套不走偏的阅读顺序”。面对 SGLang 这样同时包含 language API、server entrypoint、runtime orchestration、memory cache、sampling、structured output 和 observability 的项目，直接从目录深处切入，很容易只看到局部机制，看不到系统为什么被组织成现在这样。&lt;/p&gt;
&lt;p&gt;因此，第一版先追求一条稳定的主线，而不是面面俱到。它优先覆盖产品定位、frontend 心智模型、请求主链路、Serving 与 SRT 的边界，以及调度与 KV Cache 的基本配合关系。这样做的结果，是读者能先获得一张可靠的地图，再决定往哪个局部深挖。&lt;/p&gt;
&lt;h2 id="为什么这样设计第一版范围"&gt;为什么这样设计第一版范围&lt;a class="anchor" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%bf%99%e6%a0%b7%e8%ae%be%e8%ae%a1%e7%ac%ac%e4%b8%80%e7%89%88%e8%8c%83%e5%9b%b4"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;从仓库约束看，这本书必须遵守“从外到内”的写法：先概览，再请求生命周期，再运行时架构，再调度与内存，再执行模型和结构化生成，最后才进入代码导读、扩展与调试。这不是形式要求，而是为了把“产品表面”和“内部实现”分层讲清楚。&lt;/p&gt;
&lt;p&gt;同样重要的是，第一版必须控制非目标。它不会试图覆盖完整 API 手册、全部实验特性、所有硬件与后端适配细节，也不会把整个上游仓库写成逐文件百科。这里的基本判断是：一本能够发布的第一版，应该先把主干讲稳，而不是把枝叶都列出来。&lt;/p&gt;
&lt;h2 id="阅读地图"&gt;阅读地图&lt;a class="anchor" href="#%e9%98%85%e8%af%bb%e5%9c%b0%e5%9b%be"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;推荐阅读顺序是：先读 &lt;a href="./why-sglang-and-frontend-model/"&gt;1.2 为什么是 SGLang：Frontend Language 与 Runtime 心智模型&lt;/a&gt;，确认系统的外部形态；再读 &lt;a href="../request-lifecycle/request-path/"&gt;2.1 一次请求如何穿过 SGLang&lt;/a&gt;，把请求主链路走一遍；然后进入 &lt;a href="../runtime-architecture/serving-and-srt-layering/"&gt;3.1 Serving 层与 SRT 分层&lt;/a&gt;，理解控制面、入口层和核心执行层的边界。&lt;/p&gt;
&lt;p&gt;如果你更关注实现性能与资源管理，可以在上述三章之后继续看 &lt;a href="../scheduling-and-memory/"&gt;4. 调度与内存&lt;/a&gt; 和 &lt;a href="../execution-model/"&gt;5. 执行模型&lt;/a&gt;。再往后是 &lt;a href="../structured-generation-and-api/"&gt;6. 结构化生成与 API&lt;/a&gt;，它把约束生成和对外接口表面接回主链路；最后进入 &lt;a href="../codebase-walkthrough/"&gt;7. 代码导读&lt;/a&gt; 与 &lt;a href="../extension-and-debugging/"&gt;8. 扩展与调试&lt;/a&gt;，把阅读路径落回仓库和维护操作层。&lt;/p&gt;
&lt;h2 id="本章对应哪些代码路径"&gt;本章对应哪些代码路径&lt;a class="anchor" href="#%e6%9c%ac%e7%ab%a0%e5%af%b9%e5%ba%94%e5%93%aa%e4%ba%9b%e4%bb%a3%e7%a0%81%e8%b7%af%e5%be%84"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这一章本身不是源码细节章，所以代码路径映射只要求到目录级和模块级。第一版的主要锚点包括上游仓库顶层目录、README 中对“Backend Tutorial / Frontend Tutorial”的公开入口，以及 &lt;code&gt;python/sglang/__init__.py&lt;/code&gt; 暴露的 public surface。&lt;/p&gt;
&lt;p&gt;换句话说，这一章的功能不是带你读实现细节，而是告诉你后面读代码时该把哪些入口当成“地图坐标”。后续进入请求生命周期和运行时架构之后，代码路径才会进一步落到 &lt;code&gt;launch_server&lt;/code&gt;、&lt;code&gt;entrypoints&lt;/code&gt;、&lt;code&gt;managers&lt;/code&gt;、&lt;code&gt;mem_cache&lt;/code&gt; 等更具体的位置。&lt;/p&gt;</description></item><item><title>1.2 为什么是 SGLang：Frontend Language 与 Runtime 心智模型</title><link>https://kingye.me/study-ml/docs/book/sglang/overview/why-sglang-and-frontend-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kingye.me/study-ml/docs/book/sglang/overview/why-sglang-and-frontend-model/</guid><description>&lt;h1 id="为什么是-sglangfrontend-language-与-runtime-心智模型"&gt;为什么是 SGLang：Frontend Language 与 Runtime 心智模型&lt;a class="anchor" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e6%98%af-sglangfrontend-language-%e4%b8%8e-runtime-%e5%bf%83%e6%99%ba%e6%a8%a1%e5%9e%8b"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="它解决什么问题"&gt;它解决什么问题&lt;a class="anchor" href="#%e5%ae%83%e8%a7%a3%e5%86%b3%e4%bb%80%e4%b9%88%e9%97%ae%e9%a2%98"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;很多人第一次接触 SGLang，会先把它归类成一个“高性能推理服务框架”。这个理解并不算错，但不完整。因为从上游 README 和 public API 看，SGLang 同时把自己呈现成两类东西：一类是对外服务的运行时入口，另一类是直接被程序调用的 language-level API。&lt;/p&gt;
&lt;p&gt;这个双重形态，正是本章要先讲清楚的问题。如果不先把它讲清楚，读者后面看到 &lt;code&gt;sglang serve&lt;/code&gt;、&lt;code&gt;python -m sglang.launch_server&lt;/code&gt;、&lt;code&gt;Engine(...)&lt;/code&gt;、&lt;code&gt;Runtime(...)&lt;/code&gt;、&lt;code&gt;gen(...)&lt;/code&gt;、&lt;code&gt;user(...)&lt;/code&gt;、&lt;code&gt;assistant(...)&lt;/code&gt; 这些入口时，很容易把它们当成风格不同但本质相同的调用方式，而忽略它们其实落在不同抽象层。&lt;/p&gt;
&lt;h2 id="为什么说它不只是一个-serving-engine"&gt;为什么说它不只是一个 serving engine&lt;a class="anchor" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%af%b4%e5%ae%83%e4%b8%8d%e5%8f%aa%e6%98%af%e4%b8%80%e4%b8%aa-serving-engine"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;事实层面，上游 README 当前把 “Backend Tutorial” 与 “Frontend Tutorial” 分开列出；而 &lt;code&gt;python/sglang/__init__.py&lt;/code&gt; 则同时导出 &lt;code&gt;function&lt;/code&gt;、&lt;code&gt;gen&lt;/code&gt;、&lt;code&gt;system&lt;/code&gt;、&lt;code&gt;user&lt;/code&gt;、&lt;code&gt;assistant&lt;/code&gt; 这类语言层 API，以及 &lt;code&gt;RuntimeEndpoint&lt;/code&gt;、&lt;code&gt;ServerArgs&lt;/code&gt;、&lt;code&gt;Engine&lt;/code&gt; 这类运行时入口。这说明 public surface 本身就已经分成了“描述生成流程的语言层”与“承载执行的运行时层”。&lt;/p&gt;
&lt;p&gt;推断层面，这意味着 SGLang 的核心价值不只在“跑得快”，还在“把 prompt program、structured generation 与 runtime execution 接到一套统一表面上”。第一版在这里不会展开所有机制细节，但会先把这套双层心智模型钉住：语言层负责描述，运行时层负责承载，服务层负责暴露。&lt;/p&gt;
&lt;h2 id="这套心智模型如何帮助后续阅读"&gt;这套心智模型如何帮助后续阅读&lt;a class="anchor" href="#%e8%bf%99%e5%a5%97%e5%bf%83%e6%99%ba%e6%a8%a1%e5%9e%8b%e5%a6%82%e4%bd%95%e5%b8%ae%e5%8a%a9%e5%90%8e%e7%bb%ad%e9%98%85%e8%af%bb"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;有了这个框架，后面的章节角色会清楚很多。&lt;a href="../request-lifecycle/request-path/"&gt;2.1 一次请求如何穿过 SGLang&lt;/a&gt; 讲的是请求如何进入系统并跨过这些层之间的 handoff；&lt;a href="../runtime-architecture/serving-and-srt-layering/"&gt;3.1 Serving 层与 SRT 分层&lt;/a&gt; 讲的是这些层各自负责什么，不负责什么。&lt;/p&gt;
&lt;p&gt;同时，这套心智模型也约束了我们后面对源码的阅读方式。比如 &lt;code&gt;python/sglang/lang/api.py&lt;/code&gt; 更适合被当作语言层入口来读，而 &lt;code&gt;python/sglang/launch_server.py&lt;/code&gt; 与 &lt;code&gt;python/sglang/srt/entrypoints/*&lt;/code&gt; 更适合被当作服务化入口与运行时入口来读。把这些入口混在一起，会让读者失去方向感。&lt;/p&gt;</description></item></channel></rss>