執行自訂負載測試 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

執行自訂負載測試

Amazon SageMaker Inference Recommender 負載測試會根據延遲和輸送量、自訂流量模式,以及您選擇的無伺服器端點或即時執行個體 (最多 10 個) 的生產需求,執行廣泛的基準測試。

下列各節示範如何使用 和 以程式設計方式建立、描述 AWS SDK for Python (Boto3) 和停止負載測試 AWS CLI,或使用 Amazon SageMaker Studio Classic 或 SageMaker 主控台以互動方式進行。

建立負載測試任務

使用 AWS SDK for Python (Boto3)、 和 以程式設計方式建立負載測試 AWS CLI,或使用 Studio Classic 或 SageMaker 主控台以互動方式建立負載測試。與推論建議一樣,指定負載測試的任務名稱、 AWS IAM角色 、ARN輸入組態,以及您在模型登錄檔註冊模型ARN時的模型套件。負載測試還會要求您指定流量模式和停止條件。

AWS SDK for Python (Boto3)

使用 CreateInferenceRecommendationsJobAPI建立推論建議程式載入測試。為 JobType 欄位指定 Advanced 並提供:

  • 負載測試的任務名稱 (JobName)。任務名稱在您的 AWS 區域和 AWS 帳戶中必須是唯一的。

  • 讓推論建議程式代表您執行任務IAM的角色的 Amazon Resource Name (ARN)。為 RoleArn 欄位定義此項目。

  • 端點組態字典 (InputConfig),方便您在其中指定以下項目:

    • 針對 TrafficPattern,指定階段或樓梯流量模式。透過階段流量模式,新使用者每分鐘產生一次您指定的速率。在階梯流量模式下,新使用者會以您指定的速率按定時間隔 (或步驟) 產生。選擇下列其中一項:

      • 對於 TrafficType,請指定 PHASES。接著,針對 Phases 陣列,指定 InitialNumberOfUsers (開始使用多少個並行使用者,最少為 1 且最多為 3 )、SpawnRate (在特定負載測試階段中,一分鐘內產生的使用者數目,最少為 0 且最多為 3),以及 DurationInSeconds (流量階段應為多長時間,最少為 120 且最多為 3600)。

      • 對於 TrafficType,請指定 STAIRS。然後,針對 Stairs 陣列,指定 DurationInSeconds (流量階段應為多長時間,最少為 120 且最多為 3600)、NumberOfSteps (階段期間使用的間隔數目) 和 UsersPerStep (每個間隔期間新增了多少使用者)。請注意,每個步驟的長度都是 DurationInSeconds / NumberOfSteps 的值。例如,如果您的 DurationInSeconds600 並指定 5 步驟,則每個步驟長度為 120 秒。

        注意

        使用者會定義為系統產生的實行者,在迴路中執行,並以 Inference Recommender 的一部分調用端點的請求。對於在ml.c5.large執行個體上執行的典型XGBoost容器,端點每分鐘可以達到 30,000 個叫用 (500 tps),只有 15-20 個使用者。

    • 對於 ResourceLimit,請指定 MaxNumberOfTests (Inference Recommender 任務的基準測試負載測試數目上限,最少為 1,最多為 10) 和 MaxParallelOfTests (Inference Recommender 任務的平行基準測試負載測試數目上限,最少為 1,最多為 10)。

    • 針對 EndpointConfigurations,您可以指定下列其中一項:

      • InstanceType 欄位方便您在其中指定要執行負載測試的執行個體類型。

      • 您可以在 ServerlessConfig 中為無伺服器端點指定 MaxConcurrencyMemorySizeInMB 的理想值。如需詳細資訊,請參閱無伺服器推論文件

  • 停止條件字典 (StoppingConditions),如果符合任何條件,Inference Recommender 任務就會停止。對於此範例,請在字典中指定下列欄位:

    • 針對 MaxInvocations,指定端點每分鐘預期的請求數目上限,最少為 1 且最多為 30,000。

    • 針對 ModelLatencyThresholds,指定 Percentile (模型延遲百分位數閾值) 和 ValueInMilliseconds (模型延遲百分位數值 (以毫秒為單位))。

    • (選用) 對於 FlatInvocations,您可以指定當 TPS(每分鐘叫用次數) 速率趨於平穩時是否要繼續載入測試。固定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-jobAPI建立推論建議程式載入測試。為 JobType 欄位指定 Advanced 並提供:

  • 負載測試的任務名稱 (job-name)。任務名稱在您的 AWS 區域和 AWS 帳戶中必須是唯一的。

  • 讓推論建議程式代表您執行任務IAM的角色的 Amazon Resource Name (ARN)。為 role-arn 欄位定義此項目。

  • 端點組態字典 (input-config),方便您在其中指定以下項目:

    • 針對 TrafficPattern,指定階段或樓梯流量模式。透過階段流量模式,新使用者每分鐘產生一次您指定的速率。在階梯流量模式下,新使用者會以您指定的速率按定時間隔 (或步驟) 產生。選擇下列其中一項:

      • 對於 TrafficType,請指定 PHASES。接著,針對 Phases 陣列,指定 InitialNumberOfUsers (開始使用多少個並行使用者,最少為 1 且最多為 3 )、SpawnRate (在特定負載測試階段中,一分鐘內產生的使用者數目,最少為 0 且最多為 3),以及 DurationInSeconds (流量階段應為多長時間,最少為 120 且最多為 3600)。

      • 對於 TrafficType,請指定 STAIRS。然後,針對 Stairs 陣列,指定 DurationInSeconds (流量階段應為多長時間,最少為 120 且最多為 3600)、NumberOfSteps (階段期間使用的間隔數目) 和 UsersPerStep (每個間隔期間新增了多少使用者)。請注意,每個步驟的長度都是 DurationInSeconds / NumberOfSteps 的值。例如,如果您的 DurationInSeconds600 並指定 5 步驟,則每個步驟長度為 120 秒。

        注意

        使用者會定義為系統產生的實行者,在迴路中執行,並以 Inference Recommender 的一部分調用端點的請求。對於在ml.c5.large執行個體上執行的典型XGBoost容器,端點每分鐘可以達到 30,000 個叫用 (500 tps),只有 15-20 個使用者。

    • 對於 ResourceLimit,請指定 MaxNumberOfTests (Inference Recommender 任務的基準測試負載測試數目上限,最少為 1,最多為 10) 和 MaxParallelOfTests (Inference Recommender 任務的平行基準測試負載測試數目上限,最少為 1,最多為 10)。

    • 針對 EndpointConfigurations,您可以指定下列其中一項:

      • InstanceType 欄位方便您在其中指定要執行負載測試的執行個體類型。

      • 您可以在 ServerlessConfig 中為無伺服器端點指定 MaxConcurrencyMemorySizeInMB 的理想值。

  • 停止條件字典 (stopping-conditions),如果符合任何條件,Inference Recommender 任務就會停止。對於此範例,請在字典中指定下列欄位:

    • 針對 MaxInvocations,指定端點每分鐘預期的請求數目上限,最少為 1 且最多為 30,000。

    • 針對 ModelLatencyThresholds,指定 Percentile (模型延遲百分位數閾值) 和 ValueInMilliseconds (模型延遲百分位數值 (以毫秒為單位))。

    • (選用) 對於 FlatInvocations,您可以指定當 TPS(每分鐘叫用次數) 速率趨於平穩時是否要繼續載入測試。固定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. 從下拉式清單模型群組欄位中選取模型群組的名稱。此清單包含您帳戶中已向模型登錄檔註冊的所有模型群組,包括 Studio Classic 外部註冊的模型。

  6. 從下拉式清單模型版本欄位中選取模型版本。

  7. 選擇繼續

  8. 名稱欄位中提供任務的名稱。

  9. (選用) 在說明欄位中提供任務的描述。

  10. 選擇授予 Inference Recommender 存取 AWS 服務許可IAM的角色。您可以建立角色並連接AmazonSageMakerFullAccessIAM受管政策以完成此操作,也可以讓 Studio Classic 為您建立角色。

  11. 選擇停止條件以展開可用的輸入欄位。提供一組停止部署建議的條件。

    1. 每分鐘調用數上限欄位中,指定端點每分鐘預期的請求數量上限。

    2. 模型延遲閾值欄位中指定模型延遲閾值 (以微秒為單位)。模型延遲閾值描述了從 Inference Recommender 檢視的模型回應所花費的時間間隔。這個間隔包含傳送請求和從模型容器擷取回應的本機通訊時間,以及在容器中完成推論的時間。

  12. 選擇流量模式以展開可用的輸入欄位。

    1. 初始使用者數目欄位中指定一個整數,以設定虛擬使用者的初始數量。

    2. 產生率欄位中提供一個整數。產生率設定每秒建立的使用者數目。

    3. 持續時間欄位中指定一個整數,以秒為單位設定階段的持續時間。

    4. (選用) 新增其他流量模式。若要這麼做,請選擇新增

  13. 選擇其他設定以顯示最長測試持續時間欄位。指定任務期間測試所需的時間上限 (以秒為單位)。在定義的持續時間之後,不會排定新任務。這有助於確保進行中的任務不會停止,而且您只能檢視已完成的任務。

  14. 選擇繼續

  15. 選擇選取的執行個體

  16. 基準測試執行個體欄位中,選擇新增要測試的執行個體。為 Inference Recommender 選取最多 10 個執行個體,以用於負載測試。

  17. 選擇其他設定

    1. 提供一個整數,此整數會設定任務可在測試數量上限欄位中進行的測試次數上限。請注意,每個端點組態都會產生新的負載測試。

    2. 平行測試上限測試欄位提供一個整數。此設定定義可以平行執行的負載測試次數上限。

  18. 選擇提交

    負載測試最多需要 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. 模型名稱欄位中,輸入 SageMaker 模型的名稱。

    4. 對於IAM角色 ,您可以選取具有建立執行個體建議任務所需許可的現有 AWS IAM角色。或者,如果您沒有現有角色,您可以選擇建立新角色以開啟角色建立快顯視窗,並將必要的許可 SageMaker 新增至您建立的新角色。

    5. 針對用於基準測試承載的 S3 儲存貯體,請輸入您範例承載存檔的 Amazon S3 路徑,其中應包含 Inference Recommender 用於在不同執行個體類型上對模型進行基準測試的範例承載檔案。

    6. 針對承載內容類型 ,輸入範例承載資料的MIME類型。

    7. 對於流量模式,請執行下列動作來設定負載測試的階段:

      1. 對於初始使用者數目,請指定您要開始使用的並行使用者數目 (最少為 1,最多為 3)。

      2. 對於產生率,請指定該階段在一分鐘內產生的使用者數目 (最少為 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. 選擇下一步

  5. 針對步驟 2:執行個體和環境參數,請執行下列操作:

    1. 針對選取要進行基準測試的執行個體,請選取最多 8 個您要進行基準測試的執行個體類型。

    2. (選用) 對於環境參數範圍,您可以指定有助於最佳化模型的環境參數。將參數指定為對。

    3. 選擇 Next (下一步)

  6. 針對步驟 3:任務參數,請執行下列動作:

    1. (選用) 針對工作名稱欄位,輸入執行個體建議任務的名稱。當您建立任務時, 會將時間戳記 SageMaker 附加到此名稱的結尾。

    2. (選用) 針對工作描述,輸入該任務的描述。

    3. (選用) 針對加密金鑰下拉式清單,依名稱選擇 AWS KMS 金鑰,或輸入金鑰ARN來加密您的資料。

    4. (選用) 針對測試次數上限,輸入建議任務期間要執行的測試數量。

    5. (選用) 針對平行測試上限,輸入建議任務期間要執行的平行測試數量上限。

    6. 針對最長測試持續時間,請輸入您希望每個測試執行的秒數上限。

    7. 針對每分鐘調用數上限,請輸入端點在停止建議任務之前每分鐘可達到的請求數量上限。達到此限制後, 會 SageMaker 結束任務。

    8. 對於 P99 模型延遲閾值 (ms),輸入模型延遲百分位數 (以毫秒為單位)。

    9. 選擇 Next (下一步)

  7. 針對步驟 4:檢閱任務,檢閱您的組態,然後選擇提交

取得負載測試結果

使用 AWS SDK for Python (Boto3)、 AWS CLI Studio Classic 或 主控台完成負載測試後,您可以以程式設計方式收集所有負載測試的 SageMaker指標。

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 巢狀字典包含執行個體類型 (InstanceType) 建議,以及建議任務期間使用的端點和變體名稱 (部署的 AWS 機器學習模型)。您可以使用端點和變體名稱在 Amazon CloudWatch Events 中進行監控。如需更多資訊,請參閱 SageMaker 使用 Amazon 監控 Amazon 的指標 CloudWatch

EndpointConfiguration 巢狀字典也包含執行個體計數 (InitialInstanceCount) 建議。這是您應在端點中佈建以符合 StoppingConditions 中指定的 MaxInvocations 執行個體數目。例如,如果 InstanceTypeml.m5.large,而 InitialInstanceCount2,則您應該為端點佈建 2 個ml.m5.large執行個體,以便它可以處理MaxInvocations停止條件中TPS指定的 。

Metrics 巢狀字典包含有關即時端點的預估每小時成本 (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-job 收集指標API。為 job-name 標記指定負載測試的任務名稱:

aws sagemaker describe-inference-recommendations-job --job-name <job-name>

這會傳回類似下列範例的回應。請注意,此範例顯示即時推論的建議執行個體類型 (如需顯示 Serverless Inference 建議的範例,請參閱後面的範例)。

{ '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 推論建議的清單。

巢狀字典包含執行個體類型 EndpointConfigurationInstanceType) 建議,以及建議任務期間使用的端點和變體名稱 (部署的 AWS 機器學習模型)。您可以使用端點和變體名稱在 Amazon CloudWatch Events 中進行監控。如需更多資訊,請參閱 SageMaker 使用 Amazon 監控 Amazon 的指標 CloudWatch

Metrics 巢狀字典包含有關即時端點的預估每小時成本 (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 小時,結果才會顯示。此索引標籤包含結果詳細資訊欄。

詳細資訊欄提供有關負載測試任務的資訊,例如指定給負載測試任務的名稱、建立任務的時間 (建立時間) 等。它也包含設定資訊,例如每分鐘發生的調用次數上限,以及所使用之 Amazon Resource Name 的相關資訊。

結果欄提供部署目標SageMaker建議視窗,您可以根據部署重要性調整結果的顯示順序。您可以在三個下拉式清單選單中為使用案例提供成本延遲輸送量的重要性層級。您可以針對每個目標 (成本、延遲和輸送量) 設定重要性層級:最低重要性低重要性中等重要性高重要性最高重要性

根據您對每個目標的重要性選擇,推論建議程式會在面板右側的SageMaker建議欄位中顯示其最佳建議,以及每小時的預估成本和推論請求。同時也提供預期模型延遲、調用次數上限以及執行個體數目的相關資訊。

除了顯示的最佳建議之外,您也可以看到在所有執行段落中,Inference Recommender 測試過的所有執行個體處理所顯示的相同資訊。

SageMaker console

您可以執行下列動作,在 SageMaker 主控台中檢視自訂負載測試結果:

  1. 前往 SageMaker 主控台https://console.aws.amazon.com/sagemaker/

  2. 在左側導覽窗格中,選擇推論,然後選擇推論建議程式

  3. 推論建議程式任務頁面上,選擇推論建議任務的名稱。

在任務的詳細資訊頁面上,您可以檢視推論建議 ,這是適用於模型的執行個體類型 SageMaker 建議,如下列螢幕擷取畫面所示。

SageMaker 主控台中任務詳細資訊頁面上推論建議清單的螢幕擷取畫面。

在本節中,您可以依各種因素比較執行個體類型,例如模型延遲每小時成本每個推論的成本每分鐘調用數

您也可以在此頁面檢視針對您指定的組態。在監控區段中,您可以檢視針對每個執行個體類型記錄的 Amazon CloudWatch 指標。若要深入了解如何解讀這些指標,請參閱解讀結果