SGLang(エスジーラング)
LMSYS研究グループが開発したLLM向け構造化生成・推論エンジン。RadixAttentionによるKVキャッシュ共有・Compressed Finite State Machine(CFSM)による高速JSON/正規表現制約生成・プロンプトプログラミング言語「SGLang」を統合し、エージェント・RAG・構造化出力ユースケースで業界最速クラスのスループットを実現。
SGLang とは
SGLang(エスジーラング)はLMSYS研究グループ(UC Berkeley/CMU)が開発したLLM向け推論フレームワークおよびプログラミング言語。名称は「Structured Generation Language」の略で、2024年1月の論文「SGLang: Efficient Execution of Structured Language Model Programs」とともに公開された。LLMを使ったエージェント・RAG・構造化出力・多段プロンプト処理を効率的に実行するために設計されている。
主要技術
RadixAttention(KVキャッシュラジックスツリー)
SGLangの独自KVキャッシュ管理技術。プレフィックス共有をラジックスツリー(基数木)で管理することで、同一プレフィックスを持つ複数リクエスト間でのKVキャッシュ共有をO(1)で検索・共有できる。
vLLMのPagedAttentionとの違い:
- PagedAttention: ブロック単位の物理メモリ管理(断片化排除に特化)
- RadixAttention: ツリー構造でプレフィックス共有を最大化(共通プロンプトが多い場合に特に有効)
RAGシステムやエージェントフレームワーク(同一システムプロンプト + 異なるユーザープロンプト)ではRadixAttentionが特に有効で、キャッシュヒット率が90%を超えることもある。
Compressed Finite State Machine(CFSM)
正規表現・JSON Schemaを事前コンパイルしたFSMを使い、LLMの語彙トークンと制約の積集合を高速計算することで、制約付き生成(Constrained Decoding)のオーバーヘッドを最小化する。
従来のJSON強制生成(Outlines等)と比べて、次トークン選択のマスク計算を約10倍高速化。スループットへの影響を1〜3%以下に抑える。
SGLang プログラミングインターフェース
import sglang as sgl
@sgl.function
def multi_turn_chat(s, question):
s += sgl.system("あなたは親切なアシスタントです。")
s += sgl.user(question)
s += sgl.assistant(sgl.gen("answer", max_tokens=256))
s += sgl.user("上記を箇条書きで要約してください。")
s += sgl.assistant(sgl.gen("summary", max_tokens=128))
# バッチ並列実行
results = multi_turn_chat.run_batch(
[{"question": "AIとは?"}, {"question": "LLMとは?"}]
)
Jump Forward Decoding
JSON/正規表現で決定的に次トークンが確定する箇所(例: スキーマの固定文字列部分)を推論なしにスキップし、実際のサンプリングが必要な箇所だけLLMを呼び出す最適化。
パフォーマンス比較(2025年ベンチマーク)
- SGLang vs vLLM(JSON生成): SGLangが約1.8〜3倍のスループット
- RAGシナリオ(RadixAttention): vLLM比 約2〜5倍(キャッシュヒット率依存)
- 通常テキスト生成: vLLMと同等またはわずかに高速
対応モデル・バックエンド
- モデル: Llama 3 / Llama 3.1 / Mistral / Qwen2 / Gemma 2 / DeepSeek-V2/V3
- バックエンド: NVIDIA GPU(FlashAttention-2/3)・AMD ROCm・Intel Gaudi
サーバー起動例
# インストール
pip install sglang[all]
# APIサーバー起動(OpenAI互換)
python -m sglang.launch_server \
--model-path meta-llama/Llama-3-8B-Instruct \
--port 30000 \
--mem-fraction-static 0.85
ユースケース別推奨
- 構造化JSON出力が多い: SGLang(CFSM高速化)
- エージェント/RAG(共通システムプロンプト多用): SGLang(RadixAttention)
- 汎用サービング・簡単設定: vLLM
- NVIDIA本番最大スループット: TensorRT-LLM
まとめ
SGLangは「構造化生成」と「プレフィックスキャッシュ効率」で差別化されたLLM推論エンジン。JSON・関数呼び出し・エージェントループなど複雑なプロンプトプログラムを高速実行したい場合に最適で、2025年にはDeepSeek・Qwen系の高性能モデルとの組み合わせで特に注目が高まっている。