O que são os pipelines do Azure Machine Learning?

Um pipeline do Azure Machine Learning é um fluxo de trabalho executável de forma independente de uma tarefa completa de aprendizado de máquina. Um pipeline do Azure Machine Learning ajuda a padronizar as melhores práticas de produção de um modelo de machine learning, permite que a equipe execute em escala e melhora a eficiência de criação do modelo.

Por que os pipelines do Azure Machine Learning são necessários?

O foco de um pipeline de machine learning é dividir uma tarefa completa de machine learning em um fluxo de trabalho de várias etapas. Cada etapa é um componente gerenciável que pode ser desenvolvido, otimizado, configurado e automatizado individualmente. As etapas são conectadas por meio de interfaces bem definidas. O serviço de pipeline do Azure Machine Learning orquestra automaticamente todas as dependências entre as etapas do pipeline. Essa abordagem modular proporciona dois benefícios importantes:

Padronizar a prática de MLOps e dar suporte à colaboração em equipe escalonável

A MLOPS (operação de aprendizado de máquina) automatiza o processo de criação de modelos de aprendizado de máquina, levando o modelo para produção. Esse é um processo complexo. Geralmente, ele requer colaboração de equipes diferentes com habilidades diferentes. Um pipeline de machine learning bem definido pode abstrair esse processo complexo em um fluxo de trabalho de várias etapas, mapeando cada etapa para uma tarefa específica, de modo que cada equipe possa trabalhar de modo independente.

Por exemplo, um projeto típico de machine learning inclui as etapas de coleta de dados, preparação de dados, treinamento de modelo, avaliação de modelo e implantação de modelo. Normalmente, os engenheiros de dados se concentram nas etapas dos dados, os cientistas de dados passam a maior parte do tempo no treinamento e na avaliação do modelo, os engenheiros de machine learning se concentram na implantação de modelo e na automação de todo o fluxo de trabalho. Aproveitando o pipeline de machine learning, cada equipe só precisa trabalhar na criação das próprias etapas. A melhor maneira de criar etapas é usar o componente Azure Machine Learning (v2), um trecho de código autônomo que executa uma etapa em um pipeline de aprendizado de máquina. Todas essas etapas criadas por diferentes usuários são finalmente integradas a um fluxo de trabalho por meio da definição de pipeline. O pipeline é uma ferramenta de colaboração para todos no projeto. O processo de definição de um pipeline e todas as suas etapas pode ser padronizado pela prática preferencial de DevOps de cada empresa. O pipeline pode receber ainda mais controle de versão e automatização. Se os projetos ML estiverem descritos como um pipeline, a melhor prática de MLOps já estará aplicada.

Eficiência de treinamento e redução de custos

Além de ser a ferramenta para colocar o MLOps em prática, o pipeline de aprendizado de máquina também melhora a eficiência do treinamento de modelo grande e reduz o custo. Usando o treinamento de modelo de linguagem natural moderno como exemplo. Ele requer pré-processamento de grandes quantidades de dados e treinamento intensivo de modelo de transformador de GPU. São necessárias horas ou dias para treinar um modelo a cada vez. Quando o modelo está sendo criado, o cientista de dados precisa testar diferentes códigos de treinamento ou hiperparâmetros e executar o treinamento muitas vezes para obter o melhor desempenho do modelo. Na maioria das vezes, há pequenas mudanças de um treinamento para outro. Será um desperdício significativo se toda vez for feito o treinamento completo do processamento de dados para o treinamento de modelos. Usando o pipeline de machine learning, é possível calcular automaticamente quais etapas não mudaram e reutilizar saídas do treinamento anterior. Além disso, o pipeline de machine learning dá suporte à execução de cada etapa em diferentes recursos de computação. Assim, o processamento de dados pesados de memória funciona e é executado em computadores de CPU de alta memória e o treinamento intensivo em computação pode ser executado em computadores GPU dispendiosos. Ao escolher corretamente qual etapa executar em qual tipo de computador, é possível reduzir significativamente o custo do treinamento.

