使用 AutoML 為表格資料建立回歸或分類工作 API - Amazon SageMaker

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

使用 AutoML 為表格資料建立回歸或分類工作 API

您可以透過以任何自CreateAutoMLJobV2API動輔助輔助駕駛或. AWS CLI

有關此API動作如何以您選擇的語言轉換為函數的詳細資訊,請參閱的〈另請參閱〉一節CreateAutoMLJobV2並選擇。SDK例如,對於 Python 使用者,請參閱 AWS SDK for Python (Boto3)中 create_auto_ml_job_v2 的完整要求語法。

注意

CreateAutoMLJobV2並且DescribeAutoMLJobV2是提供向後兼容性的CreateAutoMLJob新版本。DescribeAutoMLJob

我們建議使用 CreateAutoMLJobV2CreateAutoMLJobV2 可以管理與舊版本 CreateAutoMLJob 相同的表格問題類型,以及非表格問題類型,例如影像或文字分類,或時間序列預測。

至少,對表格資料進行的所有實驗都需要指定實驗名稱,提供輸入和輸出資料的位置,並指定要預測的目標資料。或者,您也可以指定要解決的問題類型 (迴歸、分類、多類別分類)、選擇建模策略 (堆疊合奏超參數最佳化)、選取 Autopilot 工作用來訓練資料的演算法清單等等。

實驗執行後,您可以比較試驗,並深入研究每個模型的預處理步驟、演算法和超參數範圍的詳細資訊。您還可以選擇下載他們的可解釋性效能報告。使用提供的筆記本來查看自動化資料探索或候選模型定義的結果。

以下是動作的強制性和選擇性輸入要求參數的CreateAutoMLJobV2API集合。您可以找到此操作先前版本的替代資訊 CreateAutoMLJob。不過,我們建議您使用 CreateAutoMLJobV2

尋找有關如何將 遷移 CreateAutoMLJob到 CreateAuto MLJobV2CreateAutoMLJob 移轉到 CreateAutoMLJobV2 的指南。

必要參數

CreateAutoMLJobV2

當呼叫 CreateAutoMLJobV2 建立表格式資料的 Autopilot 實驗時,您必須提供下列值:

CreateAutoMLJob

當呼叫 CreateAutoMLJob 建立 AutoML 實驗時,您必須提供以下四個值:

所有其他參數都是選用參數。

選用的參數

下列各節提供一些選用參數的詳細資訊,您可以在使用表格資料時傳送至CreateAutoMLJobV2API動作。您可以找到此操作先前版本的替代資訊 CreateAutoMLJob。不過,我們建議您使用 CreateAutoMLJobV2

對於表格式資料,在資料上執行訓練模型候選模型的演算法集取決於您的建模策略 (ENSEMBLINGHYPERPARAMETER_TUNING)。以下詳細說明如何設定此訓練模式。

如果您保留空白 (或 null),則會根據您的資料集大小來推論 Mode

如需 Autopilot 的堆疊式整合超參數最佳化訓練方法的資訊,請參閱訓練模式與演算法支援

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

您可以使用 TabularJobConfig.Mode 參數設定 AutoML 任務 V2 的訓練方法

CreateAutoMLJob

您可以使用 AutoMLJobConfig.Mode 參數設定 AutoML 任務的訓練方法

特徵選取

Autopilot 提供自動資料預處理步驟,包括特徵選擇和特徵擷取。但是,您可以手動提供要在訓練 FeatureSpecificatioS3Uri 屬性時使用的特徵。

選取的特徵應以下列格式包含在JSON檔案中:

{ "FeatureAttributeNames":["col1", "col2", ...] }

["col1", "col2", ...] 中所列出的值會區分大小寫。它們應該是包含唯一值的字串清單,這些值是輸入資料中列名稱的子集。

注意

提供為特徵的欄位清單不能包含目標欄位。

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

您可以使用TabularJobConfig.FeatureSpecificatioS3Uri參數URL將設定為所選特徵。

CreateAutoMLJob

您可以使用下列格式utoMLCandidateGenerationConfig在中CreateAutoMLJobAPI設定 AFeatureSpecificatioS3Uri屬性:

{ "AutoMLJobConfig": { "CandidateGenerationConfig": { "FeatureSpecificationS3Uri":"string" }, } }

演算法選擇

預設情況下,您的 Autopilot 任務會在您的資料集執行預先定義的演算法清單來訓練候選模型。演算法清單取決於任務所使用的訓練模式 (ENSEMBLINGHYPERPARAMETER_TUNING)。

您可以提供預設演算法選取的子集。

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

您可以指定AlgorithmsConfig屬性AutoMLAlgorithms中選取的陣列CandidateGenerationConfig

下面是 AlgorithmsConfig 屬性的例子,在其 AutoMLAlgorithms 欄位恰好列出了三種演算法 (”xgboost”、“fastai”、“catboost”),用於整合訓練模式。

