本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以通过调用 Autopilot 或 AWS CLI支持的任何语言的 CreateAutoMLJobV2
API 操作,以编程方式为表格数据创建 Autopilot 回归或分类作业。以下参数集合介绍了 CreateAutoMLJobV2
API 操作的必需和可选输入请求参数。您可以找到此操作先前版本 CreateAutoMLJob
的备用信息。但是,我们建议使用 CreateAutoMLJobV2
。
有关此 API 操作如何转换为所选语言中函数的信息,请参阅 CreateAutoMLJobV2
中的另请参阅部分并选择 SDK。例如,对于 Python 用户,请参阅 AWS SDK for Python (Boto3)中 create_auto_ml_job_v2
的完整请求语法。
注意
CreateAutoMLJobV2 和 DescribeAutoMLJobV2 是的新版本,DescribeAutoMLJob它们提供了向后兼容性CreateAutoMLJob。
我们建议使用 CreateAutoMLJobV2
。CreateAutoMLJobV2
可以管理与其先前版本 CreateAutoMLJob
相同的表格问题类型,以及非表格问题类型,例如图像或文本分类或者时间序列预测。
至少,所有表格数据实验都需要指定实验名称,提供输入和输出数据的位置,并指定要预测的目标数据。您还可以选择指定要解决的问题类型(回归、分类、多分类器)、选择建模策略(堆叠集合或超参数优化)、选择 Autopilot 任务用于训练数据的算法列表等。
实验运行后,您可以比较试验,并深入研究每个模型的预处理步骤、算法和超参数范围的详细信息。您还可以选择下载他们的解释功能和性能报告。使用提供的笔记本查看自动数据探索的结果或候选模型定义。
在将 a 迁移 CreateAutoMLJob 到 CreateAuto MLJob V2 中查找有关如何将 CreateAutoMLJob
迁移到 CreateAutoMLJobV2
的指南。
必需参数
在调用 CreateAutoMLJobV2
为表格数据创建 Autopilot 实验时,您必须提供以下值:
-
AutoMLJobName
,用于指定您作业的名称。 -
AutoMLJobInputDataConfig
中至少有一个AutoMLJobChannel
来指定您的数据来源。 -
同时提供
AutoMLJobObjective
指标和您在AutoMLProblemTypeConfig
中选择的有监督问题类型(二元分类、多元分类、回归),或者均不提供。对于表格数据,您必须选择TabularJobConfig
作为AutoMLProblemTypeConfig
的类型。您可以在TabularJobConfig
的ProblemType
属性中设置有监督学习问题。 -
OutputDataConfig
,指定用于存储 AutoML 作业构件的 Amazon S3 输出路径。 -
RoleArn
,指定用于访问您的数据的角色的 ARN。
所有其他参数都是可选的。
可选参数
以下部分提供了一些可选参数的详细信息,在使用表格数据时,您可以将这些参数传递给 CreateAutoMLJobV2
API 操作。您可以找到此操作先前版本 CreateAutoMLJob
的备用信息。但是,我们建议使用 CreateAutoMLJobV2
。
对于表格数据,在您的数据上运行用于训练候选模型的算法集取决于您的建模策略(ENSEMBLING
或 HYPERPARAMETER_TUNING
)。以下将详细介绍如何设置此训练模式。
如果保留空白(或为 null
),则 Mode
根据数据集的大小进行推理。
有关 Autopilot 的堆叠组合和超参数优化训练方法的信息,请参阅训练模式和算法支持
特征选择
Autopilot 提供自动数据预处理步骤,包括特征选择和特征提取。但是,您可以使用 FeatureSpecificatioS3Uri
属性手动提供要在训练中使用的特征。
所选特征应包含在 JSON 文件中,采用以下格式:
{ "FeatureAttributeNames":["col1", "col2", ...] }
["col1", "col2", ...]
中列出的值区分大小写。它们应该是包含唯一值的字符串列表,这些值是输入数据中列名的子集。
注意
提供作为特征的列的列表不能包括目标列。
算法选择
默认情况下,您的 Autopilot 作业会在数据集上运行预定义的算法列表,以训练候选模型。算法列表取决于作业使用的训练模式(ENSEMBLING
或 HYPERPARAMETER_TUNING
)。
您可以提供默认算法选择的子集。
有关各种训练 Mode
可用算法的列表,请参阅 AutoMLAlgorithms
。有关每种算法的详细信息,请参阅训练模式和算法支持。
您可以提供自己的验证数据集和自定义的数据拆分比率,也可以让 Autopilot 自动拆分数据集。
有关 Autopilot 中的拆分和交叉验证的信息,请参阅 Autopilot 中的交叉验证。
注意
在某些情况下,Autopilot 无法以足够高的置信度推理 ProblemType
,在这种情况下,您必须提供值以使作业成功。
您可以向表格数据集添加样本权重列,然后将其传递给 AutoML 作业,以请求在训练和评估期间对数据集行进行加权。
只有组合模式支持样本加权。您的权重应为非负数字。没有权重值或权重值无效的数据点被排除。有关可用目标指标的更多信息,请参阅 Autopilot 加权指标。
您可以配置 AutoML 作业 V2,以便在处理大型数据集需要额外计算资源时,自动启动 Amazon EMR Serverless 上的远程作业。通过在需要时无缝过渡到 EMR Serverless,AutoML 作业可以处理超出初始资源配置的数据集,而无需您进行任何人工干预。EMR Serverless 可用于表格和时间序列问题类型。我们建议为大于 5 GB 的表格数据集设置此选项。
要让 AutoML 作业 V2 自动过渡到针对大型数据集的 EMR Serverless,您需要向 AutoML 作业 V2 输入请求的 AutoMLComputeConfig
提供一个 EmrServerlessComputeConfig
对象,其中包括一个 ExecutionRoleARN
字段。
ExecutionRoleARN
是 IAM 角色的 ARN,授予 AutoML 作业 V2 运行 EMR Serverless 作业所需的权限。
该角色应具有以下信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "emr-serverless.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
并授予权限进行:
-
创建、列出和更新 EMR Serverless 应用程序。
-
在 EMR Serverless 应用程序上启动、列出、获取或取消作业运行。
-
标记 EMR Serverless 资源。
-
将 IAM 角色传递给 EMR Serverless 服务以执行。
通过授予
iam:PassRole
权限,AutoML 作业 V2 可以临时承担EMRServerlessRuntimeRole-*
角色,并将其传递给 EMR Serverless 服务。EMR Serverless 任务执行环境使用这些 IAM 角色来访问运行时所需的其他 AWS 服务和资源,例如 Amazon S3,用于访问数据、记录、访问 AWS Glue 数据目录或其他基于您的工作负载 CloudWatch 要求的服务。有关此角色权限的详细信息,请参阅 Amazon EMR Serverless 的作业运行时角色。
所提供 JSON 文档中定义的 IAM 策略会授予这些权限:
{
"Version": "2012-10-17",
"Statement": [{
+ "Sid": "EMRServerlessCreateApplicationOperation",
+ "Effect": "Allow",
+ "Action": "emr-serverless:CreateApplication",
+ "Resource": "arn:aws:emr-serverless:*:*:/*",
+ "Condition": {
+ "StringEquals": {
+ "aws:RequestTag/sagemaker:is-canvas-resource": "True",
+ "aws:ResourceAccount": "${aws:PrincipalAccount}"
+ }
+ }
+ },
+ {
+ "Sid": "EMRServerlessListApplicationOperation",
+ "Effect": "Allow",
+ "Action": "emr-serverless:ListApplications",
+ "Resource": "arn:aws:emr-serverless:*:*:/*",
+ "Condition": {
+ "StringEquals": {
+ "aws:ResourceAccount": "${aws:PrincipalAccount}"
+ }
+ }
+ },
+ {
+ "Sid": "EMRServerlessApplicationOperations",
+ "Effect": "Allow",
+ "Action": [
+ "emr-serverless:UpdateApplication",
+ "emr-serverless:GetApplication"
+ ],
+ "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
+ "Condition": {
+ "StringEquals": {
+ "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
+ "aws:ResourceAccount": "${aws:PrincipalAccount}"
+ }
+ }
+ },
+ {
+ "Sid": "EMRServerlessStartJobRunOperation",
+ "Effect": "Allow",
+ "Action": "emr-serverless:StartJobRun",
+ "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
+ "Condition": {
+ "StringEquals": {
+ "aws:RequestTag/sagemaker:is-canvas-resource": "True",
+ "aws:ResourceAccount": "${aws:PrincipalAccount}"
+ }
+ }
+ },
+ {
+ "Sid": "EMRServerlessListJobRunOperation",
+ "Effect": "Allow",
+ "Action": "emr-serverless:ListJobRuns",
+ "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
+ "Condition": {
+ "StringEquals": {
+ "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
+ "aws:ResourceAccount": "${aws:PrincipalAccount}"
+ }
+ }
+ },
+ {
+ "Sid": "EMRServerlessJobRunOperations",
+ "Effect": "Allow",
+ "Action": [
+ "emr-serverless:GetJobRun",
+ "emr-serverless:CancelJobRun"
+ ],
+ "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*",
+ "Condition": {
+ "StringEquals": {
+ "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
+ "aws:ResourceAccount": "${aws:PrincipalAccount}"
+ }
+ }
+ },
+ {
+ "Sid": "EMRServerlessTagResourceOperation",
+ "Effect": "Allow",
+ "Action": "emr-serverless:TagResource",
+ "Resource": "arn:aws:emr-serverless:*:*:/*",
+ "Condition": {
+ "StringEquals": {
+ "aws:RequestTag/sagemaker:is-canvas-resource": "True",
+ "aws:ResourceAccount": "${aws:PrincipalAccount}"
+ }
+ }
+ },
+ {
+ "Sid": "IAMPassOperationForEMRServerless",
+ "Effect": "Allow",
+ "Action": "iam:PassRole",
+ "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*",
+ "Condition": {
+ "StringEquals": {
+ "iam:PassedToService": "emr-serverless.amazonaws.com",
+ "aws:ResourceAccount": "${aws:PrincipalAccount}"
+ }
+ }
}
]
}
将 a 迁移 CreateAutoMLJob 到 CreateAuto MLJob V2
我们建议 CreateAutoMLJob
的用户迁移到 CreateAutoMLJobV2
。
本节通过突出显示两个版本之间输入请求的对象CreateAutoMLJob和属性的位置、名称或结构的变化来说明和 CreateAutoMLJobV2 之间输入参数的差异。
-
在两个版本之间没有变化的请求属性。
{ "AutoMLJobName": "string", "AutoMLJobObjective": { "MetricName": "string" }, "ModelDeployConfig": { "AutoGenerateEndpointName": boolean, "EndpointName": "string" }, "OutputDataConfig": { "KmsKeyId": "string", "S3OutputPath": "string" }, "RoleArn": "string", "Tags": [ { "Key": "string", "Value": "string" } ] }
-
在两个版本之间位置和结构发生变化的请求属性。
以下属性改变了位置:
DataSplitConfig
、Security Config
、CompletionCriteria
、Mode
、FeatureSpecificationS3Uri
、SampleWeightAttributeName
、TargetAttributeName
。{ "AutoMLJobConfig": { "Mode": "string", "CompletionCriteria": { "MaxAutoMLJobRuntimeInSeconds": number, "MaxCandidates": number, "MaxRuntimePerTrainingJobInSeconds": number }, "DataSplitConfig": { "ValidationFraction": number }, "SecurityConfig": { "EnableInterContainerTrafficEncryption": boolean, "VolumeKmsKeyId": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } }, "CandidateGenerationConfig": { "FeatureSpecificationS3Uri": "string" } }, "GenerateCandidateDefinitionsOnly": boolean, "ProblemType": "string" }
-
在两个版本之间,以下属性的位置和结构发生了变化。
以下 JSON 说明了如何自动MLJob配置。 CandidateGenerationConfig类型为 “自动” MLCandidate GenerationConfig 已移至 “自动 MLProblemTypeConfig”。 TabularJobConfig。 CandidateGenerationConfigCandidateGenerationConfig在 V2 中属于类型。
{ "AutoMLJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], "FeatureSpecificationS3Uri": "string" } }
-
名称和结构发生了变化的请求属性。
以下 JSON 说明了 InputDataConfig(自动数组MLChannel)是如何在 V2 中更改为自动 MLJobInputDataConfig(自动MLJob频道数组)的。请注意,属性
SampleWeightAttributeName
和TargetAttributeName
从InputDataConfig
中移出并移入到AutoMLProblemTypeConfig
中。{ "InputDataConfig": [ { "ChannelType": "string", "CompressionType": "string", "ContentType": "string", "DataSource": { "S3DataSource": { "S3DataType": "string", "S3Uri": "string" } }, "SampleWeightAttributeName": "string", "TargetAttributeName": "string" } ] }