LLMの推論速度はGPUの性能だけで決まるわけではありません。大規模にモデルを配信する現場では、トークナイズやツール呼び出しといったCPU処理がボトルネックになり、高価なGPUが待機状態に陥るケースがあります。

この記事でわかること:

  • LLM配信でCPU処理がボトルネックになる理由
  • Shepherd Model Gateway(SMG)の仕組みと主要機能
  • 導入方法と対応バックエンド

LLM配信におけるCPU処理のボトルネック

vLLMやSGLangなどの推論エンジンは、内部でRustやC++製のトークナイザライブラリを使っています。しかし、それらの呼び出しはPythonを経由するため、GIL(Global Interpreter Lock)の制約を受けます。小規模な配信では問題になりませんが、大規模なprefill-decode分離構成やエキスパート並列処理では事情が異なります。GPUが高速に処理を終えても、CPU側のトークナイズがシングルスレッドで詰まり、数十万ドル相当のGPUがアイドル状態で入力を待つことになります。

LightSeek Foundationが開発したShepherd Model Gateway(SMG)は、この問題に対する解答です。GPUが不要なCPU処理をすべてRust製のゲートウェイ層に移し、推論エンジンとはgRPCで通信します。PythonのGILから完全に解放された設計です。

SMGのアーキテクチャ

SMGの設計原則は明快です。GPUにはテンソル演算だけを担当させ、それ以外はすべて専用のゲートウェイ層で処理します。具体的に移管される処理は以下のとおりです。

  • トークナイズ・デトークナイズ: Rustでネイティブ実行し、L0(完全一致)とL1(プレフィックス対応)の2段キャッシュで高速化
  • 推論結果のパース: ストリーミング中にリアルタイムで推論ブロックやファンクションコールを抽出。DeepSeek-R1、Qwen3、Llama-4など15以上のモデルファミリーに対応
  • マルチモーダル前処理: Hugging Faceの画像プロセッサをPythonからRustに書き直し、前処理済みテンソルをgRPCで直接転送
  • MCPツール実行: 認証対応のコネクションプール、並行バッチ実行、自動再接続を備えたMCPオーケストレーション

gRPCプロトコルはsmg-grpc-protoとしてPyPIで公開されており、vLLM(PR #36169)やNVIDIA TensorRT-LLMにも採用されています。ゲートウェイとエンジンのインターフェースが明確に分離されているため、片方だけを独立してアップグレードできます。

8種類のルーティングポリシー

SMGはリクエストの振り分けに8つのポリシーを用意しています。中でも注目はcache-awareルーティングです。各推論エンジンのKVキャッシュ状態をリアルタイムで監視し、プレフィックスの再利用率が最も高いワーカーにリクエストを送ります。

PyTorch公式ブログで公開されたベンチマーク結果では、Llamaの8レプリカ構成でTTFT(最初のトークンまでの時間)の平均が23%、p99が28%短縮されました。また、prefill-decode分離構成ではTTFTが20〜30%改善しています。

gRPC vs HTTPのベンチマーク

SMGのgRPCパイプラインがHTTPと比べてどの程度有利かを、NVIDIA H100上でGenAI-Perfを使って検証した結果がPyTorch公式ブログで報告されています。8モデル、2ランタイム、5トラフィックシナリオ、9段階の同時接続数で合計1,082の比較ポイントを測定しています。

同時接続数1ではgRPCとHTTPの差はほぼ誤差範囲です。しかし同時接続数256では、gRPCが約8%高いスループットを記録しました。HTTP/JSONのシリアライズコストはプロンプト長に比例して増加するため、長いコンテキストほどgRPCの優位性が際立ちます。入力7,800トークンのシナリオでは全モデル平均で12.2%のスループット向上が確認されています。

最も劇的な結果はLlama-3.3-70B-FP8です。FP8量子化によりGPUが高速化した分、HTTPのシリアライズがボトルネックとして顕在化し、gRPCは最大3.5倍の出力スループット(1,150 tok/s vs 327 tok/s)を達成しました。

対応バックエンドとAPI

SMGは1つのゲートウェイから複数のバックエンドに同時にルーティングできます。セルフホスト型はvLLM、SGLang、TensorRT-LLM、Ollamaに対応し、クラウドプロバイダーはOpenAI、Anthropic、Google Gemini、AWS Bedrock、Azure OpenAIをサポートします。

API面では、OpenAI Chat/Completions、Responses API、Anthropic Messages API、Gemini Interactions API、Realtime API(WebSocket/WebRTC)の5つをネイティブ実装しています。単なる変換レイヤーではなく、各プロトコルの仕様に忠実な実装です。たとえばAnthropic Messages APIではthinkingブロックをエンドツーエンドで保持します。

導入方法

インストールは3通りから選べます。

docker pull lightseekorg/smg:latest
pip install smg
cargo install smg

起動は1行で完了します。

smg --worker-urls http://localhost:8000

複数ワーカーでcache-awareルーティングを使う場合は以下のとおりです。

smg --worker-urls http://gpu1:8000 http://gpu2:8000 --policy cache_aware

リクエストはOpenAI互換のエンドポイントに送るだけです。Python 3.8〜3.14、Linux/Windows/macOS、x86/ARMに対応しています。ライセンスはApache 2.0です。

本番環境での採用実績

SMGはすでにGoogle Cloud Platform、Oracle Cloud Infrastructure、Alibaba Cloud、TogetherAIの本番環境で稼働しています。スタートアップからハイパースケーラーまで、幅広い規模で採用されています。

まとめ

LLM推論の高速化というとGPUやモデルの最適化に注目が集まりがちですが、SMGはその手前のCPU処理に切り込んだプロジェクトです。NVIDIA DynamoやKubernetesネイティブのllm-dとは異なるレイヤーで動作するため、これらと組み合わせて使えます。大規模なLLM配信基盤を構築・運用している方にとって、検討する価値のあるツールです。