サービスグループは、主にビジネストラフィックを処理する複数のサブサービスを管理するために使用され、統合されたトラフィック エントリ ポイントを提供します。システムは、トラフィック割り当てポリシーに基づいて受信トラフィックを個々のサービスに分散するため、カナリアリリース、エラスティック スケーリング、異種リソース スケジューリングなどのさまざまなビジネス シナリオに適しています。このドキュメントでは、サービスグループの作成、トラフィック エントリ ポイントの表示、およびトラフィック割り当てポリシーの変更方法について説明します。
シナリオ
カナリアリリース
カナリアリリースでは、本番サービスとカナリアサービスの両方が同じグループに追加され、カナリアサービスはトラフィックのごく一部を受け取ります。新しいバージョンがリリースされると、最初にカナリアサービスにデプロイされて監視されます。問題が発生した場合は、カナリアサービスをロールバックするか、カナリアサービスを停止して、トラフィックを本番サービスにリダイレクトします。すべてがスムーズに実行されたら、本番サービス全体を更新し、カナリアサービスをゼロにスケールダウンするか、少量のトラフィックを保持します。
従量課金およびサブスクリプション リソースグループの自動スケーリング
同じグループでは、サブスクリプション サービスは、基本的なニーズをサポートするために固定数のインスタンスを持つ専用リソースグループにデプロイされます。従量課金サービスはパブリック リソースグループにデプロイされ、オンデマンド スケーリングを提供してコストを削減します。
異種ハードウェアリソースの使用
GPU アクセラレーション シナリオでは、サービスデプロイメント後、特定の GPU タイプでダウンタイムが発生したり、一部のリージョンでインベントリが不足したりして、サービスの通常のスケーリングが妨げられる場合があります。同じサービスグループ内で異なる GPU タイプのサービスを動的に作成し、さまざまな CUDA 環境に適応させることができます。これにより、複数のサービスが異種リソースを使用して同じビジネス シナリオをサポートできます。サービスグループのトラフィック エントリ ポイントは変更されないため、フロントエンドはこれらの変更を認識しません。
サービスグループを作成する
サービスを作成するときに、サービスが属するサービスグループを指定できます。
指定されたサービスグループが存在しない場合、システムは自動的にサービスグループを作成します。指定されたサービスグループが存在する場合、システムは新しいサービスをサービスグループに追加します。サービスグループ内のすべてのサービスが削除されると、サービスグループは自動的に削除されます。
次の例は、pmml という名前のサービスグループを作成し、pmml_prod サービスと pmml_grey サービスをサービスグループに追加する方法を示しています。
PAI コンソール
PAI コンソール にログインします。ページ上部でリージョンを選択します。次に、目的のワークスペースを選択し、[エラスティック アルゴリズム サービス (EAS)] をクリックします。
エラスティック アルゴリズム サービス (EAS) ページで、[カナリアリリース] タブをクリックします。表示されるタブで、[グループとサービスの作成] をクリックします。
[カスタムデプロイメント] ページで、パラメーターを構成し、[デプロイ] をクリックします。
パラメーター:
サービス名: 画面の指示に従って、有効なサービス名を指定します。例: pmml_prod。
グループ: サービスが属するサービスグループ。この例では、[新規グループ] が使用され、新しいグループ名は pmml に設定されています。
その他のパラメーターについては、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。
手順 2 と 3 を繰り返して、pmml_grey という名前のサービスを作成し、pmml サービスグループに属するようにします。
サービスを作成したら、[カナリアリリース] タブの pmml をクリックしてグループ詳細ページに移動し、グループに属するサービスを表示します。
新しく追加されたサービスは、デフォルトではトラフィックを受信しません。トラフィック分散ポリシー を参照して調整してください。
EASCMD クライアント
service.json という名前のサービス構成ファイルを準備します。
groupパラメーターは、サービスが属するサービスグループ、つまり、作成されたサービスグループの名前を指定します。その他のパラメーターについては、「その他のパラメーターの詳細」をご参照ください。2 つのサービスとサービスグループを作成します。
EASCMD クライアントにログインし、
createコマンドを実行して、2 つのサービスとサービスグループを作成します。「EASCMD クライアントをダウンロードして身元認証を完了する」をご参照ください。サンプルコード:$ eascmd create service.jsonサービスとサービスグループに関する情報を表示します。
次の
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 | +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+パラメーター:
pmml は SERVICEGROUP 列に表示されます。これは、2 つのサービスが pmml サービスグループに属していることを示します。
grouping は TRAFFICSTATE 列に表示されます。これは、両方のサービスがトラフィックを受信していることを示します。サービス間のトラフィック分散は 80% と 20% で、サービス インスタンスの数に基づいて計算されます。
データ入力の表示
サービスグループには一元化されたデータ入力があります。サービスグループ内の各サービスには、個別のデータ入力があります。データ入力は次の形式です。
サービスグループのデータ入力
<endpoint>/api/predict/<group_name>例:
http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml[カナリアリリース] タブで、サービスグループのトラフィック入力ビューを表示します。この入力へのトラフィックは、ポリシーに基づいて異なるサービスに割り当てられます。サービスグループ内のサービスは作成または削除できますが、エントリ アドレスは変更されないため、オンライン デバッグが可能です。
サービスのデータ入力
<endpoint>/api/predict/<group_name>.<service_name>例:
http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml.pmml_prod[推論サービス] タブで、単一サービスのトラフィック入力ビューを表示します。この入力は、サービスの特定のライフサイクルに関連付けられており、トラフィックが指定されたサービスに確実に流れるようにします。サービスが削除されると、入力は破棄されます。グループ内でトラフィック リダイレクトを完了した後も、この入力アドレスを使用してサービスにアクセスし、オンライン デバッグを行う必要があります。

