Crie trabalhos de regressão ou classificação para dados tabulares com a API do AutoML - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie trabalhos de regressão ou classificação para dados tabulares com a API do AutoML

É possível criar um trabalho de regressão ou classificação do Autopilot para dados tabulares de forma programática chamando a ação CreateAutoMLJobV2 da API em qualquer linguagem compatível com o Autopilot ou a AWS CLI. Veja a seguir uma coleção de parâmetros de solicitação de entrada obrigatórios e opcionais para a ação da CreateAutoMLJobV2 API. É possível encontrar as informações alternativas para a versão anterior dessa ação, CreateAutoMLJob. No entanto, recomendamos usar CreateAutoMLJobV2.

Para obter informações sobre como essa ação da API se traduz em uma função no idioma de sua escolha, consulte a seção Consulte também de CreateAutoMLJobV2 e escolha um SDK. Como exemplo, para usuários do Python, veja a sintaxe completa da solicitação de create_auto_ml_job_v2 em AWS SDK for Python (Boto3).

nota

CreateAutoMLJobV2 e DescribeAutoMLJobV2 são novas versões CreateAutoMLJobe DescribeAutoMLJoboferecem compatibilidade com versões anteriores.

Recomendamos usar CreateAutoMLJobV2. O CreateAutoMLJobV2 pode gerenciar tipos de problemas tabulares idênticos aos da versão anterior CreateAutoMLJob, bem como tipos de problemas não tabulares, como classificação de imagens, textos ou previsão de séries temporais.

No mínimo, todos os experimentos com dados tabulares exigem a especificação do nome do experimento, fornecendo locais para os dados de entrada e saída e especificando quais dados-alvo prever. Opcionalmente, você também pode especificar o tipo de problema que deseja resolver (regressão, classificação, classificação multiclasse), escolha a estratégia de modelagem (conjuntos empilhados ou otimização de hiperparâmetros), selecione a lista de algoritmos usados pelo trabalho do Autopilot para treinar os dados e muito mais.

Depois de executado o experimento, você pode comparar os testes e se aprofundar nos detalhes das etapas de pré-processamento, dos algoritmos e dos intervalos de hiperparâmetros de cada modelo. Você também tem a opção de baixar seus relatórios de explicabilidade e desempenho. Use os cadernos fornecidos para ver os resultados da exploração automatizada de dados ou as definições do modelo candidato.

Encontre diretrizes sobre como migrar um CreateAutoMLJob para CreateAutoMLJobV2 em Migrar a CreateAuto MLJob para CreateAuto MLJob a V2.

Parâmetros necessários

CreateAutoMLJobV2

Ao chamar CreateAutoMLJobV2 para criar um experimento do Autopilot para dados tabulares, você deve fornecer os seguintes valores:

  • Um AutoMLJobName para especificar o nome do seu trabalho.

  • Pelo menos uma AutoMLJobChannel em AutoMLJobInputDataConfig para especificar sua fonte de dados.

  • Tanto uma métrica AutoMLJobObjective quanto o tipo escolhido de problema de aprendizado supervisionado (classificação binária, classificação multiclasse, regressão) em AutoMLProblemTypeConfig, ou nenhum. Para dados tabulares, você deve escolher TabularJobConfig como o tipo de AutoMLProblemTypeConfig. Você define o problema de aprendizado supervisionado no atributo ProblemType de TabularJobConfig.

  • Um OutputDataConfig para especificar o caminho de saída do Amazon S3 para armazenar os artefatos do seu trabalho do AutoML.

  • Um RoleArn para especificar o ARN do perfil usada para acessar seus dados.

CreateAutoMLJob

Ao chamar CreateAutoMLJob para criar um experimento do AutoML, você deve fornecer os quatro valores a seguir.

  • Um AutoMLJobName para especificar o nome do seu trabalho.

  • Pelo menos uma AutoMLChannel em InputDataConfig para especificar sua fonte de dados.

  • Um OutputDataConfig para especificar o caminho de saída do Amazon S3 para armazenar os artefatos do seu trabalho do AutoML.

  • Um RoleArn para especificar o ARN do perfil usada para acessar seus dados.

Todos os outros parâmetros são opcionais.

Parâmetros opcionais

As seções a seguir fornecem detalhes de alguns parâmetros opcionais que você pode passar para sua ação de CreateAutoMLJobV2 API ao usar dados tabulares. É possível encontrar as informações alternativas para a versão anterior dessa ação, CreateAutoMLJob. No entanto, recomendamos usar CreateAutoMLJobV2.

