MLOps para modelos Python que utilizam o Azure Machine Learning

Armazenamento de Blobs
Container Registry
Azure DevOps
Machine Learning
Pipelines

Esta arquitetura de referência mostra como implementar a integração contínua (CI), entrega contínua (CD) e pipeline de reconversão para uma aplicação de IA usando Azure DevOps e Azure Machine Learning. A solução baseia-se no conjunto de dados de diabetes scikit-learn, mas pode ser facilmente adaptado para qualquer cenário de IA e outros sistemas de construção populares, como Jenkins ou Travis.

Uma implementação de referência para esta arquitetura está disponível no GitHub.

Arquitetura

Diagrama da arquitetura Machine Learning DevOps.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de trabalho

Esta arquitetura consiste nos seguintes serviços:

Gasodutos Azure. Este sistema de construção e teste baseia-se no Azure DevOps e é utilizado para os gasodutos de construção e libertação. Os gasodutos Azure dividem estes oleodutos em passos lógicos chamados tarefas. Por exemplo, a tarefa Azure CLI facilita o trabalho com os recursos da Azure.

O Azure Machine Learning é um serviço de cloud para treinar, pontuar, implementar e gerir modelos de machine learning em escala. Esta arquitetura usa o Azure Machine Learning Python SDK para criar um espaço de trabalho, recursos de computação, o pipeline de aprendizagem automática, e a imagem de pontuação. Um espaço de trabalho Azure Machine Learning proporciona o espaço para experimentar, treinar e implementar modelos de aprendizagem automática.

Azure Machine Learning Compute é um aglomerado de máquinas virtuais a pedido com opções automáticas de escala e GPU e cpu. O trabalho de treino é executado neste aglomerado.

Os oleodutos Azure Machine Learning proporcionam fluxos de trabalho de aprendizagem automática reutilizáveis que podem ser reutilizados através de cenários. Formação, avaliação de modelos, registo de modelos e criação de imagem ocorrem em etapas distintas dentro destes oleodutos para este caso de utilização. O pipeline é publicado ou atualizado no final da fase de construção e é desencadeado na chegada de novos dados.

Armazenamento de Blobs do Azure. Os recipientes blob são utilizados para armazenar os registos do serviço de pontuação. Neste caso, tanto os dados de entrada como a previsão do modelo são recolhidos. Após alguma transformação, estes troncos podem ser usados para a reconversão do modelo.

Azure Container Registry. O script Python de pontuação é embalado como uma imagem docker e versão no registo.

Azure Container Instances. Como parte do oleoduto de libertação, o ambiente de QA e encenação é imitado através da implementação da imagem de serviço web de pontuação para Container Instances, o que proporciona uma maneira fácil e sem servidor de executar um recipiente.

Azure Kubernetes Service. Uma vez que a imagem de serviço web de pontuação é completamente testada no ambiente QA, é implantada para o ambiente de produção em um cluster gerido Kubernetes.

Aplicação Azure Insights. Este serviço de monitorização é utilizado para detetar anomalias de desempenho.

Gasoduto MLOps

Esta solução demonstra automatização de ponta a ponta de várias fases de um projeto de IA utilizando ferramentas que já são familiares aos engenheiros de software. O problema da aprendizagem automática é simples de manter o foco no oleoduto DevOps. A solução usa o conjunto de dados de diabetes scikit-learn e constrói um modelo de regressão linear de crista para prever a probabilidade de diabetes. Consulte os modelos Training of Python scikit-learn para obter detalhes.

Esta solução baseia-se nos seguintes três oleodutos:

  • Construir oleoduto. Constrói o código e executa um conjunto de testes.
  • Gasoduto de reciclagem. Retreina o modelo num horário ou quando novos dados ficam disponíveis.
  • Liberte o oleoduto. Operacionaliza a imagem de pontuação e promove-a de forma segura em diferentes ambientes.

As próximas secções descrevem cada um destes oleodutos.

Pipeline de compilação

