カスタムロードテストを実行する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

カスタムロードテストを実行する

Amazon SageMaker Inference Recommender ロードテストでは、レイテンシーとスループット、カスタムトラフィックパターン、サーバーレスエンドポイントまたは選択したリアルタイムインスタンス (最大 10) の本番稼働要件に基づいて、広範なベンチマークを実行します。

以下のセクションでは、 AWS SDK for Python (Boto3) と を使用してプログラムで、または Amazon SageMaker Studio Classic または SageMaker コンソールを使用してインタラクティブにロードテストを作成、説明 AWS CLI、および停止する方法について説明します。

ロードテストジョブを作成する

を使用してプログラムでロードテストを作成するか AWS SDK for Python (Boto3)、 を使用する AWS CLIか、Studio Classic または SageMaker コンソールを使用してインタラクティブにロードテストを作成します。Inference Recommender の推論レコメンデーションと同様に、モデルをモデルレジストリに登録したときARNのロードテストのジョブ名、 AWS IAMロール ARN、入力設定、およびモデルパッケージを指定します。ロードテストでは、トラフィックパターンと停止条件も指定する必要があります。

AWS SDK for Python (Boto3)

CreateInferenceRecommendationsJob API を使用して、推論レコメンダーロードテストを作成します。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 の値であることに注意してください。たとえば、DurationInSeconds600 の場合、5 ステップを指定すると、各ステップの長さは 120 秒になります。

        注記

        ユーザーは、Inference Recommender の一部としてループ内で実行され、エンドポイントへのリクエストを呼び出すシステム生成アクターとして定義されます。ml.c5.large インスタンスで実行される一般的なXGBoostコンテナの場合、エンドポイントは 1 分あたり 30,000 呼び出し (500 tps) に達することができ、ユーザーはわずか 15~20 人です。

    • 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' } )

に渡すことができるオプション引数と必須引数の完全なリストについては、Amazon SageMaker API リファレンスガイドを参照してくださいCreateInferenceRecommendationsJob

AWS CLI

create-inference-recommendations-job API を使用して、推論レコメンダーロードテストを作成します。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 の値であることに注意してください。たとえば、DurationInSeconds600 の場合、5 ステップを指定すると、各ステップの長さは 120 秒になります。

        注記

        ユーザーは、Inference Recommender の一部としてループ内で実行され、エンドポイントへのリクエストを呼び出すシステム生成アクターとして定義されます。ml.c5.large インスタンスで実行される一般的なXGBoostコンテナの場合、エンドポイントは 1 分あたり 30,000 呼び出し (500 tps) に達することができ、ユーザーはわずか 15~20 人です。

    • 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 を使用してロードテストを作成します。

  1. Studio Classic アプリケーションで、ホームアイコン () を選択します Black square icon representing a placeholder or empty image.

  2. Studio Classic の左側のサイドバーで、デプロイ を選択します。

  3. ドロップダウンリストから [推論レコメンダー] を選択します。

  4. [推論レコメンダージョブを作成] を選択します。右側ペインに、[推論レコメンダージョブを作成] という新しいタブが開きます。

  5. [Model group] (モデルグループ) フィールドのドロップダウンからモデルグループの名前を選択します。このリストには、Studio Classic の外部に登録されたモデルを含む、アカウント内のモデルレジストリに登録されたすべてのモデルグループが含まれます。

  6. [Model version] (モデルバージョン) フィールドのドロップダウンからモデルのバージョンを選択します。

  7. [続行] をクリックします。

  8. [Name] (名前) フィールドにジョブの名前を入力します。

  9. (オプション)ジョブに関する説明を[Description] (説明) フィールドに入力します。

  10. Inference Recommender に AWS サービスへのアクセス許可を付与するIAMロールを選択します。ロールを作成してAmazonSageMakerFullAccessIAM管理ポリシーをアタッチしてこれを実現することも、Studio Classic にロールを作成させることもできます。

  11. [Stopping Conditions] (停止条件) を選択し、使用できる入力フィールドを展開します。デプロイのレコメンデーションを停止するための一連の条件を指定します。

    1. エンドポイントで予想される 1 分あたりの最大リクエスト数を[Max Invocations Per Minute] (1 分あたりの最大呼び出し回数) フィールドに指定します。

    2. モデルレイテンシーのしきい値を、[Model Latency Threshold] (モデルのレイテンシーしきい値) フィールドにマイクロ秒単位で指定します。[Model Latency Threshold] (モデルのレイテンシーしきい値) は、Inference Recommender から見た、モデルが応答するのにかかる時間の間隔を示しています。この間隔には、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。

  12. [Traffic Pattern] (トラフィックパターン) を選択して、使用できる入力フィールドを展開します。

    1. [Initial Number of Users] (初期ユーザー数) フィールドに整数値を指定して、仮想ユーザーの初期数を設定します。

    2. [Spawn Rate] (スポーンレート) フィールドに整数値を指定します。スポーンレートは、1 秒間に作成されるユーザー数を設定します。

    3. [Duration] (期間) フィールドに整数値を指定して、フェーズの期間を秒単位で設定します。

    4. (オプション) トラフィックパターンを追加します。追加するには、[Add] (追加) を選択します。

  13. [Additional] (追加) 設定を選択すると、[Max test duration] (最大テスト期間) フィールドが表示されます。ジョブ中にテストを実行できる最大時間を秒単位で指定します。新しいジョブは、定義された期間後には予定されません。これにより、進行中のジョブが停止されず、完了したジョブのみを表示できるようになります。

  14. [Continue](続行) を選択します。

  15. [Selected Instances] (選択したインスタンス) を選択します。

  16. [Instances for benchmarking] (ベンチマークするインスタンス) フィールドで、[Add instances to test] (テストするインスタンスを追加する) を選択します。Inference Recommender でロードテストに使用するインスタンスを最大 10 個選択します。

  17. [Additional settings] (追加設定) を選択します。

    1. ジョブが実行できるテストの数に上限を設定する整数を [Max number of tests] (テストの最大数) フィールドに指定します。各エンドポイント設定では、新しいロードテストが行われます。

    2. [Max parallel] (最大並列値) テストフィールドに整数を指定します。この設定では、並列に実行できるロードテスト数の上限を定義します。

  18. [Submit] (送信) を選択します。

    ロードテストには最大 2 時間かかることがあります。

    警告

    このタブを閉じないでください。このタブを閉じると、Inference Recommender のロードテストジョブがキャンセルされます。