Para dados tabulares, o conjunto de algoritmos executados em seus dados para treinar seus candidatos a modelo depende de sua estratégia de modelagem (ENSEMBLING ou HYPERPARAMETER_TUNING). O seguinte detalha como configurar esse modo de treinamento:

Se você mantiver em branco (ounull), Mode isso será inferido com base no tamanho do seu conjunto de dados.

Para obter informações sobre os conjuntos empilhados e os métodos de treinamento de otimização de hiperparâmetros do Autopilot, consulte Modos de treinamento e compatibilidade com algoritmos

CreateAutoMLJobV2

Para dados tabulares, você deve escolher TabularJobConfig como o tipo de AutoMLProblemTypeConfig.

É possível definir o método de treinamento de uma tarefa AutoML V2 com o parâmetro TabularJobConfig.Mode.

CreateAutoMLJob

É possível definir o método de treinamento de uma tarefa do AutoML com o AutoMLJobConfig.Mode parâmetro.

Seleção de atributos

O Autopilot fornece etapas automáticas de pré-processamento de dados, incluindo seleção e extração de atributos. No entanto, você pode fornecer manualmente os atributos a serem usados no treinamento com o FeatureSpecificatioS3Uri atributo.

Os atributos selecionados devem estar contidos em um arquivo JSON no seguinte formato:

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

Os valores listados ["col1", "col2", ...] diferenciam letras maiúsculas de minúsculas. Eles devem ser uma lista de cadeias de caracteres contendo valores exclusivos que são subconjuntos dos nomes das colunas nos dados de entrada.

nota

A lista de colunas fornecida como atributos não pode incluir a coluna de destino.

CreateAutoMLJobV2

Para dados tabulares, você deve escolher TabularJobConfig como o tipo de AutoMLProblemTypeConfig.

É possível definir o URL para os atributos selecionados com o TabularJobConfig.FeatureSpecificatioS3Uri parâmetro.

CreateAutoMLJob

Você pode definir o FeatureSpecificatioS3Uri atributo de Auto MLCandidate GenerationConfig na CreateAutoMLJobAPI com o seguinte formato:

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

Seleção de algoritmos

Por padrão, seu trabalho do Autopilot executa uma lista predefinida de algoritmos em seu conjunto de dados para treinar candidatos a modelos. A lista de algoritmos depende do modo de treinamento (ENSEMBLING ou HYPERPARAMETER_TUNING) usado pelo trabalho.

É possível fornecer um subconjunto da seleção padrão de algoritmos.

CreateAutoMLJobV2

Para dados tabulares, você deve escolher TabularJobConfig como o tipo de AutoMLProblemTypeConfig.

Você pode especificar uma matriz de selecionados AutoMLAlgorithms no AlgorithmsConfig atributo de CandidateGenerationConfig.

Veja a seguir um exemplo de um AlgorithmsConfig atributo listando exatamente três algoritmos (“XGBoost”, “fastai”, “catboost”) em seu AutoMLAlgorithms campo para o modo de treinamento em agrupamento.

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

Você pode especificar uma matriz de selecionados AutoMLAlgorithms no AlgorithmsConfig atributo de Auto MLCandidate GenerationConfig.

Veja a seguir um exemplo de um AlgorithmsConfig atributo listando exatamente três algoritmos (“XGBoost”, “fastai”, “catboost”) em seu AutoMLAlgorithms campo para o modo de treinamento em agrupamento.

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

Para ver a lista de algoritmos disponíveis por treinamentoMode, consulte AutoMLAlgorithms. Para obter detalhes sobre cada algoritmo, consulte Modos de treinamento e compatibilidade com algoritmos.

Você pode fornecer seu próprio conjunto de dados da validação e taxa de divisão de dados personalizada, ou deixar o Autopilot dividir o conjunto de dados automaticamente.

CreateAutoMLJobV2

Cada AutoMLJobChannelobjeto (consulte o parâmetro obrigatório Auto MLJob InputDataConfig) tem umChannelType, que pode ser definido como um training ou validation valores que especificam como os dados devem ser usados ao criar um modelo de aprendizado de máquina. Pelo menos uma fonte de dados deve ser fornecida e no máximo duas fontes de dados são permitidas: uma para dados de treinamento e outra para dados de validação.

