eas-benmarkは、Elastic Algorithm Service (EAS) に組み込まれた分散ストレステスト用の汎用ツールです。 eas-benchmarkを使用すると、動的ストレステストを実行し、2番目に正確なリアルタイムのモニタリングデータを表示し、テストの完了後に視覚化されたレポートを生成できます。 これは、EASで展開するサービスのパフォーマンスを評価するのに役立ちます。 このトピックでは、ストレステストタスクを作成および管理する方法について説明します。
前提条件
モデルサービスがデプロイされます。 詳細については、「PAIコンソールを使用したモデルサービスのデプロイ」をご参照ください。
背景情報
EASCMDクライアントにログインし、bench
コマンドを実行して、ストレステストタスクを作成および管理できます。 ストレステストタスクを作成および管理する方法については、このトピックの「ストレステストタスクの作成」および「ストレステストタスクの管理」を参照してください。 EASCMDクライアントにログオンする方法については、「EASCMDクライアントのダウンロードとID認証の完了」をご参照ください。
ストレステストタスクの作成
EASCMDクライアントの使用
bench create
コマンドを実行して、ストレステストタスクを作成します。 タスクの作成後、返されたURLを使用して、リアルタイムのモニタリングデータを表示できます。 この例では、64ビットWindowsバージョンのEASCMDクライアントが使用されています。
eascmdwin64.exe bench create [bench_desc_json]
bench_desc_jsonは、ストレステストタスクのJSON設定ファイルの名前を指定します。 サンプル設定:
{
"service": {
"serviceName": "xgb_test"
},
"data": {
"content": "W1sxLDAsMCwwLDEsMSwwLDEsMCwxLDEsMCwwLDEsMCwxLDAsMSwwLDAsMSwxLDEsMCwxLDEsMCwwLDAsMSwxLDEsMCwxLDEsMSwxLDAsMSwxLDEsMCwxLDAsMCwwLDEsMSwwLDAsMCwxLDAsMSwwLDEsMCwwLDEsMCwwLDEsMCwxLDAsMCwxLDAsMCwwLDAsMSwwLDEsMCwxLDAsMCwxLDEsMSwwLDAsMSwwLDAsMCwwLDEsMSwxLDAsMSwxLDAsMCwxLDAsMSwwLDEsMSwxLDEsMCwxLDAsMCwxLDEsMSwxLDAsMCwwLDEsMSwwXV0K"
}
}
次の設定に示すように、pathパラメーターを使用して、ストレステストデータを格納する複数のObject Storage Service (OSS) オブジェクトのパスを指定できます。 pathパラメーターを、OSS:// XX.zip形式のストレステストデータを含むZIPファイルのパスに設定することもできます。
{
"service": {
"serviceName": "xgb_test"
},
"data": {
"path": "oss://examplebucket/test1.bin,oss://examplebucket/test2.bin"
}
}
次の表に、JSON設定ファイルのパラメーターを示します。
パラメーター | ネストされたパラメータ | 必須 | 説明 |
サービス | serviceName | 必須 | ストレステストタスクを作成するサービスの名前。 |
データ | コンテンツ | 選択可能 | Base64-encoded文字列形式のストレステストデータの単一エントリ。 複数のデータエントリを設定する場合は、pathパラメーターを指定します。 ストレステストデータの形式とファイルの種類については、このトピックの「ストレステストデータ」を参照してください。 |
パス | 選択可能 | ストレステストデータのパス。 HTTPまたはOSSパスを指定できます。 複数のパスを指定できます。 パスはコンマ (,) で区切ります。 複数のストレステストファイルをZIPファイルにパッケージ化してから、ZIPファイルのパスを指定することもできます。 説明 ファイルに保存されているストレステストデータには、Base64エンコーディングは必要ありません。 | |
マルチライン | 選択可能 | ストレステストのデータを行で区切るかどうかを指定します。 有効な値は、true および false です。 デフォルト値:false | |
http | ヘッダー | 選択可能 | HTTPリクエストヘッダー。 このパラメーターの値はLIST型です。 例: |
タイムアウト | 選択可能 | HTTPリクエストのレイテンシ。 単位:ミリ秒。 デフォルト値: 20000 | |
オプション | モード | 選択可能 | ストレステストモード。 有効な値:
ストレステストモードの詳細については、このトピックの「ストレステストモード」を参照してください。 |
期間 | 選択可能 | ストレステスト期間。 単位は秒です。 既定値:600。 最大値: 1200。 | |
agentCount | 選択可能 | modeパラメーターをmanualに設定した場合、このパラメーターは必須です。 ストレステスト剤の数。 デフォルト値は 1 です。 より高い値は、より高いワークロードを指定する。 | |
並行性 | 選択可能 | modeパラメーターをmanualに設定した場合、このパラメーターは必須です。 各ストレステストエージェントの同時実行性。 デフォルト値:2 より高い値は、より高いワークロードを指定する。 ストレステスト中にワークロードをスケーリングするには、ストレステストエージェントの数を増やす前に、各ストレステストエージェントの同時実行性を高めます。 | |
adjustInterval | 選択可能 | modeパラメーターをスキャンに設定した場合、このパラメーターは必須です。 ワークロードが自動的に増加する間隔。 単位は秒です。 デフォルト値: 0。 | |
minQPS | 選択可能 | modeパラメーターをスキャンに設定した場合、このパラメーターは必須です。 ストレステストの1秒あたりの初期クエリ (QPS) 。 デフォルト値:100 | |
maxQPS | 選択可能 | modeパラメーターをscanまたはautoに設定した場合、このパラメーターは必須です。 ストレステストの最大QPS。 | |
maxRT | 選択可能 | modeパラメーターをscanまたはautoに設定した場合、このパラメーターは必須です。 最大応答時間 (TP99) 。 実際の応答時間がこの閾値を超える場合、QPSは、応答時間が閾値を下回るまで自動的に調整される。 | |
qpsGrowthDelta | 選択可能 | modeパラメーターをスキャンに設定した場合、このパラメーターは必須です。 QPSの増分。 デフォルト値は 50 です。 | |
faultTolerate | 選択可能 | modeパラメーターをscanまたはautoに設定した場合、このパラメーターは必須です。 リクエストエラーの最大許容率。 返されたステータスコードが200でない場合、リクエストエラーが発生します。 0.01の値は、1% 以上の要求でエラーが発生したときにエラー処理メカニズムがトリガーされることを示します。 デフォルト値: 0.001 | |
faultAction | 選択可能 | modeパラメーターをscanまたはautoに設定した場合、このパラメーターは必須です。 リクエストエラー率がfaultTolerateパラメーターで指定されたしきい値を超えた場合のeas-benchmarkの操作。 有効な値:
|
たとえば、JSON設定ファイルの名前がbench_xgb.jsonの場合、次のコマンドを実行してストレステストタスクを作成できます。
eascmdwin64.exe bench create bench_xgb.json
サンプルコマンド出力:
[RequestId]: DE240637-4976-59AF-A28C-BAA55C0A****
[OK] Task [benchmark-xgb-test-b514] is creating
[OK] [Agnet: 0/1]: Succeed to start benchmark master
[OK] [Agnet: 0/1]: Succeed to start benchmark master
[OK] [Agnet: 1/1]: Benchmark task is Running
[OK] Benchmark task is Running
[OK] Click the link http://127.0.0.1:18222/eas-benchmark/statsview to observe realtime visualization details, you can turn it off with CTRL+C.
Turning off will not interrupt the benchmark test task, and you can reopen it by the visualize command:
eascmd -c [config_file] bench visualize benchmark-xgb-test-b514
PAIコンソールを使用する
Platform for AI (PAI) コンソールで自動モードで実行されるストレステストタスクを作成できます。 PAIコンソールでストレステストタスクを作成するには、次の手順を実行します。
Elastic Algorithm Service (EAS)ページに移動します。
PAIコンソールにログインします。
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、管理するワークスペースの名前をクリックします。
左側のナビゲーションウィンドウで、 .
[Stress Testing Task] タブをクリックし、[Create Stress Testing Task] をクリックします。
では、ストレステストの作成タスクパネル、次のパラメーターを設定し、作成.
パラメーター
説明
サービス
ストレステストタスクを作成するサービスの名前。
テストデータ
ストレステストデータ。 有効な値: [単一データ入力] 、[データアドレス] 、[OSSオブジェクト] 、[ローカルファイルのアップロード] 。 ストレステストデータの形式とファイルの種類については、このトピックの「ストレステストデータ」を参照してください。
説明[データアドレス] または [OSSオブジェクト] を選択した場合、複数のファイルパスを指定できます。 パスはコンマ (,) で区切ります。
ファイル内のデータを改行で区切る必要があるかどうかを指定します
このパラメーターは、[テストデータ] パラメーターを [データアドレス] 、[OSSオブジェクト] 、または [ローカルファイルのアップロード] に設定した場合にのみ有効です。
スイッチをオンにすると、アップロードされたファイル内のデータが行ごとに区切られ、各行がストレステストのデータエントリとして使用されます。 スイッチをオフにすると、アップロードされたファイルのコンテンツ全体がストレステストのデータエントリとして使用されます。
期間
ストレステスト期間。 デフォルト値は 300 です。 単位は秒です。
最大QPS
ストレステストの最大QPS。 デフォルト値: 10000。
最大応答時間 (ms)
最大応答時間。 単位:ミリ秒。 実際の応答時間がこのパラメーターの値を超えると、応答時間が正常範囲に入るまでQPSが自動的に調整されます。
ストレステストタスクの管理
EASCMDクライアントの使用
ストレステストタスクのリストを表示する
bench list
コマンドを実行して、作成したストレステストタスクのリストを表示します。 この例では、64ビットWindowsバージョンのEASCMDクライアントが使用されています。eascmdwin64.exe bench ls
サンプルコマンド:
eascmdwin64.exe bench ls
サンプルコマンド出力:
[RequestId]: 7F953F8E-8897-5785-808A-CA64830215F6 +-------------------------+--------------------------+-------------+----------------+---------+---------------------+ | TASKNAME | TASKID | REGION | AVAILABLEAGENT | STATUS | CREATETIME | +-------------------------+--------------------------+-------------+----------------+---------+---------------------+ | benchmark-xgb-test-7846 | eas-b-ql470xog6qeh25**** | cn-shanghai | 0 | Stopped | 2022-06-17 17:58:01 | | benchmark-xgb-test-b514 | eas-b-bdnzvwq0z0h3xq**** | cn-shanghai | 2 | Running | 2022-06-20 12:18:54 | +-------------------------+--------------------------+-------------+----------------+---------+---------------------+
ストレステストタスクの詳細を表示する
bench desc
コマンドを実行して、ストレステストタスクの詳細を表示します。 この例では、64ビットWindowsバージョンのEASCMDクライアントが使用されています。eascmdwin64.exe bench desc [benchmark_task_name]
benchmark_task_nameは、詳細を表示するストレステストタスクの名前を指定します。 サンプルコマンド:
eascmdwin64.exe bench desc benchmark-demo-test-c7eb
サンプルコマンド出力:
+----------------+------------------------------------------------------------------------------+ | TaskName | benchmark-xgb-test-b514 | | TaskId | eas-b-bdnzvwq0z0h3xq**** | | ServiceName | xgb_test | | Region | cn-shanghai | | DesiredAgent | 2 | | AvailableAgent | 2 | | Status | Running | | Message | Benchmark task is running | | CreateTime | 2021-10-20 12:38:35 | | UpdateTime | 2021-10-20 12:38:45 | | Config | { | | | "base": { | | | "agentCount": 2, | | | "concurrency": 40, | | | "duration": 1200, | | | "requestCount": | | | 922337203685477****, | | | }, | | | ... | | | } | +----------------+------------------------------------------------------------------------------+
ストレステストタスクのリアルタイム視覚化を有効にする
bench visualize
コマンドを実行して、ストレステストタスクのリアルタイムの視覚化を有効にします。 このコマンドは、ローカルマシン上のwebサーバーを127.0.0.1で起動し、ストレステストタスクのリアルタイム監視データを表示するwebページを提供します。 この例では、64ビットWindowsバージョンのEASCMDクライアントが使用されています。eascmdwin64.exe bench visualize [benchmark_task_name]
サンプルコマンド:
eascmdwin64.exe bench visualize benchmark-xgb-test-b514
サンプルコマンド出力:
[OK] Click the link http://127.0.0.1:18734/eas-benchmark/statsview to observe realtime visualization details, you can turn it off with CTRL+C. Turning off will not interrupt the benchmark test task, and you can reopen it by the visualize command: eascmd -c [config_file] bench visualize benchmark-xgb-test-b514
リアルタイムモニタリングデータを表示するには、ブラウザで
http:// 127.0.0.1:18734/eas-benchmark/statsview
にアクセスしてください。ストレステストレスレポートを取得する
ストレステストタスクのステータスが [停止] に変わると、タスクは完了し、ストレステストレートレポートはOSSに保存されます。
bench report
コマンドを実行して、レポートを取得します。 この例では、64ビットWindowsバージョンのEASCMDクライアントが使用されています。eascmdwin64.exe bench report [benchmark_task_name]
サンプルコマンド:
eascmdwin64.exe bench report benchmark-demo-test-c7eb
サンプルコマンド出力:
[OK] Benchmark task benchmark-demo-test-c7eb report url: http://eas-benchmark.oss-cn-chengdu.aliyuncs.com/summary/benchmark-demo-test-c7eb-10004.html
次の図に示すように、コマンド出力のurl: の後にリンクをコピーし、ブラウザにリンクを入力してストレステストレポートを表示します。
ストレステストのワークロードを調整する
ストレステストに手動モードを使用する場合は、
bench update
コマンドを実行して、エージェントの数と各エージェントの同時実行性を変更できます。 この例では、64ビットWindowsバージョンのEASCMDクライアントが使用されています。eascmdwin64.exe bench update [benchmark_task_name] -Doptional.concurrency=<attr_value> -Doptional.agentCount=<attr_value>
<attr_value> は、設定する値を指定します。 サンプルコマンド:
eascmdwin64.exe bench update benchmark-demo-b99c -Doptional.concurrency=2 -Doptional.agentCount=1
サンプルコマンド出力:
[RequestId]: 9920C672-4D41-5CC4-8EC0-C690F76EB2BA [OK] Running [TaskName: benchmark-demo-b99c, DesiredAgent:1, AvailableAgent: 1, Message: Benchmark task is Updating] [OK] Benchmark task benchmark-demo-b99c was updated successfully
更新されました
ストレステストのタスクを停止する
bench stop
コマンドを実行して、ストレステストタスクを停止します。 この例では、64ビットWindowsバージョンのEASCMDクライアントが使用されています。eascmdwin64.exe bench stop [benchmark_task_name]
サンプルコマンド:
eascmdwin64.exe bench stop benchmark-xgb-test-b514
サンプルコマンド出力:
Are you sure to stop the benchmark task [benchmark-xgb-test-b514] in [cn-shanghai]? [Y/n] [OK] Task [benchmark-xgb-test-b514] is stopping [OK] [Agnet: 0/1]: Benchmark task is Running [OK] [Agnet: 0/1]: Benchmark task is Stopped [OK] Benchmark task is stopped
タスクを停止する前に, ターミナルウィンドウでリアルタイムの可視化を可能にするコマンドを実行した場合, システムはターミナルウィンドウにストレステストレポートを出力します。
bench report
コマンドを実行してレポートを取得することもできます。ストレステストタスクを開始する
bench start
コマンドを実行して、停止したストレステストタスクを開始します。 この例では、64ビットWindowsバージョンのEASCMDクライアントが使用されています。eascmdwin64.exe bench start [benchmark_task_name]
説明bench create
コマンドと比較して、このコマンドはタスクの最新の設定に基づいてストレステストタスクを再起動します。サンプルコマンド:
eascmdwin64.exe bench start benchmark-xgb-test-b514
サンプルコマンド出力:
Are you sure to start the benchmark task [benchmark-xgb-test-b514] in [cn-shanghai]? [Y/n] [OK] Task [benchmark-xgb-test-b514] is starting [OK] [Agnet: 0/1]: Succeed to start benchmark master [OK] [Agnet: 1/1]: Benchmark task is Running [OK] Benchmark task is Running [OK] Click the link http://127.0.0.1:18947/eas-benchmark/statsview to observe realtime visualization details, you can turn it off with CTRL+C. Turning off will not interrupt the benchmark test task, and you can reopen it by the visualize command: eascmd -c [config_file] bench visualize benchmark-xgb-test-b514
ストレステストタスクの削除
ストレステストタスクが完了すると、eas-benchmarkはタスクのステータスに基づいてタスクのレコードを保持します。 次の表に、保持期間を示します。
タスクのステータス
保持期間
停止しました
48時間
CreateFailed、UpdateFailed、Terminated、またはエラー
10 分
保存期間が終了すると、システムは自動的にタスクを削除します。
bench delete
コマンドを実行して、ストレステストタスクを手動で削除することもできます。 形式:eascmdwin64.exe bench delete [benchmark_task_name]
サンプルコマンド:
eascmdwin64.exe bench delete benchmark-xgb-test-b514
サンプルコマンド出力:
Are you sure to delete the benchmark task [benchmark-xgb-test-b514] in [cn-shanghai]? [Y/n] [OK] Benchmark task benchmark-xgb-test-b514 is Deleting [OK] Benchmark task was deleted successfully
削除されました
PAIコンソールを使用する
[ストレステストタスク] タブで、ストレステストタスクを表示および管理できます。
ストレステストのタスクは、ワンクリックで開始、停止、または削除できます。
右上隅にある更新ボタンをクリックすると、ストレステストタスクのステータスを更新できます。
タスクの [ステータス] 列に [実行中] が表示されたら、[アクション] 列の [表示] をクリックして、タスクのリアルタイムモニタリングデータを表示できます。
タスクの [ステータス] 列に [停止済み] が表示されたら、[アクション] 列の [表示] をクリックしてストレステストレートレポートを表示できます。
ストレス試験データ
Format
ストレステストデータの形式は、サービスのモデルとプロセッサによって異なります。
サービスが音声、画像、テキストデータなどの非構造化リクエストデータを処理する場合は、リクエストデータを含むファイルをアップロードします。
TFRequest形式のデータなど、構造化されたリクエストデータをサービスが処理する場合は、EAS SDKを使用してリクエストデータを作成します。 生成したバイナリファイルをリクエストデータとしてアップロードすることもできます。 詳細については、「ウォームアップモデルサービス (詳細) 」をご参照ください。
ファイルの種類
ビジネス要件に基づいて、ストレステストデータ用のファイルタイプを選択します。 一般的なファイルタイプには、TEXT、JPG、BINがあります。
ストレステストモード
EASCMDクライアントを使用してストレステストタスクを作成する場合、JSON設定ファイルのオプションパラメーターにネストされたmodeパラメーターを指定することで、ストレステストモードを設定できます。 有効な値:
auto
自動モード。 このモードでは、eas-benchmarkは自動的にストレステストエージェントを作成し、各エージェントの同時実行性を設定し、最適なアルゴリズムを選択してサービスの最大容量を決定します。 JSON設定ファイルでサービスパラメーターとデータパラメーターを指定するだけです。 他のパラメーターのデフォルト設定を保持します。 サンプル設定:
{ "service": { "serviceName": "demo" }, "data": { "path": "https://examplebucket.oss-cn-chengdu.aliyuncs.com/data/warmup.tf.bin" }, "optional" { "maxQPS": 1000, "duration": 300 } }
scan
周期モード。 このモードでは、maxRT、maxQPS、またはfaultTolerateパラメーターの実際の値が指定された値を超えるまで、eas-benchmarkは、minQPS、maxQPS、adjustInterval、qpsGrowthDeltaなどのパラメーターに基づいて、サービスのワークロードを動的に増加させます。 サンプル設定:
{ "service": { "serviceName": "demo" }, "data": { "content": "aGVsbG8K" }, "optional": { "mode": "scan", "maxQPS": 1000, "minQPS": 500, "qpsGrowthDelta": 100, "adjustInterval": 30 } }
マニュアル
手動モード。 このモードでは、ストレステスト中にエージェントの数と各エージェントの同時実行性を手動で調整できます。 サンプル設定:
{ "service": { "serviceName": "demo" }, "data": { "content": "aGVsbG8K" }, "optional": { "mode": "manual", "agentCount": 1, "concurrency": 5 } }
APIリファレンス
APIを呼び出して、ストレステストタスクを作成および管理できます。 詳細については、「ベンチマークタスク」をご参照ください。
関連ドキュメント
サービスのパフォーマンスがビジネス要件を満たした後、サービスを呼び出して推論タスクを実行できます。 詳細については、「概要」をご参照ください。