Introdução às melhores práticas

Dependendo do que um projeto de machine learning já tiver, o ponto inicial da criação de um pipeline de machine learning poderá variar. Há algumas abordagens típicas para criar um pipeline.

A primeira abordagem geralmente se aplica à equipe que não usou pipeline antes e deseja aproveitar algumas vantagens do pipeline, como o MLOps. Nessa situação, os cientistas de dados normalmente desenvolveram alguns modelos de machine learning no ambiente local usando suas ferramentas favoritas. Os engenheiros de aprendizado de máquina precisam levar a saída dos cientistas de dados para a produção. O trabalho limpa alguns códigos desnecessários do notebook original ou do código Python, altera a entrada de treinamento de dados locais para valores parametrizados, divide o código de treinamento em várias etapas, conforme necessário, executa o teste de unidade em cada uma delas e, por fim, encapsula todas as etapas em um pipeline.

Depois que as equipes se familiarizarem com pipelines e quiserem fazer mais projetos de machine learning usando pipelines, elas descobrirão que a primeira abordagem é difícil de dimensionar. A segunda abordagem é configurar alguns modelos de pipeline, cada um tentando resolver um problema específico de machine learning. O modelo predefine a estrutura de pipeline, incluindo o número de etapas, as entradas e saídas de cada etapa e sua conectividade. Para iniciar um projeto de machine learning, a equipe primeiro cria um fork de um repositório de modelo. Em seguida, o líder da equipe atribui os membros à etapas em que eles precisam trabalhar. Os cientistas de dados e os engenheiros de dados fazem seu trabalho normal. Quando estão satisfeitos com o resultado, eles estruturam o código conforme as etapas predefinidas. Depois da verificação dos códigos estruturados, o pipeline pode ser executado ou automatizado. Se houver alguma alteração, cada membro só precisará trabalhar em seu código sem tocar no restante do código de pipeline.

Depois que uma equipe tiver criado uma coleção de pipelines de machine learning e componentes reutilizáveis, ela poderá começar a criar o pipeline de machine learning com a clonagem do pipeline anterior ou vincular componentes reutilizáveis. Nesta fase, a produtividade geral da equipe vai melhorar significativamente.

O Azure Machine Learning oferece métodos diferentes para criar um pipeline. Para usuários familiarizados com as práticas de DevOps, é recomendável usar a CLI. Para os cientistas de dados familiarizados com o Python, recomendamos escrever pipelines usando o SDK v2 do Azure Machine Learning. Os usuários que preferirem usar a interface do usuário poderão usar o designer para criar pipelines usando componentes registrados.

Qual tecnologia de pipeline do Azure devo usar?

A nuvem do Azure fornece vários tipos de pipeline, cada um com uma finalidade diferente. A tabela a seguir lista os diferentes pipelines e a finalidade deles:

Cenário Persona primária Oferta do Azure Oferta de OSS (software livre) Pipe canônico Pontos fortes
Orquestração de modelo (Aprendizado de máquina) Cientista de dados Pipelines do Azure Machine Learning Pipelines do Kubeflow Dados -> Modelo Distribuição, cache, primeiro código, reutilização
Orquestração de dados (Preparação de dados) Engenheiro de dados Pipelines do Azure Data Factory Fluxo de ar do Apache Dados -> Dados Movimento com rigidez de tipos, atividades centradas em dados
Orquestração de código e aplicativo (CI/CD - integração contínua e entrega contínua) Desenvolvedor de aplicativos/Operações Azure Pipelines Jenkins Código + Modelo -> Aplicativo/Serviço Suporte a atividades mais aberto e flexível, filas de aprovação, fases com retenção

Próximas etapas

Os pipelines do Azure Machine Learning são um recurso poderoso que começa a entregar valor nos primeiros estágios do desenvolvimento.