Implante uma solução de captura de dados de inferência de machine learning no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Implante uma solução de captura de dados de inferência de machine learning no AWS Lambda

O monitoramento das previsões de aprendizado de máquina (ML) pode ajudar a melhorar a qualidade dos modelos implantados. A captura de dados de inferências feitas na produção pode permitir monitorar seus modelos implantados e detectar desvios na qualidade do modelo. A detecção precoce e proativa desses desvios permite que você tome ações corretivas, como retreinar modelos, auditar sistemas upstream ou corrigir problemas de qualidade.

AWS Lambda é um serviço de computação sem servidor que pode fornecer inferência de ML em tempo real em grande escala. Nesta postagem, demonstramos um exemplo de recurso de captura de dados que pode ser implantado em uma carga de trabalho de inferência do Lambda ML.

Em dezembro de 2020, o Lambda introduziu suporte para imagens de contêiner como formato de pacote. Esse recurso aumentou o limite de tamanho do pacote de implantação de 500 MB para 10 GB. Antes do lançamento deste recurso, a restrição de tamanho do pacote dificultava a implantação de estruturas de ML como TensorFlow ou PyTorch em funções Lambda. Após o lançamento, o aumento do limite de tamanho do pacote tornou o ML uma carga de trabalho viável e atraente para implantação no Lambda. Em 2021, a inferência de ML foi um dos tipos de carga de trabalho de crescimento mais rápido no serviço Lambda.

Amazon Sage Maker, o serviço de ML totalmente gerenciado da Amazon, contém seu próprio recurso de monitoramento de modelo. No entanto, o projeto de amostra nesta postagem mostra como realizar a captura de dados para uso no monitoramento de modelos para clientes que usam Lambda para inferência de ML. O projeto utiliza extensões Lambda para capturar dados de inferência a fim de minimizar o impacto no desempenho e na latência da função de inferência. O uso de extensões Lambda também minimiza o impacto nos desenvolvedores de funções. Ao integrar através de uma extensão, o recurso de monitoramento pode ser aplicado a múltiplas funções e mantido por uma equipe centralizada.

Visão geral da solução

Este projeto contém código-fonte e arquivos de suporte para um aplicativo sem servidor que fornece inferência em tempo real usando um modelo de resposta a perguntas pré-treinado e baseado em distilbert. O projeto usa o modelo de processamento de linguagem natural (PNL) de perguntas e respostas Hugging Face com PyTorch para realizar tarefas de inferência de linguagem natural. O projeto também contém uma solução para realizar a captura de dados de inferência para as previsões do modelo. O gravador da função Lambda pode determinar exatamente quais dados da entrada da solicitação de inferência e do resultado da previsão serão enviados para a extensão. Nesta solução, enviamos a entrada e a resposta do modelo para a extensão. A extensão então envia periodicamente os dados para um Serviço de armazenamento simples da Amazon (Amazon S3) balde. Construímos a extensão de captura de dados como uma imagem de contêiner usando um makefile. Em seguida, construímos a função de inferência Lambda como uma imagem de contêiner e adicionamos a imagem de contêiner de extensão como uma camada de imagem de contêiner. O diagrama a seguir mostra uma visão geral da arquitetura.

As extensões Lambda são uma forma de aumentar as funções Lambda. Neste projeto, usamos uma extensão Lambda externa para registrar a solicitação de inferência e a previsão da inferência. A extensão externa é executada como um processo separado no ambiente de execução do Lambda, diminuindo o impacto na função de inferência. No entanto, a função compartilha recursos como CPU, memória e armazenamento com a função Lambda. Recomendamos alocar memória suficiente para a função Lambda para garantir a disponibilidade ideal de recursos. (Em nossos testes, alocamos 5 GB de memória para a função Lambda de inferência e observamos disponibilidade ideal de recursos e latência de inferência). Quando uma inferência é concluída, o serviço Lambda retorna a resposta imediatamente e não espera que a extensão termine de registrar a solicitação e a resposta no bucket S3. Com esse padrão, a extensão de monitoramento não afeta a latência de inferência. Para saber mais sobre extensões Lambda confira essas séries de vídeos.

