本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
运行自定义负载测试
Amazon SageMaker Inference Recommerder 负载测试根据延迟和吞吐量的生产要求、自定义流量模式以及您选择的无服务器终端节点或实时实例(最多 10 个)来执行广泛的基准测试。
以下各节演示如何使用和以编程方式创建、描述和停止负载测试,或者如何使用 Amazon SageMaker Studio Classic 或控制台以交互方式创建 Amazon CLI、描述 Amazon SDK for Python (Boto3) 和停止负载测试。 SageMaker
创建负载测试作业
使用、使用以编程方式创建负载测试 Amazon SDK for Python (Boto3),或者使用 Studio Classic 或控制台以交互方式创建负载测试。 Amazon CLI SageMaker 与推理推荐器推理建议一样,请指定负载测试的任务名称、IAM Amazon 角色 ARN、输入配置以及您在模型注册表中注册模型时的模型包 ARN。负载测试还要求您指定流量模式和停止条件。
- Amazon SDK for Python (Boto3)
-
使用
CreateInferenceRecommendationsJob
API 创建 Inference Recommender 负载测试。为JobType
字段指定Advanced
并提供:-
负载测试的作业名称 (
JobName
)。职位名称在您所在的 Amazon 地区和您的 Amazon 账户中必须是唯一的。 -
IAM 角色的 Amazon 资源名称 (ARN),此角色可让 Inference Recommender 代表您执行任务。为
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 容器,端点可以达到每分钟 30000 次调用 (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,最大值为 30000。 -
对于
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
。 -
- Amazon CLI
-
使用
create-inference-recommendations-job
API 创建 Inference Recommender 负载测试。为JobType
字段指定Advanced
并提供:-
负载测试的作业名称 (
job-name
)。职位名称在您所在的 Amazon 地区和您的 Amazon 账户中必须是唯一的。 -
IAM 角色的 Amazon 资源名称 (ARN),此角色可让 Inference Recommender 代表您执行任务。为
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 容器,端点可以达到每分钟 30000 次调用 (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,最大值为 30000。 -
对于
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 创建负载测试。
-
在 Studio Classic 应用程序中,选择主页图标 (
)。
-
在 Studio Classic 的左侧边栏中,选择部署。
-
从下拉列表中选择 Inference Recommender。
-
选择创建 Inference Recommender 作业。这将打开一个标题为创建 Inference Recommender 作业的新选项卡。
-
从下拉模型组字段中选择模型组的名称。该列表包括您账户中在模型注册中心注册的所有模型组,包括在 Studio Classic 之外注册的模型。
-
从下拉模型版本字段中选择模型版本。
-
选择继续。
-
在名称字段中提供作业的名称。
-
(可选)在描述字段中提供作业的描述。
-
选择一个 IAM 角色来授予推理推荐者访问服务的 Amazon 权限。您可以创建角色并附加
AmazonSageMakerFullAccess
IAM 托管策略来完成此操作,也可以让 Studio Classic 为您创建角色。 -
选择停止条件以扩展可用的输入字段。提供一组用于停止部署推荐的条件。
-
在每分钟最大调用次数字段中指定预计的针对端点的每分钟最大请求数。
-
在模型延迟阈值字段中指定模型延迟阈值(以微秒为单位)。模型延迟阈值描述了从 Inference Recommender 中查看的模型响应所花费的时间间隔。此时间间隔包括发送请求以及从模型容器提取响应的本地通信时间,以及在容器中完成推理所用的时间。
-
-
选择流量模式以扩展可用的输入字段。
-
通过在初始用户数字段中指定一个整数来设置初始虚拟用户数。
-
为生成速率字段提供一个整数。生成速率设置每秒创建的用户数。
-
通过在持续时间字段中指定一个整数来设置阶段的持续时间(以秒为单位)。
-
(可选)添加其他流量模式。要做到这一点,请选择添加。
-
-
选择其他设置以显示最长测试持续时间字段。指定作业期间测试可花费的最长时间(以秒为单位)。在定义的持续时间之后不会安排新作业。这有助于确保正在进行的作业不会停止,并且您只能查看已完成的作业。
-
选择继续。
-
选择选定实例。
-
在用于基准测试的实例字段中,选择将实例添加到测试。为 Inference Recommender 选择最多 10 个实例以用于负载测试。
-
选择其他设置。
-
为最大测试次数字段提供一个整数,该整数设置作业可以执行的测试次数上限。请注意,每个端点配置均生成一个新的负载测试。
-
为最大并行测试数字段提供一个整数。此设置定义了可以并行运行的负载测试数量的上限。
-
-
选择提交。
负载测试最长可能需要 2 个小时。
警告
不要关闭此选项卡。如果关闭此选项卡,则将取消 Inference Recommender 负载测试作业。
-
- SageMaker console
-
执行以下操作,通过 SageMaker 控制台创建自定义负载测试:
-
访问 SageMaker 控制台,网址为 https://console.aws.amazon.com/sagemaker/
。 -
在左侧导航窗格中,选择推理,然后选择 Inference Recommender。
-
在 Inference Recommender 作业页面上,选择创建作业。
-
对于步骤 1:模型配置,执行以下操作:
-
对于作业类型,选择高级 Recommender 作业。
-
如果您使用的是已在模型注册表中注册的 SageMaker模型,请打开从模型注册表中选择模型开关并执行以下操作:
-
在模型组下拉列表中,在模型注册表中选择您的 SageMaker模型所在的模型组。
-
对于模型版本下拉列表,选择所需的模型版本。
-
-
如果您使用的是您在中创建的模型 SageMaker,请关闭从模型注册表中选择模型开关并执行以下操作:
-
在模型名称字段中,输入您的 SageMaker 模型名称。
-
-
对于 IAM 角色,您可以选择具有创建实例推荐任务所需权限的现有 Amazon IAM 角色。或者,如果您没有现有角色,则可以选择创建新角色以打开角色创建弹出窗口,然后为您创建的新角色 SageMaker 添加必要的权限。
-
对于用于对负载进行基准测试的 S3 存储桶,输入示例负载存档的 Amazon S3 路径,其中应包含示例负载文件,Inference Recommender 使用这些文件在不同的实例类型上对模型进行基准测试。
-
对于负载内容类型,输入示例负载数据的 MIME 类型。
-
对于流量模式,请执行以下操作来配置负载测试的阶段:
-
对于初始用户数,指定开始时的并发用户数(最小值为 1,最大值为 3)。
-
对于生成速率,为该阶段指定 1 分钟内要生成的用户数(最小值为 0,最大值为 3)。
-
对于持续时间(秒),指定流量阶段的持续时间(以秒为单位,最小值为 120,最大值为 3600)。
-
-
(可选)如果您关闭了从模型注册表中选择模型开关并指定了 SageMaker 模型,那么对于容器配置,请执行以下操作:
-
对于域下拉列表,选择模型的机器学习域,例如计算机视觉、自然语言处理或机器学习。
-
在 “框架” 下拉列表中,选择容器的框架,例如 TensorFlow 或 xgBoost。
-
对于框架版本,输入容器映像的框架版本。
-
对于最近的模型名称下拉列表,选择与您自己的模型最匹配的预训练的模型。
-
对于任务下拉列表,选择模型完成的机器学习任务,例如图像分类或回归。
-
-
(可选)对于使用 SageMaker Neo 进行模型编译,您可以为使用 N SageMaker eo 编译的模型配置推荐作业。对于数据输入配置,使用类似于
{'input':[1,1024,1024,3]}
的格式为模型输入正确的输入数据形状。 -
选择下一步。
-
-
对于步骤 2:实例和环境参数,请执行以下操作:
-
对于选择用于基准测试的实例,最多可以选择 8 种实例类型来进行基准测试。
-
(可选)对于环境参数范围,可以指定有助于优化模型的环境参数。将参数指定为键和值对。
-
选择下一步。
-
-
对于步骤 3:作业参数,请执行以下操作:
-
(可选)对于作业名称字段,输入您的实例推荐作业的名称。创建任务时,在此名称的末 SageMaker 尾附加一个时间戳。
-
(可选)对于作业描述字段,输入作业的描述。
-
(可选)在加密密钥下拉列表中,按名称选择 Amazon KMS 密钥或输入其 ARN 来加密您的数据。
-
(可选)对于最大测试次数,输入要在推荐作业期间运行的测试次数。
-
(可选)对于最大并行测试次数,输入要在推荐作业期间运行的并行测试的最大次数。
-
对于最长测试持续时间,输入您希望每项测试运行的最长时间(以秒为单位)。
-
对于每分钟最大调用次数,输入端点在停止推荐作业之前可达到的每分钟最大请求数。达到此限制后, SageMaker 结束作业。
-
对于 P99 模型延迟阈值 (ms),输入模型延迟百分位数(以毫秒为单位)。
-
选择下一步。
-
-
对于步骤 4:查看作业,请查看您的配置,然后选择提交。
-
获取您的负载测试结果
使用 Studio Classic 或 SageMaker控制台完成负载测试后 Amazon SDK for Python (Boto3),您可以通过编程方式收集所有负载测试的指标。 Amazon CLI
- Amazon 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
) 建议以及终端节点和变体名称(已部署的 Amazon 机器学习模型)。您可以使用终端节点和变体名称在 Amazon Ev CloudWatch ents 中进行监控。请参阅 SageMaker 使用亚马逊监控亚马逊 CloudWatch了解更多信息。EndpointConfiguration
嵌套字典还包含实例计数 (InitialInstanceCount
) 推荐。这是您应在端点中预置的实例数量,以满足StoppingConditions
中指定的MaxInvocations
。例如,如果InstanceType
为ml.m5.large
且InitialInstanceCount
为2
,则应为端点配置 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
是一个例外,它告知您在设置负载测试时为MaxConcurrency
和MemorySizeInMB
指定的值。无服务器推荐还会衡量指标ModelSetupTime
,后者衡量在无服务器端点上启动计算资源所花费的时间(以微秒为单位)。有关设置无服务器端点的更多信息,请参阅无服务器推理文档。 - Amazon 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
嵌套字典包含推荐作业期间使用的实例类型 (InstanceType
) 建议以及终端节点和变体名称(已部署的 Amazon 机器学习模型)。您可以使用终端节点和变体名称在 Amazon Ev CloudWatch ents 中进行监控。请参阅 SageMaker 使用亚马逊监控亚马逊 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
是一个例外,它告知您在设置负载测试时为MaxConcurrency
和MemorySizeInMB
指定的值。无服务器推荐还会衡量指标ModelSetupTime
,后者衡量在无服务器端点上启动计算机资源所花费的时间(以微秒为单位)。有关设置无服务器端点的更多信息,请参阅无服务器推理文档。 - Amazon SageMaker Studio Classic
-
这些建议填充在 Studio Classic 中一个名为 “推理建议” 的新选项卡中。显示结果最多可能需要 2 小时。此选项卡包含结果和详情列。
详情列提供有关负载测试作业的信息,例如为负载测试作业指定的名称、作业创建时间(创建时间) 等。它还包含设置信息,例如每分钟发生的最大调用次数以及有关使用的 Amazon 资源名称的信息。
“结果” 列提供了 “部署目标” 和 “SageMaker建议” 窗口,您可以在其中根据部署重要性调整结果的显示顺序。您可以在三个下拉菜单中为使用案例提供成本、延迟和吞吐量的重要性级别。对于每个目标(成本、延迟和吞吐量),您可以设置重要性级别:最低重要性、低重要性、中等重要性、高度重要或最重要。
根据您为每个目标选择的重要性,Inference Recommerder 会在面板右侧的推荐字段中显示其最重要的SageMaker建议,以及每小时的估计成本和推理请求。它还提供了有关预期模型延迟、最大调用次数和实例数的信息。
除了显示的顶级推荐之外,您还可以在所有运行部分中查看为 Inference Recommender 测试的所有实例显示的相同信息。
- SageMaker console
-
您可以通过执行以下操作在 SageMaker 控制台中查看您的自定义负载测试任务结果:
-
访问 SageMaker 控制台,网址为 https://console.aws.amazon.com/sagemaker/
。 -
在左侧导航窗格中,选择推理,然后选择 Inference Recommender。
-
在 Inference Recommender 作业页面上,选择推理推荐作业的名称。
在任务的详细信息页面上,您可以查看推理建议,这是您的模型 SageMaker 推荐的实例类型,如以下屏幕截图所示。
在此部分中,您可以按模型延迟、每小时成本、每次推理成本和每分钟调用次数等各种因素比较实例类型。
在此页面上,您还可以查看为作业指定的配置。在 “监控” 部分,您可以查看为每种实例类型记录的 Amazon CloudWatch 指标。要详细了解如何解释这些指标,请参阅解释结果。
-
停止您的负载测试
如果您错误地启动了当前正在运行的作业,或者不再需要运行该作业,则可能需要停止该作业。使用 StopInferenceRecommendationsJob
API 或通过 Studio Classic 或 SageMaker 控制台以编程方式停止负载测试作业。
- Amazon SDK for Python (Boto3)
-
为
JobName
字段指定负载测试的作业名称:sagemaker_client.stop_inference_recommendations_job( JobName=
'<INSERT>'
) - Amazon CLI
-
为
job-name
标志指定负载测试的作业名称:aws sagemaker stop-inference-recommendations-job --job-name
<job-name>
- Amazon SageMaker Studio Classic
-
关闭您在其中启动自定义负载作业的选项卡以停止 Inference Recommender 负载测试。
- SageMaker console
-
要通过 SageMaker 控制台停止负载测试作业,请执行以下操作:
-
访问 SageMaker 控制台,网址为 https://console.aws.amazon.com/sagemaker/
。 -
在左侧导航窗格中,选择推理,然后选择 Inference Recommender。
-
在 Inference Recommender 作业页面上,选择您的负载测试作业。
-
选择停止作业。
-
在弹出的对话框中,选择确认。
停止作业后,作业的状态将变为正在停止。
-