本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 AutoPilot 生成的容器中配置推理输出
亚马逊 SageMaker 自动驾驶仪生成有序ContainerDefinition可用于构建模型以在机器学习管道中进行部署的列表。该模型可用于在线托管和推理。客户可以使用ListCandidateForAutoMLJobAPI。代表最佳候选项的推断容器定义列表也可作为的一部分提供。DescribeAutoMLJob响应。
回归和分类问题类型的推理容器定义
生成的推理容器取决于作业的问题类型。
-
回归:生成两个容器:
-
首先是要素工程容器,它将原始要素转换为回归算法可以训练的要素。
-
其次是转换要素并为数据集生成回归分数的算法容器。
-
-
Classification:生成三个容器:
-
将原始要素转换为分类算法可以训练的要素的要素的要素工程容器。
-
生成胜利的算法容器
predicted_label. 它还可以产生与推理响应中的分类结果相关的各种概率。 -
执行算法预测的后期处理的要素工程容器。例如,将预测的标签反向转换为原始标签。
-
为分类模型选择推理响应
使用分类推理容器,您可以选择推理响应的内容。有四个预定义的密钥:
-
predicted_label:由自动驾驶仪确定的获奖标签。 -
probability: 的概率True二进制分类的类。多类别分类中奖类别的概率。 -
probabilities:所有相应的概率列表。 -
labels:所有标签列表
默认情况下,推理容器配置为生成predicted_label仅限 。
使用三个环境变量来选择可选的推理内容:
-
SAGEMAKER_INFERENCE_SUPPORTED:设置这是为了向您提供有关每个容器支持哪些内容的提示。 -
SAGEMAKER_INFERENCE_INPUT: 应该设置为容器在输入有效负载中预期的密钥。 -
SAGEMAKER_INFERENCE_OUTPUT: 应该填充容器输出的一组密钥。
为了选择推理响应内容,我们需要添加SAGEMAKER_INFERENCE_INPUT、SAGEMAKER_INFERENCE_OUTPUT适当地放在集装箱清单中的第二个和第三个集装箱中,以解决分类问题。
第三个分类模型容器支持的密钥是predicted_label、labels、probability和probabilities因此SAGEMAKER_INFERENCE_SUPPORTED环境中包括所有这些密钥的名称。
第二个容器(算法)支持的密钥是预测的 _label、概率和概率。请注意,`标签 '是故意不会添加到支持的 SAGEMAKER_INFERENCE_ 中。
以下是如何更新要接收的推理容器的定义predicted_label和probability.
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'}) containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'}) containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
以下是如何更新要接收的推理容器的定义predicted_label和probabilities和labels. 请注意,您不需要传递labels到第二个容器,算法容器。这是多余的,因为它可以由第三个容器独立生成。这减少了延迟。
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label,probabilities'}) containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label,probabilities'}) containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probabilities,labels'})
您可以使用亚马逊 SageMaker Python 开发工具包
from sagemaker import AutoML aml = AutoML.attach(auto_ml_job_name='AUTOML_JOB_NAME') aml_best_model = aml.create_model(name='SELECT_MODEL_NAME', candidate=None, inference_response_keys=['probabilities', 'labels']) aml_transformer = aml_best_model.transformer(accept='text/csv', assemble_with='Line', instance_type='ml.m5.xlarge', instance_count=1,) aml_transformer.transform(test_data_s3_path, content_type='text/csv', split_type='Line', job_name=<Add jobName>, wait=True)