本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Autopilot 生成的容器中配置推理输出
Amazon SageMaker Autopilot 生成一个有序的 ContainerDefinition
列表,可用于构建要在机器学习管道中部署的模型。此模型可用于在线托管和推理。客户可以使用 ListCandidateForAutoMLJob
API 访问推理容器定义列表。表示最佳候选项的推理容器定义的列表也可用作 DescribeAutoMLJob
响应的一部分。
回归和分类问题类型的推理容器定义
生成的推理容器取决于作业的问题类型。
-
回归: 生成两个容器:
-
首先是将原始特征转换为回归算法可以训练的特征的特征的特征工程容器。
-
第二个是转换特征并为数据集生成回归分数的算法容器。
-
-
分类: 生成三个容器:
-
首先是将原始特征转换为分类算法可以训练的特征的特征的特征工程容器。
-
第二个是算法容器,它生成了启动的
predicted_label
,并且还可以生成与推理响应中的分类结果关联的各种概率。 -
第三个是特征工程容器,它对算法预测执行后处理,例如,将预测标签逆变换为原始标签。
-
为分类模型选择推理响应
分类推理容器允许您选择推理响应的内容。有四个预定义的密钥:
-
predicted_label
:由 Autopilot 确定的赢起标签。 -
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
环境包含所有这些键的名称。
第二个容器 (算法) 支持的键是 prediction_label、Rocity 和 Proplicity。请注意,“labels”特意不会添加到 SAGEMAKER_INFEREENCE_SUPPORTED。
下面介绍如何更新推理容器的定义以接收 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'})
您可以使用 Amazon SageMaker Python SDK
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)