SageMaker console

以下を実行して、 SageMaker コンソールからカスタムロードテストを作成します。

  1. の SageMaker コンソールに移動しますhttps://console.aws.amazon.com/sagemaker/

  2. 左側のナビゲーションペインで、[推論] を選択し、次に [推論レコメンダー] を選択します。

  3. [推論レコメンダージョブ] ページで [ジョブを作成] を選択します。

  4. [ステップ 1: モデル設定] で、以下の操作を行います。

    1. [ジョブタイプ] には、[高度なレコメンダージョブ] を選択します。

    2. モデルレジストリに登録 SageMakerされたモデルを使用している場合は、モデルレジストリからモデルを選択するトグルをオンにして、以下を実行します。

      1. モデルグループのドロップダウンリストで、モデルがあるモデルレジストリで SageMakerモデルグループを選択します。

      2. [モデルバージョン] ドロップダウンリストでは、目的のバージョンのモデルを選択します。

    3. で作成したモデルを使用している場合は SageMaker、モデルレジストリからモデルを選択するトグルをオフにして、以下を実行します。

      1. Model name フィールドに、 SageMaker モデルの名前を入力します。

    4. IAM ロール では、インスタンスレコメンデーションジョブを作成するために必要なアクセス許可を持つ既存の AWS IAMロールを選択できます。または、既存のロールがない場合は、新しいロールの作成を選択してロール作成ポップアップを開き、作成した新しいロールに必要なアクセス許可 SageMaker を追加します。

    5. [ペイロードをベンチマークするための S3 バケット] には、サンプルペイロードアーカイブへの Amazon S3 パスを入力します。これには、Inference Recommender がさまざまなインスタンスタイプでモデルをベンチマークするために使用するサンプルペイロードファイルが含まれている必要があります。

    6. ペイロードコンテンツタイプ には、サンプルペイロードデータMIMEのタイプを入力します。

    7. [トラフィックパターン] では、次の手順を実行してロードテストのフェーズを設定します。

      1. [初期ユーザー数] には、開始時の同時ユーザー数を指定します (最小 1、最大 3)。

      2. [生成レート] には、そのフェーズで 1 分間に生成されるユーザー数を指定します (最小 0、最大 3)。

      3. [所要時間 (秒)] では、トラフィックフェーズをどの程度短くするかを秒単位で指定します (最小 120、最大 3600)。

    8. (オプション) モデルレジストリのトグルからモデルを選択 をオフにして SageMaker モデルを指定した場合は、コンテナ設定 で次の操作を行います。

      1. [ドメイン] ドロップダウンリストでは、コンピュータビジョン、自然言語処理、機械学習など、モデルの機械学習ドメインを選択します。

      2. フレームワークのドロップダウンリストで、 TensorFlow や などのコンテナのフレームワークを選択しますXGBoost。

      3. [フレームワークバージョン] には、コンテナイメージのフレームワークバージョンを入力します。

      4. [最も近いモデル名] ドロップダウンリストでは、自分のモデルと最もよく一致する事前トレーニング済みのモデルを選択します。

      5. [タスク] ドロップダウンリストでは、画像分類やリグレッションなど、モデルが実行する機械学習タスクを選択します。

    9. (オプション) SageMaker Neo を使用したモデルコンパイルでは、 SageMaker Neo を使用してコンパイルしたモデルのレコメンデーションジョブを設定できます。[データ入力設定] には、モデルに適した入力データ形状を {'input':[1,1024,1024,3]} のような形式で入力します。

    10. [Next (次へ)] を選択します。

  5. [ステップ 2: インスタンスと環境パラメータ] では、以下の操作を行います。

    1. [ベンチマーキング用のインスタンスを選択] では、ベンチマークするインスタンスタイプを最大 8 個選択します。

    2. (オプション) [環境パラメータの範囲] では、モデルの最適化に役立つ環境パラメータを指定できます。パラメータは キーのペアとして指定します。

    3. [Next (次へ)] を選択します。

  6. [ステップ 3: ジョブパラメータ] では、以下の操作を行います。

    1. (オプション) [ジョブ名] フィールドに、インスタンスレコメンデーションジョブの名前を入力します。ジョブを作成すると、 はこの名前の末尾にタイムスタンプ SageMaker を追加します。

    2. (オプション) [ジョブの説明] に、ジョブの説明を入力します。

    3. (オプション) 暗号化キーのドロップダウンリストで、名前で AWS KMS キーを選択するかARN、キーを入力してデータを暗号化します。

    4. (オプション) [テストの最大数] には、レコメンデーションジョブ中に実行するテストの数を入力します。

    5. (オプション) [最大並列テスト] には、レコメンデーションジョブ中に実行する並列テストの最大数を入力します。

    6. [最大テスト時間] には、各テストを実行する最大秒数を入力します。

    7. [1 分あたりの最大呼び出し数] には、推奨ジョブを停止するまでにエンドポイントが到達できる 1 分あたりの最大リクエスト数を入力します。この制限に達すると、 はジョブを SageMaker 終了します。

    8. [P99 モデルレイテンシーのしきい値] には、モデルレイテンシーのパーセンタイルをミリ秒単位で入力します。

    9. [Next (次へ)] を選択します。

  7. [ステップ 4: ジョブを確認] では、設定を確認して [送信] を選択します。

