すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:カナリーリリース

最終更新日:Mar 03, 2026

サービスグループは、統一されたトラフィック流入ポイントを介してサービストラフィックを処理する複数のサブサービスを管理します。システムは、トラフィック割り当てポリシーに基づいて、着信トラフィックを個別のサービスに分散します。このアプローチにより、カナリーリリース、Auto Scaling、異種ハードウェアリソースのスケジューリングなど、さまざまなビジネスシナリオをサポートします。本トピックでは、サービスグループの作成方法、そのトラフィック流入ポイントの確認方法、およびトラフィック割り当てポリシーの変更方法について説明します。

シナリオ

  • カナリーリリース

    本番サービスとカナリーサービスの両方を同一のグループに追加し、カナリーサービスには少ないトラフィックを割り当てます。新バージョンをリリースする際は、まずカナリーサービスを更新し、その動作を観察します。問題が発生した場合は、カナリーサービスをロールバックするか、停止してすべてのトラフィックを本番サービスに切り替えます。正常に動作した場合は、本番サービスを完全に更新した後、カナリーサービスのレプリカ数をゼロにスケールインするか、最小限のトラフィックのみを維持します。

  • サブスクリプションおよび従量課金による Auto Scaling

    同一のグループ内で、ベースライン需要を満たすために固定数のレプリカを持つ専用リソースグループにサブスクリプション型サービスをデプロイします。また、コスト削減のため、パブリックリソースグループに従量課金型サービスをデプロイし、必要に応じて弾性的にスケールさせます。

  • 異種ハードウェアリソースの活用

    GPU 加速のシナリオにおいて、サービスデプロイ後に特定のリージョンで一部の GPU 型番が利用不可または在庫切れとなる場合があり、通常のスケールアウトが妨げられることがあります。この場合、サービスグループ機能を活用して、同一のサービスグループ内に異なる GPU 型番を備えたサービスを動的に作成することで、さまざまな CUDA 環境への対応が可能になります。これにより、複数のサービスが異種リソースを活用して同一のビジネスシナリオをサポートできます。サービスグループのトラフィック流入ポイントは変更されないため、フロントエンドは透過的であり、影響を受けません。

サービスグループの作成

サービスを作成する際に、その所属先となるサービスグループを指定します。この操作により、該当のサービスグループ(存在しない場合は自動的に作成)が生成され、サービスがそのグループに追加されます。

説明

サービス作成時に指定したサービスグループ名が存在しない場合、システムが自動的にグループを作成します。既に存在する場合は、新しいサービスがそのグループに参加します。サービスグループ内の最後のサービスを削除すると、グループは自動的に削除されます。

以下の例では、pmml という名前のサービスグループを作成し、pmml_prod および pmml_grey の 2 つのサービスをそのグループに割り当てます。

コンソール

  1. PAI コンソールにログインします。ページ上部からリージョンを選択し、目的のワークスペースを選択して、Elastic Algorithm Service (EAS) をクリックします。

  2. Canary Release タブで、Create Group and Service をクリックします。

  3. Custom Deployment ページでパラメーターを設定し、Deploy をクリックします。

    以下に示すとおり:

    • Service Name: UI の指示に従って設定します。例: pmml_prod

    • Group: New Group を選択します。例: pmml

    その他のパラメーターの詳細については、「カスタムデプロイメント」をご参照ください。

手順 2~3 を繰り返して、pmml_grey サービスを作成し、pmml サービスグループに割り当てます。

作成が完了したら、Canary Release タブに移動し、グループ名 pmml をクリックして、グループ内のサービス一覧を確認します。

image

重要

後からグループに追加されたサービスは、デフォルトでトラフィックを処理しません。「トラフィック割り当てポリシーの変更」をご参照ください。

EASCMD クライアント

  1. service.json サービス構成ファイルを準備します。例:

    pmml_prod サービスの構成ファイルを表示します

    {
      "name":"pmml_prod",
      "model_path":"http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr_xxxx.pmml",
      "processor":"pmml",
      "metadata":{
        "cpu":1,
        "instance":4,
        "group":"pmml"
      }
    }

    pmml_grey サービスの構成ファイルを表示します

    {
      "name":"pmml_grey",
      "model_path":"http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr_xxxx.pmml",
      "processor":"pmml",
      "metadata":{
        "cpu":1,
        "instance":1,
        "group":"pmml"
      }
    }

    group フィールドはサービスグループ名を指定します。その他のパラメーターについては、「JSON デプロイメント」をご参照ください。

  2. サービスおよびサービスグループを作成します。

    EASCMD クライアントにログインした後、create コマンドを使用します。クライアントのセットアップ手順については、「クライアントのダウンロードと認証」をご参照ください。例:

    $ eascmd create service.json
  3. サービスおよびグループの詳細を確認します。

    ls コマンドを使用します。例:

    $ eascmd ls

    システムからの応答例:

    [RequestId]: 716BEBFC-E8A4-51FD-A3F7-56376B167923
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    |        SERVICENAME        | INSTANCE | CPU | MEMORY |      CREATETIME      |      UPDATETIME      | STATUS  | WEIGHT | TRAFFICSTATE |       SERVICEGROUP        |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    | pmml_prod                 |        4 |   1 | 1000M  | 2022-06-05T14:30:49Z | 2022-06-05T14:30:49Z | Running |     80 | grouping     | pmml                      |
    | pmml_grey                 |        1 |   1 | 1000M  | 2022-06-05T14:31:38Z | 2022-06-05T14:31:38Z | Running |     20 | grouping     | pmml                      |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+

    場所:

    • SERVICEGROUPpmml であることは、両サービスが pmml サービスグループに属していることを示します。

    • TRAFFICSTATEgrouping であることは、両サービスがレプリカ数に応じた 80:20 の比率でトラフィックを共有していることを意味します。

