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

Um pipeline do Azure Machine Learning é um fluxo de trabalho executável independente de uma tarefa completa de aprendizado de máquina. Um pipeline do Azure Machine Learning ajuda a padronizar as práticas recomendadas de produção de um modelo de aprendizado de máquina, 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 núcleo de um pipeline de aprendizado de máquina é dividir uma tarefa completa de aprendizado de máquina 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 através de interfaces bem definidas. O serviço de pipeline do Azure Machine Learning orquestra automaticamente todas as dependências entre as etapas do pipeline. Esta abordagem modular traz dois benefícios principais:

Padronize a prática de MLOps e ofereça suporte à colaboração escalável da equipe

A operação de aprendizado de máquina (MLOps) automatiza o processo de construção de modelos de aprendizado de máquina e leva o modelo para a produção. Trata-se de um processo complexo. Geralmente requer a colaboração de diferentes equipes com diferentes habilidades. Um pipeline de aprendizado de máquina 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 forma independente.

Por exemplo, um projeto típico de aprendizado de máquina inclui as etapas de coleta de dados, preparação de dados, treinamento de modelos, avaliação de modelos e implantação de modelos. Normalmente, os engenheiros de dados se concentram nas etapas de dados, os cientistas de dados gastam a maior parte do tempo em treinamento e avaliação de modelos, os engenheiros de aprendizado de máquina se concentram na implantação de modelos e automação de todo o fluxo de trabalho. Ao aproveitar o pipeline de aprendizado de máquina, cada equipe só precisa trabalhar na construção de suas próprias etapas. A melhor maneira de criar etapas é usar o componente Azure Machine Learning (v2), uma parte de código independente que executa uma etapa em um pipeline de aprendizado de máquina. Todas essas etapas construídas por diferentes usuários são finalmente integradas em um fluxo de trabalho através 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 podem ser padronizados pela prática de DevOps preferida de cada empresa. O pipeline pode ser posteriormente versionado e automatizado. Se os projetos de ML forem descritos como um pipeline, a melhor prática de MLOps já será aplicada.

Eficiência da formação 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 grandes modelos e reduz custos. Tomando como exemplo o treinamento moderno de modelos de linguagem natural. Requer pré-processamento de grandes quantidades de dados e treinamento intensivo de modelo de transformador de GPU. Leva horas a dias para treinar um modelo de cada vez. Quando o modelo está sendo construído, o cientista de dados quer testar diferentes códigos de treinamento ou hiperparâmetros e executar o treinamento muitas vezes para obter o melhor desempenho do modelo. Para a maioria desses treinamentos, geralmente há pequenas mudanças de um treinamento para outro. Será um desperdício significativo se cada vez que o treinamento completo do processamento de dados para o treinamento de modelo ocorrer. Usando o pipeline de aprendizado de máquina, ele pode calcular automaticamente quais etapas resultam inalteradas e reutilizar saídas de treinamento anterior. Além disso, o pipeline de aprendizado de máquina suporta a execução de cada etapa em diferentes recursos de computação. De tal forma que, o trabalho de processamento de dados pesado de memória e executar em máquinas de CPU de alta memória, e o treinamento intensivo de computação pode ser executado em máquinas GPU caras. Ao escolher corretamente qual etapa executar em qual tipo de máquina, o custo de treinamento pode ser significativamente reduzido.

Introdução às práticas recomendadas

Dependendo do que um projeto de aprendizado de máquina já tem, o ponto de partida da criação de um pipeline de aprendizado de máquina pode variar. Existem algumas abordagens típicas para a construção de um gasoduto.

A primeira abordagem geralmente se aplica à equipe que não usou pipeline antes e quer tirar alguma vantagem de pipeline como MLOps. Nessa situação, os cientistas de dados normalmente desenvolveram alguns modelos de aprendizado de máquina em seu ambiente local usando suas ferramentas favoritas. Os engenheiros de aprendizado de máquina precisam levar a produção dos cientistas de dados para a produção. O trabalho envolve limpar algum código desnecessário do notebook original ou do código Python, alterar a entrada de treinamento de dados locais para valores parametrizados, dividir o código de treinamento em várias etapas, conforme necessário, executar o teste de unidade de cada etapa e, finalmente, envolver todas as etapas em um pipeline.

Quando as equipes se familiarizarem com pipelines e quiserem fazer mais projetos de aprendizado de máquina usando pipelines, descobrirão que a primeira abordagem é difícil de escalar. A segunda abordagem é configurar alguns modelos de pipeline, cada um tentando resolver um problema específico de aprendizado de máquina. O modelo predefine a estrutura do pipeline, incluindo quantas etapas, as entradas e saídas de cada etapa e sua conectividade. Para iniciar um novo projeto de aprendizado de máquina, a equipe primeiro bifurca um repositório de modelo. Em seguida, o líder da equipe atribui aos membros em qual etapa eles precisam trabalhar. Os cientistas de dados e engenheiros de dados fazem o seu trabalho regular. Quando estão satisfeitos com o resultado, estruturam o código para se encaixarem nas etapas pré-definidas. Uma vez que os códigos estruturados são verificados, o pipeline pode ser executado ou automatizado. Se houver alguma alteração, cada membro só precisa trabalhar em sua parte do código sem tocar no restante do código do pipeline.

Uma vez que uma equipe tenha construído uma coleção de pipelines de aprendizado de máquina e componentes reutilizáveis, eles podem começar a construir o pipeline de aprendizado de máquina a partir da clonagem de pipeline anterior ou vincular componentes reutilizáveis existentes. Nesta fase, a produtividade global da equipa será significativamente melhorada.

O Azure Machine Learning oferece diferentes métodos para criar um pipeline. Para usuários que estão familiarizados com as práticas de DevOps, recomendamos o uso da CLI. Para cientistas de dados que estão familiarizados com python, recomendamos escrever pipelines usando o SDK do Azure Machine Learning v2. Para usuários que preferem usar a interface do usuário, eles podem 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 para que eles são usados:

Cenário Persona primária Oferta do Azure Oferta OSS Tubo canónico Pontos fortes
Orquestração de modelos (Machine learning) Cientista de dados Azure Machine Learning Pipelines Oleodutos Kubeflow Dados -> Modelo Distribuição, cache, code-first, reutilização
Orquestração de dados (preparação de dados) Engenheiro de dados Pipelines do Azure Data Factory Fluxo de ar Apache Dados -> Dados Movimento fortemente tipado, atividades centradas em dados
Orquestração de código e aplicativo (CI/CD) Desenvolvedor de aplicativos / Ops Azure Pipelines Jenkins Código + Modelo -> App/Service Suporte de atividade mais aberto e flexível, filas de aprovação, fases com seleção

Próximos passos

Os pipelines do Azure Machine Learning são uma instalação poderosa que começa a fornecer valor nos estágios iniciais de desenvolvimento.