{ "AutoMLProblemTypeConfig": { "TabularJobConfig": { "Mode": "ENSEMBLING", "CandidateGenerationConfig": { "AlgorithmsConfig":[ {"AutoMLAlgorithms":["xgboost", "fastai", "catboost"]} ] }, }, }, }
CreateAutoMLJob

您可以指定在 A 的AlgorithmsConfig屬性AutoMLAlgorithms中選擇的數組utoMLCandidateGenerationConfig

下面是 AlgorithmsConfig 屬性的例子,在其 AutoMLAlgorithms 欄位恰好列出了三種演算法 (「XGBoost」、「fastai」、「catboost」),用於整合訓練模式。

{ "AutoMLJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig":[ {"AutoMLAlgorithms":["xgboost", "fastai", "catboost"]} ] }, "Mode": "ENSEMBLING" }

如需每項訓練的可用演算法清單 Mode,請參閱 AutoMLAlgorithms。如需每個演算法的詳細資訊,請參閱訓練模式與演算法支援

您可以提供自己的驗證資料集和自訂資料分割比例,或讓 Autopilot自動分割資料集。

CreateAutoMLJobV2

每個AutoMLJobChannel物件 (請參閱必要的參數 A utoMLJob InputDataConfig) 都有一個ChannelType,可以設定為trainingvalidation值,指定建置機器學習模型時如何使用資料。至少必須提供一個資料來源,最多允許兩個資料來源:一個用於訓練資料,另一個用於驗證資料。

將資料分割為訓練和驗證資料集的方式,取決於您有一個或兩個資料來源。

  • 如果您只有一個資料來源,則ChannelType依預設會將其設定為training,且必須具有此值。

    • 如果未設定 AutoMLDataSplitConfig 中的 ValidationFraction 值,則預設會使用來自此來源的 0.2 (20%) 資料進行驗證。

    • 如果設定ValidationFraction為介於 0 和 1 之間的值,則會根據指定的值來分割資料集,其中值會指定用於驗證的資料集分數。

  • 如果您有兩個資料來源,則必須將其中一個AutoMLJobChannel物件的ChannelType設定為training,即預設值。其他資料來源的ChannelType必須設定為validation。這兩個資料來源必須具有相同的格式 (CSV或 Parquet),以及相同的資料架構。在這種情況下,您不得設定ValidationFraction的值,因為每個來源的所有資料都會用於訓練或驗證。設定此值會導致錯誤。

CreateAutoMLJob

每個AutoMLChannel物件 (請參閱必要的參數 InputDataConfig) 都有一個ChannelType,可以設定為trainingvalidation值,指定建置機器學習模型時如何使用資料。至少必須提供一個資料來源,最多允許兩個資料來源:一個用於訓練資料,另一個用於驗證資料。

將資料分割為訓練和驗證資料集的方式,取決於您有一個或兩個資料來源。

  • 如果您只有一個資料來源,則ChannelType依預設會將其設定為training,且必須具有此值。

    • 如果未設定 AutoMLDataSplitConfig 中的 ValidationFraction 值,則預設會使用來自此來源的 0.2 (20%) 資料進行驗證。

    • 如果設定ValidationFraction為介於 0 和 1 之間的值,則會根據指定的值來分割資料集,其中值會指定用於驗證的資料集分數。

  • 如果您有兩個資料來源,則必須將其中一個AutoMLChannel物件的ChannelType設定為training,即預設值。其他資料來源的ChannelType必須設定為validation。這兩個資料來源必須具有相同的格式 (CSV或 Parquet),以及相同的資料架構。在這種情況下,您不得設定ValidationFraction的值,因為每個來源的所有資料都會用於訓練或驗證。設定此值會導致錯誤。

如需 Autopilot 中的拆分與交叉驗證的相關資訊,請參閱Autopilot 的交叉驗證

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

您可以使用 TabularJobConfig.ProblemType 參數進一步指定 AutoML 任務 V2 的模型候選項可用的監督學習問題類型 (二進位分類、多類別分類、迴歸)。

CreateAutoMLJob

您可以使用 CreateAutoPilot.ProblemType 參數設定 AutoML 作業的問題類型。這限制了 Autopilot 嘗試的預處理類型和演算法。任務完成後,如果您已設定 CreateAutoPilot.ProblemType,則 ResolvedAttribute.ProblemType 會符合您設定的 ProblemType。如果您將其保留空白 (或 null),則代表您推論出來的 ProblemType

注意

在某些情況下,Autopilot 無法以夠高的可信度推論 ProblemType,在這種情況下,您必須提供值,任務才會成功。

您可以將範例權重欄位新增至表格式資料集,然後將其傳遞至 AutoML 任務,以請求在訓練及評估期間對資料集行進行加權。

僅在整合模式下支援樣本權重。你的權重應該是數字且非負數。排除無效或沒有權重值的資料點。如需可用目標指標的詳細資訊,請參閱Autopilot 加權指標

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

