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

Criado por David Sauerwein (AWS), Julian Ferdinand Grueber (AWS) e Marco Geiger (AWS)

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 desse padrão, mas sua abordagem se estende à engenharia de recursos, 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 é desenvolver e testar soluções em uma máquina local, executar experimentos em grande escala (por exemplo, com parâmetros diferentes) na nuvem e implantar a solução aprovada na nuvem. Em seguida, a solução implantada deve ser monitorada e mantida. Sem uma abordagem unificada para esse fluxo de trabalho, os desenvolvedores geralmente precisam refatorar seu código em cada estágio. Se a solução depender de um grande número de parâmetros que podem mudar em qualquer estágio desse fluxo de trabalho, pode se tornar cada vez mais difícil permanecer organizado e consistente.

Esse 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 Em segundo lugar, ele simplifica o gerenciamento de parâmetros por meio do sistema de configuração da Hydra, onde os parâmetros são definidos em arquivos de configuração separados que podem ser facilmente modificados e combinados, com registro automático da configuração de cada execução. Para obter mais detalhes sobre como esse padrão aborda esses desafios, consulte 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. Você também pode configurar essas opções adicionais usando o Hydra em uma subpasta dedicada da config pasta.

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para saber a disponibilidade da região, consulte AWS Serviços por região. Para endpoints específicos, consulte Endpoints e cotas de serviço e escolha o link para o serviço.

Arquitetura

O diagrama a seguir mostra 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 “Executar localmente para testes rápidos” no Epics.)

  2. Quando estiver satisfeito com o algoritmo, o cientista de dados cria e envia a imagem do Docker para o repositório 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 trabalhos de treinamento regulares, a configuração ajustada é gravada no bucket do Amazon Simple Storage Service (Amazon S3) chamado. hydra-sample-config Para trabalhos de HPO, o conjunto de configurações padrão localizado na config pasta é aplicado.

  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, o trabalho salva os dados de saída no bucket do Amazon S3. 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. Ele foi usado nesse padrão para garantir ambientes consistentes em vários estágios, do desenvolvimento à implantação, e para empacotar dependências e códigos de forma confiável. A conteinerização do Docker permitiu fácil escalabilidade e controle de versão em todo o fluxo de trabalho.

  • O Hydra é uma ferramenta de gerenciamento de configuração que oferece flexibilidade para lidar com várias configurações e gerenciamento dinâmico de recursos. É fundamental para gerenciar as configurações do ambiente, permitindo uma implantação perfeita em diferentes ambientes. Para obter mais detalhes sobre Hydra, consulte Informações adicionais.

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

  • Poetry é uma ferramenta para gerenciamento e empacotamento de dependências 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 a função do IAM no terminal.

Épicos

TarefaDescriçãoHabilidades 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

Baixe os dados da amostra.

Para baixar os dados de entrada do openml para sua máquina local, execute o seguinte comando:

python scripts/download_data.py
AWS geral

Execute localmente para testes rápidos.

Para executar o código de treinamento localmente para testes, execute o seguinte comando:

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

Os registros de todas as execuções são armazenados por tempo de execução em uma pasta chamadaoutputs. Para obter mais informações, consulte a seção “Saída” no GitHub repositório.

Você também pode realizar vários treinamentos em paralelo, com parâmetros diferentes, usando a --multirun funcionalidade. Para obter mais detalhes, consulte a documentação do Hydra.

Cientista de dados
TarefaDescriçãoHabilidades 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 uma imagem do Docker.

Para criar a imagem do Docker e enviá-la para o repositório 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

Essa tarefa pressupõe que você tenha credenciais válidas em 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, General 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 para obter dados, execute o seguinte comando:

aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv"
Engenheiro de dados, General AWS

Envie vagas de treinamento em SageMaker IA.

Para simplificar a execução de seus scripts, especifique os parâmetros de configuração padrão no default.yaml arquivo. Além de garantir a consistência em todas as execuções, essa abordagem também oferece a flexibilidade de substituir facilmente as configurações padrão conforme 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
AWS geral, engenheiro de ML, 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 de algumas maneiras importantes, como você pode ver no arquivo start_sagemaker_hpo_job.py. Os hiperparâmetros a serem ajustados devem ser passados pela carga útil do boto3, não por um canal para o trabalho de treinamento.

Para iniciar o trabalho 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.

Falta de permissões do IAM

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

Esse 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 rápida — Permite uma experimentação local rápida sem a necessidade de grandes ajustes ao aumentar a escala.

  • 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 melhorar continuamente o algoritmo é simples porque o código permanece o mesmo em todos os ambientes.

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

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

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

  • O rastreamento de experimentos é simplificado porque a configuração de cada execução é registrada automaticamente.

  • Os experimentos na nuvem podem usar a mesma estrutura de configuração das execuções locais, garantindo a consistência.

Com o Hydra, você pode gerenciar a configuração de forma eficaz, habilitando os seguintes recursos:

  • Divida as configurações — divida as configurações do seu projeto em partes menores e gerenciáveis que podem ser modificadas de forma independente. Essa abordagem facilita o gerenciamento de projetos complexos.

  • Ajuste os padrões com facilidade — altere suas configurações básicas rapidamente, facilitando o teste de novas ideias.

  • Alinhe as entradas CLI e os arquivos de configuração — Combine as entradas da linha de comando com seus arquivos de configuração sem problemas. Essa abordagem reduz a desordem e a confusão, tornando seu projeto mais gerenciável ao longo do tempo.