模型層 開放閱讀

SGLang

SGLang

概念 ID
sglang
更新時間
2026-05-29
來源數量
待補

SGLang

3 秒看懂

SGLang(Structured Generation Language) 是一個面向大語言模型(LLM)推論的高效服務架構,核心創新是 RadixAttention(基於基數樹的 KV Cache 複用)和壓縮有限狀態機(Compressed FSM)約束解碼。它能在多輪對話、共享字首、結構化輸出等場景下實現顯著的吞吐量提升,是當前開源 LLM 推論最佳化的重要競爭者之一,與 vLLM 形成直接對標。

3 分鐘產業解釋

為什麼需要 SGLang?

大型模型落地的核心瓶頸已經從”訓練能不能跑”轉向”推論能不能用得起”。一箇中等規模的聊天應用可能面臨:

  • 每秒數千併發請求,每個請求都可能包含長系統提示(system prompt)
  • 多輪對話中,前幾輪的 KV Cache 不斷重複計算
  • 結構化輸出需求(JSON、SQL、程式碼),約束解碼效率低下

傳統推論架構(如 HuggingFace TGI、vLLM)在這些場景下存在最佳化空間。SGLang 通過系統級的 KV Cache 管理和批處理排程,針對性地解決這些痛點。

產業定位

┌─────────────────────────────────────────────────────────┐
│                    LLM 推論服務層                         │
├─────────────┬─────────────┬─────────────┬───────────────┤
│   vLLM      │   SGLang    │  TensorRT-  │   DeepSpeed   │
│  (PagedAttn)│(RadixAttn)  │    LLM      │    -Inference  │
├─────────────┴─────────────┴─────────────┴───────────────┤
│                 CUDA / ROCm / 自研運算元                     │
├─────────────────────────────────────────────────────────┤
│              GPU 硬體 (NVIDIA / AMD / ...)                │
└─────────────────────────────────────────────────────────┘

關鍵差異

維度vLLMSGLang
核心技術PagedAttentionRadixAttention
KV Cache 管理分頁、按需分配基數樹、字首自動複用
約束解碼有限支援壓縮 FSM 原生整合
優勢場景通用長文本多輪對話、共享字首、結構化輸出

15 分鐘專家深入

架構全貌

SGLang 的推論引擎可以分為幾個關鍵模組:

┌──────────────────────────────────────────────────────────────┐
│                    SGLang Runtime                             │
├──────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │  Scheduler   │  │  RadixCache │  │  Constrained Decode │  │
│  │  (批處理排程) │  │ (KV Cache)  │  │   (FSM 引擎)        │  │
│  └──────┬──────┘  └──────┬──────┘  └──────────┬──────────┘  │
│         │                │                     │             │
│         ▼                ▼                     ▼             │
│  ┌──────────────────────────────────────────────────────┐   │
│  │              CUDA Kernel 層 (FlashInfer)              │   │
│  └──────────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────────┘

RadixAttention 機制詳解

這是 SGLang 的核心技術突破。傳統 PagedAttention 的問題是:它不感知請求之間的字首共享關係

問題場景:100 個請求共享同一個 2000 token 的系統提示

請求 A: [系統提示 2000t] + [使用者問題 100t]
請求 B: [系統提示 2000t] + [使用者問題 150t]
請求 C: [系統提示 2000t] + [使用者問題 80t]
...

傳統方案:每個請求獨立計算系統提示的 KV Cache → 重複計算 100 次

RadixAttention 方案:使用基數樹(Radix Tree / Trie)索引 token 序列的字首

                    [root]

                 [系統提示字首...]

              ┌────────┼────────┐
              ▼        ▼        ▼
           [A的字尾] [B的字尾] [C的字尾]
              ↓        ↓        ↓
           KV_A      KV_B      KV_C
           (僅字尾)  (僅字尾)  (僅字尾)

關鍵機制

  1. 字首匹配:新請求到來時,先在基數樹中查詢最長公共字首(Longest Common Prefix)
  2. Cache 複用:命中字首的 KV Cache 直接複用,跳過計算
  3. 動態管理:支援 LRU 淘汰、引用計數、Copy-on-Write 等策略

量化收益估算(基於公開基準,具體數字可能因場景而異):

  • 多輪對話場景:吞吐量提升約 1.5-3 倍(vs 原始 vLLM)
  • 共享系統提示場景:首 token 延遲(TTFT)顯著降低

壓縮有限狀態機(Compressed FSM)

結構化輸出是企業級應用的剛需(返回 JSON、SQL 等)。SGLang 的約束解碼方案:

