翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
カスタムロードテストを実行する
Amazon SageMaker Inference Recommender のロードテストでは、レイテンシーとスループット、カスタムトラフィックパターン、選択したサーバーレスエンドポイントまたはリアルタイムのインスタンス (最大 10) の本番要件に基づいて、広範なベンチマークが実行されます。
以下のセクションでは、 と を使用してプログラムで、または Amazon SageMaker Studio Classic または SageMaker AI コンソールを使用してインタラクティブに、ロードテストを作成 AWS SDK for Python (Boto3) AWS CLI、説明、停止する方法について説明します。
ロードテストジョブを作成する
を使用してプログラムで、 を使用して AWS SDK for Python (Boto3)、 AWS CLIまたは Studio Classic または SageMaker AI コンソールを使用してインタラクティブにロードテストを作成します。Inference Recommender の推論レコメンデーションと同様に、モデルをモデルレジストリに登録したときのロードテストのジョブ名、IAM AWS ロール ARN、入力設定、およびモデルパッケージ ARN を指定します。ロードテストでは、トラフィックパターンと停止条件も指定する必要があります。
- AWS SDK for Python (Boto3)
-
CreateInferenceRecommendationsJob
API を使用して、Inference Recommender のロードテストを作成します。JobType
フィールドでAdvanced
を指定し、以下を指定します。-
ロードテストのジョブ名 (
JobName
)。ジョブ名は、 AWS リージョン内および AWS アカウント内で一意である必要があります。 -
Inference Recommender がユーザーに代わってタスクを実行できるようにする IAM ロールの Amazon リソースネーム (ARN)。これを
RoleArn
フィールドで定義します。 -
エンドポイント設定ディクショナリ (
InputConfig
)。以下を指定します。-
TrafficPattern
では、フェーズまたは階段状トラフィックパターンを指定します。フェーズトラフィックパターンでは、指定したレートで新しいユーザーが毎分生成されます。階段状トラフィックパターンでは、指定したレートで新しいユーザーが時間間隔 (またはステップ数) 単位で生成されます。次のいずれかを選択します。-
TrafficType
の場合、PHASES
を指定します。次に、Phases
アレイには、InitialNumberOfUsers
(開始時の同時ユーザー数 (最小 1、最大 3))、SpawnRate
(ロードテストの特定のフェーズで 1 分間に生成されるユーザー数 (最小 0、最大 3))、DurationInSeconds
(トラフィックのフェーズの長さ (最小 120、最大 3600)) を指定します。 -
TrafficType
の場合、STAIRS
を指定します。次に、Stairs
アレイには、DurationInSeconds
(トラフィックのフェーズの長さ (最小 120、最大 3600))、NumberOfSteps
(フェーズで使用する間隔数)、UsersPerStep
(各間隔で追加するユーザー数) を指定します。各ステップの長さはDurationInSeconds / NumberOfSteps
の値であることに注意してください。たとえば、DurationInSeconds
が600
の場合、5
ステップを指定すると、各ステップの長さは 120 秒になります。注記
ユーザーは、Inference Recommender の一部としてループ内で実行され、エンドポイントへのリクエストを呼び出すシステム生成アクターとして定義されます。
ml.c5.large
インスタンス上で実行される一般的な XGBoost コンテナの場合、エンドポイントは、わずか 15~20 人のユーザーで 1 分あたり 30,000 回の呼び出し (500 tps) に達することがあります。
-
-
ResourceLimit
には、MaxNumberOfTests
(Inference Recommender ジョブのベンチマークロードテストの最大数 (最小 1、最大 10)) とMaxParallelOfTests
(Inference Recommender ジョブの並列ベンチマークロードテストの最大数 (最小 1、最大 10)) を指定します。 -
EndpointConfigurations
には、以下のいずれかを指定できます。-
InstanceType
フィールド。ロードテストを実行するインスタンスタイプを指定します。 -
ServerlessConfig
。サーバーレスエンドポイントのMaxConcurrency
およびMemorySizeInMB
の理想的な値を指定します。詳細については、サーバーレス推論ドキュメントを参照してください。
-
-
-
停止条件ディクショナリ (
StoppingConditions
)。いずれかの条件が満たされると、Inference Recommender のジョブが停止します。この例では、ディクショナリで以下のフィールドを指定します。-
MaxInvocations
には、エンドポイントで想定される 1 分あたりの最大リクエスト数を指定します (最小 1、最大 30,000)。 -
ModelLatencyThresholds
には、Percentile
(モデルレイテンシーのパーセンタイルのしきい値) とValueInMilliseconds
(モデルレイテンシーのパーセンタイル値 (ミリ秒単位)) を指定します。 -
(オプション)
FlatInvocations
では、TPS (1 分あたりの呼び出し数) レートが平坦化したときにロードテストを続行するかどうかを指定できます。TPS レートが平坦化すると通常、エンドポイントがキャパシティに達したことを意味します。ただし、フルキャパシティ条件でエンドポイントの監視を継続したほうが良い場合があります。このような場合でもロードテストを続行するには、この値をContinue
として指定します。それ以外の場合、デフォルト値はStop
です。
-
# Create a low-level SageMaker service client. import boto3 aws_region=
<INSERT>
sagemaker_client=boto3.client('sagemaker', region=aws_region) # Provide a name to your recommendation based on load testing load_test_job_name="<INSERT>"
# Provide the name of the sagemaker instance type instance_type="<INSERT>"
# Provide the IAM Role that gives SageMaker permission to access AWS services role_arn='arn:aws:iam::<account>:role/*
' # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn='arn:aws:sagemaker:<region>:<account>:role/*
' sagemaker_client.create_inference_recommendations_job( JobName=load_test_job_name, JobType="Advanced", RoleArn=role_arn, InputConfig={ 'ModelPackageVersionArn': model_package_arn, "JobDurationInSeconds": 7200, 'TrafficPattern' : { # Replace PHASES with STAIRS to use the stairs traffic pattern 'TrafficType': 'PHASES', 'Phases': [ { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 }, { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, 'ResourceLimit': { 'MaxNumberOfTests': 10, 'MaxParallelOfTests': 3 }, "EndpointConfigurations" : [{ 'InstanceType': 'ml.c5.xlarge' }, { 'InstanceType': 'ml.m5.xlarge' }, { 'InstanceType': 'ml.r5.xlarge' }] # Uncomment the ServerlessConfig and comment out the InstanceType field if you want recommendations for a serverless endpoint # "ServerlessConfig": { # "MaxConcurrency":value
, # "MemorySizeInMB":value
# } }, StoppingConditions={ 'MaxInvocations': 1000, 'ModelLatencyThresholds':[{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 'FlatInvocations': 'Stop' } )CreateInferenceRecommendationsJob
に渡すことができるオプションの引数と必須の引数の完全なリストについては、Amazon SageMaker API リファレンスガイドを参照してください。 -
- AWS CLI
-
create-inference-recommendations-job
API を使用して、Inference Recommender のロードテストを作成します。JobType
フィールドでAdvanced
を指定し、以下を指定します。-
ロードテストのジョブ名 (
job-name
)。ジョブ名は、 AWS リージョン内および AWS アカウント内で一意である必要があります。 -
Inference Recommender がユーザーに代わってタスクを実行できるようにする IAM ロールの Amazon リソースネーム (ARN)。これを
role-arn
フィールドで定義します。 -
エンドポイント設定ディクショナリ (
input-config
)。以下を指定します。-
TrafficPattern
では、フェーズまたは階段状トラフィックパターンを指定します。フェーズトラフィックパターンでは、指定したレートで新しいユーザーが毎分生成されます。階段状トラフィックパターンでは、指定したレートで新しいユーザーが時間間隔 (またはステップ数) 単位で生成されます。次のいずれかを選択します。-
TrafficType
の場合、PHASES
を指定します。次に、Phases
アレイには、InitialNumberOfUsers
(開始時の同時ユーザー数 (最小 1、最大 3))、SpawnRate
(ロードテストの特定のフェーズで 1 分間に生成されるユーザー数 (最小 0、最大 3))、DurationInSeconds
(トラフィックのフェーズの長さ (最小 120、最大 3600)) を指定します。 -
TrafficType
の場合、STAIRS
を指定します。次に、Stairs
アレイには、DurationInSeconds
(トラフィックのフェーズの長さ (最小 120、最大 3600))、NumberOfSteps
(フェーズで使用する間隔数)、UsersPerStep
(各間隔で追加するユーザー数) を指定します。各ステップの長さはDurationInSeconds / NumberOfSteps
の値であることに注意してください。たとえば、DurationInSeconds
が600
の場合、5
ステップを指定すると、各ステップの長さは 120 秒になります。注記
ユーザーは、Inference Recommender の一部としてループ内で実行され、エンドポイントへのリクエストを呼び出すシステム生成アクターとして定義されます。
ml.c5.large
インスタンス上で実行される一般的な XGBoost コンテナの場合、エンドポイントは、わずか 15~20 人のユーザーで 1 分あたり 30,000 回の呼び出し (500 tps) に達することがあります。
-
-
ResourceLimit
には、MaxNumberOfTests
(Inference Recommender ジョブのベンチマークロードテストの最大数 (最小 1、最大 10)) とMaxParallelOfTests
(Inference Recommender ジョブの並列ベンチマークロードテストの最大数 (最小 1、最大 10)) を指定します。 -
EndpointConfigurations
には、以下のいずれかを指定できます。-
InstanceType
フィールド。ロードテストを実行するインスタンスタイプを指定します。 -
ServerlessConfig
。サーバーレスエンドポイントのMaxConcurrency
およびMemorySizeInMB
の理想的な値を指定します。
-
-
-
停止条件ディクショナリ (
stopping-conditions
)。いずれかの条件が満たされると、Inference Recommender のジョブが停止します。この例では、ディクショナリで以下のフィールドを指定します。-
MaxInvocations
には、エンドポイントで想定される 1 分あたりの最大リクエスト数を指定します (最小 1、最大 30,000)。 -
ModelLatencyThresholds
には、Percentile
(モデルレイテンシーのパーセンタイルのしきい値) とValueInMilliseconds
(モデルレイテンシーのパーセンタイル値 (ミリ秒単位)) を指定します。 -
(オプション)
FlatInvocations
では、TPS (1 分あたりの呼び出し数) レートが平坦化したときにロードテストを続行するかどうかを指定できます。TPS レートが平坦化すると通常、エンドポイントがキャパシティに達したことを意味します。ただし、フルキャパシティ条件でエンドポイントの監視を継続したほうが良い場合があります。このような場合でもロードテストを続行するには、この値をContinue
として指定します。それ以外の場合、デフォルト値はStop
です。
-
aws sagemaker create-inference-recommendations-job\ --region
<region>
\ --job-name<job-name>
\ --job-type ADVANCED\ --role-arn arn:aws:iam::<account>:role/*
\ --input-config \"{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region>:<account>:role/*
\", \"JobDurationInSeconds\": 7200, \"TrafficPattern\" : { # Replace PHASES with STAIRS to use the stairs traffic pattern \"TrafficType\": \"PHASES\", \"Phases\": [ { \"InitialNumberOfUsers\": 1, \"SpawnRate\": 60, \"DurationInSeconds\": 300 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, \"ResourceLimit\": { \"MaxNumberOfTests\": 10, \"MaxParallelOfTests\": 3 }, \"EndpointConfigurations\" : [ { \"InstanceType\": \"ml.c5.xlarge\" }, { \"InstanceType\": \"ml.m5.xlarge\" }, { \"InstanceType\": \"ml.r5.xlarge\" } # Use the ServerlessConfig and leave out the InstanceType fields if you want recommendations for a serverless endpoint # \"ServerlessConfig\": { # \"MaxConcurrency\":value
, # \"MemorySizeInMB\":value
# } ] }\" --stopping-conditions \"{ \"MaxInvocations\": 1000, \"ModelLatencyThresholds\":[ { \"Percentile\": \"P95\", \"ValueInMilliseconds\": 100 } ], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten \"FlatInvocations\": \"Stop\" }\" -
- Amazon SageMaker Studio Classic
-
Studio Classic でロードテストを作成します。
-
Studio Classic アプリケーションで、ホームアイコン (
) を選択します。
-
Studio Classic の左側のサイドバーで [デプロイ] を選択します。
-
ドロップダウンリストから [推論レコメンダー] を選択します。
-
[推論レコメンダージョブを作成] を選択します。右側ペインに、[推論レコメンダージョブを作成] という新しいタブが開きます。
-
[モデルグループ] フィールドのドロップダウンからモデルグループの名前を選択します。リストには、Studio Classic 以外で登録されたモデルを含む、アカウントのモデルレジストリに登録されているすべてのモデルグループが含まれます。
-
[モデルバージョン] フィールドのドロップダウンからモデルのバージョンを選択します。
-
[続行] をクリックします。
-
[Name] (名前) フィールドにジョブの名前を入力します。
-
(オプション)ジョブに関する説明を[Description] (説明) フィールドに入力します。
-
Inference Recommender に AWS サービスへのアクセス許可を付与する IAM ロールを選択します。これを行うには、ロールを作成して
AmazonSageMakerFullAccess
IAM 管理ポリシーをアタッチするか、Studio Classic にロールを作成させることもできます。 -
[停止条件] を選択し、使用できる入力フィールドを展開します。デプロイのレコメンデーションを停止するための一連の条件を指定します。
-
エンドポイントで予想される 1 分あたりの最大リクエスト数を[Max Invocations Per Minute] (1 分あたりの最大呼び出し回数) フィールドに指定します。
-
モデルレイテンシーのしきい値を、[Model Latency Threshold] (モデルのレイテンシーしきい値) フィールドにマイクロ秒単位で指定します。[Model Latency Threshold] (モデルのレイテンシーしきい値) は、Inference Recommender から見た、モデルが応答するのにかかる時間の間隔を示しています。この間隔には、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。
-
-
[Traffic Pattern] (トラフィックパターン) を選択して、使用できる入力フィールドを展開します。
-
[Initial Number of Users] (初期ユーザー数) フィールドに整数値を指定して、仮想ユーザーの初期数を設定します。
-
[Spawn Rate] (スポーンレート) フィールドに整数値を指定します。スポーンレートは、1 秒間に作成されるユーザー数を設定します。
-
[Duration] (期間) フィールドに整数値を指定して、フェーズの期間を秒単位で設定します。
-
(オプション) トラフィックパターンを追加します。追加するには、[Add] (追加) を選択します。
-
-
[Additional] (追加) 設定を選択すると、[Max test duration] (最大テスト期間) フィールドが表示されます。ジョブ中にテストを実行できる最大時間を秒単位で指定します。新しいジョブは、定義された期間後には予定されません。これにより、進行中のジョブが停止されず、完了したジョブのみを表示できるようになります。
-
[続行] をクリックします。
-
[Selected Instances] (選択したインスタンス) を選択します。
-
[Instances for benchmarking] (ベンチマークするインスタンス) フィールドで、[Add instances to test] (テストするインスタンスを追加する) を選択します。Inference Recommender でロードテストに使用するインスタンスを最大 10 個選択します。
-
[Additional settings] (追加設定) を選択します。
-
ジョブが実行できるテストの数に上限を設定する整数を [Max number of tests] (テストの最大数) フィールドに指定します。各エンドポイント設定では、新しいロードテストが行われます。
-
[Max parallel] (最大並列値) テストフィールドに整数を指定します。この設定では、並列に実行できるロードテスト数の上限を定義します。
-
-
[Submit] (送信) を選択します。
ロードテストには最大 2 時間かかることがあります。
警告
このタブを閉じないでください。このタブを閉じると、Inference Recommender のロードテストジョブがキャンセルされます。
-
- SageMaker AI console
-
SageMaker AI コンソールを使用してカスタムロードテストを作成するには、次の手順を実行します。
-
https://console.aws.amazon.com/sagemaker/
で SageMaker AI コンソールに移動します。 -
左側のナビゲーションペインで、[推論] を選択し、次に [推論レコメンダー] を選択します。
-
[推論レコメンダージョブ] ページで [ジョブを作成] を選択します。
-
[ステップ 1: モデル設定] で、以下の操作を行います。
-
[ジョブタイプ] には、[高度なレコメンダージョブ] を選択します。
-
SageMaker AI モデルレジストリに登録されたモデルを使用している場合は、モデルレジストリからモデルを選択するトグルをオンにして、次の操作を行います。
-
モデルグループのドロップダウンリストで、モデルがある SageMaker AI モデルレジストリのモデルグループを選択します。
-
[モデルバージョン] ドロップダウンリストでは、目的のバージョンのモデルを選択します。
-
-
SageMaker AI で作成したモデルを使用している場合は、モデルレジストリからモデルを選択するトグルをオフにして、次の操作を行います。
-
Model name フィールドに、SageMaker AI モデルの名前を入力します。
-
-
IAM ロールでは、インスタンスレコメンデーションジョブを作成するために必要なアクセス許可を持つ既存の AWS IAM ロールを選択できます。または、既存のロールがない場合は、新しいロールの作成を選択してロール作成ポップアップを開くと、SageMaker AI は作成した新しいロールに必要なアクセス許可を追加します。
-
[ペイロードをベンチマークするための S3 バケット] には、サンプルペイロードアーカイブへの Amazon S3 パスを入力します。これには、Inference Recommender がさまざまなインスタンスタイプでモデルをベンチマークするために使用するサンプルペイロードファイルが含まれている必要があります。
-
[ペイロードコンテンツタイプ] には、サンプルペイロードデータの MIME タイプを入力します。
-
[トラフィックパターン] では、次の手順を実行してロードテストのフェーズを設定します。
-
[初期ユーザー数] には、開始時の同時ユーザー数を指定します (最小 1、最大 3)。
-
[生成レート] には、そのフェーズで 1 分間に生成されるユーザー数を指定します (最小 0、最大 3)。
-
[所要時間 (秒)] では、トラフィックフェーズをどの程度短くするかを秒単位で指定します (最小 120、最大 3600)。
-
-
(オプション) モデルレジストリトグルからモデルを選択 をオフにし、SageMaker AI モデルを指定した場合、コンテナ設定で次の操作を行います。
-
[ドメイン] ドロップダウンリストでは、コンピュータビジョン、自然言語処理、機械学習など、モデルの機械学習ドメインを選択します。
-
[フレームワーク] ドロップダウンリストでは、TensorFlow や XGBoost など、コンテナのフレームワークを選択します。
-
[フレームワークバージョン] には、コンテナイメージのフレームワークバージョンを入力します。
-
[最も近いモデル名] ドロップダウンリストでは、自分のモデルと最もよく一致する事前トレーニング済みのモデルを選択します。
-
[タスク] ドロップダウンリストでは、画像分類やリグレッションなど、モデルが実行する機械学習タスクを選択します。
-
-
(オプション) [SageMaker Neo を使用したモデルコンパイル] では、SageMaker Neo を使用してコンパイルしたモデルのレコメンデーションジョブを設定できます。[データ入力設定] には、モデルに適した入力データ形状を
{'input':[1,1024,1024,3]}
のような形式で入力します。 -
[Next (次へ)] を選択します。
-
-
[ステップ 2: インスタンスと環境パラメータ] では、以下の操作を行います。
-
[ベンチマーキング用のインスタンスを選択] では、ベンチマークするインスタンスタイプを最大 8 個選択します。
-
(オプション) [環境パラメータの範囲] では、モデルの最適化に役立つ環境パラメータを指定できます。パラメータは キーと値のペアとして指定します。
-
[Next (次へ)] を選択します。
-
-
[ステップ 3: ジョブパラメータ] では、以下の操作を行います。
-
(オプション) [ジョブ名] フィールドに、インスタンスレコメンデーションジョブの名前を入力します。ジョブを作成すると、SageMaker AI はこの名前の末尾にタイムスタンプを追加します。
-
(オプション) [ジョブの説明] に、ジョブの説明を入力します。
-
(オプション) 暗号化キードロップダウンリストで、名前で AWS KMS キーを選択するか、ARN を入力してデータを暗号化します。
-
(オプション) [テストの最大数] には、レコメンデーションジョブ中に実行するテストの数を入力します。
-
(オプション) [最大並列テスト] には、レコメンデーションジョブ中に実行する並列テストの最大数を入力します。
-
[最大テスト時間] には、各テストを実行する最大秒数を入力します。
-
[1 分あたりの最大呼び出し数] には、推奨ジョブを停止するまでにエンドポイントが到達できる 1 分あたりの最大リクエスト数を入力します。この制限に達すると、SageMaker AI はジョブを終了します。
-
[P99 モデルレイテンシーのしきい値] には、モデルレイテンシーのパーセンタイルをミリ秒単位で入力します。
-
[Next (次へ)] を選択します。
-
-
[ステップ 4: ジョブを確認] では、設定を確認して [送信] を選択します。
-
ロードテスト結果を取得する
負荷テストが 、、 AWS CLI Studio Classic AWS SDK for Python (Boto3)、または SageMaker AI コンソールで完了すると、すべての負荷テストでメトリクスをプログラムで収集できます。
- AWS SDK for Python (Boto3)
-
DescribeInferenceRecommendationsJob
API でメトリクスを収集します。JobName
フィールドにロードテストのジョブ名を指定します。load_test_response = sagemaker_client.describe_inference_recommendations_job( JobName=load_test_job_name )
レスポンスオブジェクトを出力します。
load_test_response['Status']
ここでは、次の例のような JSON レスポンスが返されます。この例はリアルタイム推論に推奨されるインスタンスタイプを示していることに注意してください (サーバーレス推論レコメンデーションを示す例については、この後の例を参照してください)。
{ 'JobName':
'job-name'
, 'JobDescription':'job-description'
, 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region
:account-id
:inference-recommendations-job/resource-id
', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region
:account-id
:model-package/resource-id
', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100} ]}, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName':'endpoint-name'
, 'VariantName':'variant-name'
, 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId':'request-id'
, 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid':'x-amzn-requestid'
, 'content-type':'content-type'
, 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0} }最初の数行には、ロードテストジョブ自体に関する情報が表示されます。これには、ジョブ名、ロール ARN、作成、削除時間が含まれます。
InferenceRecommendations
ディクショナリには、Inference Recommender 推論レコメンデーションのリストが含まれています。EndpointConfiguration
ネストされたディクショナリには、レコメンデーションジョブ中に使用されるエンドポイントとバリアント名 (デプロイされた AWS 機械学習モデルInstanceType
) とともに、インスタンスタイプ () レコメンデーションが含まれます。Amazon CloudWatch Events でのモニタリングには、エンドポイントとバリアント名を使用できます。詳細については、「Amazon CloudWatch で Amazon SageMaker AI をモニタリングするためのメトリクス」を参照してください。EndpointConfiguration
のネストされたディクショナリには、インスタンス数 (InitialInstanceCount
) レコメンデーションも含まれています。これは、StoppingConditions
で指定されているMaxInvocations
を満たすためにエンドポイントでプロビジョニングする必要があるインスタンス数です。たとえば、InstanceType
がml.m5.large
で、InitialInstanceCount
が2
の場合、MaxInvocations
停止条件で指定された TPS を処理できるように、エンドポイントに対して 2 つのml.m5.large
インスタンスをプロビジョニングする必要があります。Metrics
ネストされたディクショナリには、リアルタイムエンドポイントの 1 時間あたりの推定コスト (CostPerHour
)、リアルタイムエンドポイントの推論あたりの推定コスト (CostPerInference
)、エンドポイントに送信されたInvokeEndpoint
リクエストの最大数、およびモデルが SageMaker AI に応答するのにかかった間隔 (マイクロ秒単位ModelLatency
) であるモデルレイテンシー () に関する情報が含まれています。モデルのレイテンシーには、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。以下の例は、サーバーレス推論レコメンデーションを返すように設定されたロードテストのレスポンスの
InferenceRecommendations
部を示しています。"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "
value
", "InitialInstanceCount":value
, "InstanceType": "value
", "VariantName": "value
", "ServerlessConfig": { "MaxConcurrency":value
, "MemorySizeInMb":value
} }, "InvocationEndTime":value
, "InvocationStartTime":value
, "Metrics": { "CostPerHour":value
, "CostPerInference":value
, "CpuUtilization":value
, "MaxInvocations":value
, "MemoryUtilization":value
, "ModelLatency":value
, "ModelSetupTime":value
}, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value
" }, "RecommendationId": "value
" } ]サーバーレス推論のレコメンデーションは、リアルタイム推論の結果と同様に解釈できます。ただし、
ServerlessConfig
は例外で、ロードテストの設定時にMaxConcurrency
とMemorySizeInMB
に指定された値を示します。サーバーレスレコメンデーションではメトリクスModelSetupTime
も測定され、これにより、サーバーレスエンドポイントでコンピューターリソースを起動するのにかかる時間 (マイクロ秒単位) が測定されます。サーバーレスエンドポイントの設定について詳しくは、サーバーレス推論のドキュメントを参照してください。 - AWS CLI
-
describe-inference-recommendations-job
API でメトリクスを収集します。次のjob-name
フラグにロードテストのジョブ名を指定します。aws sagemaker describe-inference-recommendations-job --job-name
<job-name>
ここでは、次の例のようなレスポンスが返されます。この例はリアルタイム推論に推奨されるインスタンスタイプを示していることに注意してください (サーバーレス推論レコメンデーションを示す例については、この後の例を参照してください)。
{ 'JobName':
'job-name'
, 'JobDescription':'job-description'
, 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region
:account-id
:inference-recommendations-job/resource-id
', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region
:account-id
:model-package/resource-id
', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }] }, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName':'endpoint-name'
, 'VariantName':'variant-name'
, 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId':'request-id'
, 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid':'x-amzn-requestid'
, 'content-type':'content-type'
, 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0 } }最初の数行には、ロードテストジョブ自体に関する情報が表示されます。これには、ジョブ名、ロール ARN、作成、削除時間が含まれます。
InferenceRecommendations
ディクショナリには、Inference Recommender 推論レコメンデーションのリストが含まれています。EndpointConfiguration
ネストされたディクショナリには、レコメンデーションジョブ中に使用されるエンドポイントとバリアント名 (デプロイされた AWS 機械学習モデルInstanceType
) とともに、インスタンスタイプ () レコメンデーションが含まれます。Amazon CloudWatch Events でのモニタリングには、エンドポイントとバリアント名を使用できます。詳細については、「Amazon CloudWatch で Amazon SageMaker AI をモニタリングするためのメトリクス」を参照してください。Metrics
ネストされたディクショナリには、リアルタイムエンドポイントの 1 時間あたりの推定コスト (CostPerHour
)、リアルタイムエンドポイントの推論あたりの推定コスト (CostPerInference
)、エンドポイントに送信されたInvokeEndpoint
リクエストの最大数、およびモデルが SageMaker AI に応答するのにかかった間隔 (マイクロ秒単位ModelLatency
) であるモデルレイテンシー () に関する情報が含まれています。モデルのレイテンシーには、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。以下の例は、サーバーレス推論レコメンデーションを返すように設定されたロードテストのレスポンスの
InferenceRecommendations
部を示しています。"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "
value
", "InitialInstanceCount":value
, "InstanceType": "value
", "VariantName": "value
", "ServerlessConfig": { "MaxConcurrency":value
, "MemorySizeInMb":value
} }, "InvocationEndTime":value
, "InvocationStartTime":value
, "Metrics": { "CostPerHour":value
, "CostPerInference":value
, "CpuUtilization":value
, "MaxInvocations":value
, "MemoryUtilization":value
, "ModelLatency":value
, "ModelSetupTime":value
}, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value
" }, "RecommendationId": "value
" } ]サーバーレス推論のレコメンデーションは、リアルタイム推論の結果と同様に解釈できます。ただし、
ServerlessConfig
は例外で、ロードテストの設定時にMaxConcurrency
とMemorySizeInMB
に指定された値を示します。サーバーレスレコメンデーションではメトリクスModelSetupTime
も測定され、これにより、サーバーレスエンドポイントでコンピューターリソースを起動するのにかかる時間 (マイクロ秒単位) が測定されます。サーバーレスエンドポイントの設定について詳しくは、サーバーレス推論のドキュメントを参照してください。 - Amazon SageMaker Studio Classic
-
レコメンデーションは、Studio Classic 内の [推論レコメンデーション] という新しいタブに表示されます。結果が表示されるまでに最大 2 時間かかることがあります。このタブには、[Results] (結果) と [Details] (詳細) 列が含まれています。
[Details] (詳細) 列には、ロードテストジョブに指定された名前やジョブの作成日時 ([Creation time] (作成日時)) など、ロードテストジョブに関する情報が表示されます。また、1 分あたりに発生した最大呼び出し数や、使用された Amazon リソースネーム (ARN) といった、[Settings] (設定) 情報も表示されます。
結果列には、デプロイの目標と SageMaker AI レコメンデーションウィンドウが表示され、デプロイの重要度に基づいて結果が表示される順序を調整できます。ユースケースの [Cost] (コスト)、[Latency] (レイテンシー)、[Throughput] (スループット) の重要レベルを指定できる 3 つのドロップダウンメニューがあります。目標(コスト、レイテンシー、スループット)ごとに、最小重要度、低重要度、中重要度、高重要度、または最高重要度の重要度のレベルを設定できます。
各目標の重要度の選択に基づいて、Inference Recommender はその最上位レコメンデーションを、パネル右側の [SageMaker recommendation] (SageMaker レコメンデーション)フィールドに、時間あたりの推定コストと推論リクエストとともに表示します。また、予想されるモデルのレイテンシー、最大呼び出し数、インスタンス数に関する情報も表示されます。
表示される上位のレコメンデーションに加えて、Inference Recommender がテストしたすべてのインスタンスについての同じ情報が[All runs] (すべての実行) セクションに表示されます。
- SageMaker AI console
-
SageMaker AI コンソールでカスタムロードテストジョブの結果を表示するには、次の手順を実行します。
-
https://console.aws.amazon.com/sagemaker/
で SageMaker AI コンソールに移動します。 -
左側のナビゲーションペインで、[推論] を選択し、次に [推論レコメンダー] を選択します。
-
[推論レコメンダージョブ] ページで、推論レコメンデーションジョブの名前を選択します。
ジョブの詳細ページで、次のスクリーンショットに示すように、SageMaker AI がモデルに推奨するインスタンスタイプである推論レコメンデーションを表示できます。
このセクションでは、[モデルレイテンシー]、[1 時間あたりのコスト]、[推論あたりのコスト]、[1 分あたりの呼び出し] などのさまざまな要因でインスタンスタイプを比較できます。
このページでは、ジョブに指定した設定も表示できます。[モニター] セクションでは、インスタンスタイプごとに記録された Amazon CloudWatch メトリクスを表示できます。これらのメトリクスの解釈について詳しくは、「結果の解釈」を参照してください。
-