ビジネスに複数のサービスがある場合は、サービスグループを作成できます。 サービスグループには、集中型のデータ入力があります。 システムは、トラフィック分散ポリシーに基づいて、サービスグループ内の各サービスにトラフィックを転送します。 このトピックでは、サービスグループの作成、データ入力の表示、トラフィック分散ポリシーの変更方法について説明します。
シナリオ
サービスグループは、次のシナリオで使用できます。
カナリアリリース
サービスグループにサービス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コンソールでサービスグループを作成する
PAI コンソールにログインします。 ページ上部のリージョンを選択します。 次に、目的のワークスペースを選択し、[Elastic Algorithm Service (EAS) の入力] をクリックします。
Elastic Algorithm Service (EAS) ページで、[カナリアリリース] タブをクリックします。 表示されるタブで、[グループとサービスの作成] をクリックします。
[カスタムデプロイ] ページで、パラメーターを設定し、[デプロイ] をクリックします。
パラメーター:
サービス名: 画面上の指示に従って、有効なサービス名を指定します。 例: pmml_prod
Group: サービスが属するサービスグループ。 この例では、[新しいグループ] が使用され、新しいグループ名はpmmlに設定されています。
その他のパラメーターについては、「PAIコンソールでのモデルサービスのデプロイ」をご参照ください。
手順2と3を繰り返して、pmmlサービスグループに属するpmml_grayという名前のサービスを作成します。
サービスを作成したら、pmmlをクリックしてグループの詳細ページに移動し、グループに属するサービスを表示します。
クライアントを使用したサービスグループの作成
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つのサービスとサービスグループを作成します。
EASCMDクライアントにログインし、
create
コマンドを実行して、2つのサービスとサービスグループを作成します。 EASCMDクライアントにログオンする方法の詳細については、「EASCMDクライアントのダウンロードとID認証の完了」をご参照ください。 サンプルコード:$ 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サービスグループに属していることを示します。
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) コンソールで次の図に示す手順に従います。
イングレスを流れるトラフィックは、トラフィック分散ポリシーに基づいてサービスグループ内のサービスに分散されます。 サービスグループ内のサービスを作成または削除できます。 データ入力は変更されません。 データイングレスを使用して、サービスをオンラインでデバッグできます。
サービスのデータ入力:
<endpoint>/api/predict/<group_name>.<service_name>
例:
http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml.pmml_prod
サービスのデータ入力を表示するには、PAIコンソールで次の図に示す手順に従います。
このデータ入力は、サービスのライフサイクルに関連しています。 ingressを流れるトラフィックは、指定されたサービスに配信されます。 サービスが削除されると、データ入力も削除されます。 グループトラフィックの切り替えが完了したら、データ入力を使用してサービスにオンラインでアクセスし、デバッグする必要があります。
トラフィック分散ポリシーの変更 (グループトラフィック切り替え)
Elastic Algorithm Service (EAS) は、グループトラフィック切り替えをサポートし、トラフィック分散ポリシーを変更できます。
グループトラフィックの切り替え
サービスを作成し、サービスが属するサービスグループを指定すると、グループトラフィックの切り替えが自動的に実行されます。 サービスグループ内のサービスはトラフィックの受信を開始し、サービス間のトラフィック分布はサービスインスタンスの数に基づいて計算されます。
トラフィック分散ポリシーの変更
トラフィック分散ポリシーを変更するには、PAIコンソールで次の図に示す手順に従います。 ③ に示すスイッチをオンにすると、サービスはトラフィックを受信します。 スイッチをオフにすると、サービスはトラフィックを受信しません。
次の
release
コマンドを実行してトラフィック分散ポリシーを変更します。EASCMDクライアントにログインする方法の詳細については、「EASCMDクライアントのダウンロードとID認証の完了」をご参照ください。$ eascmd release <service_name> -s grouping|standalone
パラメーター:
<service_name>: サービスの名前。 トラフィック分散ポリシーを変更するサービスの名前に値を変更します。
grouping | standalone: 変更後のステータス。 有効な値: groupingとstandalone。 グループ化はサービスがトラフィックを受信することを示し、スタンドアロンはサービスがトラフィックを受信しないことを示します。
例:
次のコマンドを実行して、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サービスのTRAFFICSTATEがgroupingに変わります。 サービスが受信するトラフィックの割合が20% されます。