傳統約束解碼問題

  • 每次生成 token 後,需要遍歷 FSM 狀態轉移
  • 對於複雜 schema,FSM 可能有數千狀態,轉移表巨大

SGLang 的壓縮 FSM

  1. 狀態壓縮:合併等價狀態,減小 FSM 規模
  2. 批次轉移:一次計算多個 token 的合法集合
  3. 與 RadixCache 整合:約束解碼的中間結果也能被快取複用
JSON Schema 示例: {"name": string, "age": int}

FSM 狀態轉移(簡化):
  state_0 --'{'--> state_1 --'"'--> state_2 --[a-z]--> state_3 ...
                                          --'n'--> state_4 (匹配 "name")
                                          --'a'--> state_5 (匹配 "age")

壓縮後: 合併相同字首路徑,減少狀態數

批處理排程器

SGLang 實現了連續批處理(Continuous Batching),但增加了字首感知的排程策略:

  • Preempt 策略:當視訊記憶體不足時,優先搶佔字首較短的請求(因為重新計算成本低)
  • 排程優先順序:共享長字首的請求被排程到同一 batch,最大化 Cache 命中

FlashInfer 核心

SGLang 依賴 FlashInfer 庫提供高效的注意力計算核心:

  • 支援多種注意力變體:MHA、GQA、MQA
  • 支援 Paged KV Cache 的高效訪問
  • 針對不同 GPU 架構最佳化(A100、H100 等)

技術原理

KV Cache 基數樹實現

┌─────────────────────────────────────────────────────┐
│                   RadixCache 內部結構                 │
├─────────────────────────────────────────────────────┤
│                                                     │
│   Token 序列: [t1, t2, t3, t4, t5, t6, t7, t8]    │
│                                                     │
│   基數樹節點:                                        │
│                                                     │
│   Node(root)                                        │
│     └── Node([t1,t2,t3])  ← 字首節點               │
│           ├── Node([t4,t5])  ← 請求A的字尾          │
│           │     └── [KV Cache: K_A, V_A]            │
│           └── Node([t4,t6])  ← 請求B的字尾          │
│                 └── [KV Cache: K_B, V_B]            │
│                                                     │
│   節點後設資料:                                        │
│   - token_ids: 該節點對應的 token 序列              │
│   - kv_cache: 對應的 K, V 張量                      │
│   - ref_count: 引用計數(用於淘汰策略)              │
│   - last_access: LRU 時間戳                         │
│                                                     │
└─────────────────────────────────────────────────────┘

Cache 複用的數學表示

對於請求 $R$,其 token 序列為 [t_1, t_2, ..., t_n]

設基數樹中已快取的最長字首長度為 $p$,則:

  • 可複用的 KV Cache:對應 [t_1, ..., t_p]
  • 需要計算的部分[t_{p+1}, ..., t_n]
  • 計算量節省比\frac{p}{n}(理想情況)

約束解碼的 FSM 原理

JSON Schema: {"key": string}

對應的正規表示式(簡化):
  {"key":"[a-zA-Z]*"}

FSM 建置:
┌─────┐   '{'   ┌─────┐   '"'   ┌─────┐   'k'   ┌─────┐
│ q0  │ ------→ │ q1  │ ------→ │ q2  │ ------→ │ q3  │
└─────┘         └─────┘         └─────┘         └─────┘
                                                   │ 'e'

                                                ┌─────┐
                                                │ q4  │
                                                └─────┘
                                                   │ 'y'

                                                ┌─────┐
                                                │ q5  │
                                                └─────┘
                                                   │ '"'  (鍵結束引號)

                                                ┌─────┐
                                                │ q6  │
                                                └─────┘
                                                   │ ':'  (冒號)

                                                ┌─────┐
                                                │ q7  │
                                                └─────┘
                                                   │ '"'  (值開始引號)

                                                ┌─────┐
                                                │ q8  │
                                                └─────┘
                                         (接受 [a-zA-Z]*)

每個狀態對應一個合法 token 集合(vocab mask)
解碼時,logits 只在合法 token 上取 argmax

SGLang 核心引數與指標

引數/指標說明典型值/範圍
RadixCache 命中率字首複用的有效性場景依賴,可高可低
TTFTTime To First Token,首 token 延遲與字首長度、batch size 相關
TPOTTime Per Output Token,逐 token 延遲與模型大小、GPU 算力相關
Throughput吞吐量(tokens/s)核心最佳化目標
P99 Latency第 99 百分位延遲服務穩定性指標

技術演進史

時間線

2023.06   vLLM 釋出,PagedAttention 成為主流方案

2023.12   SGLang 初始版本,提出結構化生成語言概念

