Simplifique os fluxos de trabalho de aprendizado de máquina, do desenvolvimento local aos experimentos escaláveis, usando SageMaker IA e Hydra - Recomendações da AWS

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á.

Simplifique os fluxos de trabalho de aprendizado de máquina, do desenvolvimento local aos experimentos escaláveis, usando SageMaker IA e Hydra

David Sauerwein, Marco Geiger e Julian Ferdinand Grueber, Amazon Web Services

Resumo

Esse padrão fornece uma abordagem unificada para configurar e executar algoritmos de aprendizado de máquina (ML), desde o teste local até a produção na Amazon SageMaker AI. Os algoritmos de ML são o foco deste padrão, mas sua abordagem se estende à engenharia de atributos, inferência e pipelines completos de ML. Esse padrão demonstra a transição do desenvolvimento de scripts locais para trabalhos de treinamento de SageMaker IA por meio de um exemplo de caso de uso.

Um fluxo de trabalho típico de ML consiste em desenvolver e testar soluções em uma máquina local, realizar experimentos em grande escala (por exemplo, com diferentes parâmetros) na nuvem e implantar a solução aprovada na nuvem. Após isso, a solução implantada precisa ser monitorada e mantida. Sem uma abordagem unificada para esse fluxo de trabalho, os desenvolvedores frequentemente precisam refatorar o código em cada etapa. Se a solução depender de um grande número de parâmetros que podem mudar em qualquer etapa desse fluxo de trabalho, pode se tornar cada vez mais complexo manter a organização e a consistência.

Este padrão aborda esses desafios. Primeiro, ele elimina a necessidade de refatoração de código entre ambientes, fornecendo um fluxo de trabalho unificado que permanece consistente, seja em execução em máquinas locais, em contêineres ou em IA. SageMaker Segundo, o padrão simplifica o gerenciamento de parâmetros por meio do sistema de configuração do Hydra, em que os parâmetros são definidos em arquivos de configuração separados, que podem ser facilmente modificados e combinados, com o registro em log automático da configuração de cada execução. Para obter mais detalhes sobre como este padrão aborda esses desafios, consulte a seção de Informações adicionais.

Pré-requisitos e limitações

Pré-requisitos

Limitações

  • Atualmente, o código visa apenas trabalhos de treinamento de SageMaker IA. Estendê-lo para trabalhos de processamento e pipelines completos de SageMaker IA é simples.

  • Para uma configuração de SageMaker IA totalmente produtiva, detalhes adicionais precisam estar em vigor. Os exemplos podem ser chaves personalizadas AWS Key Management Service (AWS KMS) para computação e armazenamento ou configurações de rede. Além disso, é possível configurar essas opções adicionais usando o Hydra em uma subpasta específica dentro da pasta config.

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Arquitetura

O diagrama a seguir representa a arquitetura da solução.

Fluxo de trabalho para criar e executar treinamentos de SageMaker IA ou trabalhos de HPO.

O diagrama mostra o seguinte fluxo de trabalho:

  1. O cientista de dados pode iterar o algoritmo em pequena escala em um ambiente local, ajustar parâmetros e testar o script de treinamento rapidamente sem a necessidade de Docker ou SageMaker IA. (Para obter mais detalhes, consulte a tarefa “Realize a execução localmente para testes rápidos” na seção Épicos.)

  2. Quando estiver satisfeito com o algoritmo, o cientista de dados desenvolve e envia por push a imagem do Docker para o repositório do Amazon Elastic Container Registry (Amazon ECR) chamado hydra-sm-artifact. (Para obter mais detalhes, consulte “Executar fluxos de trabalho em SageMaker IA” em Epics.)

  3. O cientista de dados inicia trabalhos de treinamento de SageMaker IA ou de otimização de hiperparâmetros (HPO) usando scripts Python. Para as tarefas de treinamento regulares, a configuração ajustada é gravada no bucket do Amazon Simple Storage Service (Amazon S3) chamado hydra-sample-config. Para as tarefas de HPO, a configuração padrão localizada na pasta config é aplicada.

  4. O trabalho de treinamento de SageMaker IA extrai a imagem do Docker, lê os dados de entrada do hydra-sample-data bucket do Amazon S3 e busca a configuração do bucket do Amazon S3 ou usa a configuração padrãohydra-sample-config. Após o treinamento, a tarefa salva os dados de saída no bucket do Amazon S3 chamado hydra-sample-data.

Automação e escala

Ferramentas