Conteúdo do projeto

Este projeto usa o Modelo de aplicativo sem servidor da AWS (AWS SAM) interface de linha de comando (CLI). Esta ferramenta de linha de comando permite que os desenvolvedores inicializem e configurem aplicativos; empacotar, construir e testar localmente; e implantar na Nuvem AWS.

Você pode baixar o código fonte deste projeto em o repositório GitHub.

Este projeto inclui os seguintes arquivos e pastas:

  • app/app.py – Código para a função Lambda do aplicativo, incluindo o código para inferência de ML.
  • aplicativo/Dockerfile – O Dockerfile para construir a imagem do contêiner que empacota a função de inferência, o modelo baixado do Hugging Face e a extensão Lambda construída como uma camada. Ao contrário das funções .zip, as camadas não podem ser anexadas a funções do Lambda empacotadas em contêiner no momento da criação da função. Em vez disso, construímos a camada e copiamos seu conteúdo na imagem do contêiner.
  • Extensões – Os arquivos de extensão do monitor de modelo. Esta extensão Lambda é usada para registrar a entrada na função de inferência e a previsão correspondente em um bucket S3.
  • aplicativo/modelo – O modelo baixado do Hugging Face.
  • app/requisitos.txt – As dependências do Python a serem instaladas no contêiner.
  • eventos – Eventos de chamada que você pode usar para testar a função.
  • modelo.yaml – Um arquivo descritor que define os recursos AWS do aplicativo.

O aplicativo usa vários recursos da AWS, incluindo funções Lambda e um Gateway de API da Amazon API. Esses recursos são definidos no template.yaml arquivo neste projeto. Você pode atualizar o modelo para adicionar recursos da AWS por meio do mesmo processo de implantação que atualiza o código do seu aplicativo.

Pré-requisitos

Para este passo a passo, você deve ter os seguintes pré-requisitos:

Implantar o aplicativo de exemplo

Para construir seu aplicativo pela primeira vez, conclua as etapas a seguir:

  • Execute o seguinte código em seu shell. (Isso também criará a extensão):
  • Crie uma imagem Docker do aplicativo de monitor de modelo. O conteúdo da compilação reside no .aws-sam anuário
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Faça login no Amazon ECR:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Crie um repositório no Amazon ECR:

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • Envie a imagem do contêiner para o Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Remova o comentário da linha nº 1 em aplicativo/Dockerfile e edite-o para apontar para a imagem correta do repositório ECR e, em seguida, remova o comentário das linhas 6 e 7 em aplicativo/Dockerfile:
WORKDIR /opt
COPY --from=layer /opt/ .

  • Crie o aplicativo novamente:

Construímos novamente porque o Lambda não oferece suporte a camadas Lambda diretamente para o tipo de pacote de imagem de contêiner. Precisamos primeiro criar o componente de monitoramento de modelo como uma imagem de contêiner, carregá-lo no Amazon ECR e, em seguida, usar essa imagem no aplicativo de monitoramento de modelo como uma camada de contêiner.

  • Por fim, implante a função Lambda, o API Gateway e a extensão:
sam deploy --guided

Este comando empacota e implanta seu aplicativo na AWS com uma série de prompts:

  • Nome da pilha : O nome do implantado Formação da Nuvem AWS pilha. Deve ser exclusivo para sua conta e região, e um bom ponto de partida seria algo que corresponda ao nome do seu projeto.
  • Região AWS : a região da AWS na qual você implanta seu aplicativo.
  • Confirme as mudanças antes de implantar : Se definido para yes, todos os conjuntos de alterações serão mostrados antes da execução para revisão manual. Se definido como não, a CLI do AWS SAM implantará automaticamente alterações no aplicativo.
  • Permitir a criação de função IAM da CLI do AWS SAM : muitos modelos do AWS SAM, incluindo este exemplo, criam Gerenciamento de acesso e identidade da AWS (IAM) necessárias para as funções do Lambda incluídas para acessar os serviços da AWS. Por padrão, o escopo deles é limitado às permissões mínimas necessárias. Para implantar uma pilha do CloudFormation que cria ou modifica funções do IAM, o CAPABILITY_IAM valor para capabilities Deve ser providenciado. Se a permissão não for fornecida por meio deste prompt, para implantar este exemplo você deverá passar explicitamente --capabilities CAPABILITY_IAM ao sam deploy comando.
  • Salvar argumentos em samconfig.toml : Se definido para yes, suas escolhas são salvas em um arquivo de configuração dentro do projeto para que no futuro você possa simplesmente executar sam deploy sem parâmetros para implantar alterações em seu aplicativo.

