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á.
Pré-processe dados e treine um modelo de aprendizado de máquina com a Amazon SageMaker
Este exemplo de projeto demonstra como usar SageMaker e AWS Step Functions pré-processar dados e treinar um modelo de aprendizado de máquina.
Nesse projeto, o Step Functions usa uma função do Lambda para propagar um bucket do Amazon S3 com um conjunto de dados de teste e um script do Python para processamento de dados. Em seguida, ele treina um modelo de aprendizado de máquina e executa uma transformação em lote, usando a integração SageMaker de serviços.
Para obter mais informações sobre integrações de serviços SageMaker e Step Functions, consulte o seguinte:
nota
Este projeto de exemplo pode incorrer em cobranças.
Para novos AWS usuários, um nível de uso gratuito está disponível. Neste nível, os serviços são gratuitos abaixo de um determinado nível de uso. Para obter mais informações sobre AWS custos e o nível gratuito, consulte SageMaker Preços
Etapa 1: Criar a máquina de estado e provisionar os recursos
-
Abra o console do Step Functions
e clique em Criar máquina de estado. -
Digite
Preprocess data and train a machine learning model
na caixa de pesquisa e escolha Pré-processar dados e treinar um modelo de machine learning nos resultados da pesquisa que são retornados. -
Escolha Próximo para continuar.
-
Step Functions lista o Serviços da AWS usado no projeto de amostra que você selecionou. Também mostra um gráfico de fluxo de trabalho para o projeto de amostra. Implante esse projeto no seu Conta da AWS ou use-o como ponto de partida para criar seus próprios projetos. Com base em como você deseja prosseguir, escolha Executar uma demonstração ou Criar com base nela.
Este projeto de exemplo implementa os recursos a seguir.
-
Uma AWS Lambda função
-
Um bucket do Amazon S3
-
Uma máquina de AWS Step Functions estado
-
Funções relacionadas AWS Identity and Access Management (IAM)
A imagem a seguir mostra o gráfico do fluxo de trabalho para o exemplo de projeto Pré-processar dados e treinar um modelo de machine learning:
-
-
Escolha Usar modelo para continuar com a seleção.
-
Execute um destes procedimentos:
-
Se você selecionou Build on it, o Step Functions cria o protótipo do fluxo de trabalho, mas não implanta os recursos na definição do fluxo de trabalho, para que você possa continuar criando seu protótipo de fluxo de trabalho.
No Workflow StudioModo de design, você pode inserir estados adicionais em seu protótipo de fluxo de trabalho. Ou você pode alternar para o Modo de código para usar o editor de código integrado para editar a definição Amazon States Language (ASL) da sua máquina de estado a partir do console Step Functions.
Importante
Talvez seja necessário atualizar o espaço reservado Amazon Resource Name (ARN) para os recursos usados no projeto de amostra antes de poder executar seu fluxo de trabalho.
-
Se você selecionou Executar uma demonstração, o Step Functions cria um projeto somente para leitura que usa um AWS CloudFormation modelo para implantar os AWS recursos desse modelo no seu. Conta da AWS Você pode visualizar a definição da máquina de estado escolhendo o modo Código.
Escolha Implantar e executar para implantar o projeto e criar os recursos.
Observe que a implantação pode levar até 10 minutos para que os recursos e IAM as permissões sejam criados. Enquanto seus recursos estão sendo implantados, você pode abrir o link do AWS CloudFormation Stack ID para ver quais recursos estão sendo provisionados.
Depois que todos os recursos tiverem sido criados, você deverá ver o projeto na página State Machines no console.
Importante
Taxas padrão podem ser aplicadas a cada serviço usado no CloudFormation modelo.
-
Etapa 2: Executar a máquina de estado
-
Na página Máquinas de estado, escolha seu projeto de exemplo.
-
Na página do projeto de exemplo, escolha Iniciar execução.
-
Na caixa de diálogo Iniciar execução, faça o seguinte:
-
(Opcional) Para identificar sua execução, você pode especificar um nome ou usar o nome de execução padrão gerado.
nota
Step Functions aceita nomes para máquinas de estado, execuções, atividades e rótulos que não contenham ASCII caracteres. Como nomes sem ASCII caracteres não funcionarão com a Amazon CloudWatch, recomendamos usar somente ASCII caracteres para que você possa acompanhar as métricas. CloudWatch
-
(Opcional) Na caixa Entrada, insira os valores de entrada no JSON formato para executar seu fluxo de trabalho.
Se você optar por Executar uma demonstração, não precisará fornecer nenhuma entrada de execução.
nota
Se o projeto de demonstração que você implementou contiver dados de entrada de execução pré-preenchidos, use essa entrada para executar a máquina de estado.
-
Selecione Iniciar execução.
-
O console do Step Functions direciona você para uma página em que o título é o ID da execução. Essa página é conhecida como página de Detalhes da execução. Nesta página, você pode revisar os resultados da execução à medida que a execução avança ou após a conclusão.
Para revisar os resultados da execução, escolha estados individuais na Exibição em gráfico e, em seguida, escolha as guias individuais no painel Detalhes da etapa para visualizar os detalhes de cada estado, incluindo entrada, saída e definição, respectivamente. Para obter detalhes sobre as informações de execução que você pode visualizar na página Detalhes da execução, consulte Página de Detalhes da execução — Visão geral da interface.
-
Exemplo de código da máquina de estado
A máquina de estado neste projeto de amostra se integra com SageMaker e AWS Lambda passando parâmetros diretamente para esses recursos e usa um bucket do Amazon S3 para a fonte e a saída dos dados de treinamento.
Navegue por este exemplo de máquina de estado para ver como o Step Functions controla o Lambda e. SageMaker
Para obter mais informações sobre como AWS Step Functions controlar outros AWS serviços, consulteIntegrando outros serviços com Step Functions.
{
"StartAt": "Generate dataset",
"States": {
"Generate dataset": {
"Resource": "arn:aws:lambda:sa-east-1:1234567890:function:FeatureTransform-LambaForDataGeneration-17M8LX7IO9LUW",
"Type": "Task",
"Next": "Standardization: x' = (x - x̄) / σ"
},
"Standardization: x' = (x - x̄) / σ": {
"Resource": "arn:aws:states:::sagemaker:createProcessingJob.sync",
"Parameters": {
"ProcessingResources": {
"ClusterConfig": {
"InstanceCount": 1,
"InstanceType": "ml.m5.xlarge",
"VolumeSizeInGB": 10
}
},
"ProcessingInputs": [
{
"InputName": "input-1",
"S3Input": {
"S3Uri": "s3://featuretransform-bucketforcodeanddata-1jn1le6gadwfz/input/raw.csv",
"LocalPath": "/opt/ml/processing/input",
"S3DataType": "S3Prefix",
"S3InputMode": "File",
"S3DataDistributionType": "FullyReplicated",
"S3CompressionType": "None"
}
},
{
"InputName": "code",
"S3Input": {
"S3Uri": "s3://featuretransform-bucketforcodeanddata-1jn1le6gadwfz/code/transform.py",
"LocalPath": "/opt/ml/processing/input/code",
"S3DataType": "S3Prefix",
"S3InputMode": "File",
"S3DataDistributionType": "FullyReplicated",
"S3CompressionType": "None"
}
}
],
"ProcessingOutputConfig": {
"Outputs": [
{
"OutputName": "train_data",
"S3Output": {
"S3Uri": "s3://featuretransform-bucketforcodeanddata-1jn1le6gadwfz/train",
"LocalPath": "/opt/ml/processing/output/train",
"S3UploadMode": "EndOfJob"
}
}
]
},
"AppSpecification": {
"ImageUri": "737474898029.dkr.ecr.sa-east-1.amazonaws.com/sagemaker-scikit-learn:0.20.0-cpu-py3",
"ContainerEntrypoint": [
"python3",
"/opt/ml/processing/input/code/transform.py"
]
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 300
},
"RoleArn": "arn:aws:iam::1234567890:role/SageMakerAPIExecutionRole-AIDACKCEVSQ6C2EXAMPLE",
"ProcessingJobName.$": "$$.Execution.Name"
},
"Type": "Task",
"Next": "Train model (XGBoost)"
},
"Train model (XGBoost)": {
"Resource": "arn:aws:states:::sagemaker:createTrainingJob.sync",
"Parameters": {
"AlgorithmSpecification": {
"TrainingImage": "855470959533.dkr.ecr.sa-east-1.amazonaws.com/xgboost:latest",
"TrainingInputMode": "File"
},
"OutputDataConfig": {
"S3OutputPath": "s3://featuretransform-bucketforcodeanddata-1jn1le6gadwfz/models"
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 86400
},
"ResourceConfig": {
"InstanceCount": 1,
"InstanceType": "ml.m5.xlarge",
"VolumeSizeInGB": 30
},
"RoleArn": "arn:aws:iam::1234567890:role/SageMakerAPIExecutionRole-AIDACKCEVSQ6C2EXAMPLE",
"InputDataConfig": [
{
"DataSource": {
"S3DataSource": {
"S3DataDistributionType": "ShardedByS3Key",
"S3DataType": "S3Prefix",
"S3Uri": "s3://featuretransform-bucketforcodeanddata-1jn1le6gadwfz"
}
},
"ChannelName": "train",
"ContentType": "text/csv"
}
],
"HyperParameters": {
"objective": "reg:logistic",
"eval_metric": "rmse",
"num_round": "5"
},
"TrainingJobName.$": "$$.Execution.Name"
},
"Type": "Task",
"End": true
}
}
}
Para obter informações sobre como configurar IAM ao usar Step Functions com outros AWS serviços, consulteComo o Step Functions gera IAM políticas para serviços integrados.
IAMExemplo
Essas políticas example AWS Identity and Access Management (IAM) geradas pelo projeto de amostra incluem o menor privilégio necessário para executar a máquina de estado e os recursos relacionados. Recomendamos que você inclua somente as permissões necessárias em suas IAM políticas.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:PutMetricData",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:CreateLogGroup",
"logs:DescribeLogStreams",
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket",
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
A política a seguir permite que a função do Lambda propague o bucket do Amazon S3 com dados de exemplo.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::featuretransform-bucketforcodeanddata-1jn1le6gadwfz/*",
"Effect": "Allow"
}
]
}
Para obter informações sobre como configurar IAM ao usar Step Functions com outros AWS serviços, consulteComo o Step Functions gera IAM políticas para serviços integrados.