Serviços da AWS

  • AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS

  • AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando. Para esse padrão, o AWS CLI é útil tanto para configuração inicial de recursos quanto para testes.

  • O Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.

  • O Amazon SageMaker AI é um serviço gerenciado de aprendizado de máquina (ML) que ajuda você a criar e treinar modelos de ML e depois implantá-los em um ambiente hospedado pronto para produção. SageMaker O treinamento de IA é um serviço de ML totalmente gerenciado dentro da SageMaker IA que permite o treinamento de modelos de ML em grande escala. A ferramenta pode lidar com as demandas computacionais de modelos de treinamento de forma eficiente, fazendo uso da escalabilidade integrada e da integração com outros. Serviços da AWS SageMaker O treinamento de IA também oferece suporte a algoritmos e contêineres personalizados, tornando-o flexível para uma ampla variedade de fluxos de trabalho de ML.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

Outras ferramentas

  • O Docker é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres. Foi usado neste padrão para garantir ambientes consistentes em várias etapas, desde o desenvolvimento até a implantação, e para empacotar dependências e código com confiabilidade. A containerização proporcionada pelo Docker possibilitou uma escalabilidade simples e um controle de versão em todo o fluxo de trabalho.

  • O Hydra é uma ferramenta de gerenciamento de configurações que proporciona flexibilidade no manuseio de diversas configurações e no gerenciamento dinâmico de recursos. Ela é fundamental no gerenciamento de configurações de ambiente, permitindo a implantação sem interrupções em diferentes ambientes. Para obter mais detalhes sobre o Hydra, consulte Informações adicionais.

  • Python é uma linguagem de programação de computador de uso geral. O Python foi usado para gravar o código de ML e o fluxo de trabalho de implantação.

  • O Poetry é uma ferramenta para gerenciamento de dependências e empacotamento em Python.

Repositório de código

O código desse padrão está disponível no repositório GitHub configuring-sagemaker-training-jobs-with-hydra.

Práticas recomendadas

  • Escolha uma função do IAM para implantar e iniciar os trabalhos de treinamento de SageMaker IA que siga o princípio do menor privilégio e conceda as permissões mínimas necessárias para realizar uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e nas melhores práticas de segurança na documentação do IAM.

  • Use credenciais temporárias para acessar o perfil do IAM no terminal.

Épicos

TarefaDescriptionHabilidades necessárias

Crie e ative o ambiente virtual.

Para criar e ativar o ambiente virtual, execute os seguintes comandos na raiz do repositório:

poetry install poetry shell
AWS geral

Implantar a infraestrutura.

Para implantar a infraestrutura usando CloudFormation, execute o seguinte comando:

aws cloudformation deploy --template-file infra/hydra-sagemaker-setup.yaml --stack-name hydra-sagemaker-setup --capabilities CAPABILITY_NAMED_IAM
AWS geral, DevOps engenheiro

Faça o download dos dados de amostra.

Para fazer o download dos dados de entrada do openml para sua máquina local, execute o seguinte comando:

python scripts/download_data.py
AWS geral

Realize a execução localmente para testes rápidos.

Para executar o código de treinamento localmente para fins de teste, use o seguinte comando:

python mypackage/train.py data.train_data_path=data/train.csv evaluation.base_dir_path=data

Os logs de todas as execuções são armazenados e organizados pelo horário de execução em uma pasta chamada outputs. Para obter mais informações, consulte a seção “Saída” no GitHub repositório.

Além disso, é possível executar vários treinamentos simultaneamente, cada um com parâmetros distintos, por meio da funcionalidade --multirun. Para obter mais detalhes, consulte a documentação do Hydra.

Cientista de dados
TarefaDescriptionHabilidades necessárias

Defina as variáveis de ambiente.

Para executar seu trabalho na SageMaker IA, defina as seguintes variáveis de ambiente, fornecendo sua Região da AWS e sua Conta da AWS ID:

export ECR_REPO_NAME=hydra-sm-artifact export image_tag=latest export AWS_REGION="<your_aws_region>" # for instance, us-east-1 export ACCOUNT_ID="<your_account_id>" export BUCKET_NAME_DATA=hydra-sample-data-$ACCOUNT_ID export BUCKET_NAME_CONFIG=hydra-sample-config-$ACCOUNT_ID export AWS_DEFAULT_REGION=$AWS_REGION export ROLE_ARN=arn:aws:iam::${ACCOUNT_ID}:role/hydra-sample-sagemaker export INPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/input/ export OUTPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/output/
AWS geral

