取得現有端點的推論建議 - Amazon SageMaker

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

取得現有端點的推論建議

推論建議任務會針對建議的執行個體類型和現有端點執行一組負載測試。推論建議任務會使用效能指標,這些指標是以您在模型版本註冊期間提供的範例資料為基礎的負載測試。

您可以對現有推論端點進行基準測試並取得 SageMaker 推論建議,以協助您改善端點的效能。取得現有 SageMaker 推論端點建議的程序類似於在沒有端點的情況下取得推論建議的程序。在對現有端點進行基準測試時,需要注意幾項功能排除事項:

  • 每個 Inference Recommender 任務只能使用一個現有端點。

  • 您的端點上只能有一個變體。

  • 您無法使用啟用自動擴展的端點。

  • 只有即時推論才支援此功能。

  • 此功能不支援即時多模型端點

警告

強烈建議您不要在處理即時流量的生產端點上執行 Inference Recommender 任務。基準測試期間的綜合負載可能會影響您的生產端點,並導致調節或提供不正確的基準結果。建議您使用非生產或開發人員端點進行比較。

以下各節將示範如何使用 Amazon SageMaker 推論建議程式,根據您的模型類型,使用 AWS SDK for Python (Boto3) 和. AWS CLI

注意

在建立 Inference Recommender 建議任務之前,請確定您已符合 必要條件

必要條件

如果您還沒有 SageMaker 推論端點,則可以在沒有端點的情況下取得推論建議,或者可以按照建立端點並部署模型中的指示建立即時推論端點

為現有端點建立推論建議任務

使 AWS SDK for Python (Boto3)用或以程式設計方式建立推論建議。 AWS CLI指定推論建議的工作名稱、現有 SageMaker 推論端點的名稱、 AWS IAM 角色 ARN、輸入組態,以及從模型登錄註冊模型時的模型套件 ARN。

AWS SDK for Python (Boto3)

使用 CreateInferenceRecommendationsJob API 取得推論建議。將推論建議任務的 JobType 欄位設為 'Default'。此外,請提供下列項目:

  • JobName 欄位的 Inference Recommender 建議任務提供名稱。推論推薦人工作名稱在 AWS 區域內及您的帳戶中必須是唯一的 AWS 。

  • IAM 角色的 Amazon Resource Name (ARN),可讓 Inference Recommender 代表您執行任務。為 RoleArn 欄位定義此項目。

  • 您在模型註冊表中註冊模型時所建立的版本化模型套件之 ARN。在 InputConfig 欄位中為 ModelPackageVersionArn 定義此項目。

  • 在欄位中提供您要在「 SageMaker 推論建議程式」中進行基準測試的現有推論端點名稱。Endpoints InputConfig

匯入 AWS SDK for Python (Boto3) 封裝,並使用用 SageMaker 戶端類別建立用戶端物件。如果您遵循先決條件一節中的步驟,模型套件群組 ARN 會儲存在名為 model_package_arn 的變數。

# Create a low-level SageMaker service client. import boto3 aws_region = '<region>' sagemaker_client = boto3.client('sagemaker', region_name=aws_region) # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn = '<model-package-arn>' # Provide a unique job name for SageMaker Inference Recommender job job_name = '<job-name>' # Inference Recommender job type. Set to Default to get an initial recommendation job_type = 'Default' # Provide an IAM Role that gives SageMaker Inference Recommender permission to # access AWS services role_arn = '<arn:aws:iam::<account>:role/*>' # Provide endpoint name for your endpoint that want to benchmark in Inference Recommender endpoint_name = '<existing-endpoint-name>' sagemaker_client.create_inference_recommendations_job( JobName = job_name, JobType = job_type, RoleArn = role_arn, InputConfig = { 'ModelPackageVersionArn': model_package_arn, 'Endpoints': [{'EndpointName': endpoint_name}] } )

請參閱 Amazon SageMaker API 參考指南,以取得可傳遞給的選用和必要引數的完整清單CreateInferenceRecommendationsJob

AWS CLI

