Implante uma solução MLOps que hospede seus endpoints de modelo no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Implante uma solução MLOps que hospede seus endpoints de modelo no AWS Lambda

Em 2019, a Amazon cofundou a promessa climática. O objetivo do compromisso é alcançar carbono zero líquido até 2040. Isso é 10 anos antes do que o acordo de Paris descreve. As empresas que se inscrevem estão comprometidas com relatórios regulares, eliminação de carbono e compensações confiáveis. No momento da redação deste artigo, 377 empresas assinaram o compromisso climático e o número ainda está crescendo.

Como a AWS tem o compromisso de ajudá-lo a atingir sua meta líquida zero por meio de soluções em nuvem e aprendizado de máquina (ML), muitos projetos já foram desenvolvidos e implantados para reduzir as emissões de carbono. A manufatura é uma das indústrias que podem se beneficiar muito de tais projetos. Por meio do gerenciamento otimizado de energia de máquinas em fábricas de manufatura, como compressores ou resfriadores, as empresas podem reduzir sua pegada de carbono com ML.

A transição efetiva de uma fase de experimentação de ML para produção é desafiadora. Automatizar o treinamento e o retreinamento do modelo, ter um registro do modelo e rastrear experimentos e implantação são alguns dos principais desafios. Para empresas de manufatura, há outra camada de complexidade, ou seja, como esses modelos implantados podem ser executados na borda.

Nesta postagem, abordamos esses desafios fornecendo um modelo de operações de aprendizado de máquina (MLOps) que hospeda uma solução de gerenciamento de energia sustentável. A solução é independente de casos de uso, o que significa que você pode adaptá-la para seus casos de uso alterando o modelo e os dados. Mostramos como integrar modelos em Pipelines Amazon SageMaker, uma ferramenta nativa de orquestração de fluxo de trabalho para criar pipelines de ML, que executa um trabalho de treinamento e, opcionalmente, um trabalho de processamento com uma simulação de Monte Carlo. Os experimentos são rastreados em Experimentos Amazon SageMaker. Os modelos são rastreados e registrados no Registro de modelo do Amazon SageMaker. Por fim, fornecemos o código para implantação do seu modelo final em um AWS Lambda função.

O Lambda é um serviço de computação que permite executar código sem gerenciar ou provisionar servidores. O dimensionamento automático do Lambda, a cobrança por solicitação e a facilidade de uso o tornam uma opção de implantação comum para equipes de ciência de dados. Com esta postagem, os cientistas de dados podem transformar seu modelo em uma função Lambda econômica e escalável. Além disso, o Lambda permite a integração com AWS IoT Greengrass, que ajuda você a criar um software que permite que seus dispositivos atuem no limite dos dados que geram, como seria o caso de uma solução de gerenciamento de energia sustentável.

Visão geral da solução

A arquitetura que implantamos (veja a figura a seguir) é uma abordagem totalmente orientada por CI/CD para aprendizado de máquina. Os elementos são desacoplados para evitar uma solução monolítica.

Vamos começar com o canto superior esquerdo do diagrama. o Processamento - construção de imagem componente é um CI/CD orientado AWS CodeCommit repositório que ajuda a construir e enviar um Estivador recipiente para Registro do Amazon Elastic Container (Amazon ECR). Esse contêiner de processamento serve como a primeira etapa em nosso pipeline de ML, mas também é reutilizado para etapas de pós-processamento. No nosso caso, aplicamos uma simulação de Monte Carlo como pós-processamento. o Treinamento - Construção de imagem repositório destacado no canto inferior esquerdo tem o mesmo mecanismo que o Tratamento bloco acima dele. A principal diferença é que ele constrói o contêiner para treinamento do modelo.

A canalização principal, Construção de modelo (pipeline), é outro repositório do CodeCommit que automatiza a execução dos pipelines do SageMaker. Esse pipeline automatiza e conecta o pré-processamento de dados, o treinamento de modelo, o rastreamento de métricas de modelo no SageMaker Experiments, o pós-processamento de dados e a catalogação de modelo no registro de modelo do SageMaker.

O componente final está no canto inferior direito: Implantação de modelo. Se você seguir os exemplos em Projetos do Amazon SageMaker, você obtém um modelo que hospeda seu modelo usando um endpoint do SageMaker. Em vez disso, nosso repositório de implantação hospeda o modelo em uma função do Lambda. Mostramos uma abordagem para implantar a função Lambda que pode executar previsões em tempo real.

Pré-requisitos

Para implantar nossa solução com sucesso, você precisa do seguinte:

Baixe o repositório do GitHub

Como primeiro passo, clone o Repositório GitHub para sua máquina local. Ele contém a seguinte estrutura de pastas:

  • desenvolvimento – Contém código relevante para implantação
  • mllib — Contém código ML para pré-processamento, treinamento, veiculação e simulação
  • testes — Contém testes de unidade e integração

