DevOps para aprendizado de máquina

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 é o DevOps?.

Para entender como ele é útil 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 desenvolvedores na criação de aplicativos robustos e reproduzíveis. O objetivo de usar os princípios de DevOps é entregar rapidamente o valor para o usuário final.

Se você 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 de 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 de de operações de machine learning (MLOps).

visão geral do MLOps de três processos

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

  • de ML inclui todas as cargas de trabalho de machine learning pelas quais um cientista de dados é responsável. Um cientista de dados fará:

    • Análise de dados exploratórios (EDA)
    • Engenharia de características
    • Treinamento e ajuste de modelo
  • DEV refere-se ao desenvolvimento de software, que inclui:

    1. Plano: defina os requisitos e as métricas de desempenho do modelo.
    2. Criar: criar os scripts de treinamento e avaliaçã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.
  • OPS refere-se a operações e inclui:

    1. Lançamento: implante o modelo em produção.
    2. Configurar: padronizar configurações de infraestrutura com Infrastructure as Code (IaC).
    3. Monitor: acompanhe as métricas e verifique se o modelo e a infraestrutura estão sendo executados conforme o esperado.

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

Princípios de DevOps

Um dos princípios principais do DevOps é automação. Ao automatizar tarefas, aspiramos a implantar novos modelos na produção mais rapidamente. Ao automatizar, você também criará modelos reproduzíveis 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 é de CI/CD, que significa de integração contínua e de entrega contínua.

Integração contínua

A integração contínua abrange as atividades de criar e verificar. A meta é 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:

  • Refatorando código exploratório em notebooks Jupyter para 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.

Dica

Saiba como converter experimentos de machine learning em de código python de produção

Para executar o linting e o teste de unidade, você pode usar ferramentas de automação como do Azure Pipelines em do 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. de entrega contínua envolve as etapas necessárias para implantar um modelo em produção, de preferência automatizando o máximo possível.

Para implantar um modelo em 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 em qualquer código necessário para implantar o modelo em cada ambiente, você usará o controle de versão .

Controle do código-fonte

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 que tiver. O repositório incluirá notebooks Jupyter, scripts de treinamento, scripts de pontuação e definições de pipeline, entre outras coisas.

Nota

Preferencialmente, você não está armazenando dados de treinamento no 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 obtém os dados diretamente da fonte de dados usando armazenamentos de dados.

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

Hospedando todo o código relevante em um repositório, você pode colaborar facilmente no código e acompanhar 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, é recomendável usar de 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.

de planejamento agile significa que você isola o trabalho em sprints. sprints são curtos períodos de tempo durante os quais se procura 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 sem fim. 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ê pode usar uma ferramenta como do Azure Boards no Azure DevOps ou problemas do GitHub.

IaC (infraestrutura como código)

Aplicar princípios de DevOps a projetos de machine learning significa que você deseja criar soluções reproduzíveis robustas. 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á Infraestrutura como de 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 no código e o código é armazenado em um repositório.

Dica

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