LLM ワークロードは、可変のリクエスト長、予測不能なトークン生成、変動する GPU 使用率といった固有の課題に直面します。従来のロードバランサーは、バックエンドの負荷を把握することなくトラフィックを分散するため、インスタンスの負荷が不均一になり、スループットが低下します。EAS は、インテリジェントスケジューリング と 視覚的な操作 を 1 つのサービスに統合した LLM インテリジェントルーターにより、この課題を解決します。リアルタイムの LLM メトリクスに基づいてコンピュートと GPU メモリを動的に調整し、負荷時でも高いスループットを維持します。さらに、ライブモニタリング、ホット構成更新、アイデンティティの隔離、ユーザーごとの API キー管理を可能にする、組み込みの WebUI ワークベンチを提供します。
仕組み
基本概念
LLM インテリジェントルーターサービスは、2 つのコアコンポーネントで構成されています。
LLM ゲートウェイ:トラフィックの入口とリクエスト処理。 ユーザーリクエストを受信し、
LLM スケジューラからの決定に基づいて、ターゲットの推論インスタンスに転送します。HTTP (HTTP_SSE) および WebSocket プロトコルをサポートします。
デフォルトで Anthropic API プロトコル変換が有効になっています。Anthropic 仕様でフォーマットされたリクエストは、OpenAI 互換のフォーマットに自動的に変換されます。これにより、コードを変更することなく、OpenAI API 標準に準拠したモデルサービスで Claude Code のようなツールを使用できます。詳細については、「ルーターでの Claude Code の使用」をご参照ください。
LLM スケジューラ:スケジューリングエンジン。 設定されたスケジューリングポリシー (例:プレフィックスキャッシュルーティング) に基づき、各リクエストに最適なターゲットインスタンスを選択します。
リクエストフロー
リクエストフローは以下の通りです。
リクエストの受信。 ユーザーリクエストは
LLM ゲートウェイに到達します。すべてのバックエンド推論インスタンスが高負荷の場合、ゲートウェイはリクエストをキューに入れます。インテリジェントスケジューリング。
LLM ゲートウェイは、スケジューリングリクエストをLLM スケジューラに送信します。LLM スケジューラは、設定されたポリシーと各インスタンスからのリアルタイムメトリクスに基づいて、最適なインスタンスを選択します。リクエストの転送。 スケジューリング結果を受信した後、
LLM ゲートウェイはユーザーリクエストを選択されたインスタンスに直接転送します。
フェールオーバーメカニズム
このサービスには、可用性を維持するために、複数階層のフォールトトレランスが備わっています。
LLM ゲートウェイ: 少なくとも 2 つのインスタンスをデプロイしてください。1 つのインスタンスに障害が発生した場合、トラフィックは自動的に正常なインスタンスに切り替わります。
LLM スケジューラ: スケジューラに障害が発生した場合、
LLM ゲートウェイは自動的にラウンドロビンルーティングにフォールバックします (スケジューリング性能は低下しますが、可用性は維持されます)。スケジューラが復旧すると、インテリジェントスケジューリングが自動的に再開されます。推論インスタンス: インスタンスに障害が発生した場合、
LLM スケジューラはそのインスタンスを直ちに利用可能プールから削除します。復旧して自動的に再追加されるまで、そのインスタンスに新しいトラフィックはルーティングされません。
制限事項
サービスグループの要件:
LLM インテリジェントルーターは、推論サービスと同一のサービスグループにデプロイする必要があります。推論サービスとは異なるサービスグループにデプロイした場合、ルーターは機能しません。
同一のサービスグループ内では、LLM インテリジェントルーターサービスとキューサービスは共存できません。
LLM インテリジェントルーターは新しい推論サービスの作成時にのみ設定してください。 サービスのグループメンバーシップは作成時に決定され、その後変更することはできません。そのため、インテリジェントルーティングは新しい推論サービスの作成時にのみ設定できます。サービスの更新では、既存のサービスに対してインテリジェントルーティングを追加または変更することはできません。
推論エンジンの要件: vLLM と SGLang のみがサポートされています。
NLB および Nacos との非互換性: NLB または Nacos を介してアクセスされる推論サービスは、LLM インテリジェントルーターを同時に使用することはできません。
複数の推論インスタンスのデプロイ: LLM インテリジェントルーターは、複数の推論インスタンスがデプロイされている場合にのみメリットがあります。
クイックスタート
ステップ 1:LLM インテリジェントルーター サービスのデプロイ
PAI コンソールにログインし、ページ上部でターゲットリージョンを選択します。
左側のナビゲーションペインで、Elastic Algorithm Service (EAS) をクリックし、対象のワークスペースを選択して、EAS に移動します。
Deploy Service をクリックし、Scenario-based Model Deployment>Deploy LLM gateway を選択します。
パラメータを設定します。
パラメータ
説明
[Basic Information]
[Service Name]
任意のサービス名です。例:
llm_gateway。[Resource Information]
[Deployment Resources]
LLM Gatewayのリソース設定では、高可用性を確保するため、Number of Replicas のデフォルトは 2 です。このデフォルト値を維持することをお勧めします。デフォルトのリソース割り当ては 4 vCPU と 8 GB のメモリです。[Scheduling configuration]
LLM スケジューラのリソース構成です。デフォルトは 2 vCPU および 4 GB のメモリです。[Scheduling Policy]
バックエンド推論インスタンスを選択するために使用される負荷分散ポリシーです。デフォルトはPrefix cacheです。詳細な比較と選択のガイダンスについては、「スケジューリングポリシーリファレンス」をご参照ください。
[Advanced Features]
[Redis config]
オプションです。ユーザー情報と使用統計を永続化します。Redis がない場合、サービスはローカルメモリを使用し、サービス停止時にデータが失われます。詳細については、「Redis 永続ストレージの構成」をご参照ください。
Deploy をクリックします。サービスステータスが Running に変わると、デプロイは完了です。
デプロイ後、group_<LLM インテリジェントルーターサービス名> という名前のサービスグループが自動的に作成されます。 これを表示するには、Elastic Algorithm Service (EAS) ページに移動し、Canary Release タブをクリックします。

