Mini-SGLang:軽量かつ高効率なLLM推論エンジンの全解析

Mini-SGLangロゴ

私たちはMini-SGLangを発表できることを嬉しく思います。これは軽量でありながら高性能な大規模言語モデル(LLMs)推論フレームワークです。SGLangプロジェクトから派生し、現代のサービスシステムの複雑さを解き明かすことを目指しています。コンパクトなコードベースにもかかわらず、最先端の性能を定義するコア機能を保持しており、効率的なKVキャッシュ再利用のためのRadix Attention、メモリ使用量制御のためのChunked Prefill、CPUオーバーヘッド削減のためのOverlap Scheduling、スケーラブルな分散サービスのためのTensor Parallelismが含まれています。Mini-SGLangはOpenAI互換APIを提供し、Llama-3やQwen-3などのモデルをすぐに使用でき、信頼性の高い推論エンジンであると同時に、研究者や開発者にとって透明な参照実装でもあります。

ソースコード:https://github.com/sgl-project/mini-sglang

動機:なぜMini-SGLangを開発したのか?

SGLangは推論性能と機能において最先端レベルに達していますが、そのコードベースは約30万行のPythonコードに膨張しています。学習と研究の敷居を下げるため、私たちはMini-SGLangを開発し、2つの主要な目標に焦点を当てました:学習リソースの提供と研究プロトタイピングの加速です。

教育用途

Mini-SGLangはわずか5,000行のPythonコードのクリーンでモジュール化されたコードベースを持ち、初心者が現代のLLMサービスエンジンのコアコンポーネントを理解しやすくしています。

簡潔でありながら、オンラインおよびオフライン推論をサポートし、Tensor ParallelismOverlap SchedulingChunked PrefillRadix CacheJIT CUDA kernelsを含む主要な現代的最適化を実装しており、包括的な学習リソースとなっています。

高速な研究プロトタイピング

多くのMLとシステム研究者は、既存フレームワークへの最適化の統合に困難を感じています。一方で、SGLangのような複雑なフレームワークに新しいロジックを注入することはリスクが高く、暗黙の不変条件を破って見つけにくいバグを引き起こす可能性があります。他方で、推論エンジンをゼロから構築するのは煩雑で、ベースライン性能に匹敵するために大量のインフラストラクチャ(フロントエンドサーバー、トークナイザー、NCCL通信など)が必要です。

Mini-SGLangはバランスを取っています。元々は新しいシステムアイデアを検証するための私たちのプロトタイプで、大規模なコードを数週間処理したり、インフラストラクチャを再実装したりすることなく、すぐに始められます。高性能ですぐに使え、最適化の検査と拡張が容易でありながら、インフラストラクチャの重荷を処理します。追加でOpenAI互換のベンチマークツールを提供し、SGLang、vLLMTensorRT-LLMとのエンドツーエンド性能分析と比較を容易にします。カーネル開発者は、デバッグと性能プロファイリングを支援する細粒度のNVTX注釈を活用できます。

コア機能

Mini-SGLangはSGLangと高レベルのシステムアーキテクチャを共有しており、フロントエンドAPIサーバー、トークナイザーサーバー、各GPU用のバックエンドスケジューラーが含まれています。

システムアーキテクチャ図

Overlap Scheduling

LLM推論はGPU計算だけではなく、CPUはバッチスケジューリング、メモリ管理、トークン処理など大量の作業を担当します。最適化されていない場合、CPUオーバーヘッドがGPUのアイドルを引き起こし、全体的な性能に影響します。

Mini-SGLangは、SGLangと同様のoverlap schedulingメカニズムを実装しており、GPUが現在のバッチを処理している間に、CPUが次のバッチのリクエストを準備することで、CPUオーバーヘッドを隠蔽します。以下のNsight-Systemsプロファイリングは、GPUの利用率が常に飽和状態で、アイドルがなく、スループットが向上していることを示しています。詳細は前回のブログをご覧ください。

オーバーラップスケジューリング実行例、CPUオーバーヘッドが完全に隠蔽されている

オーバーラップスケジューリングなしの実行例、CPUオーバーヘッドがGPUをブロック

overlap schedulingを無効にしてアブレーション実験を行うには、環境変数MINISGL_DISABLE_OVERLAP_SCHEDULING=1を設定してください。

高性能カーネル

Mini-SGLangは最先端の注意力カーネルを統合し、トップレベルの性能を保証します。NVIDIA Hopperアーキテクチャでは、プリフィルにFlashAttention-3、デコードにFlashInferを使用します。

FlashInferとSGLangから学び、Mini-SGLangはJITコンパイルカーネルを統合してランタイム性能を向上させています。私たちはTVM FFIをPythonバインディングに採用しており、軽量設計のためデフォルトのPyTorchインターフェースよりも高速です。

インタラクティブシェルモード

便利なインタラクティブテストのため、Mini-SGLangには簡単なシェルモードが内蔵されており、ユーザーは追加のクライアントなしでコマンドラインから直接LLMと対話できます。

シェルモード例

性能ベンチマーク

オフラインスループットとオンラインサービスレイテンシをカバーする包括的な実験を実施しました。

オフライン推論スループット

単一のNVIDIA H200 GPU上で、Nano-vLLMと比較しました。Nano-vLLMの方法に従い、Qwen3-0.6BQwen3-14Bモデルを使用してスケーラビリティを評価しました(Nano-vLLMのサポートに限定)。

スループット(tokens/s)は以下の通りです:

オフラインベンチマーク図

Mini-SGLangは両モデルでNano-vLLMを上回り、overlap schedulingによるCPUオーバーヘッドの隠蔽が功を奏しています。

再現可能:オフラインスクリプトはこちら

オンラインサービスレイテンシ

Qwen traceの実際のワークロードを使用し、4つのH200 GPU上で4-way Tensor ParallelismQwen3-32Bに1000リクエストをリプレイしました。スループット、P90 TTFT、TBTを測定しました。

オンラインベンチマーク図

Mini-SGLangの性能はSGLangとほぼ同等で、軽量設計がスループットやレイテンシを犠牲にしていないことを証明しています。

再現可能:起動コマンド:

# Mini-SGLang
python -m minisgl --model "Qwen/Qwen3-32B" --tp 4 --cache naive 

# SGLang
python3 -m sglang.launch_server --model "Qwen/Qwen3-32B" --tp 4 \
    --disable-radix --port 1919 --decode-attention flashinfer

オンラインスクリプトはこちら

結論

Mini-SGLangは最先端の推論エンジンをコンパクトで理解しやすいコードベースに成功裏に凝縮しました。overlap schedulingや高性能注意力カーネルなどの主要な最適化を保持し、優れた性能を実現しながら、教育ツールと柔軟な研究プラットフォームとしても機能します。

ぜひソースコードを探索し、ベンチマークを実行し、高性能LLM推論の新たな使いやすさを体験してください。

謝辞

  • SGLangチームとコミュニティのサポート、特にLiangsheng Yin、Lianmin Zhengらに感謝します。
  • テスト、ドキュメント、コード改善での顕著な貢献をしてくれたMisakaVan、および最初のPyTorch C++ NCCL通信機の実装をしてくれたYi Panに感謝します。
  • 2025年夏期実験課程の助手として、課程の組織化と学生指導をサポートしてくれたSJTUのWenxin Zhengに感謝します。
  • SGLang、FlashInfer、vLLM、Nano-vLLMのシステム設計から多くを学び、それらがMini-SGLangの簡潔さと堅牢性を共に築き上げました。