O arquivo chave para implantação é o shell script deployment/deploy.sh. Você usa esse arquivo para implantar os recursos em sua conta. Antes de podermos executar o script de shell, conclua as seguintes etapas:

  1. Abra o deployment/app.py e altere o bucket_name em SageMakerPipelineSourceCodeStack. O bucket_name precisa ser globalmente exclusivo (por exemplo, adicione seu nome completo).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, mudar o default_bucket para get_pipeline para o mesmo nome especificado na etapa 1.

Implante a solução com o AWS CDK

Primeiro, configurar sua AWS CLI com a conta e a região em que deseja implantar. Em seguida, execute os seguintes comandos para mudar para o diretório de implantação, crie um ambiente virtual, ative-o, instale os pacotes pip necessários especificados em setup.py, e execute o deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh executa as seguintes ações:

  1. Cria um ambiente virtual em Python.
  2. Origina o script de ativação do ambiente virtual.
  3. Instala o AWS CDK e os requisitos descritos em setup.py.
  4. Botas de inicialização o ambiente.
  5. Compacta e copia os arquivos necessários que você desenvolveu, como seu mllib arquivos, nas pastas correspondentes onde esses ativos são necessários.
  6. Runs cdk deploy —require-approval never.
  7. Cria um Formação da Nuvem AWS pilha por meio do AWS CDK.

O estágio inicial da implantação deve levar menos de 5 minutos. Agora você deve ter quatro repositórios no CodeCommit na região especificada por meio da AWS CLI, conforme descrito no diagrama de arquitetura. o AWS Code Pipeline pipelines são executados simultaneamente. o modelbuild e modeldeploy os pipelines dependem de uma execução bem-sucedida da criação da imagem de processamento e treinamento. o modeldeploy pipeline depende de uma construção de modelo bem-sucedida. A implantação do modelo deve ser concluída em menos de 1.5 horas.

Clone os repositórios de modelos no Studio

Para personalizar os pipelines do SageMaker criados por meio da implantação do AWS CDK na interface do usuário do Studio, primeiro você precisa clonar os repositórios no Studio. Inicie o terminal do sistema no Studio e execute os seguintes comandos após fornecer o nome e o ID do projeto:

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

Depois de clonar os repositórios, você pode enviar um commit para os repositórios. Essas confirmações acionam uma execução do CodePipeline para os pipelines relacionados.

Você também pode adaptar a solução em sua máquina local e trabalhar em seu IDE preferido.

Navegue pelos pipelines do SageMaker e pela IU de experimentos do SageMaker

Um pipeline do SageMaker é uma série de etapas interconectadas que são definidas usando o SDK do Amazon SageMaker Python. Essa definição de pipeline codifica um pipeline usando um Directed Acyclic Graph (DAG) que pode ser exportado como uma definição JSON. Para saber mais sobre a estrutura de tais pipelines, consulte Visão geral dos pipelines do SageMaker.

Navegar para Recursos do SageMaker painel e escolha o recurso Pipelines para visualizar. Debaixo Nome, Você deveria ver PROJECT_NAME-PROJECT_ID. Na IU de execução, deve haver uma execução bem-sucedida que deve levar um pouco mais de 1 hora. O pipeline deve ter a aparência mostrada na captura de tela a seguir.

Pipeline do Amazon SageMaker

A execução foi acionada automaticamente depois que a pilha do AWS CDK foi implantada. Você pode invocar manualmente uma execução escolhendo Crie execução. A partir daí, você pode escolher seus próprios parâmetros de pipeline, como o tipo de instância e o número de instâncias para as etapas de processamento e treinamento. Além disso, você pode dar um nome e uma descrição à execução. O pipeline é altamente configurável por meio de parâmetros de pipeline que você pode referenciar e definir em toda a definição do pipeline.

Sinta-se à vontade para iniciar outra execução de pipeline com seus parâmetros conforme desejado. Em seguida, navegue até o Recursos do SageMaker painel novamente e escolha Experimentos e testes. Lá você deve ver novamente uma linha com um nome como PROJECT_NAME-PROJECT_ID. Navegue até o experimento e escolha a única execução com um ID aleatório. A partir daí, escolha o trabalho de treinamento do SageMaker para explorar as métricas relacionadas ao trabalho de treinamento.

O objetivo do SageMaker Experiments é simplificar ao máximo a criação de experimentos, preenchê-los com testes e executar análises em testes e experimentos. Os pipelines do SageMaker estão intimamente integrados aos experimentos do SageMaker e, por padrão, para cada execução, crie um experimento, teste e componentes de teste, caso eles não existam.

Aprovar a implantação do Lambda no registro do modelo

Como próxima etapa, navegue até o registro do modelo em Recursos do SageMaker. Aqui você pode encontrar novamente uma linha com um nome como PROJECT_NAME-PROJECT_ID. Navegue até o único modelo existente e aprove-o. Isso implanta automaticamente o artefato de modelo em um contêiner no Lambda.