要在創建實驗時設置樣本權重(請參閱 CreateAutoMLJobV2),您可以在TabularJobConfig對象的SampleWeightAttributeName屬性中傳遞樣本權重列的名稱。這可確保您的目標指標使用權重來訓練、評估及選擇候選模型。

CreateAutoMLJob

要在創建實驗時設置樣本權重(請參閱 CreateAutoMLJob),您可以在 A utoMLChannel 對象的SampleWeightAttributeName屬性中傳遞示例權重列的名稱。這可確保您的目標指標使用權重來訓練、評估及選擇候選模型。

您可以將 AutoML 任務 V2 設定為在需要額外的運算資源來處理大型資料集時,在 Amazon EMR 無伺服器上自動啟動遠端任務。AutoML 工作可在需要時EMR無縫轉換至無伺服器,因此可以處理超過最初佈建資源的資料集,而無需您進行任何手動介入。EMR無伺服器可用於表格式和時間序列問題類型。建議您為大於 5 GB 的表格式資料集設定此選項。

若要允許 AutoML 作業 V2 自動轉換為大型資料集的EMR無伺服器,您需要為 AutoML 工作 V2 輸入請求提供包含ExecutionRoleARN欄位AutoMLComputeConfigEmrServerlessComputeConfig物件。

ExecutionRoleARN是授與 AutoML 工作 V2 執行EMR無伺服器作業所需權限的IAM角色。ARN

此角色應具有下列信任關係:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

並授予權限:

  • 建立、列出和更新EMR無伺服器應用程式。

  • 在EMR無伺服器應用程式上開始、列出、取得或取消工作執行。

  • 標記EMR無伺服器資源。

  • 將IAM角色傳遞給EMR無伺服器服務以執行。

    透過授與iam:PassRole權限,AutoML 工作 V2 可以暫時擔任該EMRServerlessRuntimeRole-*角色並將其傳遞給EMR無伺服器服務。這些是EMR無伺服器任務執行環境用來存取執行時期間所需的其他 AWS 服務和資源的IAM角色,例如 Amazon S3 進行資料存取、根據您 CloudWatch 的工作負載需求進行記錄、存取資 AWS Glue 料型錄或其他服務。

    如需此角色許可的詳細資訊,請參閱 Amazon EMR 無伺服器的任務執行階段角色

在提供的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}" + } + } } ] }

遷移 CreateAutoMLJob到 CreateAuto MLJobV2

我們建議 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" } ] }
  • 請求在版本之間變更位置與結構的屬性。

    下列屬性變更了位置:DataSplitConfigSecurity ConfigCompletionCriteriaModeFeatureSpecificationS3UriSampleWeightAttributeNameTargetAttributeName

    CreateAutoMLJob
    { "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" }
    CreateAutoMLJobV2
    { "AutoMLProblemTypeConfig": { "TabularJobConfig": { "Mode": "string", "ProblemType": "string", "GenerateCandidateDefinitionsOnly": boolean, "CompletionCriteria": { "MaxAutoMLJobRuntimeInSeconds": number, "MaxCandidates": number, "MaxRuntimePerTrainingJobInSeconds": number }, "FeatureSpecificationS3Uri": "string", "SampleWeightAttributeName": "string", "TargetAttributeName": "string" } }, "DataSplitConfig": { "ValidationFraction": number }, "SecurityConfig": { "EnableInterContainerTrafficEncryption": boolean, "VolumeKmsKeyId": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } } }
  • 下列屬性會變更版本之間的位置與結構。

    下面JSON說明了如何 Con utoMLJob fig。 CandidateGenerationConfig類型 A utoMLCandidate GenerationConfig 移至 A utoMLProblem TypeConfig。 TabularJobConfig。 CandidateGenerationConfigCandidateGenerationConfig在 V2 中的類型。

    CreateAutoMLJob
    { "AutoMLJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], "FeatureSpecificationS3Uri": "string" } }
    CreateAutoMLJobV2
    { "AutoMLProblemTypeConfig": { "TabularJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], }, } }, }
  • 請求變更名稱與結構的屬性。

    下面JSON說明如何 InputDataConfigA 的數組utoMLChannel)在 V2 中更改為 A utoMLJob InputDataConfigA utoMLJob 通道的數組)。請注意,屬性 SampleWeightAttributeNameTargetAttributeName 已從 InputDataConfig 移出並移入 AutoMLProblemTypeConfig

    CreateAutoMLJob
    { "InputDataConfig": [ { "ChannelType": "string", "CompressionType": "string", "ContentType": "string", "DataSource": { "S3DataSource": { "S3DataType": "string", "S3Uri": "string" } }, "SampleWeightAttributeName": "string", "TargetAttributeName": "string" } ] }
    CreateAutoMLJobV2
    { "AutoMLJobInputDataConfig": [ { "ChannelType": "string", "CompressionType": "string", "ContentType": "string", "DataSource": { "S3DataSource": { "S3DataType": "string", "S3Uri": "string" } } } ] }