トラフィック分散ポリシーを変更する
エラスティック アルゴリズム サービス (EAS) は現在、2 つのトラフィック割り当て方法をサポートしています。
インスタンスベースの割り当て: トラフィックは、各サービスの推論インスタンスの数に基づいて動的に分散されます。例: サービス A に 1 つのインスタンスがあり、サービス B に 3 つのインスタンスがある場合、サービス A はトラフィックの 25% を受信し、サービス B は 75% を受信します。
カスタムの重みベースの割り当て: トラフィックは、各サービスに割り当てられた重みに従って割り当てられます。例: サービス A の重みが 100、サービス B の重みが 400 の場合、サービス A はトラフィックの 20% を受信し、サービス B は 80% を受信します。
サービスがトラフィック割り当て機能を無効にすると、グループベースのトラフィック分散には参加しなくなりますが、個別にアクセスして呼び出すことはできます。これは両方の割り当て方法に適用されます。
具体的な変更方法は次のとおりです。
API を使用して、サービストラフィックの重みとトラフィック ステータスを調整できます。詳細については、ReleaseService - ReleaseService - サービス トラフィックの重みとトラフィック ステータスの調整 をご参照ください。
インスタンスベースの割り当て
コンソールの使用
対応する列のトラフィック割り当てスイッチをオンにすると、サービスがトラフィックを処理できるようになります。オフにすると、サービスのトラフィックが無効になります。

EASCMD の使用
方法 2: EASCMD の使用
次の release コマンドを実行して、トラフィック分散ポリシーを変更します。EASCMD クライアントへのログイン方法については、「EASCMD クライアントをダウンロードして身元認証を完了する」をご参照ください。
$ eascmd release <service_name> -s grouping|standaloneパラメーター:
<service_name>: サービスの名前。トラフィック分散ポリシーを変更するサービスの名前に値を変更します。
grouping|standalone: 変更後のステータス。有効な値: grouping (トラフィックを受信する) および standalone (トラフィックを受信しない)。
例:
次のコマンドを実行して、pmml_grey サービスのステータスを standalone に変更します。これにより、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: standaloneeascmd 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_grey サービスの TRAFFICSTATE が standalone に変更されます。WEIGHT パラメーターの値は 0 で、これはすべてのトラフィックが pmml_prod サービスによって受信されることを示します。
次のコマンドを実行して、pmml_grey サービスのステータスを 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: groupingeascmd 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_grey サービスの TRAFFICSTATE が grouping に変更されます。サービスが受信するトラフィックの割合は 20% です。
カスタムの重みベースの割り当て
[トラフィックの重み] 列で直接編集します。
