DevOps para aprendizagem automática

Concluído

DevOps e MLOps

O DevOps é descrito como a união de pessoas, processos e produtos para permitir a entrega contínua de valor aos nossos usuários finais, por Donovan Brown em O que é DevOps?.

Para entender como ele é útil ao trabalhar com modelos de aprendizado de máquina, vamos explorar mais alguns princípios essenciais de DevOps.

DevOps é uma combinação de ferramentas e práticas que orientam os desenvolvedores na criação de aplicativos robustos e reproduzíveis. O objetivo de usar os princípios de DevOps é entregar valor rapidamente ao usuário final.

Se você quiser entregar valor mais facilmente integrando modelos de aprendizado de máquina em pipelines de transformação de dados ou aplicativos em tempo real, você se beneficiará da implementação dos princípios de DevOps. Aprender sobre DevOps irá ajudá-lo a organizar e automatizar o seu trabalho.

Criar, implantar e monitorar modelos robustos e reproduzíveis para entregar valor ao usuário final é o objetivo das operações de aprendizado de máquina (MLOps).

MLOps overview of three processes

Existem três processos que queremos combinar sempre que falamos de operações de machine learning (MLOps):

  • O ML inclui todas as cargas de trabalho de aprendizado de máquina pelas quais um cientista de dados é responsável. Um cientista de dados fará:

    • Análise exploratória de dados (EDA)
    • Desenvolvimento de funcionalidades
    • Treinamento e ajuste de modelos
  • DEV refere-se ao desenvolvimento de software, que inclui:

    1. Planejar: Definir os requisitos e métricas de desempenho do modelo.
    2. Criar: crie o modelo de treinamento e scripts de pontuação.
    3. Verificar: Verifique a qualidade do código e do modelo.
    4. Pacote: prepare-se para a implantação preparando a solução.
  • OPS refere-se a operações e inclui:

    1. Versão: implante o modelo na produção.
    2. Configurar: padronize as configurações de infraestrutura com a infraestrutura como código (IaC).
    3. Monitorar: acompanhe as métricas e garanta que o modelo e a infraestrutura estejam funcionando conforme o esperado.

Vamos analisar alguns princípios de DevOps que são essenciais para MLOps.

Princípios de DevOps

Um dos princípios fundamentais do DevOps é a automação. Ao automatizar tarefas, aspiramos a obter novos modelos implantados na produção mais rapidamente. Através da automatização, você também criará modelos reproduzíveis que são confiáveis e consistentes em todos os ambientes.

Especialmente quando você quer melhorar seu modelo regularmente ao longo do tempo, a automação permite que você faça todas as atividades necessárias rapidamente para garantir que o modelo em produção seja sempre o modelo com melhor desempenho.

Um conceito-chave para alcançar a automação é CI/CD, que significa integração contínua e entrega contínua.

Integração contínua

A integração contínua abrange as atividades de criação e verificação . O objetivo é criar o código e verificar a qualidade do código e do modelo por meio de testes automatizados.

Com o MLOps, a integração contínua pode incluir:

  • Refatoração de código exploratório em notebooks Jupyter em scripts Python ou R.
  • Linting para verificar se há erros programáticos ou estilísticos nos scripts Python ou R. Por exemplo, verifique se uma linha no script contém menos de 80 caracteres.
  • Teste de unidade para verificar o desempenho do conteúdo dos scripts. Por exemplo, verifique se o modelo gera previsões precisas em um conjunto de dados de teste.

Para executar linting e testes de unidade, você pode usar ferramentas de automação como Azure Pipelines no Azure DevOps ou GitHub Actions.

Entrega contínua

Depois de verificar a qualidade do código dos scripts Python ou R usados para treinar o modelo, você vai querer trazer o modelo para a produção. A entrega contínua envolve as etapas necessárias para implantar um modelo na produção, de preferência automatizando o máximo possível.

Para implantar um modelo na produção, primeiro você desejará empacotá-lo e implantá-lo em um ambiente de pré-produção. Ao preparar o modelo em um ambiente de pré-produção, você pode verificar se tudo funciona conforme o esperado.

Depois que a implantação do modelo na fase de preparo for bem-sucedida e sem erros, você poderá aprovar que o modelo seja implantado no ambiente de produção.

Para colaborar nos scripts Python ou R para treinar o modelo e qualquer código necessário para implantar o modelo em cada ambiente, você usará o controle do código-fonte.

Controlo de origem

O controle do código-fonte (ou controle de versão) é obtido mais comumente trabalhando com um repositório baseado em Git. Um repositório refere-se ao local onde todos os arquivos relevantes para um projeto de software podem ser armazenados.

Com projetos de aprendizado de máquina, é provável que você tenha um repositório para cada projeto que tiver. O repositório incluirá cadernos Jupyter, scripts de treinamento, scripts de pontuação e definições de pipeline, entre outras coisas.

Nota

De preferência, você não está armazenando dados de treinamento em seu repositório. Em vez disso, os dados de treinamento são armazenados em um banco de dados ou data lake e o Azure Machine Learning recupera os dados diretamente da fonte de dados usando armazenamentos de dados.

Os repositórios baseados em Git estão disponíveis usando o Azure Repos no Azure DevOps ou um repositório GitHub.

Ao hospedar todo o código relevante em um repositório, você pode facilmente colaborar no código e acompanhar quaisquer alterações feitas por um membro da equipe. Cada membro pode trabalhar em sua própria versão do código. Você poderá ver todas as alterações anteriores e revisar as alterações antes que elas sejam confirmadas no repositório principal.

Para decidir quem trabalha em qual parte do projeto, recomenda-se o uso de planejamento ágil.

Planeamento ágil

Como você deseja que um modelo seja implantado rapidamente na produção, o planejamento ágil é ideal para projetos de aprendizado de máquina.

O planejamento ágil significa que você isola o trabalho em sprints. Sprints são curtos períodos de tempo durante os quais você deseja alcançar parte dos objetivos do projeto.

O objetivo é planejar sprints para melhorar rapidamente qualquer um dos códigos. Seja o código usado para exploração de dados e modelos ou para implantar um modelo na produção.

Treinar um modelo de aprendizado de máquina pode ser um processo sem fim. Por exemplo, como cientista de dados, você pode precisar melhorar o desempenho do modelo devido ao desvio de dados. Ou você precisará ajustar o modelo para se alinhar melhor aos novos requisitos de negócios.

Para evitar gastar muito tempo com treinamento de modelos, o planejamento ágil pode ajudar a definir o escopo do projeto e ajudar a alinhar todos concordando com resultados de curto prazo.

Para planejar seu trabalho, você pode usar uma ferramenta como Painéis do Azure no Azure DevOps ou problemas do GitHub.

Infraestrutura como código (IaC)

Aplicar os princípios de DevOps a projetos de aprendizado de máquina significa que você deseja criar soluções robustas e reproduzíveis. Em outras palavras, tudo o que você faz ou cria, você deve ser capaz de repetir e automatizar.

Para repetir e automatizar a infraestrutura necessária para treinar e implantar seu modelo, sua equipe usará a infraestrutura como código (IaC). Quando você treina e implanta modelos no Azure, IaC significa que você define todos os recursos do Azure necessários no processo em código e o código é armazenado em um repositório.

Gorjeta

Familiarize-se com o DevOps explorando os módulos do Microsoft Learn na jornada de transformação do DevOps