モデルルートの管理
GPUStack はモデルルートの管理機能を提供します。モデルルートを使うと、モデルの別名、トラフィック分散、障害復旧、パブリックモデルとプライベートモデルに共通の入口を実現できます。
ルートの作成
Routesページに移動します。Add Routeをクリックします。- 提供するモデル名をルートの
Nameに入力します。 Route Targetsを 1 つ以上選択します。Saveボタンをクリックします。
ルートターゲットの管理
Routesページに移動します。- ターゲットを管理するモデルルートを展開します。
- 不要なターゲットの
Operations列にあるDeleteボタンをクリックします。 Operations列のEditボタンをクリックします。ルート編集ページで、モデルルートのターゲットを追加または削除するか、ターゲットのトラフィックの重みを調整します。- ルート編集ページで、このルートのフォールバックターゲットを選択または解除します。
負荷分散
モデルルートに複数のターゲットがある場合、GPUStack のゲートウェイ側の LB プラグインが各リクエストの処理先を決定します。ルーティング動作はルート構成から導かれます。ターゲットの重みと、有効なポリシープラグイン(セッションアフィニティ、処理中リクエスト最小、判定サービスルーティング)を組み合わせて、ルートの Route By モードを決定します。
Route By
ルート一覧の Route By 列は、ルートのターゲット間でリクエストをどのように分散するかを示します。これはターゲットの重みと有効なポリシープラグインから導かれるもので、ルート変更のたびに GPUStack が計算します。クライアントから入力する値ではありません。
| Route By | 構成 | ルーティング動作 |
|---|---|---|
Target Weight | すべてのターゲットの重みが 0 より大きい | 重みに応じてターゲット間でトラフィックを分配。すべてのターゲットで重みが 0 より大きい必要があります |
Policy | 重みがなく、ルートでポリシープラグイン(セッションアフィニティ、処理中リクエスト最小、判定サービスルーティング)が 1 つ以上有効 | 有効なポリシープラグインがターゲットを選択 |
| (ラウンドロビン) | ターゲットの重みも有効なポリシーもない | ターゲット間でラウンドロビン |
注意事項:
- 重みとポリシーは排他的です。すべてのターゲットに重みを指定するか、すべて未指定にする必要があります。混在するとルートは利用できません。すべてのターゲットの重みを 0 より大きくするか、すべて 0 に設定してください。
- フォールバックターゲットは候補に含まれません。その重みはモードの判定では無視されます。
- モードが表すのは構成の形であり、稼働中のインスタンスの健全性ではありません。すべてに重みを設定したルートは、インスタンスが停止していても
Target Weightのままです。
ポリシープラグイン
ポリシープラグインは Policy ルーティングに参加します。各プラグインがターゲットごとのスコアを返し、ゲートウェイが重み付き合計の最も良いターゲットを選択します。各プラグインの Weight(正の数、小数可)は合計への寄与を調整します。未設定の場合は、プラグインの組み込みの既定値を使用します。
セッションアフィニティ
同じセッションのリクエストを同じターゲットへ送り、プロンプトキャッシュを維持します。セッションは、順序付きのキーの連鎖によって識別されます。
Session Keys (Ordered, First Match Wins)— 順序付きのキーソースの連鎖です。最初に値が得られたものを使用します。各エントリーは、リクエストのHeader(session-idなど)またはBody Key(prompt_cache_keyなど)です。セッションアフィニティを有効にする場合は、セッションキーを 1 つ以上指定する必要があります。
処理中リクエスト最小
ターゲットを処理中リクエスト数で評価し、その数が最も少ないターゲットへのルーティングを優先します。
セッションアフィニティと処理中リクエスト最小を両方有効にすると、前者はセッションが固定された所有ターゲットを、後者は空いているターゲットを高く評価します。後者のプラグインの票差が前者の票差を上回った場合にのみ、セッションは所有ターゲットから移動します。既定の重みでは、ターゲット数が 2~3 のルートでは移動しやすく、5 以上のルートでは移動しません。プラグインの Weight を調整して、このバランスを変えられます。具体的な数値と例は、LB ポリシーによるルーティングを参照してください。
判定サービスルーティング
タスクの難易度に基づいてターゲットを評価します。各リクエストは切り詰められ、モデル選択の質問とともに、Jev 互換の判定サービスに送られます。このサービスは Model - Provider ページの TypeSafe Decision Service (Jev) プロバイダーです。回答は重み付きの票になります。判定の失敗、タイムアウト、2xx 以外の応答があった場合は、通知せずに他のプラグインへフォールバックします。
設定:
Decision Service— 判定サービスのプロバイダー(必須)。Decision Model— ルート単位の判定モデル。このポリシーを有効にすると必須です。選択肢は、選択したプロバイダーにキャッシュされたエンジンから読み込まれます。未設定または無効な場合は判定ルーティングをスキップし、他のプラグインにフォールバックします。Instructions— 判定サービスに送るモデル選択の質問への追加指示。Model Criteria— モデル名と能力説明の対応。判定サービスがモデルを選ぶ根拠となります。条件を 1 つ以上指定する必要があります。ルートのターゲットからエントリーを生成できます。Weight— 他のポリシーと組み合わせる場合の重み付き合計への寄与。未設定の場合は、組み込みの既定値(10)を使用します。
小さいモデルと大きいモデルの間でルーティングする一連の例は、LB ポリシーによるルーティングを参照してください。
フォールバックターゲット(fallback_status_codes)は別のフォールバックプラグインが処理し、LB 候補の選択には参加しません。ルートは、LB 候補への分配と障害復旧用のフォールバックターゲットを組み合わせられます。
ルートへのアクセスの許可
Routesページに移動します。- 認可設定を変更するルートを探します。
Operations列のAccess Settingsボタンをクリックします。- 必要に応じて
Access Scopeを変更します。 Allowed Usersスコープでは、このルートへのアクセスを許可するユーザーを選択し、>をクリックして確認します。Saveボタンをクリックします。
ルートの編集
Routesページに移動します。- 編集するルートを探します。
Operations列のEditボタンをクリックします。- 必要に応じて名前、モデルカテゴリー、説明、ルートターゲットを変更します。
Saveボタンをクリックします。
ルートの削除
Routesページに移動します。- 削除するルートを探します。
Operations列のDeleteボタンをクリックします。- 削除を確認します。