Crie trabalhos de regressão ou classificação para dados tabulares usando o AutoML API - Amazon SageMaker

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 usando o AutoML API

Você pode criar programaticamente um trabalho de regressão ou classificação do piloto automático para dados tabulares chamando a CreateAutoMLJobV2APIação em qualquer linguagem suportada pelo piloto automático ou pelo. AWS CLI Veja a seguir uma coleção de parâmetros de solicitação de entrada obrigatórios e opcionais para a CreateAutoMLJobV2 API ação. É 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 API ação se traduz em uma função no idioma de sua escolha, consulte a seção Consulte também CreateAutoMLJobV2 e escolha umaSDK. Por exemplo, para usuários do Python, veja a sintaxe completa da solicitação de create_auto_ml_job_v2 in AWS SDK for Python (Boto3).

nota

CreateAutoMLJobV2e DescribeAutoMLJobV2são novas versões do CreateAutoMLJobe DescribeAutoMLJobque oferecem 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), escolher sua estratégia de modelagem (conjuntos empilhados ou otimização de hiperparâmetros), selecionar a lista de algoritmos usados pelo trabalho do piloto automático para treinar os dados e muito mais.

Após a execução do 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 um para CreateAuto MLJob CreateAuto MLJobV2.

Parâmetros necessários

CreateAutoMLJobV2

Ao ligar CreateAutoMLJobV2 para criar um experimento de piloto automático para dados tabulares, você deve fornecer os seguintes valores:

  • E AutoMLJobName para especificar o nome do seu trabalho.

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

  • Tanto uma métrica AutoMLJobObjectivequanto 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.

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

  • A RoleArn para especificar ARN a função usada para acessar seus dados.

CreateAutoMLJob

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

  • E AutoMLJobName para especificar o nome do seu trabalho.

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

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

  • A RoleArn para especificar ARN a função 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 CreateAutoMLJobV2 API ação 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 suporte a 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 piloto automático 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 recursos selecionados devem estar contidos em um JSON arquivo 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.

Você pode definir URL os recursos selecionados com o TabularJobConfig.FeatureSpecificatioS3Uri parâmetro.

CreateAutoMLJob

Você pode definir o FeatureSpecificatioS3Uri atributo de A utoMLCandidate GenerationConfig dentro do CreateAutoMLJobAPIcom o seguinte formato:

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

Seleção de algoritmos

Por padrão, seu trabalho de piloto automático 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.

A seguir está 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 utoMLCandidate GenerationConfig A.

A seguir está 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 suporte a algoritmos.

É possível fornecer seu próprio conjunto de dados de 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 A utoMLJobInputDataConfig) 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 se você tem 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 se você tem 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 piloto automático, 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 suporte para 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 TabularJobConfig objeto. 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 A. utoMLChannel 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 seu trabalho AutoML V2 para iniciar automaticamente um trabalho remoto no Amazon EMR Serverless quando recursos computacionais adicionais forem necessários para processar grandes conjuntos de dados. Ao fazer a transição perfeita para o EMR Serverless quando necessário, o trabalho do AutoML pode lidar com conjuntos de dados que, de outra forma, excederiam os recursos inicialmente provisionados, sem qualquer intervenção manual de sua parte. EMRO Serverless 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 sua tarefa AutoML V2 faça a transição automática para EMR Serverless para um grande conjunto de dados, você precisa fornecer um EmrServerlessComputeConfig objeto, que inclua um ExecutionRoleARN campo, para a solicitação de entrada AutoMLComputeConfig da tarefa AutoML V2.

Essa ExecutionRoleARN é a IAM função que ARN concede ao trabalho AutoML V2 as permissões necessárias para EMR executar trabalhos sem servidor.

Essa função 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 conceda as permissões para:

  • Crie, liste e atualize aplicativos EMR sem servidor.

  • Iniciar, listar, obter ou cancelar execuções de trabalhos em um EMR aplicativo sem servidor.

  • Marque recursos EMR sem servidor.

  • Passe uma IAM função para o serviço EMR Serverless para execução.

    Ao conceder a iam:PassRole permissão, a tarefa AutoML V2 pode assumir temporariamente a função e passá-la para EMRServerlessRuntimeRole-* EMR o serviço Serverless. Essas são as IAM funções usadas pelos ambientes de execução de tarefas EMR sem servidor 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 AWS Glue catálogo de dados ou outros serviços com base em seus requisitos de carga de trabalho.

    Consulte Job runtime roles for Amazon EMR Serverless para obter detalhes sobre essas permissões de função.

A IAM política definida no JSON documento 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 um para CreateAuto MLJob CreateAuto MLJobV2

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 CreateAutoMLJobV2destacando 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 exemplo a seguir JSON ilustra como é A utoMLJob Config. CandidateGenerationConfigdo tipo A utoMLCandidate GenerationConfig foi movido para utoMLProblem TypeConfig A. 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 seguinte JSON ilustra como InputDataConfig(Uma matriz de AutoMLChannel) mudou para A utoMLJob InputDataConfig (Uma matriz de um utoMLJob canal) 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" } } } ] }