A forma como você divide os dados em conjuntos de dados de treinamento e validação depende de você ter uma ou duas fontes de dados.

  • Se você tiver apenas uma fonte de dados, a será ChannelType definida como training padrão e deverá ter esse valor.

    • Se o valor ValidationFraction em AutoMLDataSplitConfig não estiver definido, 0,2 (20%) dos dados dessa fonte serão usados para a validação por padrão.

    • Se ValidationFraction for definido como um valor entre 0 e 1, o conjunto de dados será dividido com base no valor especificado, em que o valor especifica a fração do conjunto de dados usada para validação.

  • Se você tiver duas fontes de dados, a ChannelType de um dos objetos AutoMLJobChannel deverá ser definida como training, o valor padrão. A ChannelType da outra fonte de dados deve ser definida como validation. As duas fontes de dados devem ter o mesmo formato, CSV ou Parquet, e o mesmo esquema. Nesse caso, você não deve definir o valor para o ValidationFraction porque todos os dados de cada fonte são usados para treinamento ou validação. Definir esse valor causa um erro.

CreateAutoMLJob

Cada AutoMLChannelobjeto (consulte o parâmetro obrigatório InputDataConfig) tem umChannelType, que pode ser definido como um training ou validation valores que especificam como os dados devem ser usados ao criar um modelo de aprendizado de máquina. Pelo menos uma fonte de dados deve ser fornecida e no máximo duas fontes de dados são permitidas: uma para dados de treinamento e outra para dados de validação.

A forma como você divide os dados em conjuntos de dados de treinamento e validação depende de você ter uma ou duas fontes de dados.

  • Se você tiver apenas uma fonte de dados, a será ChannelType definida como training padrão e deverá ter esse valor.

    • Se o valor ValidationFraction em AutoMLDataSplitConfig não estiver definido, 0,2 (20%) dos dados dessa fonte serão usados para a validação por padrão.

    • Se ValidationFraction for definido como um valor entre 0 e 1, o conjunto de dados será dividido com base no valor especificado, em que o valor especifica a fração do conjunto de dados usada para validação.

  • Se você tiver duas fontes de dados, a ChannelType de um dos objetos AutoMLChannel deverá ser definida como training, o valor padrão. A ChannelType da outra fonte de dados deve ser definida como validation. As duas fontes de dados devem ter o mesmo formato, CSV ou Parquet, e o mesmo esquema. Nesse caso, você não deve definir o valor para o ValidationFraction porque todos os dados de cada fonte são usados para treinamento ou validação. Definir esse valor causa um erro.

Para obter informações sobre divisão e validação cruzada no Autopilot, consulte Validação cruzada no Autopilot.

CreateAutoMLJobV2

Para dados tabulares, você deve escolher TabularJobConfig como o tipo de AutoMLProblemTypeConfig.

É possível especificar ainda mais o tipo de problema de aprendizado supervisionado (classificação binária, classificação multiclasse, regressão) disponível para os candidatos a modelo de sua tarefa AutoML V2 com o parâmetro TabularJobConfig.ProblemType.

CreateAutoMLJob

É possível definir o tipo de problema em um trabalho do AutoML com o parâmetro CreateAutoPilot.ProblemType. Isso limita o tipo de pré-processamento e algoritmos que o Autopilot testa. Depois que o trabalho estiver concluído, se você tiver definido o CreateAutoPilot.ProblemType, o ResolvedAttribute.ProblemType corresponde ao ProblemType definido. Se você deixar em branco (ou null), isso ProblemType será inferido em seu nome.

nota

Em alguns casos, o Autopilot não consegue inferir o ProblemType com confiança alta o suficiente, caso em que é necessário fornecer o valor para o trabalho ter êxito.

É possível adicionar uma coluna de pesos de amostra ao seu conjunto de dados tabular e depois passá-la para sua tarefa do AutoML para solicitar que as linhas do conjunto de dados sejam ponderadas durante o treinamento e a avaliação.

O compatibilidade com pesos de amostra está disponível somente no modo de agrupamento. Seus pesos devem ser numéricos e não negativos. Os pontos de dados com valor de peso inválido ou sem valor são excluídos. Para obter mais informações sobre as métricas objetivas disponíveis, consulte Métricas ponderadas do Autopilot.

CreateAutoMLJobV2

Para dados tabulares, você deve escolher TabularJobConfig como o tipo de AutoMLProblemTypeConfig.

Para definir pesos amostrais ao criar um experimento (consulte CreateAutoMLJobV2), você pode passar o nome da coluna de pesos amostrais no SampleWeightAttributeName atributo do objeto. TabularJobConfig Isso garante que sua métrica objetiva use os pesos para o treinamento, avaliação e seleção de candidatos a modelos.

CreateAutoMLJob

Para definir pesos amostrais ao criar um experimento (consulte CreateAutoMLJob), você pode passar o nome da coluna de pesos amostrais no SampleWeightAttributeName atributo do objeto MLChannelAuto. Isso garante que sua métrica objetiva use os pesos para o treinamento, avaliação e seleção de candidatos a modelos.

