NVIDIA-NeMo/Switchyard
Switchyard lets LLM applications route traffic across models and providers while preserving native OpenAI and Anthropic API compatibility - enabling flexible model selection, benchmarking, and cost/performance optimization.
NVIDIA NeMo Switchyard – クイック概要
概要 – Switchyardは、AIエージェント(またはLLM駆動のサービス)と言語モデルプールの間に配置される、NVIDIA NeMoのオープンソースルーティングライブラリです。すべてのリクエストを単一の高価なモデルに送信するのではなく、Switchyardがリクエストごとにどのモデルが処理すべきかを判断するため、安価で高速なモデルと、より高性能な大規模モデルを組み合わせて使用できます。
重要性 – LLMの運用環境では、常に以下の3つのトレードオフが発生します。
- タスクの成功率(モデルが良い回答を生成するか)
- コスト(トークンやAPI呼び出しごとの費用)
- レイテンシ(ユーザーの待ち時間)。 Switchyardは、単一のモデルをハードコーディングするのではなく、これらのトレードオフを自動的に最適化するプログラム可能な手段を提供します。
仕組み(ハイレベルなフロー)
- モデルプールの定義 – アクセス可能なモデルをリストアップします(例:安価な7Bモデル、大規模な70Bモデル、Anthropic Claudeなど)。
- ルーティングアルゴリズムの選択 – Switchyardには複数の戦略(Auto、Task-based、Execution-based、Composite、およびescalationやsub-agentなどの高度な戦略)が用意されています。アルゴリズムは受信したリクエストを分析し、必要に応じてエージェントによる最近のツール使用シグナルを参照します。
- ルーティングの決定 – アルゴリズムは、リクエストを処理すべきモデルのIDを返します。
- ゲートウェイによるリクエスト転送 – 周辺サービス(OpenRouter、LiteLLM、NeMo Relay、またはカスタムハーネス)が選択されたモデルを呼び出し、ユーザーに応答を返します。
- 反復 – エージェントが作業を継続する際、ルーターは必要に応じて対話の途中でモデルを再評価し、切り替えることができます。
主な機能
| 機能 | メリット |
|---|---|
| 多様な統合ポイント | 既存のゲートウェイ(OpenRouter、LiteLLM、NeMo Relay)経由での利用、デモ用のローカルプロキシサーバーの実行、またはRust/Pythonライブラリの直接組み込みが可能です。 |
| プラグイン可能なルーティングアルゴリズム | • Auto – 標準的なデフォルト設定(効率優先、信頼度0.5、分類器なし)。 • Task – 分類器モデルが安価なモデルで処理可能かを判断。 • Execution – 最近のツール使用状況と結果を分析(stage-router)。 • Composite – TaskとExecutionを組み合わせ、より堅牢な判断を実現。 • その他の戦略:Plan/Execute、Escalation、Advisor、Sub-agent、Random。 |
| 設定駆動型 | すべてのルーティング動作はTOMLファイルで定義されるため、コード変更なしで簡単に実験できます。 |
| コスト対精度の評価 | ベンチマークドキュメントと可視化ツール(コスト対精度チャートなど)が組み込まれており、単一モデルのベースラインと比較可能です。 |
| 拡張可能なコンポーネント | ライブラリ (switchyard-libsy)、HTTPクライアント (switchyard-llm-client)、ランナー (switchyard-runner)、デモ用プロキシサーバー (switchyard-server) が個別のクレートとして提供されます。 |
| オープンソース (Apache-2.0) | 商用製品への組み込みや改変が自由に行えます(NVIDIAのライセンス条件に従う必要があります)。 |
利用開始オプション
| パス | 対象ユーザー | 手順(概要) |
|---|---|---|
| OpenRouter ゲートウェイ | OpenRouter APIを既に使用している方 | API呼び出しで model=nvidia/switchyard を設定します。OpenRouterがルーティングサービスをホストします。 |
| LiteLLM プラグイン | 独自の推論スタックを運用している開発者 | リポジトリをクローンし、examples/litellm のクイックスタートに従い、LiteLLM 1.102.0 を指定します。注:StageおよびRandomルーティングのみサポート。 |
| NeMo Relay プラグイン | NVIDIA NeMo Relay フレームワークのユーザー | RustツールチェーンとPython 3を使用してRustプラグイン (crates/switchyard-nemo-relay-plugin) をビルドし、Relayサーバーを設定します。 |
| ローカルプロキシサーバー | クイックデモ、評価、個人利用 | switchyard-server を実行し(docs/getting_started.md#server-path を参照)、クライアントをローカルエンドポイントに向けます。 |
| 組み込みライブラリ | カスタムゲートウェイやエージェントハーネスを構築するチーム | switchyard-libsy (Rust) を追加するか、Pythonの例 examples/libsy.py を使用し、TOML設定を提供してルーティングAPIを直接呼び出します。 |
Switchyardの推奨ユーザー
- プロダクトチーム:品質を維持しつつLLMコストを削減したいチーム。
- RAG / エージェント開発者:ツール使用状況に応じてタスクの途中でモデルを切り替えたい開発者。
- 研究者:ルーティング戦略を評価したり、新しいアルゴリズムを構築したい研究者。
- Opsエンジニア:単一モデルのベースラインと比較可能な、プラグアンドプレイのプロキシを探しているエンジニア。
制限事項と成熟度
- 本プロジェクトは pre-1.0 です。APIや動作が変更される可能性があります。本番環境では特定のバージョンを固定してください。
- 一部の統合(例:LiteLLM)は experimental とマークされており、特定のアルゴリズムに必要な中間モデル呼び出しのサポートが不足しています。
- NeMo Relay を使用する場合、0.8.x/0.9.0 バージョンでは Switchyard 以外のルートに関する上流のエラー詳細が失われる可能性があります。
ライセンスとコミュニティ
- Apache 2.0 – 寛容なオープンソースライセンス。
- 問題報告や貢献はGitHub経由で受け付けています(issues、PRs、行動規範)。
まとめ
Switchyardは、リクエストごとに最適なLLMをプールから動的に選択し、コスト、レイテンシ、成功率のバランスを最適化するルーティング層です。主要なゲートウェイ経由での利用、ローカルデモサーバーとしての実行、またはサービスへの直接組み込みが可能で、TOMLで設定可能な複数のルーティング戦略を提供します。
関連
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト