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

Platform For AI:サービスグループの管理

最終更新日:Dec 23, 2024

ビジネスに複数のサービスがある場合は、サービスグループを作成できます。 サービスグループには、集中型のデータ入力があります。 システムは、トラフィック分散ポリシーに基づいて、サービスグループ内の各サービスにトラフィックを転送します。 このトピックでは、サービスグループの作成、データ入力の表示、トラフィック分散ポリシーの変更方法について説明します。

シナリオ

サービスグループは、次のシナリオで使用できます。

  • カナリアリリース

    サービスグループにサービスAとサービスBを追加します。 サービスAは本番環境で使用され、サービスBはカナリアリリースに使用されます。 サービスBには、サービスAよりもデプロイされたインスタンスが少なく、サービス間のトラフィック分散は、サービスごとに構成されたインスタンスの数によって異なります。

    新しいサービスバージョンを公開するには、service Bを更新してステータスを確認します。 サービスBが期待どおりに実行されない場合は、サービスBをロールバックできます。サービスBを停止してトラフィックをサービスAに切り替えることもできます。サービスBが期待どおりに実行される場合は、サービスAを更新できます。サービスAを更新した後、サービスBのインスタンス数をゼロに減らします。 少量のトラフィックを受信し続けるようにサービスBを設定することもできます。

  • 従量課金およびサブスクリプションのリソースグループの自動スケーリング

    サービスグループにサービスを作成し、サブスクリプション専用リソースグループにサービスをデプロイしてから、ビジネス要件を満たすようにサービスのインスタンス数を固定します。 また、従量課金のパブリックリソースグループにサービスをデプロイし、トラフィックの急増を処理するようにサービスの自動スケーリングを構成することもできます。 これにより、パブリックリソースと専用リソースを使用してコストを削減できます。

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

    GPU高速化シナリオでは、サービスは通常、1つのGPUまたはCPUタイプのみを使用します。 サービスがデプロイされているリージョンで、サービスで使用されているGPUまたはCPUタイプが廃止されているか利用できない場合、システムはサービスをスケールアウトできません。 サービスグループを作成し、異なるCPUまたはGPUタイプを使用するサービスをサービスグループに動的に追加できます。 異なるCPUおよびGPUタイプには、Compute Unified Device Architecture (CUDA) 環境に固有の要件があります。 異なるサービスは、異なるCPUまたはGPUタイプを使用できます。 これにより、異種のハードウェアリソースを使用してビジネス要件を満たす複数のサービスを作成できます。 サービスグループ内のすべてのサービスは、同じデータ入力を共有します。 サービスグループに作成されたサービスの数は、ユーザーから非表示になります。

サービスグループの作成

サービスを作成するときに, サービスが属するサービスグループを指定できます。

説明

指定したサービスグループが存在しない場合は, 自動的にサービスグループが作成されます。 指定されたサービスグループが存在する場合、システムは新しいサービスをサービスグループに追加します。 サービスグループ内のすべてのサービスが削除されると、サービスグループは自動的に削除されます。

次の例は、pmmlという名前のサービスグループを作成し、pmml_prodおよびpmml_grayサービスをサービスグループに追加する方法を示しています。

PAIコンソールでサービスグループを作成する

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

  2. Elastic Algorithm Service (EAS) ページで、[カナリアリリース] タブをクリックします。 表示されるタブで、[グループとサービスの作成] をクリックします。

  3. [カスタムデプロイ] ページで、パラメーターを設定し、[デプロイ] をクリックします。

    パラメーター:

    • サービス名: 画面上の指示に従って、有効なサービス名を指定します。 例: pmml_prod

    • Group: サービスが属するサービスグループ。 この例では、[新しいグループ] が使用され、新しいグループ名はpmmlに設定されています。

    その他のパラメーターについては、「PAIコンソールでのモデルサービスのデプロイ」をご参照ください。

手順2と3を繰り返して、pmmlサービスグループに属するpmml_grayという名前のサービスを作成します。

サービスを作成したら、pmmlをクリックしてグループの詳細ページに移動し、グループに属するサービスを表示します。image

