ビジネスに複数のサービスがある場合は、サービスグループを作成できます。 サービスグループには統一されたデータ入力があります。 システムは、トラフィック分散ポリシーに基づいて、サービスグループ内の各サービスにトラフィックを転送します。 各サービスがサービスグループで受信するトラフィックの割合を指定して、リソースの使用率を向上させることもできます。 このトピックでは、サービスグループの作成、データ入力の表示、トラフィック分散ポリシーの変更方法について説明します。
シナリオ
サービスグループは、次のシナリオで使用できます。
カナリアリリース
サービスグループにサービスAとサービスBを追加します。 サービスAは本番環境で使用されます。 サービスBはカナリアリリースに使用されます。 各サービスが受信するトラフィックの割合は、サービス用に構成されているインスタンスの数によって異なります。
新しいサービスバージョンを公開する場合は、最初にサービスBを更新し、サービスBのステータスを確認します。サービスBが正常に実行されない場合は、サービスBのロールバックを実行できます。サービスBを停止してトラフィックをサービスaに切り替えることもできます。サービスBが正常に実行される場合は、サービスaを更新できます。サービスAを更新した後、サービスBのインスタンス数をゼロに減らします。また、サービスBを維持して少量のトラフィックを受信し続けることもできます。
Blue-greenリリース
サービスグループに2つの独立したサービスを追加します。 各サービスが受信するトラフィックの割合は、サービスに対して構成されているインスタンスの数に基づいていません。 各サービスが受信するトラフィックの割合を指定できます。 たとえば、サービスAのトラフィックの25% とサービスBのトラフィックの75% を指定できます。
従量課金およびサブスクリプションのリソースグループの自動スケーリング
サービスグループにサービスを作成し、サブスクリプション専用リソースグループにサービスをデプロイしてから、ビジネス要件を満たすようにサービスのインスタンス数を固定します。 さらに、サービスを従量課金のパブリックリソースグループにデプロイし、トラフィックの急増に対処するためにビジネス要件に基づいてサービスの自動スケーリングを構成します。 これにより、パブリックリソースと専用リソースを使用してコストを削減できます。
異種ハードウェアリソースの使用
GPU高速化シナリオでは、サービスは通常、1つのGPUまたはCPUモデルのみを使用します。 サービスがデプロイされているリージョンで、サービスで使用されているGPUまたはCPUモデルが段階的に廃止された場合、システムはサービスをスケールアウトできません。 サービスグループを作成し、異なるCPUまたはGPUモデルを使用するサービスをサービスグループに動的に追加できます。 異なるCPUおよびGPUモデルでは、Compute Unified Device Architecture (CUDA) 環境に対する要件が異なります。 異なるサービスは異なるCPUまたはGPUモデルを使用できます。 これにより、異種のハードウェアリソースを使用してビジネス要件を満たす複数のサービスを作成できます。 サービスグループ内のこれらのサービスはすべて、同じデータ入力を共有します。 ユーザーは、サービスグループに作成されたサービスの数を認識していません。
サービスグループの作成
サービスを作成するときに, サービスが属するサービスグループを指定できます。
指定したサービスグループが存在しない場合は, 自動的にサービスグループが作成されます。 指定したサービスグループが存在する場合は, サービス作成後にサービスグループに追加します。 サービスグループ内のすべてのサービスが削除されると、サービスグループは自動的に削除されます。
次の例は、pmmlという名前のサービスグループを作成する方法と、pmml_prodおよびpmml_grayサービスをサービスグループに追加する方法を示しています。
PAIコンソールでサービスグループを作成する
Elastic Algorithm Service (EAS)ページに移動します。
PAIコンソールにログインします。
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、管理するワークスペースの名前をクリックします。
左側のナビゲーションウィンドウで、 を選択します。 Elastic Algorithm Service (EAS) ページが表示されます。
[グループサービス] タブで、[グループサービスの作成] をクリックします。
[グループサービス] ページで、必要なパラメーターを設定し、[デプロイ] をクリックします。
次のパラメータに注意してください。
サービス名: 画面上の指示に従って、有効なサービス名を指定します。 例: pmml_prod
Group: サービスが属するサービスグループ。 この例では、[新しいグループ] が使用され、新しいグループ名はpmmlに設定されています。
その他のパラメーターについては、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。
手順2と3を繰り返して、pmmlサービスグループに属するpmml_grayという名前のサービスを作成します。
サービスを作成したら、pmmlをクリックしてグループの詳細ページに移動し、グループに属するサービスを表示します。
クライアントを使用したサービスグループの作成
service.jsonという名前のサービス構成ファイルを準備します。
次のコードは、pmml_prodサービスの構成ファイルの内容の例を示しています。
{ "name":"pmml_prod", "model_path":"http://eas-data.oss-cn-shanghai.aliyuncs.com/models/lr_xingke4.pmml", "processor":"pmml", "metadata":{ "cpu":1, "instance":4, "group":"pmml", "traffic_state": "grouping" } }
次のコードは、pmml_grayサービスの構成ファイルの内容の例を示しています。
{ "name":"pmml_grey", "model_path":"http://eas-data.oss-cn-shanghai.aliyuncs.com/models/lr_xingke4.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
Machine Learning 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) は、グループトラフィック切り替えと青緑色トラフィック切り替えをサポートします。 サービスが作成されると、デフォルトでグループトラフィックの切り替えが使用されます。 グループトラフィックの切り替えをblue-greenトラフィックの切り替えに変更できます。 2つのトラフィック切り替え方法のトラフィック分散ポリシーを変更することもできます。
グループトラフィックの切り替え
概要
サービスを作成し、サービスが属するサービスグループを指定すると、デフォルトでグループトラフィック切り替えが使用されます。 サービスグループ内のサービスはトラフィックの受信を開始し、各サービスが受信するトラフィックの割合は、サービスインスタンスの数に基づいて決定されます。
トラフィック分散ポリシーの変更
トラフィック分散ポリシーを変更するには、PAIコンソールで次の図に示す手順に従います。 ④ で示すスイッチをオンにすると、サービスはトラフィックを受け取ります。 スイッチをオフにすると、サービスはトラフィックを受信しません。
次の
release
コマンドを実行して、トラフィック分散ポリシーを変更します。$ 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% されます。
青緑のトラフィックの切り替え
概要
サービスグループに2つのサービスを作成する場合にのみ、blue-greenトラフィックの切り替えを使用できます。 サービスグループ内の1つのサービスがN % のトラフィックを受信すると、もう1つのサービスは (100 - N)% のトラフィックを受信します。 サービスグループ内のサービスを削除すると、他のサービスはすべてのトラフィックを受け取ります。
トラフィック切り替え方法の変更
グループトラフィック切り替えを使用する場合は、次のコマンドを実行して、トラフィック切り替えモードをblue-greenトラフィック切り替えに変更できます。
重要グループのトラフィック切り替えと青緑色のトラフィック切り替えは、相互に排他的です。 blue-greenトラフィック切り替えを使用した後は、グループトラフィック切り替えに変更することはできません。
$ eascmd release <service_name> -w <weight>
パラメーター:
<service_name>: サービスの名前。 トラフィック切り替えモードを変更するサービスの名前に値を変更します。
<weight>: サービスの重み。 有効値: 0~100。
次のセクションでは、トラフィック分散ポリシーを変更する方法について説明します。
トラフィック分散ポリシーの変更
blue-greenトラフィック切り替えを使用して、サービスの重みを指定できます。 次のコマンドを実行して、サービスの重みを指定します。
$ eascmd release pmml_grey -w 27
次の出力が返されます。
Confirmed to release service [pmml_grey] at weight [27%]? [Y/n]yes [RequestId]: DD8F8EC2-D726-5E37-9C0B-B360F61C810A [OK] Service [pmml_grey] is weighted to 27% now
27% に重み付けされています
eascmd ls
コマンドを実行して、サービスの状態を照会します。 次の出力が返されます。[RequestId]: 51789E0B-88E7-5293-828B-1EFAD2EEA003 +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+ | SERVICENAME | INSTANCE | CPU | MEMORY | CREATETIME | UPDATETIME | STATUS | WEIGHT | TRAFFICSTATE | SERVICEGROUP | +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+ | pmml_prod | 4 | 1 | 1000M | 2022-06-05T14:30:49Z | 2022-06-05T14:53:20Z | Running | 73 | blue-green | pmml | | pmml_grey | 1 | 1 | 1000M | 2022-06-05T14:50:14Z | 2022-06-05T14:53:20Z | Running | 27 | blue-green | pmml | +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
pmml_grayサービスのTRAFFICSTATEがblue-greenに変わります。これは、blue-greenトラフィック切り替えが使用されていることを示します。 サービスのWEIGHTは27であり、これは、トラフィックの27% がpmml_grayサービスによって受信されることを示す。