O pipeline de CI é acionado sempre que o código for carregado. Publica um pipeline do Azure Machine Learning atualizado após a criação do código e a execução de um conjunto de testes. O gasoduto de construção consiste nas seguintes tarefas:

  • Qualidade de código. Estes testes garantem que o código está em conformidade com os padrões da equipa.

  • Teste de unidade. Estes testes asseguram que o código funciona, tem uma cobertura de código adequada e é estável.

  • Teste de dados. Estes testes verificam se as amostras de dados estão em conformidade com o esquema e distribuição esperados. Personalize este teste para outros casos de uso e execute-o como um pipeline de sanidade de dados separado que é desencadeado à medida que novos dados chegam. Por exemplo, mova a tarefa de teste de dados para um pipeline de ingestão de dados para que possa testá-la mais cedo.

Nota

Deve considerar a possibilidade de permitir práticas de DevOps para os dados utilizados para treinar os modelos de machine learning, mas isso não está coberto neste artigo. Para obter mais informações sobre a arquitetura e as melhores práticas para CI/CD de um pipeline de ingestão de dados, consulte DevOps para obter um pipeline de ingestão de dados.

As seguintes tarefas únicas ocorrem ao configurar a infraestrutura para a Azure Machine Learning e para o Python SDK:

  • Crie o espaço de trabalho que acolhe todos os recursos relacionados com a Azure Machine Learning.
  • Crie os recursos computacional que gerem o trabalho de formação.
  • Crie o pipeline de aprendizagem automática com o roteiro de treino atualizado.
  • Publique o pipeline de aprendizagem automática como um ponto final do REST para orquestrar o fluxo de trabalho de formação. A próxima secção descreve este passo.

Gasoduto de reciclagem

O gasoduto de aprendizagem automática orquestra o processo de reconversão do modelo de forma assíncronia. A nova preparação pode ser acionada com base numa agenda ou quando os novos dados estiverem disponíveis ao utilizar o ponto final de REST do pipeline publicado do passo anterior.

Este gasoduto abrange os seguintes passos:

  • Modelo de comboio. O script python de treino é executado no recurso Azure Machine Learning Compute para obter um novo ficheiro modelo que é armazenado na história da execução. Uma vez que a formação é a tarefa mais computacional num projeto de IA, a solução utiliza o Azure Machine Learning Compute.

  • Avaliar modelo. Um simples teste de avaliação compara o novo modelo com o modelo existente. Só quando o novo modelo é melhor é que é promovido. Caso contrário, o modelo não está registado e o gasoduto é cancelado.

  • Modelo de registo. O modelo retreinado está registado no registo Azure ML Model. Este serviço fornece controlo de versão para os modelos juntamente com tags de metadados para que possam ser facilmente reproduzidos.

Pipeline de versão

Este oleoduto mostra como operacionalizar a imagem de pontuação e promovê-la com segurança em diferentes ambientes. Este gasoduto é subdividido em dois ambientes, QA e produção:

Ambiente QA

  • Gatilho de artefacto modelo. Os oleodutos de libertação são acionados sempre que um novo artefacto está disponível. Um novo modelo registado na Azure Machine Learning Model Management é tratado como um artefacto de lançamento. Neste caso, é acionado um gasoduto para cada novo modelo.

  • Crie uma imagem de pontuação. O modelo registado é embalado juntamente com um script de pontuação e dependências python (ficheiro Conda YAML) numa imagem de estivador operacional. É feito automaticamente um controlo de versão da imagem através do Azure Container Registry.

  • Desdobre-se na Container Instances. Este serviço é utilizado para criar um ambiente de não produção. A imagem de pontuação também é implantada aqui, e esta é usada principalmente para testes. Container Instances fornece uma maneira fácil e rápida de testar a imagem do Docker.

  • Teste serviço web. Um simples teste API garante que a imagem é implantada com sucesso.

Ambiente de produção

  • Desdobre-se na Azure Kubernetes Service. Este serviço é utilizado para implementar uma imagem de pontuação como um serviço web em escala em um ambiente de produção.

  • Teste serviço web. Um simples teste API garante que a imagem é implantada com sucesso.

Considerações

Estas considerações implementam os pilares do Quadro Azure Well-Architected, que é um conjunto de princípios orientadores que podem ser utilizados para melhorar a qualidade de uma carga de trabalho. Para mais informações, consulte Microsoft Quadro Well-Architected Azure.

Escalabilidade

Um gasoduto de construção em Azure DevOps pode ser dimensionado para aplicações de qualquer tamanho. Os gasodutos de construção têm um tempo limite máximo que varia consoante o agente em que são executados. As construções podem funcionar para sempre em agentes auto-hospedados (agentes privados). Para agentes Microsoft hospedados para um projeto público, as construções podem decorrer por seis horas. Para projetos privados, o limite é de 30 minutos.