クライアントを使用したサービスグループの作成

  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",
          "traffic_state": "grouping"
        }
      }
    • 次のサンプルコードは、pmml_grayサービスの構成ファイルの内容の例を示しています。

      {
        "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",
          "traffic_state": "grouping"
        }
      }

    パラメーター:

    • group: 作成したサービスグループの名前。 サービスが属するサービスグループを指定します。

    • traffic_state: サービスグループ内のサービスにトラフィックを転送するかどうかを指定します。 有効な値:

      • grouping: トラフィックをサービスに転送します。

      • standalone: トラフィックをサービスに転送しません。

      説明

      サービスの構成ファイルでtraffic_stateパラメーターを構成しない場合、システムは自動的にトラフィックをサービスに転送します。 サービスグループに追加されたサービスがすぐにトラフィックを受信しないようにするには、traffic_stateパラメーターをスタンドアロンに設定します。

      サービスグループに1つのサービスしか含まれておらず、そのサービスに対してtraffic_stateパラメーターをスタンドアロンに設定した場合、システムは自動的に値をgroupingに変更します。

    構成ファイル内のその他のパラメーターについては、「EASCMDクライアントを使用するコマンドの実行」をご参照ください。

  2. 2つのサービスとサービスグループを作成します。

    EASCMDクライアントにログインし、createコマンドを実行して、2つのサービスとサービスグループを作成します。 EASCMDクライアントにログオンする方法の詳細については、「EASCMDクライアントのダウンロードとID認証の完了」をご参照ください。 サンプルコード:

    $ 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                      |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+

    パラメーター:

    • pmmlSERVICEGROUP列に表示されます。 これは、2つのサービスがpmmlサービスグループに属していることを示します。

    • TRAFFICSTATE列にgroupingが表示されます。 これは、両方のサービスがトラフィックを受信することを示す。 サービス間のトラフィック分布は80% と20% であり、サービスインスタンスの数に基づいて計算されます。

次にすること:

  • サービスとサービスグループを作成した後、サービスグループのデータ入力とサービスのデータ入力を表示できます。 データingressは外部アクセスに使用されます。 詳細については、「データアドレスの表示」をご参照ください。

  • サービスとサービスグループを作成すると、システムは自動的にグループトラフィックの切り替えを実行します。 サービス間のトラフィック分布は、サービスインスタンスの数に基づいて計算されます。 トラフィック分散ポリシーを変更できます。 詳細については、「トラフィック分散ポリシーの変更 (グループトラフィック切り替え) 」をご参照ください。

データingressesの表示

サービスグループには、集中型のデータ入力があります。 サービスグループ内の各サービスには、個別のデータ入力があります。 データのイングレスは次の形式です。

  • サービスグループのデータ入力:

    <endpoint>/api/predict/<group_name>

    例:

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

    サービスグループのデータ入力を表示するには、Platform for AI (PAI) コンソールで次の図に示す手順に従います。image

    イングレスを流れるトラフィックは、トラフィック分散ポリシーに基づいてサービスグループ内のサービスに分散されます。 サービスグループ内のサービスを作成または削除できます。 データ入力は変更されません。 データイングレスを使用して、サービスをオンラインでデバッグできます。

  • サービスのデータ入力:

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

    例:

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

    サービスのデータ入力を表示するには、PAIコンソールで次の図に示す手順に従います。image

    このデータ入力は、サービスのライフサイクルに関連しています。 ingressを流れるトラフィックは、指定されたサービスに配信されます。 サービスが削除されると、データ入力も削除されます。 グループトラフィックの切り替えが完了したら、データ入力を使用してサービスにオンラインでアクセスし、デバッグする必要があります。

トラフィック分散ポリシーの変更 (グループトラフィック切り替え)

Elastic Algorithm Service (EAS) は、グループトラフィック切り替えをサポートし、トラフィック分散ポリシーを変更できます。

グループトラフィックの切り替え

サービスを作成し、サービスが属するサービスグループを指定すると、グループトラフィックの切り替えが自動的に実行されます。 サービスグループ内のサービスはトラフィックの受信を開始し、サービス間のトラフィック分布はサービスインスタンスの数に基づいて計算されます。

トラフィック分散ポリシーの変更

  • トラフィック分散ポリシーを変更するには、PAIコンソールで次の図に示す手順に従います。 image③ に示すスイッチをオンにすると、サービスはトラフィックを受信します。 スイッチをオフにすると、サービスはトラフィックを受信しません。

  • 次のreleaseコマンドを実行してトラフィック分散ポリシーを変更します。EASCMDクライアントにログインする方法の詳細については、「EASCMDクライアントのダウンロードとID認証の完了」をご参照ください。

    $ eascmd release <service_name> -s grouping|standalone

    パラメーター:

    • <service_name>: サービスの名前。 トラフィック分散ポリシーを変更するサービスの名前に値を変更します。

    • grouping | standalone: 変更後のステータス。 有効な値: groupingstandalone。 グループ化はサービスがトラフィックを受信することを示し、スタンドアロンはサービスがトラフィックを受信しないことを示します。

    例:

    • 次のコマンドを実行して、pmml_grayサービスのステータスをスタンドアロンに変更します。 このように、pmml_greyサービスはトラフィックを受信しません。

      $ 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_grayサービスのTRAFFICSTATEスタンドアロンに変わります。 WEIGHTパラメーターの値は0です。これは、すべてのトラフィックがpmml_prodサービスによって受信されたことを示します。

    • 次のコマンドを実行して、pmml_grayサービスのステータスをgroupingに変更します。 これにより、pmml_greyサービスはトラフィックを受信できます。

      $ 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_grayサービスのTRAFFICSTATEgroupingに変わります。 サービスが受信するトラフィックの割合が20% されます。