ロードテスト結果を取得する

ロードテストが AWS SDK for Python (Boto3)、、Studio Classic AWS CLI、または コンソールで完了すると、すべてのロードテストでプログラムでメトリクスを SageMaker収集できます。

AWS SDK for Python (Boto3)

を使用してメトリクスを収集しますDescribeInferenceRecommendationsJobAPI。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 Events でのモニタリングには、エンドポイントとバリアント名を使用できます CloudWatch 。詳細については、「Amazon SageMaker で Amazon をモニタリングするためのメトリクス CloudWatch」を参照してください。

EndpointConfiguration のネストされたディクショナリには、インスタンス数 (InitialInstanceCount) レコメンデーションも含まれています。これは、StoppingConditions で指定されている MaxInvocations を満たすためにエンドポイントでプロビジョニングする必要があるインスタンス数です。例えば、 InstanceTypeml.m5.largeで、 InitialInstanceCountが の場合2、エンドポイントに 2 つのml.m5.largeインスタンスをプロビジョニングして、MaxInvocations停止条件でTPS指定された を処理できるようにする必要があります。

Metrics ネストされたディクショナリには、リアルタイムエンドポイントの 1 時間あたりの推定コスト (CostPerHour) を米ドルで、リアルタイムエンドポイントの推論あたりの推定コスト (CostPerInference) を、エンドポイントに送信されたInvokeEndpointリクエストの最大数、およびモデルが に応答するためにかかった間隔 (マイクロ秒単位) であるモデルレイテンシー (ModelLatency) に関する情報が含まれています SageMaker。モデルのレイテンシーには、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。

以下の例は、サーバーレス推論レコメンデーションを返すように設定されたロードテストのレスポンスの 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 は例外で、ロードテストの設定時に MaxConcurrencyMemorySizeInMB に指定された値を示します。サーバーレスレコメンデーションではメトリクス ModelSetupTime も測定され、これにより、サーバーレスエンドポイントでコンピューターリソースを起動するのにかかる時間 (マイクロ秒単位) が測定されます。サーバーレスエンドポイントの設定について詳しくは、サーバーレス推論のドキュメントを参照してください。