Depois de aprovar seu modelo no registro de modelos, um Amazon Event Bridge regra de evento é acionada. Esta regra executa o pipeline do CodePipeline com o final *-modeldeploy. Nesta seção, discutimos como esta solução usa o modelo aprovado e o hospeda em uma função Lambda. O CodePipeline usa o repositório existente do CodeCommit também terminando com *-modeldeploy e usa esse código para executar no CodeBuild. A entrada principal para CodeBuild é o buildspec.yml Arquivo. Vejamos isso primeiro:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

Durante a fase de instalação, garantimos que as bibliotecas Python estejam atualizadas, criamos um ambiente virtual, instalamos o AWS CDK v2.26.0 e instalamos o aws-cdk Biblioteca Python junto com outras pessoas usando o arquivo de requisitos. Nós também inicializar a conta da AWS. Na fase de construção, executamos build.py, que discutiremos a seguir. Esse arquivo baixa o último artefato de modelo SageMaker aprovado de Serviço de armazenamento simples da Amazon (Amazon S3) para sua instância local do CodeBuild. este .tar.gz arquivo é descompactado e seu conteúdo copiado para a pasta que também contém nosso código Lambda principal. A função Lambda é implantada usando o AWS CDK e o código é executado em um contêiner Docker do Amazon ECR. Isso é feito automaticamente pelo AWS CDK.

A build.py é um arquivo Python que usa principalmente o SDK da AWS para Python (Boto3) para listar os pacotes de modelos disponíveis.

A função get_approved_package retorna o URI do Amazon S3 do artefato cujo download é feito, conforme descrito anteriormente.

Depois de implantar seu modelo com sucesso, você pode teste diretamente no console do Lambda na região que você escolheu para implantar. O nome da função deve conter DigitalTwinStack-DigitalTwin*. Abra a função e navegue até o Test aba. Você pode usar o seguinte evento para executar uma chamada de teste:

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

Depois de executar o evento de teste, você obtém uma resposta semelhante à mostrada na captura de tela a seguir.

Testar a função AWS Lambda

Se você deseja executar mais simulações ou testes, pode aumentar o limite de tempo limite do Lambda e experimentar o código! Ou você pode querer pegar os dados gerados e visualizá-los em AmazonQuickSight. Abaixo está um exemplo. É a sua vez agora!

AmazonQuickSight

limpar

Para evitar cobranças adicionais, conclua as etapas a seguir:

  • No console do AWS CloudFormation, exclua o EnergyOptimization pilha.
    Isso exclui toda a solução.
  • Excluir a pilha DigitalTwinStack, que implantou sua função Lambda.

Conclusão

Nesta postagem, mostramos a você um pipeline de MLOps orientado a CI/CD de uma solução de gerenciamento de energia em que mantemos cada etapa dissociada. Você pode acompanhar seus pipelines e experimentos de ML na interface do usuário do Studio. Também demonstramos uma abordagem de implantação diferente: após a aprovação de um modelo no registro de modelo, uma função do Lambda que hospeda o modelo aprovado é criada automaticamente por meio do CodePipeline.

Se você estiver interessado em explorar o pipeline MLOps na AWS ou a solução de gerenciamento de energia sustentável, confira o Repositório GitHub e implante a pilha em seu próprio ambiente AWS!


Sobre os autores

Implante uma solução MLOps que hospede seus endpoints de modelo no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Laurens van der Maas é cientista de dados na AWS Professional Services. Ele trabalha de perto com os clientes que criam suas soluções de aprendizado de máquina na AWS e é apaixonado por como o aprendizado de máquina está mudando o mundo como o conhecemos.

Implante uma solução MLOps que hospede seus endpoints de modelo no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Kang Kang Wang é consultor de IA/ML da AWS Professional Services. Ela tem uma vasta experiência na implantação de soluções de IA/ML na área vertical de saúde e ciências biológicas. Ela também gosta de ajudar clientes corporativos a criar plataformas escalonáveis ​​de IA/ML para acelerar a jornada na nuvem de seus cientistas de dados.

Implante uma solução MLOps que hospede seus endpoints de modelo no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Selena Tabbara é cientista de dados na AWS Professional Services. Ela trabalha todos os dias com seus clientes para alcançar seus resultados de negócios inovando nas plataformas da AWS. Em seu tempo livre, Selena gosta de tocar piano, fazer caminhadas e assistir basquete.

Michael Wallner Michael Wallner é consultor sênior com foco em AI/ML com AWS Professional Services. Michael é apaixonado por permitir que os clientes em sua jornada na nuvem se tornem incríveis. Ele está entusiasmado com a fabricação e gosta de ajudar a transformar o espaço de fabricação por meio de dados.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS