> [!abstract] 概要(abstract の日本語訳)
> 大規模言語モデル(LLM)は、複数の生成呼び出し、高度なプロンプティング技法、制御フロー、構造化された入力と出力を必要とする複雑なタスクでますます使われている。
> しかし、これらのアプリケーションをプログラムし実行する効率的なシステムは不足している。
> SGLang は、複雑な言語モデルプログラムを効率的に実行するシステムであり、frontend 言語と runtime から成る。
> frontend は generation と並列性制御のプリミティブによりプログラミングを簡単にする。
> runtime は、KV キャッシュ再利用のための RadixAttention や、構造化出力復号を高速化する圧縮有限状態機械などの新しい最適化で実行を高速化する。
> 実験では、エージェント制御、論理推論、few-shot 学習ベンチマーク、JSON 復号、RAG パイプライン、マルチターンチャットなどで、SGLang が最先端推論システムに対し最大 6.4 倍高いスループットを達成する。
## 論文情報
- タイトル: SGLang: Efficient Execution of Structured Language Model Programs
- 著者: [[Lianmin Zheng]]、Liangsheng Yin、Zhiqiang Xie、Chuyue Sun、Jeff Huang、Cody Hao Yu、Shiyi Cao、Christos Kozyrakis、Ion Stoica、Joseph E. Gonzalez、Clark Barrett、Ying Sheng。
- 所属: Stanford University、[[University of California, Berkeley]]、Shanghai Jiao Tong University、Texas A&M University、Independent Researcher。
- 媒体: NeurIPS 2024。
- コード: https://github.com/sgl-project/sglang
## 概要
本論文は、プロンプトを文字列として手作業で連結し、外部で並列制御する従来の LLM アプリケーション実装を、低レベル DSL と runtime の協調設計に置き換える。[[SGLang]] は `gen`、`select`、`fork`、`join`、`image`、`video` などのプリミティブを持ち、runtime は LM プログラムが持つ prefix 共有や構造化出力制約を利用して推論を高速化する。
## 問題設定
エージェント、Tree-of-Thought、Skeleton-of-Thought、LLM judge、RAG、マルチターンチャットは、複数の LLM 呼び出しと制御フローを持つ。既存の [[vLLM]] などは単体リクエストの推論エンジンとして最適化されるが、プログラム全体の prefix 共有や構造化出力制約を知らないため、KV キャッシュ再計算や token-by-token constrained decoding が発生する。
## 提案手法
- **frontend 言語**: Python 埋め込み DSL として、prompt state に文字列と生成プリミティブを追加する。`fork` / `join` により LM プログラム内の並列性を明示する。
- **RadixAttention**: KV キャッシュを radix tree に格納し、共通 prefix を検索・挿入・退避する。LRU 退避、参照カウンタ、cache-aware scheduling を持つ。
- **圧縮有限状態機械**: JSON schema などの正規表現制約で、一意に決まる複数トークン列を 1 回の forward pass で進める。
- **API speculative execution**: API 専用モデルで stop 条件を一時的に無視して余分に生成し、後続プリミティブと一致すれば API 呼び出し回数と入力トークン費用を減らす。
## 新規性
RadixAttention は、KV キャッシュを単なる request-local state ではなく、プログラム実行全体の prefix 木として扱う。PagedAttention が非連続ページ管理を可能にした後、SGLang は「どの prefix を共有・退避・優先実行するか」を runtime と frontend の協調で決める。
## 実験設定
評価は Llama-2 7B/70B、Mixtral-8x7B、LLaVA image/video、OpenAI GPT-3.5 API を対象に、MMLU、HellaSwag、ReAct agent、generative agents、Tree-of-Thought、Skeleton-of-Thought、LLM judge、JSON decoding、multi-turn chat、DSPy RAG pipeline で行う。比較対象は Guidance、vLLM、LMQL である。
## 実験結果
- open-weight モデルでは、SGLang は最大 6.4 倍のスループット改善、最大 3.7 倍のレイテンシ削減を示す。
- cache hit rate は 50%-99% の範囲で、cache-aware scheduling は平均で最適ヒット率の 96% に近づく。
- Chatbot Arena 配備では、1 か月の観測で LLaVA-Next-34B が 52.4%、Vicuna-33B が 74.1% の RadixAttention cache hit rate を示し、Vicuna-33B の first-token latency を平均 1.7 倍削減する。
- RadixAttention の管理オーバーヘッドは、cache reuse がない ShareGPT 100 リクエストで 0.2 秒、全体 74.3 秒に対し 0.3% 未満である。
- 圧縮 FSM は JSON decoding のスループットを 1.6 倍に高める。
## 考察
SGLang は KV キャッシュ再利用を、システムプロンプトや few-shot example の固定 prefix だけでなく、LM プログラム内の分岐・合流・マルチターン履歴へ広げる。これは [[LMCache]] のような階層ストレージ型再利用とは異なり、GPU メモリ内の実行順序とキャッシュ木を制御する方向である。
## 強み / 弱点・課題
- 強み: frontend と runtime が同じ構造情報を共有するため、プログラム記述性と実行効率を同時に改善する。
- 弱点・課題: cache-aware scheduling は貪欲に prefix 共有を優先すると starvation の可能性があり、公平性との統合は今後の課題である。
- 弱点・課題: RadixAttention の多階層メモリ(DRAM、Disk)対応や fuzzy semantic matching は future direction とされる。