Você pode encontrar o URL do endpoint do API Gateway nos valores de saída exibidos após a implantação.

Teste o aplicativo

Para testar o aplicativo, use Postman ou curl para enviar uma solicitação ao endpoint do API Gateway. Por exemplo:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

Você deverá ver uma saída como o código a seguir. O modelo ML inferiu do contexto e retornou a resposta para nossa pergunta.

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

Depois de alguns minutos, você deverá ver um arquivo no bucket S3 nlp-qamodel-model-monitoring-modelmonitorbucket- com a entrada e a inferência registradas.

limpar

Para excluir o aplicativo de amostra criado, use a AWS CLI:

aws cloudformation delete-stack --stack-name 

Conclusão

Nesta postagem, implementamos um recurso de monitoramento de modelo como uma extensão Lambda e o implantamos em uma carga de trabalho de inferência Lambda ML. Mostramos como construir e implantar esta solução em sua própria conta AWS. Por fim, mostramos como fazer um teste para verificar a funcionalidade do monitor.

Por favor, forneça quaisquer idéias ou perguntas na seção de comentários. Para obter mais recursos de aprendizagem sem servidor, visite Terra sem servidor.


Sobre os autores

Implante uma solução de captura de dados de inferência de machine learning no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Dan Fox é arquiteto de soluções especialista principal na organização especializada mundial em Serverless. Dan trabalha com os clientes para ajudá-los a aproveitar serviços sem servidor para criar aplicativos escalonáveis, tolerantes a falhas, de alto desempenho e econômicos. Dan está grato por poder viver e trabalhar na adorável Boulder, Colorado.

Implante uma solução de captura de dados de inferência de machine learning no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Newton Jain é gerente de produtos sênior responsável por criar novas experiências para clientes de aprendizado de máquina, computação de alto desempenho (HPC) e processamento de mídia no AWS Lambda. Ele lidera o desenvolvimento de novos recursos para aumentar o desempenho, reduzir a latência, melhorar a escalabilidade, aumentar a confiabilidade e reduzir custos. Ele também auxilia os clientes da AWS na definição de uma estratégia sem servidor eficaz para seus aplicativos com uso intensivo de computação.

Implante uma solução de captura de dados de inferência de machine learning no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Diksha Sharma é arquiteto de soluções e especialista em aprendizado de máquina na AWS. Ela ajuda os clientes a acelerar a adoção da nuvem, especialmente nas áreas de aprendizado de máquina e tecnologias sem servidor. A Diksha implanta provas de conceito personalizadas que mostram aos clientes o valor da AWS para enfrentar seus desafios de negócios e de TI. Ela capacita os clientes em seu conhecimento da AWS e trabalha junto com os clientes para desenvolver a solução desejada.

Implante uma solução de captura de dados de inferência de machine learning no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Veda Raman é um arquiteto de soluções especialista sênior para aprendizado de máquina com sede em Maryland. A Veda trabalha com os clientes para ajudá-los a arquitetar aplicativos de aprendizado de máquina eficientes, seguros e escaláveis. A Veda está interessada em ajudar os clientes a aproveitar as tecnologias sem servidor para aprendizado de máquina.

Implante uma solução de captura de dados de inferência de machine learning no AWS Lambda PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai. Josh Kahn é líder mundial em tecnologia sem servidor e principal arquiteto de soluções. Ele lidera uma comunidade global de especialistas em serverless na AWS que ajudam clientes de todos os tamanhos, desde start-ups até as maiores empresas do mundo, a usar efetivamente as tecnologias sem servidor da AWS.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS