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
Um ativo Conta da AWS
Uma função de usuário AWS Identity and Access Management (IAM) para implantar e iniciar os trabalhos de treinamento de SageMaker IA
AWS Command Line Interface (AWS CLI) versão 2.0 ou posterior instalada e configurada
Poesia
versão 1.8 ou posterior, mas anterior à 2.0, instalada
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.

O diagrama mostra o seguinte fluxo de trabalho:
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.)
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.)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 naconfig
pasta é aplicado.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
Para treinamento, reciclagem ou inferência automatizados, você pode integrar o AWS CLI código a serviços como AWS LambdaAWS CodePipeline, ou Amazon. EventBridge
O escalonamento pode ser obtido alterando as configurações para os tamanhos das instâncias ou adicionando configurações para treinamento distribuído.
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
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie e ative o ambiente virtual. | Para criar e ativar o ambiente virtual, execute os seguintes comandos na raiz do repositório:
| AWS geral |
Implantar a infraestrutura. | Para implantar a infraestrutura usando CloudFormation, execute o seguinte comando:
| AWS geral, DevOps engenheiro |
Baixe os dados da amostra. | Para baixar os dados de entrada do openml
| AWS geral |
Execute localmente para testes rápidos. | Para executar o código de treinamento localmente para testes, execute o seguinte comando:
Os registros de todas as execuções são armazenados por tempo de execução em uma pasta chamada Você também pode realizar vários treinamentos em paralelo, com parâmetros diferentes, usando a | Cientista de dados |
Tarefa | Descrição | Habilidades 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:
| 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:
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:
| 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
| 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 Para iniciar o trabalho de otimização de hiperparâmetros (HPO), execute os seguintes comandos:
| Cientista de dados |
Solução de problemas
Problema | Soluçã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
Treine um modelo com a Amazon SageMaker AI (AWS documentação)
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
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.