AWS CLI

を使用してメトリクスを収集しますdescribe-inference-recommendations-jobAPI。次の 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 Events でのモニタリングには、エンドポイントとバリアント名を使用できます CloudWatch 。詳細については、「Amazon SageMaker で Amazon をモニタリングするためのメトリクス CloudWatch」を参照してください。

Metrics ネストされたディクショナリには、リアルタイムエンドポイントの 1 時間あたりの推定コスト (CostPerHour) を米ドルで、リアルタイムエンドポイントの推論あたりの推定コスト (CostPerInference) を、エンドポイントに送信されたInvokeEndpointリクエストの最大数、およびモデルが に応答するのにかかった間隔 (マイクロ秒単位) であるモデルレイテンシー (ModelLatency) に関する情報が含まれています SageMaker。モデルのレイテンシーには、リクエストを送信し、モデルのコンテナからレスポンスを取得するのにかかるローカル通信時間と、コンテナ内で推論を完了するのにかかる時間が含まれます。

以下の例は、サーバーレス推論レコメンデーションを返すように設定されたロードテストのレスポンスの 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 は例外で、ロードテストの設定時に MaxConcurrencyMemorySizeInMB に指定された値を示します。サーバーレスレコメンデーションではメトリクス ModelSetupTime も測定され、これにより、サーバーレスエンドポイントでコンピューターリソースを起動するのにかかる時間 (マイクロ秒単位) が測定されます。サーバーレスエンドポイントの設定について詳しくは、サーバーレス推論のドキュメントを参照してください。

Amazon SageMaker Studio Classic

レコメンデーションは、Studio Classic 内の推論レコメンデーションと呼ばれる新しいタブに入力されます。結果が表示されるまでに最大 2 時間かかることがあります。このタブには、[Results] (結果) と [Details] (詳細) 列が含まれています。

[Details] (詳細) 列には、ロードテストジョブに指定された名前やジョブの作成日時 ([Creation time] (作成日時)) など、ロードテストジョブに関する情報が表示されます。また、1 分あたりに発生した最大呼び出し数や、使用された Amazon リソースネーム (ARN) といった、[Settings] (設定) 情報も表示されます。

結果列には、デプロイの重要度に基づいて結果が表示される順序を調整できるデプロイの目標とSageMakerレコメンデーションウィンドウが表示されます。ユースケースの [Cost] (コスト)、[Latency] (レイテンシー)、[Throughput] (スループット) の重要レベルを指定できる 3 つのドロップダウンメニューがあります。目標(コスト、レイテンシー、スループット)ごとに、最小重要度低重要度中重要度高重要度、または最高重要度の重要度のレベルを設定できます。

各目標の重要度の選択に基づいて、Inference Recommender はパネルの右側にあるレコメンデーションフィールドに、1 時間あたりの推定コストと推論リクエストとともに上位のSageMakerレコメンデーションを表示します。また、予想されるモデルのレイテンシー、最大呼び出し数、インスタンス数に関する情報も表示されます。

表示される上位のレコメンデーションに加えて、Inference Recommender がテストしたすべてのインスタンスについての同じ情報が[All runs] (すべての実行) セクションに表示されます。

SageMaker console

カスタムロードテストジョブの結果は、コンソールで次の SageMaker 方法で表示できます。

  1. の SageMaker コンソールに移動しますhttps://console.aws.amazon.com/sagemaker/

  2. 左側のナビゲーションペインで、[推論] を選択し、次に [推論レコメンダー] を選択します。

  3. [推論レコメンダージョブ] ページで、推論レコメンデーションジョブの名前を選択します。

次のスクリーンショットに示すように、ジョブの詳細ページで、モデルに SageMaker 推奨されるインスタンスタイプである推論レコメンデーション を表示できます。

SageMaker コンソールのジョブの詳細ページの推論レコメンデーションリストのスクリーンショット。

このセクションでは、[モデルレイテンシー][1 時間あたりのコスト][推論あたりのコスト][1 分あたりの呼び出し] などのさまざまな要因でインスタンスタイプを比較できます。

このページでは、ジョブに指定した設定も表示できます。Monitor セクションでは、インスタンスタイプごとにログに記録された Amazon CloudWatch メトリクスを表示できます。これらのメトリクスの解釈について詳しくは、「結果の解釈」を参照してください。