Você pode configurar o seu trabalho AutoML V2 para iniciar automaticamente um trabalho remoto no Amazon EMR Sem Servidor quando recursos computacionais adicionais forem necessários para processar grandes conjuntos de dados. Ao fazer a transição perfeita para o EMR Sem Servidor quando necessário, o trabalho do AutoML pode lidar com conjuntos de dados que, de outra forma, excederiam os recursos inicialmente provisionados, sem nenhuma intervenção manual de sua parte. O EMR Sem Servidor está disponível para os tipos de problemas tabulares e de séries temporais. Recomendamos configurar essa opção para conjuntos de dados tabulares maiores que 5 GB.

Para permitir que o seu trabalho de AutoML V2 faça a transição automática para o EMR Sem Servidor de um grande conjunto de dados, você precisa fornecer um objeto EmrServerlessComputeConfig, que inclua um campo ExecutionRoleARN, para a AutoMLComputeConfig da solicitação de entrada do trabalho de AutoML V2.

Esse ExecutionRoleARN é o ARN do perfil do IAM que concede ao trabalho de AutoML V2 as permissões necessárias para executar trabalhos do EMR Sem Servidor.

Esse perfil deve ter a seguinte relação de confiança:

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

E conceder as permissões para:

  • Criar, listar e atualizar aplicações do EMR Sem Servidor.

  • Iniciar, listar, obter ou cancelar execuções de trabalhos em uma aplicação do EMR Sem Servidor.

  • Marcar os recursos do EMR Sem Servidor.

  • Passar um perfil do IAM para o serviço do EMR Sem Servidor para execução.

    Ao conceder a permissão iam:PassRole, o trabalho de AutoML V2 pode assumir temporariamente o perfil EMRServerlessRuntimeRole-* e passá-lo para o serviço EMR Sem Servidor. Essas são as funções do IAM usadas pelos ambientes de execução de tarefas do EMR Serverless para acessar outros AWS serviços e recursos necessários durante o tempo de execução, como o Amazon S3 para acesso a dados, registro em log, CloudWatch acesso ao catálogo de dados ou outros serviços com base em AWS Glue seus requisitos de carga de trabalho.

    Consulte Perfis de runtime do trabalho para o Amazon EMR Sem Servidor para obter detalhes sobre as permissões deste perfil.

A política do IAM definida no documento JSON fornecido concede essas permissões:

{ "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}" + } + } } ] }

Migrar a CreateAuto MLJob para CreateAuto MLJob a V2

Recomendamos que os usuários do CreateAutoMLJob migrem para o CreateAutoMLJobV2.

Esta seção explica as diferenças nos parâmetros de entrada entre CreateAutoMLJobe CreateAutoMLJobV2 destacando as mudanças na posição, nome ou estrutura dos objetos e atributos da solicitação de entrada entre as duas versões.

  • Atributos de solicitação que não foram alterados entre as versões.

    { "AutoMLJobName": "string", "AutoMLJobObjective": { "MetricName": "string" }, "ModelDeployConfig": { "AutoGenerateEndpointName": boolean, "EndpointName": "string" }, "OutputDataConfig": { "KmsKeyId": "string", "S3OutputPath": "string" }, "RoleArn": "string", "Tags": [ { "Key": "string", "Value": "string" } ] }
  • Atributos de solicitação que mudaram de posição e estrutura entre as versões.

    Os seguintes atributos mudaram de posição: DataSplitConfig, Security Config, CompletionCriteria, Mode, FeatureSpecificationS3Uri, SampleWeightAttributeName, TargetAttributeName.

    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" ] } } }
  • Os atributos a seguir mudaram de posição e estrutura entre as versões.

    O JSON a seguir ilustra como o Auto ConfigMLJob. CandidateGenerationConfigdo tipo Auto MLCandidate GenerationConfig movido para Auto MLProblemTypeConfig. TabularJobConfig. CandidateGenerationConfigdo tipo CandidateGenerationConfigem V2.

    CreateAutoMLJob
    { "AutoMLJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], "FeatureSpecificationS3Uri": "string" } }
    CreateAutoMLJobV2
    { "AutoMLProblemTypeConfig": { "TabularJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], }, } }, }
  • Atributos de solicitação que mudaram o nome e a estrutura.

    O JSON a seguir ilustra como InputDataConfig(Uma matriz de Auto MLChannel) mudou para Automático MLJob InputDataConfig (Uma matriz de MLJobcanal automático) na V2. Observe os atributos SampleWeightAttributeName e TargetAttributeName vá para fora InputDataConfig e para dentro 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" } } } ] }