Crie e envie por push a imagem do Docker.

Para criar a imagem do Docker e enviá-la por push para o repositório do Amazon ECR, execute o seguinte comando:

chmod +x scripts/create_and_push_image.sh scripts/create_and_push_image.sh $ECR_REPO_NAME $image_tag $AWS_REGION $ACCOUNT_ID

Esta tarefa assume que há credenciais válidas configuradas no seu ambiente. A imagem do Docker é enviada para o repositório Amazon ECR especificado na variável de ambiente na tarefa anterior e é usada para ativar o contêiner de SageMaker IA no qual o trabalho de treinamento será executado.

Engenheiro de ML e usuário geral da AWS

Copie os dados de entrada para o Amazon S3.

O trabalho de treinamento de SageMaker IA precisa coletar os dados de entrada. Para copiar os dados de entrada para o bucket do Amazon S3 destinado aos dados, execute o seguinte comando:

aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv"
Engenheiro de dados e usuário geral da AWS

Envie vagas de treinamento em SageMaker IA.

Para simplificar a execução dos scripts, especifique os parâmetros de configuração padrão no arquivo default.yaml. Além de garantir consistência entre as execuções, essa abordagem também oferece a flexibilidade de substituir as configurações padrão com facilidade, quando necessário. Veja o exemplo a seguir:

python scripts/start_sagemaker_training_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH
Usuário geral da AWS, engenheiro de ML e cientista de dados

Execute o ajuste de hiperparâmetros de SageMaker IA.

Executar o ajuste de hiperparâmetros de SageMaker IA é semelhante ao envio de um trabalho de treinamento de SageMaker AII. No entanto, o script de execução difere em alguns pontos importantes, como você pode conferir no arquivo start_sagemaker_hpo_job.py Os hiperparâmetros a serem ajustados devem ser fornecidos por meio da carga útil do boto3 e não por um canal para a tarefa de treinamento.

Para iniciar a tarefa de otimização de hiperparâmetros (HPO), execute os seguintes comandos:

python scripts/start_sagemaker_hpo_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH
Cientista de dados

Solução de problemas

ProblemaSolução

Token expirado

Exporte novas AWS credenciais.

Permissões do IAM insuficientes

Certifique-se de exportar as credenciais de uma função do IAM que tenha todas as permissões necessárias do IAM para implantar o CloudFormation modelo e iniciar os trabalhos de treinamento de SageMaker IA.

Recursos relacionados

Mais informações

Este padrão aborda os seguintes desafios:

Consistência do desenvolvimento local à implantação em grande escala — Com esse padrão, os desenvolvedores podem usar o mesmo fluxo de trabalho, independentemente de estarem usando scripts Python locais, executando contêineres Docker locais, conduzindo grandes experimentos SageMaker em IA ou implantando em produção em IA. SageMaker Essa consistência é importante pelos seguintes motivos:

  • Iteração mais ágil: permite experimentações rápidas e locais sem a necessidade de grandes ajustes ao aumentar a escala verticalmente.

  • Sem refatoração — A transição para experimentos maiores em SageMaker IA é perfeita, não exigindo nenhuma revisão da configuração existente.

  • Melhoria contínua: desenvolver novos recursos e aprimorar continuamente o algoritmo é simples, pois o código permanece o mesmo em todos os ambientes.

Gerenciamento de configuração: este padrão usa o Hydra, uma ferramenta de gerenciamento de configuração, para fornecer os seguintes benefícios:

  • Os parâmetros são definidos em arquivos de configuração, separados do código.

  • Diferentes conjuntos de parâmetros podem ser trocados ou combinados com facilidade.

  • O acompanhamento dos experimentos é simplificado, pois a configuração de cada execução é registrada em log automaticamente.

  • Experimentos na nuvem podem usar a mesma estrutura de configuração que as execuções locais, garantindo consistência.

Com o Hydra, é possível gerenciar a configuração de forma eficiente, possibilitando os seguintes recursos:

  • Fragmentar as configurações: separe as configurações do projeto em blocos menores e administráveis, passíveis de alterações independentes. Essa abordagem facilita o gerenciamento de projetos complexos.

  • Ajustar padrões com facilidade: altere rapidamente as configurações de linha de base, simplificando o teste de novas ideias.

  • Alinhar entradas da CLI e arquivos de configuração: combine de forma integrada as entradas da linha de comando com seus arquivos de configuração. Essa abordagem reduz a desordem e a confusão, tornando o projeto mais fácil de gerenciar ao longo do tempo.