DevOps para machine learning

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 utilizadores finais, por Donovan Brown em O que é o DevOps?.

Para compreender como é utilizado ao trabalhar com modelos de machine learning, vamos explorar ainda mais alguns princípios essenciais do DevOps.

O DevOps é uma combinação de ferramentas e práticas que orientam os programadores na criação de aplicações robustas e reproduzíveis. O objetivo da utilização dos princípios do DevOps é entregar rapidamente valor ao utilizador final.

Se quiser fornecer mais facilmente valor ao integrar modelos de machine learning em pipelines de transformação de dados ou aplicações em tempo real, beneficiará da implementação de princípios do DevOps. Saber mais sobre o DevOps irá ajudá-lo a organizar e automatizar o seu trabalho.

Criar, implementar e monitorizar modelos robustos e reprodutíveis para fornecer valor ao utilizador final é o objetivo das operações de machine learning (MLOps).

Descrição geral do MLOps de três processos

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 machine learning para as quais um cientista de dados é responsável. Um cientista de dados fará:

    • Análise exploratória de dados (EDA)
    • Desenvolvimento de funcionalidades
    • Preparação e otimização de modelos
  • O DEV refere-se ao desenvolvimento de software, que inclui:

    1. Plano: defina os requisitos e as métricas de desempenho do modelo.
    2. Criar: crie os scripts de preparação e classificação de modelos.
    3. Verificar: Verifique a existência de código e qualidade de modelo.
    4. Pacote: prepare-se para a implementação ao testar a solução.
  • O OPS refere-se a operações e inclui:

    1. Versão: implemente o modelo na produção.
    2. Configurar: Uniformizar configurações de infraestrutura com Infraestrutura como Código (IaC).
    3. Monitor: controle as métricas e certifique-se de que o modelo e a infraestrutura estão a funcionar conforme esperado.

Vamos ver alguns princípios do DevOps que são essenciais para o MLOps.

Princípios do DevOps

Um dos principais princípios do DevOps é a automatização. Ao automatizar tarefas, aspiramos a implementar novos modelos para produção mais rapidamente. Através da automatização, também irá criar modelos reproduzíveis que são fiáveis e consistentes em todos os ambientes.

Especialmente quando quer melhorar o modelo regularmente ao longo do tempo, a automatização permite-lhe realizar rapidamente todas as atividades necessárias para garantir que o modelo em produção é sempre o modelo com melhor desempenho.

Um conceito fundamental para alcançar a automatização é a 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 através de testes automatizados.

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

  • Refatorizar código exploratório em blocos de notas do Jupyter em scripts Python ou R.
  • Linting para verificar se existem erros programáticos ou estilísticos nos scripts Python ou R. Por exemplo, verifique se uma linha no script contém menos de 80 carateres.
  • Teste de unidades para verificar o desempenho do conteúdo dos scripts. Por exemplo, verifique se o modelo gera predições precisas num conjunto de dados de teste.

Para realizar testes de linting e unidades, pode utilizar ferramentas de automatização como o Azure Pipelines no Azure DevOps ou GitHub Actions.

Entrega contínua

Depois de verificar a qualidade do código dos scripts Python ou R utilizados para preparar o modelo, vai querer colocar o modelo em produção. A entrega contínua envolve os passos necessários para implementar um modelo na produção, de preferência automatizando o máximo possível.

Para implementar um modelo para produção, primeiro vai querer empacotá-lo e implementá-lo num ambiente de pré-produção. Ao testar o modelo num ambiente de pré-produção, pode verificar se tudo funciona conforme esperado.

Depois de implementar o modelo na fase de teste com êxito e sem erros, pode aprovar a implementação do modelo no ambiente de produção.

Para colaborar nos scripts Python ou R para preparar o modelo e qualquer código necessário para implementar o modelo em cada ambiente, irá utilizar o controlo de origem.

Controlo de código fonte

O controlo de origem (ou controlo de versão) é alcançado com mais frequência ao trabalhar com um repositório baseado em Git. Um repositório refere-se à localização onde todos os ficheiros relevantes para um projeto de software podem ser armazenados.

Com os projetos de machine learning, é provável que tenha um repositório para cada projeto que tiver. O repositório incluirá blocos de notas do Jupyter, scripts de preparação, scripts de classificação e definições de pipeline, entre outras coisas.

Nota

De preferência, não está a armazenar dados de preparação no seu repositório. Em vez disso, os dados de preparação são armazenados numa base de dados ou data lake e o Azure Machine Learning obtém os dados diretamente a partir da origem de dados através de arquivos de dados.

Os repositórios baseados no Git estão disponíveis com os Repositórios do Azure no Azure DevOps ou um repositório do GitHub.

Ao alojar todo o código relevante num repositório, pode colaborar facilmente no código e controlar quaisquer alterações efetuadas por um membro da equipa. Cada membro pode trabalhar na sua própria versão do código. Poderá ver todas as alterações anteriores e pode rever as alterações antes de serem consolidadas no repositório principal.

Para decidir quem trabalha em que parte do projeto, é recomendado utilizar o planeamento ágil.

Planeamento ágil

Como pretende que um modelo seja rapidamente implementado na produção, o planeamento ágil é ideal para projetos de machine learning.

Planeamento ágil significa isolar o trabalho em sprints. Os sprints são períodos de tempo curtos durante os quais pretende alcançar parte dos objetivos do projeto.

O objetivo é planear sprints para melhorar rapidamente qualquer um dos códigos. Quer seja o código utilizado para a exploração de dados e modelos ou para implementar um modelo na produção.

Preparar um modelo de machine learning pode ser um processo interminável. Por exemplo, enquanto cientista de dados, poderá ter de melhorar o desempenho do modelo devido a um desfasamento de dados. Em alternativa, terá de ajustar o modelo para se alinhar melhor com os novos requisitos empresariais.

Para evitar gastar demasiado tempo com a preparação de modelos, o planeamento ágil pode ajudar a definir o âmbito do projeto e ajudar a alinhar todos ao concordar com os resultados a curto prazo.

Para planear o seu trabalho, pode utilizar uma ferramenta como o Azure Boards no Azure DevOps ou problemas do GitHub.

Infraestrutura como código (IaC)

Aplicar princípios de DevOps a projetos de machine learning significa que pretende criar soluções robustas e reprodutíveis. Por outras palavras, tudo o que fizer ou criar, deverá conseguir repetir e automatizar.

Para repetir e automatizar a infraestrutura necessária para preparar e implementar o modelo, a sua equipa utilizará a Infraestrutura como Código (IaC). Quando prepara e implementa modelos no Azure, IaC significa que define todos os recursos do Azure necessários no processo no código e o código é armazenado num repositório.

Dica

Familiarize-se mais com o DevOps ao explorar os módulos do Microsoft Learn no percurso de transformação do DevOps