トラフィック流入ポイントの確認

サービスグループには統一されたトラフィック流入ポイントがあります。また、グループ内の各サービスにも独自の独立した流入ポイントがあります。

サービスグループのトラフィック流入ポイント

<endpoint>/api/predict/<group_name>

例:

http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml

Canary Release タブで、サービスグループのトラフィック流入ポイントを確認できます。このアドレスに送信されたトラフィックは、現在のポリシーに基づいて個別のサービスに分散されます。サービスをグループから追加または削除しても、このアドレスは変更されないため、オンラインデバッグに適しています。

image

個別サービスのトラフィック流入ポイント

<endpoint>/api/predict/<group_name>.<service_name>

例:

http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml.pmml_prod

Inference Service タブで、個別サービスの流入ポイントを確認できます。このアドレスはサービスのライフサイクルに紐づいており、常にその特定のサービスにトラフィックをルーティングします。サービスが削除されると、このアドレスも破棄されます。グループ単位のトラフィック切り替え後は、このアドレスを使用してサービスにアクセスおよびデバッグを行います。

image

トラフィック割り当てポリシーの変更

EAS では、以下の 2 種類のトラフィック割り当て方法をサポートしています。

  • Replica Allocation: トラフィックは、各サービスの推論レプリカ数に応じて動的に割り当てられます。たとえば、サービス A が 1 レプリカ、サービス B が 3 レプリカの場合、A には 25 %、B には 75 % のトラフィックが割り当てられます。サービスのトラフィック割り当てを無効化すると、そのサービスはグループ内のトラフィック配分から除外されますが、個別には引き続きアクセス可能です。

  • Custom Allocation: トラフィックは、割り当てられた重みに基づいて割り当てられます。たとえば、サービス A の重みが 100、サービス B の重みが 400 の場合、A には 20 %、B には 80 % のトラフィックが割り当てられます。

重要

いずれの方法を採用しても、サービスのトラフィック割り当てを無効化すると、そのサービスはグループ内のトラフィック配分から除外されますが、個別には引き続きアクセス可能です。

変更方法は以下のとおりです。

説明

API を使用して、サービスのトラフィック重みおよびトラフィック状態を調整できます。詳細については、「サービスのトラフィック重みおよびトラフィック状態の調整」をご参照ください。

レプリカ単位の割り当て

コンソール

対応する列にあるトラフィック割り当てスイッチを切り替えます。ON はサービスがトラフィックを処理することを、OFF は処理しないことを意味します。

image

EASCMD

release コマンドを使用します。クライアントのセットアップについては、「クライアントのダウンロードと認証」をご参照ください。コマンド構文:

$ eascmd release <service_name> -s grouping|standalone

ここで:

  • <service_name>: 対象サービス名に置き換えます。

  • grouping|standalone: 望ましい状態を指定します。grouping はサービスがトラフィックを処理することを意味し、standalone は処理しないことを意味します。

例:

  • サービス pmml_greystandalone(トラフィックなし)に設定するには、以下のコマンドを実行します。

    $ eascmd release pmml_grey -s standalone

    システムからの応答例:

    Confirmed to release service [pmml_grey] to group traffic [Y/n]yes
    [RequestId]: 40C787DF-8900-5F7A-8A01-30F7D5A8BF3B
    [OK] Service [pmml_grey] has entered the traffic state: standalone

    ステータスを確認するには、eascmd ls を実行します。応答例:

    [RequestId]: 83BE3FBB-8CE2-5008-B435-1938A20B13AA
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    |        SERVICENAME        | INSTANCE | CPU | MEMORY |      CREATETIME      |      UPDATETIME      | STATUS  | WEIGHT | TRAFFICSTATE |       SERVICEGROUP        |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    | pmml_prod                 |        4 |   1 | 1000M  | 2022-06-05T14:30:49Z | 2022-06-05T14:30:49Z | Running |    100 | grouping     | pmml                      |
    | pmml_grey                 |        1 |   1 | 1000M  | 2022-06-05T14:42:41Z | 2022-06-05T14:42:41Z | Running |     0  | standalone   | pmml                      |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+

    この例では、pmml_greyTRAFFICSTATEstandaloneWEIGHT が 0 に設定されているため、すべてのトラフィックが pmml_prod に送られます。

  • サービス pmml_greygrouping(トラフィックあり)に設定するには、以下のコマンドを実行します。

    $ eascmd release pmml_grey -s grouping

    システムからの応答例:

    Confirmed to release service [pmml_grey] to group traffic [Y/n]yes
    [RequestId]: 40C787DF-8900-5F7A-8A01-30F7D5A8BF3B
    [OK] Service [pmml_grey] has entered the traffic state: grouping

    ステータスを確認するには、eascmd ls を実行します。応答例:

    [RequestId]: 83BE3FBB-8CE2-5008-B435-1938A20B13AA
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    |        SERVICENAME        | INSTANCE | CPU | MEMORY |      CREATETIME      |      UPDATETIME      | STATUS  | WEIGHT | TRAFFICSTATE |       SERVICEGROUP        |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    | pmml_prod                 |        4 |   1 | 1000M  | 2022-06-05T14:30:49Z | 2022-06-05T14:30:49Z | Running |     80 | grouping     | pmml                      |
    | pmml_grey                 |        1 |   1 | 1000M  | 2022-06-05T14:42:41Z | 2022-06-05T14:42:41Z | Running |     20 | grouping     | pmml                      |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+

    この例では、pmml_greyTRAFFICSTATEgrouping に設定されており、レプリカ比率に応じて 20 % のトラフィックを処理します。

カスタム重み

トラフィック重み列で、重みを直接編集します。

image