使用 create-inference-recommendations-job API 取得執行個體端點建議。將執行個體端點建議任務的 job-type 欄位設為 'Default'。此外,請提供下列項目:

  • job-name 欄位的 Inference Recommender 建議任務提供名稱。推論推薦人工作名稱在 AWS 區域內及您的帳戶中必須是唯一的 AWS 。

  • IAM 角色的 Amazon 資源名稱 (ARN),可讓 Amazon SageMaker 推論建議程式代表您執行任務。為 role-arn 欄位定義此項目。

  • 您在模型註冊表中註冊模型時所建立的版本化模型套件之 ARN。在 input-config 欄位中為 ModelPackageVersionArn 定義此項目。

  • 在欄位中提供您要在「 SageMaker 推論建議程式」中進行基準測試的現有推論端點名稱。Endpoints input-config

aws sagemaker create-inference-recommendations-job --region <region>\ --job-name <job_name>\ --job-type Default\ --role-arn arn:aws:iam::<account:role/*>\ --input-config "{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region:account:role/*>\", \"Endpoints\": [{\"EndpointName\": <endpoint_name>}] }"

取得您的推論建議任務結果

您可以使用與標準推論建議任務相同的程序,以程式設計方式收集推論建議任務的結果。如需詳細資訊,請參閱 取得您的推論建議任務結果

當您取得現有端點的推論建議任務結果時,您應該會收到類似下列內容的 JSON 回應:

{ "JobName": "job-name", "JobType": "Default", "JobArn": "arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id", "RoleArn": "iam-role-arn", "Status": "COMPLETED", "CreationTime": 1664922919.2, "LastModifiedTime": 1664924208.291, "InputConfig": { "ModelPackageVersionArn": "arn:aws:sagemaker:region:account-id:model-package/resource-id", "Endpoints": [ { "EndpointName": "endpoint-name" } ] }, "InferenceRecommendations": [ { "Metrics": { "CostPerHour": 0.7360000014305115, "CostPerInference": 7.456940238625975e-06, "MaxInvocations": 1645, "ModelLatency": 171 }, "EndpointConfiguration": { "EndpointName": "sm-endpoint-name", "VariantName": "variant-name", "InstanceType": "ml.g4dn.xlarge", "InitialInstanceCount": 1 }, "ModelConfiguration": { "EnvironmentParameters": [ { "Key": "TS_DEFAULT_WORKERS_PER_MODEL", "ValueType": "string", "Value": "4" } ] } } ], "EndpointPerformances": [ { "Metrics": { "MaxInvocations": 184, "ModelLatency": 1312 }, "EndpointConfiguration": { "EndpointName": "endpoint-name" } } ] }

前幾行提供推論建議任務本身的相關資訊。其中包含任務名稱、角色 ARN 以及建立和最新修改時間。

InferenceRecommendations 字典包含 Inference Recommender 推論建議的清單。

EndpointConfiguration巢狀字典包含執行個體類型 (InstanceType) 建議,以及在建議工作期間使用的端點和變體名稱 (部署的 AWS 機器學習模型)。

Metrics巢狀字典包含即時端點的估計每小時成本 (CostPerHour)、即時端點的預估每個推論成本 (CostPerInference)、傳送至端點的預期每分鐘InvokeEndpoint要求數目上限 (MaxInvocations),以及模型延遲 (ModelLatency),這是模型需要回應的時間間隔 (毫秒) 的資訊。 SageMaker模型延遲包含傳送請求和從模型容器擷取回應的本機通訊時間,以及在容器中完成推論的時間。

EndpointPerformances 巢狀字典包含執行建議任務的現有端點名稱 (EndpointName) 以及端點的效能指標 (MaxInvocationsModelLatency)。

停止執行個體端點建議

如果您錯誤地開始工作或不再需要執行工作,您可能會想要停止目前正在執行的工作。您可以使用與標準推論建議工作相同的程序,以程式設計方式停止推論建議工作。如需詳細資訊,請參閱 停止您的推論建議