Conceitos - Operações de Machine Learning (MLOps) para fluxos de trabalho de IA e machine learning
Neste artigo, você aprenderá sobre operações de aprendizado de máquina (MLOps), incluindo quais tipos de práticas e ferramentas estão envolvidas e como isso pode simplificar e acelerar seus fluxos de trabalho de IA e aprendizado de máquina no Serviço Kubernetes do Azure (AKS).
O que é o MLOps?
As operações de aprendizado de máquina (MLOps) englobam práticas que facilitam a colaboração entre cientistas de dados, operações de TI e partes interessadas de negócios, garantindo que os modelos de aprendizado de máquina sejam desenvolvidos, implantados e mantidos de forma eficiente. O MLOps aplica os princípios de DevOps a projetos de aprendizado de máquina, com o objetivo de automatizar e simplificar o ciclo de vida de aprendizado de máquina de ponta a ponta. Esse ciclo de vida inclui modelos de treinamento, empacotamento, validação, implantação, monitoramento e retreinamento.
O MLOps requer várias funções e ferramentas para trabalhar em conjunto de forma eficaz. Os cientistas de dados se concentram em tarefas relacionadas ao treinamento do modelo, que é conhecido como loop interno. Os engenheiros de aprendizado de máquina e as equipes de operações de TI lidam com o loop externo, onde aplicam práticas de DevOps para empacotar, validar, implantar e monitorar modelos. Quando o modelo precisa de ajuste fino ou retreinamento, o processo volta para o loop interno.
Pipeline MLOps
Seu pipeline de MLOps pode aproveitar várias ferramentas e microsserviços que são implantados sequencialmente ou em paralelo. Abaixo estão exemplos de componentes-chave em seu pipeline que se beneficiam da implementação das seguintes práticas recomendadas para reduzir a sobrecarga e permitir uma iteração mais rápida:
- Armazenamento de dados não estruturado para novos dados que fluem para seu aplicativo
- Banco de dados vetorial para armazenar e consultar dados estruturados e pré-processados
- Estrutura de ingestão e indexação de dados
- Fluxos de trabalho de ingestão de vetores e/ou retreinamento de modelos
- Ferramentas de recolha e alerta de métricas (acompanhamento do desempenho do modelo, volume de dados ingeridos, etc.)
- Ferramentas de gestão do ciclo de vida
DevOps e MLOps
O DevOps é uma combinação de ferramentas e práticas que permitem criar aplicativos robustos e reproduzíveis. O objetivo de usar o DevOps é entregar valor rapidamente aos seus usuários finais. Criar, implantar e monitorar modelos robustos e reproduzíveis para entregar valor aos usuários finais é o principal objetivo do MLOps.
Existem três processos que são essenciais para o MLOps:
- Cargas de trabalho de aprendizado de máquina pelas quais um cientista de dados é responsável, incluindo análise exploratória de dados (EDA), engenharia de recursos e treinamento e ajuste de modelos.
- Práticas de desenvolvimento de software, incluindo planejamento, desenvolvimento, teste e empacotamento do modelo para implantação.
- Aspetos operacionais da implantação e manutenção do modelo em produção, incluindo liberação, configuração de recursos e monitoramento do modelo.
Princípios de DevOps que se aplicam a MLOps
O MLOps aproveita vários princípios do DevOps para aprimorar o ciclo de vida do aprendizado de máquina, como automação, integração e entrega contínua (CI/CD), controle de origem, planejamento ágil e infraestrutura como código (IaC).
Automatização
Ao automatizar tarefas, você pode reduzir erros manuais, aumentar a eficiência e garantir a consistência em todo o ciclo de vida do ML. A automação pode ser aplicada a vários estágios, incluindo coleta de dados, treinamento de modelos, implantação e monitoramento. Por meio da automação, você também pode aplicar medidas proativas no pipeline de IA para garantir a conformidade dos dados com as políticas da sua organização.
Por exemplo, seu pipeline pode automatizar:
- Ajuste/retreinamento do modelo em intervalos de tempo regulares ou quando uma certa quantidade de novos dados é coletada em seu aplicativo.
- Deteção de degradação de desempenho para iniciar o ajuste fino ou o retreinamento em um subconjunto diferente de dados.
- Verificação comum de vulnerabilidade e exposição (CVE) em imagens de contêiner base extraídas de registros de contêineres externos para garantir práticas de segurança seguras.
Integração contínua (CI)
A integração contínua abrange os aspetos de criação e verificação do processo de desenvolvimento do modelo. O objetivo do CI é criar o código e verificar a qualidade do código e do modelo antes da implantação. Isso inclui testes em uma variedade de conjuntos de dados de amostra para garantir que o modelo tenha o desempenho esperado e atenda aos padrões de qualidade.
Em MLOps, o IC pode envolver:
- Refatoração de código exploratório em notebooks Jupyter em scripts Python ou R.
- Validação de novos dados de entrada para valores ausentes ou de erro.
- Testes unitários e testes de integração no pipeline de ponta a ponta.
Para executar linting e testes de unidade, você pode usar ferramentas de automação como o Azure Pipelines no Azure DevOps ou GitHub Actions.
Entrega contínua (CD)
A entrega contínua envolve as etapas necessárias para implantar com segurança um modelo na produção. A primeira etapa é empacotar e implantar o modelo em ambientes de pré-produção, como ambientes de desenvolvimento e teste. A portabilidade dos parâmetros, hiperparâmetros e outros artefatos de modelo é um aspeto importante a ser mantido à medida que você promove o código por meio desses ambientes. Esta portabilidade é especialmente importante quando se trata de modelos de linguagem grande (LLMs) e modelos de difusão estáveis. Depois que o modelo passar nos testes de unidade e nos testes de garantia de qualidade (QA), você poderá aprová-lo para implantação no ambiente de produção.
Controlo de origem
O controle do código-fonte, ou controle de versão, é essencial para gerenciar alterações no código e nos modelos. Em um sistema de ML, isso se refere ao controle de versão de dados, controle de versão de código e controle de versão de modelo, que permitem que equipes multifuncionais colaborem de forma eficaz e acompanhem as alterações ao longo do tempo. Usar um sistema de controle de origem baseado em Git, como o Azure Repos no Azure DevOps ou um repositório GitHub, permite que você mantenha programaticamente um histórico de alterações, reverta para versões anteriores e gerencie ramificações para diferentes experimentos.
Planeamento ágil
O planejamento ágil envolve isolar o trabalho em sprints, que são prazos curtos para concluir tarefas específicas. Essa abordagem permite que as equipes se adaptem às mudanças rapidamente e forneçam melhorias incrementais ao modelo. O treinamento do modelo pode ser um processo contínuo, e o planejamento ágil pode ajudar a definir o escopo do projeto e permitir um melhor alinhamento da equipe.
Você pode usar ferramentas como Azure Boards no Azure DevOps ou problemas do GitHub para gerenciar seu planejamento Agile.
Infraestrutura como código (IaC)
Você usa a infraestrutura como código para repetir e automatizar a infraestrutura necessária para treinar, implantar e atender seus modelos. Em um sistema de ML, o IaC ajuda a simplificar e definir os recursos apropriados do Azure necessários para o tipo de trabalho específico no código, e o código é mantido em um repositório. Isso permite que você controle a versão de sua infraestrutura e faça alterações para otimização de recursos, custo-benefício, etc., conforme necessário.
Próximos passos
Confira os seguintes artigos para saber mais sobre as melhores práticas para MLOps em seus aplicativos inteligentes no AKS:
Azure Kubernetes Service