ステップ 2:LLM サービスのデプロイ
新しい LLM サービスを作成する際に、インテリジェントルーターを構成します。Update を通じて既存のサービスに追加することはできません。
次の例では Qwen3-8B を使用します。
Deploy Service をクリックし、次に Scenario-based Model Deployment>LLM Deployment を選択します。
次のパラメータを設定します。
パラメータ
値
[Basic Information]
[Model Settings]
Public Modelを選択し、Qwen3-8B を検索して選択します。
[Inference Engine]
vLLM を選択します (推奨、OpenAI API 互換)。
説明LLM インテリジェントルーターに Prefix cache スケジューリングポリシーが設定されており、推論エンジンとして vLLM を選択した場合は、vLLM でプレフィックスキャッシュが有効になっていることを確認してください。
[Deployment Template]
Single node を選択します。システムは、テンプレートに基づいて推奨されるインスタンスタイプ、イメージ、およびその他のパラメータを自動的に入力します。
[Features]
[LLM Intelligent Router]
トグルを有効にし、ステップ 1 でデプロイした LLM インテリジェントルーター サービスをドロップダウンリストから選択します。
Deploy をクリックします。 デプロイには約 5 分かかります。 サービスステータスが Running に変わると、デプロイは完了です。
ステップ 3:サービスのテスト
すべてのリクエストは、個々のバックエンド推論サービスの URL ではなく、LLM インテリジェントルーター サービスのアクセス URL に送信します。
グループ内のいずれかの推論サービスでトラフィック分散が有効になっている場合、グループの集約トラフィックエントリを通じて送信されたリクエストは、インテリジェントルーターをバイパスし、スケジューリングが失敗する可能性があります。
グループ内でトラフィック分散が有効になっているのはインテリジェントルーター サービスのみであることを確認してください。インテリジェントルーターの 専用トラフィックエントリ URL を通じてリクエストを送信してください。
アクセス認証情報の取得
LLM インテリジェントルーターサービスをクリックしてOverviewページを開きます。Basic Informationセクションで、View Endpoint Informationをクリックします。
[呼び出し情報] ページで、Service-specific Traffic Entry Internet Endpoint と [トークン] をコピーします。

