vllm-project/router
A high-performance and light-weight router for vLLM large scale deployment
解決する問題
vLLM を大規模に実行する場合、多くのワーカーインスタンスが毎秒数千のリクエストを処理します。スマートなルーターがないと、トラフィックが不均一に分散され、一部のワーカーが過負荷になり、他のワーカーがアイドル状態になる可能性があります。また、繰り返されるプロンプトは同じプレフィックスを再計算することで計算リソースを浪費します。vLLM Router は、リクエストをインテリジェントに分散し、マルチターンセッションを同じワーカーに維持し、プリフィルフェーズ(プロンプトの読み取りと分析)とデコードフェーズ(トークン生成)を分離してハードウェア使用を最適化する軽量な転送レイヤーとして機能することで、この問題を解決します。
仕組み
ルーターは vLLM ワーカーの前に配置され、OpenAI 互換の API 呼び出しを受け取ります。各リクエストに最適なワーカーを選択するために、ラウンドロビン、ランダム、一貫性ハッシュ(セッション/ユーザーを同じワーカーにルーティング)、2 のべき乗(2 つのランダムなワーカーから最も負荷の低いものを選択)、キャッシュ認識(プレフィックスキャッシュ再利用率が最も高いワーカーにリクエストをルーティング)など、複数の負荷分散ポリシーのいずれかを使用します。プリフィル/デコード分離の場合、プリフィルとデコードのワーカーのプールを別々に維持し、各フェーズを適切にルーティングします。また、指数バックオフ付きのリトライロジック、ワーカーを保護するために自動的に開閉するサーキットブレーカー、Prometheus メトリクス、オプションの Kubernetes サービスディスカバリも含まれています。有効にすると、リクエストを vLLM の Rust gRPC ワーカー(grpc:// URL を使用)に転送でき、WASM プラグインをロードしてカスタムのリクエスト時ミドルウェア(入力検証や変換など)を実行できます。
対象ユーザー
このルーターは、vLLM を大規模にデプロイするチーム、特に Kubernetes で多数のレプリカを実行しているチームや、プリフィルとデコードに専用ハードウェアを使用しているチーム向けです。マルチターンチャットが多いワークロード(セッションのスティッキネスを維持)、数ショットやエージェントループなどの繰り返しプロンプト(キャッシュを活用)、リトライ、サーキットブレーキング、メトリクスを細かく制御する必要がある高スループットサービスに適しています。
ハイライト
- 複数の負荷分散ポリシー:ラウンドロビン、ランダム、一貫性ハッシュ、2 のべき乗、キャッシュ認識。
- NIXL、NCCL、Mooncake コネクタをサポートするプリフィル/デコード分離。
- Kubernetes サービスディスカバリがラベルセレクタを介してワーカーポッドを自動的に検出。
- エンタープライズグレードの回復力:指数バックオフとジッター付きリトライ、設定可能なステートマシンを備えたサーキットブレーカー。
- gRPC バックエンドサポートにより、リクエストを vLLM の Rust
Inferenceワーカーにルーティング。 - 保護されたルートでのカスタムリクエスト処理のためのオプションの WASM ミドルウェア。
- 監視用の Prometheus メトリクスエンドポイント。
- 軽量で高性能、Rust で記述され、Python ランチャーが利用可能。
関連
- Dispatch
- Dispatch
- Dispatch
- プロジェクト
- Dispatch