2024.01   SGLang 推出 RadixAttention,效能大幅改進

2024.Q1   FlashInfer 整合,核心最佳化

2024.Q2   壓縮 FSM 約束解碼最佳化

2024.H2   持續迭代,擴充套件模型支援(Mixtral MoE、Gemma 等)

至今       與 vLLM 形成雙雄競爭格局

關鍵里程碑

時間事件意義
2024.01RadixAttention 論文/程式碼釋出核心技術創新,解決字首複用問題
2024.Q1FlashInfer 整合核心層最佳化,提升硬體利用率
2024.H1約束解碼最佳化結構化輸出效能提升
2024.H2多模型支援擴充套件生態完善,支援 MoE 等複雜架構

技術路線對比

推論架構技術路線對比

維度vLLM (PagedAttention)SGLang (RadixAttention)TensorRT-LLMDeepSpeed-Inference
核心創新分頁 KV Cache基數樹 KV Cache 複用圖最佳化 + 核心融合ZeRO 推論 + 張量並行
字首複用不原生支援原生支援需手動配置不原生支援
約束解碼有限支援壓縮 FSM 深度整合有限支援不原生支援
動態批處理支援(Continuous Batching)支援(字首感知排程)支援支援
視訊記憶體管理Paged KV CacheRadixCache + Paged靜態圖最佳化ZeRO 分片
硬體支援NVIDIA, AMD, TPUNVIDIA (主要)NVIDIA (僅限)NVIDIA (主要)
部署複雜度中等中等較高(需要圖編譯)較高
最佳場景通用長文本多輪對話/共享字首/結構化輸出固定模型 + 固定輸入超大型模型分散式推論

效能對比基準(參考值,具體數字因場景/硬體/模型而異)

場景SGLang 相對 vLLM 的吞吐量提升說明
多輪對話1.5x - 3xRadixCache 複用歷史 KV
共享系統提示2x - 5x長字首複用收益顯著
結構化輸出 (JSON)1.2x - 2x壓縮 FSM 減少約束開銷
單輪無共享~1x無字首複用,效能相近

注:以上數字為基於公開基準的估算範圍,實際結果依賴具體配置。


上下游

產業鏈位置

上游(算力/硬體層)
┌─────────────────────────────────────────────┐
│  GPU 硬體: NVIDIA A100/H100, AMD MI250/MI300  │
│  互聯: NVLink, PCIe, InfiniBand              │
│  視訊記憶體: HBM2e, HBM3 (容量/頻寬是關鍵)         │
└─────────────────────┬───────────────────────┘


中游(架構/引擎層)
┌─────────────────────────────────────────────┐
│  推論架構: SGLang, vLLM, TensorRT-LLM, TGI   │
│  核心庫: FlashInfer, FlashAttention, Triton   │
│  編譯最佳化: CUDA, ROCm, TensorRT              │
└─────────────────────┬───────────────────────┘


下游(應用/服務層)
┌─────────────────────────────────────────────┐
│  雲端服務: AWS Bedrock, Azure AI, GCP Vertex    │
│  API 服務: OpenAI, Anthropic, 自建服務        │
│  應用: 聊天機器人, 程式碼助手, 結構化資料抽取   │
└─────────────────────────────────────────────┘

關鍵依賴

層級依賴項說明
核心層FlashInferSGLang 的注意力核心核心依賴
模型層HuggingFace Transformers模型載入、分詞器
執行時CUDA / PyTorchGPU 計算底座
分散式NCCL多 GPU 通訊

關鍵指標

推論效能關鍵指標

指標定義最佳化方向SGLang 的最佳化手段
TTFT (Time To First Token)請求發出到第一個 token 返回的延遲減少 prefill 計算量RadixCache 字首複用
TPOT (Time Per Output Token)decode 階段每生成一個 token 的平均延遲提升 decode 效率連續批處理 + 核心最佳化
Throughput (tokens/s)單位時間處理的 token 總數最大化 GPU 利用率字首感知排程 + 高效批處理
P99 Latency第 99 百分位延遲服務穩定性公平排程 + preemption 策略
Cache Hit RateRadixCache 字首命中率提升複用效率基數樹結構 + LRU 策略

資源效率指標

指標說明
GPU 利用率計算單元的實際佔用率
視訊記憶體利用率KV Cache 佔用 vs 總視訊記憶體
Batch Size動態批處理的實際 batch 大小

供需與市場資料

推論架構市場格局(定性)

開源推論架構市場份額(估算)

vLLM         ████████████████████████  (~40-50%)  ← 當前領導者
TensorRT-LLM ████████████████          (~25-30%)  ← NVIDIA 生態繫結
SGLang       ████████                  (~10-15%)  ← 快速增長
TGI          ██████                    (~8-12%)   ← HuggingFace 生態
Others       ████                      (~5-10%)

注:以上為基於社群活躍度、部署案例的粗略估算,非精確市場調研資料。

SGLang 的應用場景需求

場景需求特徵SGLang 適配度
多輪對話機器人長曆史上下文、高併發★★★★★
API 閘道器共享系統提示、多樣化請求★★★★★
結構化資料抽取JSON/SQL 輸出約束★★★★★
程式碼生成語法約束、多候選★★★★☆
RAG 應用長文件上下文★★★★☆
單輪摘要無共享字首★★★☆☆

代表公司與產業對映

核心團隊與組織

維度說明
核心團隊UC Berkeley LMSYS 組
關鍵人物Ying Sheng, Lianmin Zheng 等(SGLang 核心開發者,同時也是 vLLM 的早期貢獻者)
關聯專案LMSYS Chatbot Arena, Vicuna, FastChat
開源協議Apache 2.0

資本/商業化對映

層級相關公司/專案說明
雲端服務商AWS, Azure, GCP, 阿里雲端, 位元組火山引擎LLM 推論服務的最終買家
GPU 廠商NVIDIA, AMD, Intel硬體受益方
模型公司OpenAI, Anthropic, 智譜, 月之暗面內部推論最佳化可能採用類似技術
推論服務商Together AI, Fireworks AI, Replicate可能採用/貢獻 SGLang
學術機構UC Berkeley, CMU, Stanford核心研究力量

注:SGLang 是開源專案,暫無直接獨立融資記錄。其價值體現在降低推論成本、推動生態發展。


產業邏輯

為什麼關注 SGLang?

核心邏輯:LLM 推論成本是落地的關鍵瓶頸,推論架構是降本增效的核心抓手。

大型模型落地成本拆解(簡化)

┌──────────────────────────────────────────┐
│           總擁有成本 (TCO)                │
├──────────────────────────────────────────┤
│  訓練成本        │  推論成本(持續)      │
│  (一次性)        │  (隨請求量線性增長)    │
│                  │                       │
│  注:推論成本    │  ← 這是長期主要成本   │
│  通常遠大於訓練  │     最佳化空間巨大       │
└──────────────────────────────────────────┘

產業影響梳理

層級影響型別相關方向
硬體層需求傳導NVIDIA (GPU), AMD (GPU), SK Hynix (HBM)
架構層生態卡位開源架構本身不直接產生營收,但影響生態選擇
雲端服務層成本與用量聯動推論成本降低 → 更多請求 → 更多營收
應用層成本降低更低的 API 成本 → 更多應用場景可行

風險與不確定性

風險說明
技術路線競爭vLLM 社群活躍度高,可能跟進字首複用技術
硬體變化新一代 GPU 架構可能改變最佳化重點
閉源方案NVIDIA TensorRT-LLM 等閉源方案可能在特定場景更優
需求變化更長上下文視窗可能減少字首複用需求

常見誤讀糾偏

誤讀 1:SGLang 的效能提升都是”免費”的

糾偏:SGLang 的效能提升依賴於特定場景。在沒有共享字首的場景下,RadixAttention 的優勢不明顯。核心收益來自:

  • 多輪對話(歷史 KV 複用)
  • 共享系統提示(字首 KV 複用)
  • 結構化輸出(FSM 約束解碼最佳化)

對於單輪、無共享的簡單請求,SGLang 與 vLLM 效能差距不大。

誤讀 2:RadixAttention 完全替代了 PagedAttention

糾偏:RadixAttention 和 PagedAttention 解決的是不同層面的問題:

  • PagedAttention:解決 KV Cache 的視訊記憶體碎片化問題(將連續視訊記憶體分頁管理)
  • RadixAttention:解決 KV Cache 的跨請求複用問題(基於字首索引)

SGLang 的 RadixCache 底層仍然使用分頁管理(類似 PagedAttention 的思想),上層增加了基於基數樹的字首索引。兩者是互補關係,不是替代關係。

誤讀 3:SGLang 是 vLLM 的”改進版”

糾偏:雖然 SGLang 和 vLLM 都是 LLM 推論架構,但它們的設計哲學和技術創新點不同:

維度vLLMSGLang
核心創新PagedAttention(視訊記憶體管理)RadixAttention(字首複用)
設計重點通用高效推論字首感知 + 結構化輸出
技術來源UC Berkeley(最初)UC Berkeley LMSYS
關係
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型