重要ここに表示されるサービス トークンは管理者の認証情報です。管理者が WebUI ワークベンチを通じて個々の API キーをユーザーに割り当てている場合、各ユーザーは以下の例の
<YOUR_TOKEN>を自分の API キーに置き換える必要があります。リクエスト URL の構築と呼び出しの送信
URL 形式:
<LLM インテリジェントルーター URL>/<LLM サービス API パス>例:
http://********.pai-eas.aliyuncs.com/api/predict/group_llm_gateway.llm_gateway/v1/chat/completions
リクエスト例:
# <YOUR_GATEWAY_URL> と <YOUR_TOKEN> を実際の値に置き換えてください curl -X POST "<YOUR_GATEWAY_URL>/v1/chat/completions" \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -N \ -d '{ "messages": [{"role": "user", "content": "こんにちは"}], "stream": true }'レスポンス例:
data: {"id":"chatcmpl-9a9f8299*****","object":"chat.completion.chunk","created":1762245102,"model":"Qwen3-8B","choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]} data: {"id":"chatcmpl-9a9f8299*****","object":"chat.completion.chunk","created":1762245102,"model":"Qwen3-8B","choices":[{"index":0,"delta":{"content":"<think>","tool_calls":[]}}]} ... data: [DONE]
サービスのデプロイ後、ライブモニタリングや構成管理を含む視覚的な管理のために WebUI ワークベンチにアクセスしてください。詳細については、「LLM インテリジェントルーティング ワークベンチの使用」をご参照ください。
Redis 永続ストレージの構成
LLM インテリジェントルーターには、マルチユーザー管理、ロールベースのアクセス制御、監査ログ、使用状況ダッシュボードが組み込まれています。外部の Redis インスタンスは、サービスの再起動後もユーザーデータと使用統計を永続化します。Redis がない場合、サービスはローカルメモリを使用し、サービス停止時にすべてのデータが失われます。本番デプロイメントでは、Redis ストレージを構成してください。
ステップ 1: Tair (Redis) インスタンスのプロビジョニング
Tair 購入ページにアクセスし、インスタンスを購入します。
重要デプロイする予定の LLM インテリジェントルーターサービスと同じ Virtual Private Cloud (VPC) と vSwitch を選択してください。その他のオプションは必要に応じて構成します。最小仕様から開始してください。
LLM インテリジェントルーターサービスの vSwitch CIDR ブロックをインスタンスの許可リストに追加します。詳細については、「許可リストの構成」をご参照ください。
ターゲットインスタンス ID をクリックして詳細ページを開き、接続情報を確認します。この情報は、LLM インテリジェントルーターサービスをデプロイする際に必要になります。
接続アドレスとポート: インスタンス情報 > 接続情報 で、VPC 接続アドレスとポート番号を取得します。
ユーザー名とパスワード: アカウント管理 ページで、デフォルトアカウントを確認します。インスタンス作成時にパスワードが設定されていない場合は、そこでパスワードを設定またはリセットしてください。デフォルトアカウントの代わりに新しいアカウントを作成することもできます。
ステップ 2: デプロイ時の Redis の構成
基本構成に加えて、VPC 設定と Redis 接続パラメーターを指定して、永続ストレージを有効にします。
VPC の構成: VPC と vSwitch は、ステップ 1 の Tair インスタンスと一致させる必要があります。これにより、LLM インテリジェントルーターサービスが Tair インスタンスにアクセスできるようになります。
Redis の構成:
コンソール
[Advanced Features] セクションで、[Redis config] を有効にし、以下を入力します。
パラメーター
説明
[Redis Address]
Tair インスタンスの接続アドレス。形式は
<VPC アドレス>:<ポート>で、例はr-uxxx.redis.rds.aliyuncs.com:6379です。[Redis Username]
Tair インスタンスのユーザー名です。
[Redis Password]
Tair インスタンスのパスワードです。
JSON
JSON ボディの
llm_gatewayノードに、次のパラメーターを追加します。パラメーター
説明
enable_user_managementユーザー管理を有効にします。デフォルトは
trueです。redis_addrsTair インスタンスの接続アドレス。
<VPC address>:<port>形式で、たとえばr-uxxx.redis.rds.aliyuncs.com:6379のようになります。redis_usernameTair インスタンスのユーザー名です。
redis_passwordTair インスタンスのパスワードです。
JSON の例:
{ "llm_gateway": { "enable_user_management": true, "redis_addrs": "r-uxxx.redis.rds.aliyuncs.com:6379", "redis_username": "xxx", "redis_password": "xxx" } }
高度な構成 (JSON)
JSON デプロイでは、LLM Gateway のリソース仕様とリクエスト処理の動作を設定できます。
設定エントリ: Inference Service ページで、Deploy Service をクリックします。Custom Model Deployment セクションで、JSON Deployment をクリックします。
構成例
{
"cloud": {
"computing": {
"instance_type": "ecs.c7.large"
}
},
"llm_gateway": {
"max_queue_size": 128,
"retry_count": 2,
"wait_schedule_timeout": 5000,
"wait_schedule_try_period": 500
},
"llm_scheduler": {
"cpu": 2,
"memory": 4000,
"policy": "prefix-cache"
},
"metadata": {
"group": "group_llm_gateway",
"instance": 2,
"name": "llm_gateway",
"type": "LLMGatewayService",
"rpc": {
"disable_auth": true
}
}
}パラメーター
パラメーター | 説明 | |
metadata | type | 必須。固定値: |
instance | 必須。 | |
cpu | vCPU count per | |
memory | Memory (GB) for | |
group | LLM インテリジェントルーターサービスが属するサービスグループです。 | |
rpc.disable_auth | 必須。 | |
cloud.computing.instance_type |
| |
llm_gateway | max_queue_size |
リクエストがバックエンドの処理能力を超えた場合、超過分はここにキューイングされ、処理能力が利用可能になると送信されます。 |
retry_count | バックエンド推論インスタンスが失敗した場合のリトライ回数です。デフォルトは 2 です。失敗時には、リクエストは別のインスタンスでリトライされます。 | |
wait_schedule_timeout | すべてのバックエンドインスタンスがフル稼働状態の場合、ゲートウェイは一定間隔でスケジューリングをリトライします。このパラメーターでは、ゲートウェイがリクエストのスケジューリングを試行する合計時間を設定します。デフォルトは 5000 (ミリ秒) です。 | |
wait_schedule_try_period | スケジューリングのリトライ間隔です。デフォルトは 500 (ミリ秒) です。 | |
llm_scheduler | cpu |
|
memory |
| |
policy | スケジューリングポリシー。デフォルトは | |
prefill_policy | policy が pd-split に設定されている場合、プレフィルおよびデコードステージのスケジューリングポリシーを個別に指定します。有効な値:prefix-cache、llm-metric-based、least-request、least-token。 | |
decode_policy | ||
付録
ルーターでの Claude Code の使用
Claude Code に、EAS インテリジェントルーターサービスが提供するベース URL とトークンを設定します。
# <YOUR_GATEWAY_URL> と <YOUR_TOKEN> を実際の値に置き換えてください export ANTHROPIC_BASE_URL=<YOUR_GATEWAY_URL> export ANTHROPIC_AUTH_TOKEN=<YOUR_TOKEN>Claude Code を実行します。
claude "Python で Hello World を書いて"
スケジューリングポリシーのリファレンス
適切なスケジューリングポリシーを選択することが、LLM インテリジェントルーターを最大限に活用する鍵です。次の表では、各ポリシーのロジック、最適なユースケース、利点、および考慮事項を比較します。
ポリシー名 | JSON 値 | 仕組み | 最適な用途 | 利点 | 考慮事項 |
[Prefix cache] | prefix-cache | (推奨) 複合ポリシーです。同じ会話履歴 (プロンプト) を持つリクエストを、一致する KV キャッシュがすでにあるインスタンスにルーティングします。 | 固定のシステムプロンプトを使用するマルチターンチャットボットおよび RAG システム。 | TTFT を大幅に削減し、マルチターンのパフォーマンスとスループットを向上させます。 | 推論エンジンでプレフィックスキャッシュを有効にする必要があります。 |
[Minimum Requests] | least-request | 新しいリクエストを、現在処理中のリクエストが最も少ないインスタンスにルーティングします。 | リクエストの複雑さが比較的均一な (トークン長と生成長が類似している) ワークロード。 | シンプルで効率的です。インスタンス間でリクエスト数を迅速にバランスさせます。 | 実際のリクエスト負荷を考慮しません。短いリクエストを処理するインスタンスがアイドル状態になる一方、長いリクエストを処理するインスタンスが過負荷になる可能性があります。 |
[Minimum tokens] | least-token | 新しいリクエストを、現在処理中の合計トークン数 (入力 + 出力) が最も少ないインスタンスにルーティングします。 | トークン数が処理コストを確実に反映するワークロード。 | 最小リクエストよりも、実際のインスタンス負荷をより正確に反映します。 | トークン数の推定に依存します。すべての推論エンジンがこのメトリックを報告するわけではありません。 |
[Static PD Disaggregation] | pd-split | インスタンスを、それぞれ独自のスケジューリングポリシーを持つプレフィルグループとデコードグループに事前に分割する必要があります。 | プレフィルステージとデコードステージのコンピュートおよびメモリアクセスの特性が大きく異なり、分離することで明確な利点が得られるワークロード。 | ステージごとの最適化により、ハードウェア利用率を最大化します。 | 構成が複雑です。モデルとワークロードの深い理解、およびプレフィルとデコードの個別のサービスデプロイメントが必要です。 |
パフォーマンスベンチマーク
Distill-Qwen-7B、QwQ-32B、および Qwen2.5-72b でのテストでは、LLM インテリジェントルーターを使用した場合の推論速度とスループットの向上が示されています。テスト環境と結果を以下に説明します。
結果はワークロードによって異なります。ご自身のユースケースでパフォーマンスを検証するために、独自のベンチマークを実行してください。
テスト環境
スケジューリングポリシー:prefix-cache
テストデータセット:ShareGPT_V3_unfiltered_cleaned_split.json (マルチターン会話データセット)
推論エンジン:vLLM (0.7.3)
バックエンドインスタンス:5
テスト結果
テストモデル | Distill-Qwen-7B | QwQ-32B | Qwen2.5-72b | ||||||
インスタンスタイプ | ml.gu8tf.8.40xlarge | ml.gu8tf.8.40xlarge | ml.gu7xf.8xlarge-gu108 | ||||||
同時実行数 | 500 | 100 | 100 | ||||||
メトリック | ルーター不使用時 | ルーター使用時 | 改善 | ルーター不使用時 | ルーター使用時 | 改善 | ルーター不使用時 | ルーター使用時 | 改善 |
成功したリクエスト | 3698 | 3612 | - | 1194 | 1194 | - | 1194 | 1194 | - |
ベンチマーク期間 | 460.79 s | 435.70 s | - | 1418.54 s | 1339.04 s | - | 479.53 s | 456.69 s | - |
合計入力トークン | 6605953 | 6426637 | - | 2646701 | 2645010 | - | 1336301 | 1337015 | - |
合計生成トークン | 4898730 | 4750113 | - | 1908956 | 1902894 | - | 924856 | 925208 | - |
リクエストスループット | 8.03 req/s | 8.29 req/s | +3.2% | 0.84 req/s | 0.89 req/s | +5.95% | 2.49 req/s | 2.61 req/s | +4.8% |
出力トークンスループット | 10631.17 tok/s | 10902.30 tok/s | +2.5% | 1345.72 tok/s | 1421.08 tok/s | +5.6% | 1928.66 tok/s | 2025.92 tok/s | +5.0% |
合計トークンスループット | 24967.33 tok/s | 25652.51 tok/s | +2.7% | 3211.52 tok/s | 3396.38 tok/s | +5.8% | 4715.34 tok/s | 4953.56 tok/s | +5.0% |
平均 TTFT | 532.79 ms | 508.90 ms | +4.5% | 1144.62 ms | 859.42 ms | +25.0% | 508.55 ms | 389.66 ms | +23.4% |
中央値 TTFT | 274.23 ms | 246.30 ms | - | 749.39 ms | 565.61 ms | - | 325.33 ms | 190.04 ms | - |
P99 TTFT | 3841.49 ms | 3526.62 ms | - | 5339.61 ms | 5027.39 ms | - | 2802.26 ms | 2678.70 ms | - |
平均 TPOT | 40.65 ms | 39.20 ms | +3.5% | 68.78 ms | 65.73 ms | +4.4% | 46.83 ms | 43.97 ms | +6.1% |
中央値 TPOT | 41.14 ms | 39.61 ms | - | 69.19 ms | 66.33 ms | - | 45.37 ms | 43.30 ms | - |
P99 TPOT | 62.57 ms | 58.71 ms | - | 100.35 ms | 95.55 ms | - | 62.29 ms | 54.79 ms | - |