DevOps para aprendizado de máquina

Concluído

DevOps e MLOps

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

Para entender como ele é útil ao trabalhar com modelos de machine learning, vamos explorar ainda mais alguns princípios essenciais do DevOps.

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

Se quiser fornecer valor com mais facilidade integrando modelos de machine learning em pipelines de transformação de dados ou aplicativos em tempo real, você se beneficiará da implementação de princípios DevOps. Aprender sobre o DevOps ajudará você a organizar e automatizar seu trabalho.

Criar, implantar e monitorar modelos robustos e reproduzíveis para fornecer valor ao usuário final é a meta do MLOps (operações de machine learning).

MLOps overview of three processes

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

  • 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á:

    • EDA (análise exploratória de dados)
    • Engenharia de recursos
    • Treinamento e ajuste de modelo
  • O DEV refere-se ao desenvolvimento de software, que inclui:

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

    1. Liberar: implantar o modelo na produção.
    2. Configurar: padronizar configurações de infraestrutura com IaC (Infraestrutura como Código).
    3. Monitorar: acompanhar as métricas e verificar se o modelo e a infraestrutura estão funcionando conforme o esperado.

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

Princípios de DevOps

Um dos princípios básicos de DevOps é a automação. Ao automatizar tarefas, aspiramos implantar novos modelos na produção mais rapidamente. Ao automatizar, você também criará modelos reproduzidos que são confiáveis e consistentes entre ambientes.

Especialmente quando você deseja 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 de melhor desempenho.

Um conceito fundamental para obter 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 do código exploratório de 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 o lint e o teste de unidade, você poderá 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ê desejará levar o modelo para produção. Aentrega contínua envolve as etapas necessárias para implantar um modelo em produção, preferencialmente automatizando o máximo possível.

Para implantar um modelo em produção, primeiro você desejará empacotar e implantar em um ambiente de pré-produção. Ao preparar o modelo em um ambiente de pré-produção, você poderá 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 para 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.

Controle do código-fonte

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

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

Observação

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.

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

Ao hospedar todo o código relevante em um repositório, você poderá colaborar facilmente no código e acompanhar todas as 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 passadas e examinar as alterações antes que elas sejam confirmadas no repositório principal.

Para decidir quem trabalha em qual parte do projeto, será recomendável usar o planejamento ágil.

Planejamento ágil

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

Planejamento ágil significa que você isola o trabalho em sprints. Sprints são curtos períodos durante os quais você deseja atingir parte das metas 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 em produção.

Treinar um modelo de machine learning pode ser um processo interminável. Por exemplo, como cientista de dados, talvez seja necessário melhorar o desempenho do modelo devido à descompasso de dados. Ou você precisará ajustar o modelo para se alinhar melhor aos novos requisitos de negócios.

Para evitar gastar muito tempo em treinamento de modelo, 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ê poderá usar uma ferramenta como Azure Boards no Azure DevOps ou problemas do GitHub.

IaC (infraestrutura como código)

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

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

Dica

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