Dezenas de milhares de clientes da AWS usam os serviços de aprendizado de máquina (ML) da AWS para acelerar seu desenvolvimento de ML com infraestrutura e ferramentas totalmente gerenciadas. Para clientes que desenvolvem modelos de ML no local, como seu desktop local, eles desejam migrar seus modelos de ML herdados para a Nuvem AWS para aproveitar ao máximo o conjunto mais abrangente de serviços de ML, infraestrutura e recursos de implementação disponíveis na AWS .
O termo código legado refere-se ao código que foi desenvolvido para ser executado manualmente em uma área de trabalho local e não é criado com SDKs prontos para nuvem, como o SDK da AWS para Python (Boto3) or SDK do Amazon SageMaker Python. Em outras palavras, esses códigos legados não são otimizados para implantação em nuvem. A melhor prática para migração é refatorar esses códigos legados usando o API Amazon SageMaker ou o SageMaker Python SDK. No entanto, em alguns casos, as organizações com um grande número de modelos legados podem não ter tempo ou recursos para reescrever todos esses modelos.
Nesta postagem, compartilhamos uma abordagem escalável e fácil de implementar para migrar o código legado de ML para a Nuvem AWS para inferência usando Amazon Sage Maker e Funções de etapa da AWS, com uma quantidade mínima de refatoração de código necessária. Você pode facilmente estender esta solução para adicionar mais funcionalidade. Demonstramos como duas personas diferentes, um cientista de dados e um engenheiro de MLOps, podem colaborar para levantar e mudar centenas de modelos legados.
Visão geral da solução
Nesta estrutura, executamos o código legado em um contêiner como um Processamento SageMaker trabalho. O SageMaker executa o script herdado dentro de um contêiner de processamento. A imagem do contêiner de processamento pode ser uma imagem integrada do SageMaker ou uma imagem personalizada. A infraestrutura subjacente para um trabalho de processamento é totalmente gerenciada pelo SageMaker. Nenhuma alteração no código legado é necessária. A familiaridade com a criação de trabalhos de processamento do SageMaker é tudo o que é necessário.
Assumimos o envolvimento de duas personas: um cientista de dados e um engenheiro de MLOps. O cientista de dados é responsável por mover o código para o SageMaker, manualmente ou clonando-o de um repositório de código, como AWS CodeCommit. Estúdio Amazon SageMaker fornece um ambiente de desenvolvimento integrado (IDE) para implementar várias etapas no ciclo de vida do ML, e o cientista de dados o usa para criar manualmente um contêiner personalizado que contém os artefatos de código necessários para implantação. O contêiner será registrado em um registro de contêiner, como Registro do Amazon Elastic Container (Amazon ECR) para fins de implantação.
O engenheiro MLOps assume a responsabilidade de criar um fluxo de trabalho do Step Functions que podemos reutilizar para implantar o contêiner personalizado desenvolvido pelo cientista de dados com os parâmetros apropriados. O fluxo de trabalho do Step Functions pode ser tão modular quanto necessário para se adequar ao caso de uso ou pode consistir em apenas uma etapa para iniciar um único processo. Para minimizar o esforço necessário para migrar o código, identificamos três componentes modulares para criar um processo de implantação totalmente funcional:
- Pré-processando
- Inferência
- Pós-processamento
O diagrama a seguir ilustra nossa arquitetura de solução e fluxo de trabalho.
As seguintes etapas estão envolvidas nesta solução:
- A persona do cientista de dados usa o Studio para importar o código herdado por meio da clonagem de um repositório de código e, em seguida, modular o código em componentes separados que seguem as etapas do ciclo de vida do ML (pré-processamento, inferência e pós-processamento).
- O cientista de dados usa o Studio e, especificamente, o CLI de criação de imagem do Studio ferramenta fornecida pelo SageMaker, para criar uma imagem do Docker. Essa ferramenta CLI permite que o cientista de dados crie a imagem diretamente no Studio e registre automaticamente a imagem no Amazon ECR.
- O engenheiro MLOps usa a imagem do contêiner registrado e cria uma implantação para um caso de uso específico usando o Step Functions. O Step Functions é um serviço de fluxo de trabalho sem servidor que pode controlar as APIs do SageMaker diretamente por meio do uso da Amazon States Language.
Trabalho de processamento SageMaker
Vamos entender como um Trabalho de processamento SageMaker corre. O diagrama a seguir mostra como o SageMaker ativa um trabalho de processamento.
O SageMaker pega seu script, copia seus dados de Serviço de armazenamento simples da Amazon (Amazon S3) e, em seguida, puxa um contêiner de processamento. A imagem do contêiner de processamento pode ser uma imagem integrada do SageMaker ou uma imagem personalizada fornecida por você. A infraestrutura subjacente para um trabalho de processamento é totalmente gerenciada pelo SageMaker. Os recursos de cluster são provisionados durante o trabalho e limpos quando um trabalho é concluído. A saída do trabalho de processamento é armazenada no bucket do S3 que você especificou. Para saber mais sobre como criar seu próprio contêiner, consulte Crie seu próprio contêiner de processamento (cenário avançado).
O trabalho de processamento do SageMaker configura sua imagem de processamento usando um script de ponto de entrada do contêiner Docker. Você também pode fornecer seu próprio ponto de entrada personalizado usando os parâmetros ContainerEntrypoint e ContainerArguments do Especificação do aplicativo API. Se você usar seu próprio ponto de entrada personalizado, terá a flexibilidade adicional de executá-lo como um script autônomo sem reconstruir suas imagens.
Para este exemplo, construímos um contêiner personalizado e usamos um trabalho de processamento do SageMaker para inferência. Os trabalhos de pré-processamento e pós-processamento utilizam o modo de script com um contêiner scikit-learn pré-criado.
Pré-requisitos
Para acompanhar esta postagem, conclua as seguintes etapas de pré-requisito:
- Crie um domínio do Studio. Para obter instruções, consulte Integrar ao domínio do Amazon SageMaker usando a configuração rápida.
- Crie um bucket do S3.
- Clonar o fornecido GitHub repo no estúdio.
O repositório do GitHub é organizado em diferentes pastas que correspondem a várias etapas do ciclo de vida do ML, facilitando a navegação e o gerenciamento:
Migrar o código legado
Nesta etapa, atuamos como o cientista de dados responsável pela migração do código legado.
Começamos por abrir o build_and_push.ipynb
notebook.
A célula inicial do notebook orienta você na instalação do CLI de criação de imagem do Studio. Essa CLI simplifica o processo de configuração criando automaticamente um ambiente de construção reutilizável com o qual você pode interagir por meio de comandos de alto nível. Com a CLI, criar uma imagem é tão fácil quanto pedir para ela criar, e o resultado será um link para o local da sua imagem no Amazon ECR. Essa abordagem elimina a necessidade de gerenciar o complexo fluxo de trabalho subjacente orquestrado pela CLI, simplificando o processo de construção da imagem.
Antes de executarmos o comando build, é importante garantir que a função que está executando o comando tenha as permissões necessárias, conforme especificado na CLI GitHub leia-me ou postagem relacionada. Deixar de conceder as permissões necessárias pode resultar em erros durante o processo de compilação.
Veja o seguinte código:
Para simplificar seu código legado, divida-o em três scripts Python distintos chamados preprocessing.py, predict.py e postprocessing.py. Siga as melhores práticas de programação convertendo o código em funções que são chamadas de uma função principal. Assegure-se de que todas as bibliotecas necessárias sejam importadas e o arquivo requirements.txt seja atualizado para incluir todas as bibliotecas customizadas.
Depois de organizar o código, empacote-o junto com o arquivo de requisitos em um contêiner do Docker. Você pode criar facilmente o contêiner no Studio usando o seguinte comando:
Por padrão, a imagem será enviada para um repositório ECR chamado sagemakerstudio com a tag mais recente. Além disso, a função de execução do aplicativo Studio será utilizada, juntamente com o bucket padrão SageMaker Python SDK S3. No entanto, essas configurações podem ser facilmente alteradas usando as opções CLI apropriadas. Veja o seguinte código:
Agora que o contêiner foi criado e registrado em um repositório ECR, é hora de nos aprofundarmos em como podemos usá-lo para executar predict.py. Também mostramos o processo de uso de um scikit-learn container para executar preprocessing.py e postprocessing.py.
Produção do contêiner
Nesta etapa, atuamos como o engenheiro MLOps que produz o contêiner construído na etapa anterior.
Usamos o Step Functions para orquestrar o fluxo de trabalho. O Step Functions permite flexibilidade excepcional na integração de uma gama diversificada de serviços no fluxo de trabalho, acomodando quaisquer dependências existentes que possam existir no sistema legado. Essa abordagem garante que todos os componentes necessários sejam perfeitamente integrados e executados na sequência desejada, resultando em uma solução de fluxo de trabalho eficiente e eficaz.
O Step Functions pode controlar determinados serviços da AWS diretamente da Amazon States Language. Para saber mais sobre como trabalhar com Step Functions e sua integração com o SageMaker, consulte Gerencie o SageMaker com Step Functions. Usando o recurso de integração do Step Functions com o SageMaker, executamos os scripts de pré-processamento e pós-processamento usando um trabalho SageMaker Processing no modo de script e executamos a inferência como um trabalho SageMaker Processing usando um recipiente personalizado. Fazemos isso usando AWS SDK for Python (Boto3) CriarProcessingJob Chamadas de API.
Pré-processando
O SageMaker oferece várias opções para executar código personalizado. Se você tiver apenas um script sem quaisquer dependências personalizadas, poderá executá-lo como Traga seu próprio script (BYOS). Para fazer isso, basta passar seu script para o contêiner de estrutura scikit-learn pré-construído e executar um trabalho de processamento do SageMaker no modo de script usando os parâmetros ContainerArguments e ContainerEntrypoint no Especificação do aplicativo API. Este é um método direto e conveniente para executar scripts simples.
Verifique a configuração do estado "Modo de script de pré-processamento" no exemplo de fluxo de trabalho do Step Functions para entender como configurar a chamada de API CreateProcessingJob para executar um script personalizado.
Inferência
Você pode executar um contêiner personalizado usando o Crie seu próprio contêiner de processamento abordagem. O trabalho de processamento do SageMaker opera com o /opt/ml
caminho local e você pode especificar seus ProcessingInputs e seu caminho local na configuração. A tarefa de processamento copia os artefatos para o contêiner local e inicia a tarefa. Após a conclusão da tarefa, ela copia os artefatos especificados no caminho local do ProcessingOutputs para seu local externo especificado.
Confira a configuração do estado “Inference Custom Container” no exemplo de fluxo de trabalho do Step Functions para entender como configurar a chamada de API CreateProcessingJob para executar um contêiner personalizado.
Pós-processamento
Você pode executar um script de pós-processamento exatamente como um script de pré-processamento usando a etapa Step Functions CreateProcessingJob. A execução de um script de pós-processamento permite executar tarefas de processamento personalizadas após a conclusão da tarefa de inferência.
Crie o fluxo de trabalho do Step Functions
Para prototipagem rápida, usamos o Step Functions Idioma dos estados amazônicos. Você pode editar a definição do Step Functions diretamente usando o States Language. Consulte o exemplo de fluxo de trabalho do Step Functions.
Você pode criar uma nova máquina de estado do Step Functions no console do Step Functions selecionando Escreva seu fluxo de trabalho em código.
O Step Functions pode examinar os recursos que você usa e criar uma função. No entanto, você pode ver a seguinte mensagem:
“O Step Functions não pode gerar uma política IAM se o RoleArn for SageMaker for de um Path. Codifique o SageMaker RoleArn em sua definição de máquina de estado ou escolha uma função existente com as permissões adequadas para o Step Functions chamar o SageMaker.”
Para resolver isso, você deve criar um Gerenciamento de acesso e identidade da AWS (IAM) para Step Functions. Para obter instruções, consulte Criando uma função IAM para sua máquina de estado. Em seguida, anexe a seguinte política do IAM para fornecer as permissões necessárias para executar o fluxo de trabalho:
A figura a seguir ilustra o fluxo de dados e imagens de contêiner em cada etapa do fluxo de trabalho do Step Functions.
A seguir está uma lista de parâmetros mínimos necessários para inicializar no Step Functions; você também pode consultar o amostra de parâmetros de entrada JSON:
- input_uri – O S3 URI para os arquivos de entrada
- saída_uri – O S3 URI para os arquivos de saída
- código_uri – O S3 URI para arquivos de script
- custom_image_uri – O URI do contêiner para o contêiner personalizado que você criou
- scikit_image_uri – O URI do contêiner para a estrutura scikit-learn pré-criada
- papel – A função de execução para executar o trabalho
- tipo_de_instância – O tipo de instância que você precisa usar para executar o contêiner
- tamanho_volume – O tamanho do volume de armazenamento necessário para o contêiner
- max_runtime – O tempo de execução máximo para o contêiner, com um valor padrão de 1 hora
Execute o fluxo de trabalho
Dividimos o código legado em partes gerenciáveis: pré-processamento, inferência e pós-processamento. Para atender às nossas necessidades de inferência, construímos um contêiner personalizado equipado com as dependências de biblioteca necessárias. Nosso plano é utilizar o Step Functions, aproveitando sua capacidade de chamar a API do SageMaker. Mostramos dois métodos para executar código personalizado usando a API do SageMaker: um trabalho de processamento do SageMaker que utiliza uma imagem pré-criada e usa um script personalizado em tempo de execução e um trabalho de processamento do SageMaker que usa um contêiner personalizado, que é empacotado com os recursos necessários artefatos para executar a inferência personalizada.
A figura a seguir mostra a execução do fluxo de trabalho do Step Functions.
Resumo
Nesta postagem, discutimos o processo de migração do código Python ML herdado de ambientes de desenvolvimento locais e a implementação de um procedimento MLOps padronizado. Com essa abordagem, você pode transferir facilmente centenas de modelos e incorporar as práticas de implantação corporativa desejadas. Apresentamos dois métodos diferentes para executar código personalizado no SageMaker e você pode selecionar aquele que melhor atende às suas necessidades.
Se você precisar de uma solução altamente personalizável, é recomendável usar a abordagem de contêiner personalizado. Você pode achar mais adequado usar imagens pré-criadas para executar seu script personalizado se tiver scripts básicos e não precisar criar seu contêiner personalizado, conforme descrito na etapa de pré-processamento mencionada anteriormente. Além disso, se necessário, você pode aplicar esta solução para conteinerizar as etapas de treinamento e avaliação do modelo legado, assim como a etapa de inferência é conteinerizada nesta postagem.
Sobre os autores
Bhavana Chirumamilla é arquiteto residente sênior da AWS com forte paixão por operações de dados e aprendizado de máquina. Ela traz muita experiência e entusiasmo para ajudar as empresas a criar dados eficazes e estratégias de ML. Em seu tempo livre, Bhavana gosta de passar o tempo com sua família e se envolver em várias atividades, como viagens, caminhadas, jardinagem e assistir a documentários.
Shyam Namavaram é arquiteto sênior de soluções de inteligência artificial (IA) e aprendizado de máquina (ML) na Amazon Web Services (AWS). Ele trabalha com entusiasmo com os clientes para acelerar a adoção de IA e ML, fornecendo orientação técnica e ajudando-os a inovar e criar soluções de nuvem seguras na AWS. Ele é especialista em IA e ML, contêineres e tecnologias analíticas. Fora do trabalho, adora praticar esportes e vivenciar a natureza com trekking.
Qingwei Li é especialista em aprendizado de máquina na Amazon Web Services. Ele recebeu seu PhD em Pesquisa Operacional depois de quebrar a conta de bolsa de pesquisa de seu orientador e não entregar o Prêmio Nobel que prometeu. Atualmente, ele ajuda os clientes do setor de seguros e serviços financeiros a criar soluções de aprendizado de máquina na AWS. Nas horas vagas, gosta de ler e ensinar.
Srinivasa Shaik é Arquiteto de Soluções da AWS com sede em Boston. Ele ajuda os clientes corporativos a acelerar sua jornada para a nuvem. Ele é apaixonado por contêineres e tecnologias de aprendizado de máquina. Nas horas vagas, gosta de passar o tempo com a família, cozinhar e viajar.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- Platoblockchain. Inteligência Metaverso Web3. Conhecimento Ampliado. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/bring-legacy-machine-learning-code-into-amazon-sagemaker-using-aws-step-functions/
- :é
- $UP
- 1
- 10
- 100
- 214
- 7
- 8
- a
- habilidade
- Sobre
- acelerar
- Acesso
- Conta
- Aja
- Açao Social
- atividades
- adicionado
- Adicionalmente
- endereço
- aderir
- Adoção
- avançado
- Vantagem
- Depois de
- AI
- Todos os Produtos
- permite
- Amazon
- Amazon Sage Maker
- Amazon Web Services
- Amazon Web Services (AWS)
- quantidade
- analítica
- e
- api
- APIs
- app
- Aplicar
- abordagem
- apropriado
- arquitetura
- SOMOS
- artificial
- inteligência artificial
- Inteligência artificial (AI)
- AS
- At
- anexar
- automaticamente
- disponível
- AWS
- Aprendizado de máquina da AWS
- Funções de etapa da AWS
- baseado
- basic
- BE
- começar
- MELHOR
- Boston
- trazer
- Traz
- Quebrou
- Quebrado
- construir
- Prédio
- construído
- construídas em
- by
- chamada
- chamado
- chamadas
- CAN
- não podes
- casas
- casos
- certo
- alterar
- Escolha
- cliente
- Na nuvem
- Agrupar
- código
- colaborar
- COM
- completar
- integrações
- componentes
- compreensivo
- condição
- Configuração
- cônsul
- construir
- Recipiente
- Containers
- contém
- ao controle
- Conveniente
- crio
- cria
- Criar
- Atualmente
- personalizadas
- Clientes
- personalizável
- dados,
- cientista de dados
- mais profunda
- Padrão
- entregar
- demonstrar
- implantar
- desenvolvimento
- descrito
- desejado
- área de trabalho
- desenvolvido
- em desenvolvimento
- Desenvolvimento
- diferente
- diretamente
- discutido
- distinto
- diferente
- Estivador
- documentários
- domínio
- não
- down
- durante
- cada
- Mais cedo
- facilmente
- efeito
- Eficaz
- eficiente
- esforço
- ou
- elimina
- noivando
- engenheiro
- garantir
- garante
- Empreendimento
- empresas
- entusiasmo
- Meio Ambiente
- ambientes
- equipado
- erros
- avaliação
- exemplo
- excepcional
- execução
- existente
- vasta experiência
- experimentando
- estender
- externo
- facilitando
- fracassado
- Familiaridade
- família
- Figura
- Envie o
- financeiro
- Serviços financeiros
- Encontre
- caber
- Flexibilidade
- fluxo
- seguir
- seguinte
- Escolha
- Quadro
- da
- totalmente
- função
- funcional
- funcionalidade
- funções
- Além disso
- gerar
- GitHub
- conceder
- orientações
- Guias
- Ter
- ajudar
- ajuda
- ajuda
- de alto nível
- altamente
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- HTML
- http
- HTTPS
- Centenas
- identificado
- Identidade
- imagem
- imagens
- implementação
- implementação
- importar
- importante
- in
- Em outra
- incluir
- incorporar
- indústria
- Infraestrutura
- do estado inicial,
- iniciar
- inovar
- entrada
- instalar
- instalando
- instância
- instruções
- com seguro
- integrado
- Integração
- integração
- Inteligência
- interagir
- envolvido
- envolvimento
- IT
- ESTÁ
- Trabalho
- Empregos
- viagem
- jpg
- json
- apenas um
- língua
- grande
- mais recente
- APRENDER
- aprendizagem
- Legado
- bibliotecas
- Biblioteca
- wifecycwe
- como
- LINK
- Lista
- local
- localização
- olhar
- máquina
- aprendizado de máquina
- a Principal
- gerencia
- gerenciados
- de grupos
- manualmente
- máximo
- mencionado
- mensagem
- método
- métodos
- migrado
- migração
- mínimo
- ML
- MLOps
- Moda
- modelo
- modelos
- modulares
- mais
- a maioria
- em movimento
- Nomeado
- Natureza
- Navegação
- necessário
- você merece...
- Cria
- Novo
- premio Nobel
- caderno
- número
- of
- Oferece
- on
- ONE
- abertura
- opera
- Operações
- otimizado
- Opções
- orquestrada
- organizações
- Organizado
- Outros
- saída
- lado de fora
- próprio
- propriedade
- pacote
- parâmetros
- peças
- paixão
- apaixonado
- caminho
- Realizar
- permissões
- plano
- platão
- Inteligência de Dados Platão
- PlatãoData
- jogar
- Privacidade
- Publique
- prática
- práticas
- predizer
- apresentado
- anterior
- prêmio
- processo
- em processamento
- Programação
- prometido
- adequado
- prototipagem
- fornecer
- fornecido
- fornece
- fornecendo
- Pullover
- fins
- empurrado
- Python
- Links
- rapidamente
- alcance
- Leitura
- recebido
- Recomenda
- Refatorar
- refere-se
- registrado
- registradores
- registro
- repositório
- requerer
- requeridos
- Requisitos
- pesquisa
- recurso
- Recursos
- responsável
- resultar
- resultando
- reutilizável
- Tipo
- Execute
- corrida
- sábio
- escalável
- cenário
- Cientista
- scikit-learn
- Scripts
- Sdk
- sem problemas
- seguro
- selecionando
- senior
- separado
- Seqüência
- Serverless
- serviço
- Serviços
- conjunto
- Conjuntos
- Configurações
- instalação
- vários
- Partilhar
- mudança
- mostrar
- mostrando
- Shows
- simples
- simplesmente
- solteiro
- Tamanho
- So
- solução
- Soluções
- alguns
- especialista
- especializada
- específico
- especificamente
- especificada
- Passar
- spins
- Esportes
- Estágio
- autônoma
- começa
- Estado
- Declaração
- Unidos
- Passo
- Passos
- armazenamento
- armazenadas
- franco
- estratégias
- simplificar
- racionalização
- mais forte,
- estudo
- tal
- adequado
- ajuda
- SYS
- .
- TAG
- Tire
- toma
- tomar
- tarefas
- Ensino
- Dados Técnicos:
- Tecnologias
- que
- A
- deles
- Eles
- Este
- milhares
- três
- Através da
- tempo
- para
- ferramenta
- ferramentas
- Training
- transferência
- Viagens
- subjacente
- compreender
- Atualizada
- usar
- caso de uso
- utilidade
- utilizar
- utilizado
- utiliza
- valor
- vário
- versão
- volume
- assistindo
- Riqueza
- web
- serviços web
- qual
- QUEM
- precisarão
- de
- dentro
- sem
- palavras
- Atividades:
- trabalhar
- trabalho
- Vocês
- investimentos
- zefirnet