Para utilizar o tempo limite máximo, desconfije a seguinte propriedade no seu ficheiro Azure Pipelines YAML :

jobs:
- job: <job_name>
  timeoutInMinutes: 0

Idealmente, faça o seu acabamento de gasoduto de construção rapidamente e execute apenas testes de unidade e um subconjunto de outros testes. Isto permite-lhe validar as alterações rapidamente e corrigi-las em caso de problemas. Fazer testes de longa duração durante o horário de folga.

O oleoduto de lançamento publica um serviço web de pontuação em tempo real. Um lançamento para o ambiente QA é feito usando Container Instances por conveniência, mas você pode usar outro cluster Kubernetes em execução no ambiente QA/staging.

Dimensione o ambiente de produção de acordo com o tamanho do seu Azure Kubernetes Service cluster. O tamanho do cluster depende da carga que se espera para o serviço web de pontuação implantado. Para arquiteturas de pontuação em tempo real, a produção é uma métrica chave de otimização. Para cenários de aprendizagem não profundos, o CPU deve ser suficiente para lidar com a carga; no entanto, para trabalhos de aprendizagem profunda, quando a velocidade é um estrangulamento, as GPUs geralmente proporcionam um melhor desempenho em comparação com os CPUs. Azure Kubernetes Service suporta os tipos de nó de CPU e GPU, razão pela qual esta solução a utiliza para a implementação de imagem. Para obter mais informações, consulte GPUs vs CPUs para a implementação de modelos de aprendizagem profunda.

Dimensione o gasoduto de requalificação para cima e para baixo dependendo do número de nós no seu recurso Azure Machine Learning Compute e utilize a opção de autoscaling para gerir o cluster. Esta arquitetura usa CPUs. Para trabalhos de aprendizagem profunda, as GPUs são uma escolha melhor e são apoiadas pelo Azure Machine Learning Compute.

Gestão

  • Monitorar o trabalho de reconversão. Os oleodutos de aprendizagem automática orquestram a reconversão através de um conjunto de máquinas e fornecem uma maneira fácil de monitorizá-las. Utilize a UI de aprendizagem da máquina Azure e procure por baixo da secção de condutas para os registos. Em alternativa, estes registos também são escritos para blob e podem ser lidos a partir daí, bem como utilizando ferramentas como Explorador de Armazenamento do Azure.

  • Registo. A Azure Machine Learning proporciona uma maneira fácil de registar em cada passo do ciclo de vida de aprendizagem automática. Os troncos são guardados num recipiente de bolhas. Para obter mais informações, consulte Ative o registo em Azure Machine Learning. Para uma monitorização mais rica, configure os Insights de Aplicação para utilizar os registos.

  • Segurança. Todos os segredos e credenciais são armazenados em Azure Key Vault e acedidos em Pipelines Azure usando grupos variáveis.

Otimização de custos

A otimização de custos tem a ver com formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para mais informações, consulte a visão geral do pilar de otimização de custos.

O Azure DevOps é gratuito para projetos de código aberto e pequenos projetos com até cinco utilizadores. Para equipas maiores, compre um plano baseado no número de utilizadores.

O Compute é o maior impulsionador de custos desta arquitetura e o seu custo varia consoante o caso de utilização. Esta arquitetura usa Azure Machine Learning Compute, mas outras opções estão disponíveis. O Azure Machine Learning não adiciona qualquer sobretaxa para além do custo das máquinas virtuais que apoiam o seu cluster de computação. Configure o seu cluster de cálculo para ter um mínimo de 0 nós, de modo que, quando não estiver a ser utilizado, possa reduzir para 0 nós e não incorrer em quaisquer custos. O custo do cálculo depende do tipo de nó, de vários nós e do modo de provisionamento (de baixa prioridade ou dedicado). Pode estimar o custo para machine learning e outros serviços usando a calculadora de preços Azure.

Implementar este cenário

Para implementar esta arquitetura de referência, siga os passos descritos no guia Introdução no repo GitHub.

Contribuidores

Este artigo é mantido por Microsoft. Foi originalmente escrito pelos seguintes contribuintes.

Autor principal:

Para ver perfis não públicos do LinkedIn, inscreva-se no LinkedIn.

Passos seguintes