O que é um componente do Azure Machine Learning?

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

Um componente do Azure Machine Learning é uma parte independente do código que realiza uma etapa em um pipeline de machine learning. Um componente é semelhante a uma função: ele tem um nome, entradas, saídas e um corpo. Os componentes são os blocos de construção dos pipelines do Azure Machine Learning.

Um componente consiste em três partes:

  • Metadados: name, display_name, version, type etc.
  • Interface: especificações de entrada/saída (nome, tipo, descrição, valor padrão etc.).
  • Comando, Código e ambiente: o comando, o código e o ambiente necessários para executar o componente.

Diagram of what a component looks like and how it looks in a pipeline. In addition to screenshots of a component in the CLI, SDK, and portal UI.

Por que devo usar um componente?

É uma boa prática de engenharia criar um pipeline de machine learning para dividir uma tarefa completa de machine learning em um fluxo de trabalho de várias etapas. Assim, todos podem trabalhar na etapa específica de maneira independente. No Azure Machine Learning, um componente representa uma etapa reutilizável em um pipeline. Os componentes foram projetados para ajudar a aprimorar a produtividade da criação de pipeline. Especificamente, os componentes oferecem:

  • Interface bem definida: os componentes exigem uma interface bem definida (entrada e saída). A interface permite que o usuário crie etapas e as conecte facilmente. A interface também oculta a lógica complexa de uma etapa e remove o incômodo de entender como a etapa é implementada.

  • Compartilhamento e reutilização: como blocos de construção de um pipeline, os componentes podem ser facilmente compartilhados e reutilizados em pipelines, workspaces e assinaturas. Os componentes criados por uma equipe podem ser descobertos e usados por outra equipe.

  • Controle de versão: os componentes têm controle de versão. Os produtores de componentes podem continuar aprimorando os componentes e publicando novas versões. Os consumidores podem usar versões específicas dos componente em seus pipelines. Isso lhes oferece compatibilidade e reprodutibilidade.

Permite teste de unidade: um componente é um código independente. É fácil escrever um teste de unidade para um componente.

Componente e Pipeline

Um pipeline de machine learning é o fluxo de trabalho para uma tarefa completa de machine learning. Os componentes são os blocos de construção de um pipeline de machine learning. Quando você está pensando em um componente, ele deve estar no contexto do pipeline.

Para criar componentes, a primeira coisa é definir o pipeline de machine learning. Isso requer dividir a tarefa completa de machine learning em um fluxo de trabalho de várias etapas. Cada etapa é um componente. Por exemplo, considerando uma tarefa simples de machine learning para usar dados históricos para treinar um modelo de previsão de vendas, convém criar um fluxo de trabalho sequencial com etapas de processamento de dados, treinamento do modelo e avaliação do modelo. Em tarefas complexas, pode ser interessante dividir ainda mais. Por exemplo, divida uma única etapa de processamento de dados em etapas de ingestão de dados, limpeza de dados, pré-processamento de dados e engenharia de recursos.

Depois que as etapas do fluxo de trabalho forem definidas, a próxima coisa é especificar como cada etapa será conectada no pipeline. Por exemplo, para conectar a etapa de processamento de dados e a etapa de treinamento do modelo, convém definir um componente de processamento de dados para gerar uma pasta que contenha os dados processados. Um componente de treinamento usa uma pasta como entrada e gera uma pasta que contém o modelo treinado. Essa definição de entradas e saídas se tornará parte da definição da interface do componente.

Agora, é hora de desenvolver o código de executação de uma etapa. Você pode usar suas linguagens preferidas (Python, R etc.). O código precisa ser capaz de ser executado por um comando de shell. Durante o desenvolvimento, convém adicionar algumas entradas para controlar como essa etapa será executada. Por exemplo, para uma etapa de treinamento, é interessante adicionar taxa de aprendizado, número de épocas como as entradas para controlar o treinamento. Essas entradas adicionais, além das entradas e saídas necessárias para se conectar a outras etapas, são a interface do componente. O argumento de um comando de shell é usado para passar entradas e saídas para o código. O ambiente para executar o comando e o código precisa ser especificado. O ambiente pode ser um ambiente coletado do Azure Machine Learning, uma imagem do Docker ou um ambiente do Conda.

Por fim, você pode empacotar tudo, incluindo o código, o cmd, o ambiente, a entrada, as saídas, os metadados em um componente. Em seguida, você conecta esses componentes para criar pipelines para seu fluxo de trabalho de machine learning. Um componente pode ser usado em vários pipelines.

Para saber mais sobre como criar um componente, confira:

Próximas etapas