O que são pipelines Azure Machine Learning?What are Azure Machine Learning pipelines?

Neste artigo, você aprenderá como um pipeline do Machine Learning ajuda a criar, otimizar e gerenciar seu fluxo de trabalho de aprendizado de máquina.In this article, you learn how a machine learning pipeline helps you build, optimize, and manage your machine learning workflow.

Qual tecnologia de pipeline do Azure devo usar?Which Azure pipeline technology should I use?

A nuvem do Azure fornece vários tipos de pipeline, cada um com uma finalidade diferente.The Azure cloud provides several types of pipeline, each with a different purpose. A tabela a seguir lista os pipelines diferentes e para que eles são usados:The following table lists the different pipelines and what they are used for:

CenárioScenario Persona primárioPrimary persona Oferta do AzureAzure offering Oferta de OSSOSS offering Pipe canônicoCanonical pipe Pontos fortesStrengths
Orquestração de modelo (Machine Learning)Model orchestration (Machine learning) Cientista de dadosData scientist Pipelines do Azure Machine LearningAzure Machine Learning Pipelines Pipelines do KubeflowKubeflow Pipelines Modelo de > de dadosData -> Model Distribuição, cache, primeiro código, reutilizaçãoDistribution, caching, code-first, reuse
Orquestração de dados (preparação de dados)Data orchestration (Data prep) Engenheiro de dadosData engineer Pipelines do Azure Data FactoryAzure Data Factory pipelines Fluxo de ar do ApacheApache Airflow Dados > dadosData -> Data Movimentação com rigidez de tipos, atividades centradas em dadosStrongly typed movement, data-centric activities
Código & orquestração de aplicativo (CI/CD)Code & app orchestration (CI/CD) Desenvolvedor de aplicativos/OpsApp Developer / Ops Azure PipelinesAzure Pipelines JenkinsJenkins Código + modelo – aplicativo/serviço >Code + Model -> App/Service Mais suporte a atividades abertas e flexíveis, filas de aprovação, fases com a retençãoMost open and flexible activity support, approval queues, phases with gating

O que os pipelines de Machine Learning podem fazer?What can machine learning pipelines do?

Um pipeline de Azure Machine Learning é um fluxo de trabalho executável independente de uma tarefa de aprendizado de máquina completa.An Azure Machine Learning pipeline is an independently executable workflow of a complete machine learning task. As subtarefas são encapsuladas como uma série de etapas no pipeline.Subtasks are encapsulated as a series of steps within the pipeline. Um pipeline Azure Machine Learning pode ser tão simples quanto um que chama um script Python, portanto, pode fazer praticamente qualquer coisa.An Azure Machine Learning pipeline can be as simple as one that calls a Python script, so may do just about anything. Os pipelines devem se concentrar em tarefas de aprendizado de máquina, como:Pipelines should focus on machine learning tasks such as:

  • Preparação de dados, incluindo importação, validação e limpeza, mudanças irreversíveis e transformação, normalização e preparoData preparation including importing, validating and cleaning, munging and transformation, normalization, and staging
  • Configuração de treinamento, incluindo argumentos de parametrização, filePaths e configurações de log/relatórioTraining configuration including parameterizing arguments, filepaths, and logging / reporting configurations
  • Treinamento e validação de forma eficiente e repetida.Training and validating efficiently and repeatedly. A eficiência pode vir de especificar subconjuntos de dados específicos, diferentes recursos de computação de hardware, processamento distribuído e monitoramento de progressoEfficiency might come from specifying specific data subsets, different hardware compute resources, distributed processing, and progress monitoring
  • Implantação, incluindo controle de versão, dimensionamento, provisionamento e controle de acessoDeployment, including versioning, scaling, provisioning, and access control

As etapas independentes permitem que vários cientistas de dados funcionem no mesmo pipeline ao mesmo tempo sem sobrecarregar recursos de computação.Independent steps allow multiple data scientists to work on the same pipeline at the same time without over-taxing compute resources. Etapas separadas também facilitam o uso de diferentes tipos/tamanhos de computação para cada etapa.Separate steps also make it easy to use different compute types/sizes for each step.

Depois que o pipeline é criado, muitas vezes, há mais ajustes finos no loop de treinamento do pipeline.After the pipeline is designed, there is often more fine-tuning around the training loop of the pipeline. Quando você executa novamente um pipeline, a execução salta para as etapas que precisam ser executadas novamente, como um script de treinamento atualizado.When you rerun a pipeline, the run jumps to the steps that need to be rerun, such as an updated training script. As etapas que não precisam ser executadas novamente são ignoradas.Steps that do not need to be rerun are skipped.

Com pipelines, você pode optar por usar hardware diferente para tarefas diferentes.With pipelines, you may choose to use different hardware for different tasks. O Azure coordena os vários destinos de computação que você usa, de modo que seus dados intermediários fluem diretamente para destinos de computação downstream.Azure coordinates the various compute targets you use, so your intermediate data seamlessly flows to downstream compute targets.

Você pode acompanhar as métricas de seus experimentos de pipeline diretamente no portal do Azure ou na página de aterrissagem do espaço de trabalho (versão prévia).You can track the metrics for your pipeline experiments directly in Azure portal or your workspace landing page (preview). Depois que um pipeline tiver sido publicado, você poderá configurar um ponto de extremidade REST, que permite executar novamente o pipeline de qualquer plataforma ou pilha.After a pipeline has been published, you can configure a REST endpoint, which allows you to rerun the pipeline from any platform or stack.

Em suma, todas as tarefas complexas do ciclo de vida do Machine Learning podem ser ajudado com pipelines.In short, all of the complex tasks of the machine learning lifecycle can be helped with pipelines. Outras tecnologias de pipeline do Azure têm seus próprios pontos fortes.Other Azure pipeline technologies have their own strengths. Azure data Factory pipelines os excels em trabalhando com dados e Azure pipelines é a ferramenta certa para integração e implantação contínuas.Azure Data Factory pipelines excels at working with data and Azure Pipelines is the right tool for continuous integration and deployment. Mas se o seu foco for aprendizado de máquina, Azure Machine Learning pipelines provavelmente serão a melhor opção para suas necessidades de fluxo de trabalho.But if your focus is machine learning, Azure Machine Learning pipelines are likely to be the best choice for your workflow needs.

Analisando dependênciasAnalyzing dependencies

Muitos ecossistemas de programação têm ferramentas que orquestram dependências de recursos, biblioteca ou compilação.Many programming ecosystems have tools that orchestrate resource, library, or compilation dependencies. Em geral, essas ferramentas usam carimbos de data/hora de arquivo para calcular dependências.Generally, these tools use file timestamps to calculate dependencies. Quando um arquivo é alterado, apenas ele e seus dependentes são atualizados (baixados, recompilados ou empacotados).When a file is changed, only it and its dependents are updated (downloaded, recompiled, or packaged). Azure Machine Learning pipelines estendem esse conceito.Azure Machine Learning pipelines extend this concept. Como as ferramentas de Build tradicionais, os pipelines calculam as dependências entre as etapas e só executam os recálculos necessários.Like traditional build tools, pipelines calculate dependencies between steps and only perform the necessary recalculations.

No entanto, a análise de dependência em pipelines de Azure Machine Learning é mais sofisticada do que carimbos de data/hora simples.The dependency analysis in Azure Machine Learning pipelines is more sophisticated than simple timestamps though. Cada etapa pode ser executada em um ambiente de hardware e software diferente.Every step may run in a different hardware and software environment. A preparação de dados pode ser um processo demorado, mas não precisa ser executada em hardware com GPUs poderosas, determinadas etapas podem exigir software específico do sistema operacional, talvez você queira usar o treinamento distribuído e assim por diante.Data preparation might be a time-consuming process but not need to run on hardware with powerful GPUs, certain steps might require OS-specific software, you might want to use distributed training, and so forth.

Azure Machine Learning orquestra automaticamente todas as dependências entre as etapas do pipeline.Azure Machine Learning automatically orchestrates all of the dependencies between pipeline steps. Essa orquestração pode incluir a rotação de imagens do Docker para cima e para baixo, anexando e desanexando recursos de computação e movendo dados entre as etapas de maneira consistente e automática.This orchestration might include spinning up and down Docker images, attaching and detaching compute resources, and moving data between the steps in a consistent and automatic manner.

Coordenando as etapas envolvidasCoordinating the steps involved

Quando você cria e executa um Pipeline objeto, ocorrem as seguintes etapas de alto nível:When you create and run a Pipeline object, the following high-level steps occur:

  • Para cada etapa, o serviço calcula os requisitos para:For each step, the service calculates requirements for:
    • Recursos de computação de hardwareHardware compute resources
    • Recursos do sistema operacional (imagem (ns) do Docker)OS resources (Docker image(s))
    • Recursos de software (dependências de Conda/virtualenv)Software resources (Conda / virtualenv dependencies)
    • Entradas de dadosData inputs
  • O serviço determina as dependências entre etapas, resultando em um grafo de execução dinâmicaThe service determines the dependencies between steps, resulting in a dynamic execution graph
  • Quando cada nó no grafo de execução é executado:When each node in the execution graph runs:
    • O serviço configura o ambiente de hardware e software necessário (talvez reutilizando os recursos existentes)The service configures the necessary hardware and software environment (perhaps reusing existing resources)
    • A etapa é executada, fornecendo registro em log e informações de monitoramento para seu Experiment objeto recipienteThe step runs, providing logging and monitoring information to its containing Experiment object
    • Quando a etapa for concluída, suas saídas serão preparadas como entradas para a próxima etapa e/ou gravadas no armazenamentoWhen the step completes, its outputs are prepared as inputs to the next step and/or written to storage
    • Os recursos que não são mais necessários são finalizados e desanexadosResources that are no longer needed are finalized and detached

Etapas de pipeline

Criando pipelines com o SDK do PythonBuilding pipelines with the Python SDK

No SDK do Azure Machine Learning Python, um pipeline é um objeto Python definido no azureml.pipeline.core módulo.In the Azure Machine Learning Python SDK, a pipeline is a Python object defined in the azureml.pipeline.core module. Um objeto de pipeline contém uma sequência ordenada de um ou mais objetos PipelineStep .A Pipeline object contains an ordered sequence of one or more PipelineStep objects. A PipelineStep classe é abstrata e as etapas reais serão de subclasses, como EstimatorStep, PythonScriptStepou DataTransferStep.The PipelineStep class is abstract and the actual steps will be of subclasses such as EstimatorStep, PythonScriptStep, or DataTransferStep. A classe ModuleStep mantém uma sequência reutilizável de etapas que podem ser compartilhadas entre pipelines.The ModuleStep class holds a reusable sequence of steps that can be shared among pipelines. Um Pipeline é executado como parte de um Experiment .A Pipeline runs as part of an Experiment.

Um pipeline do Azure Machine Learning está associado a um espaço de trabalho Azure Machine Learning e uma etapa de pipeline está associada a um destino de computação disponível nesse espaço de trabalho.An Azure machine learning pipeline is associated with an Azure Machine Learning workspace and a pipeline step is associated with a compute target available within that workspace. Para obter mais informações, consulte criar e gerenciar espaços de trabalho do Azure Machine Learning no portal do Azure ou quais são os destinos de computação no Azure Machine Learning?.For more information, see Create and manage Azure Machine Learning workspaces in the Azure portal or What are compute targets in Azure Machine Learning?.

Um pipeline Python simplesA simple Python Pipeline

Este trecho de código mostra os objetos e as chamadas necessárias para criar e executar um Pipeline :This snippet shows the objects and calls needed to create and run a Pipeline:

ws = Workspace.from_config() 
blob_store = Datastore(ws, "workspaceblobstore")
compute_target = ws.compute_targets["STANDARD_NC6"]
experiment = Experiment(ws, 'MyExperiment') 

input_data = Dataset.File.from_files(
    DataPath(datastore, '20newsgroups/20news.pkl'))
prepped_data_path = OutputFileDatasetConfig(name="output_path")

dataprep_step = PythonScriptStep(
    name="prep_data",
    script_name="dataprep.py",
    source_directory="prep_src",
    compute_target=compute_target,
    arguments=["--prepped_data_path", prepped_data_path],
    inputs=[input_dataset.as_named_input('raw_data').as_mount() ]
    )

prepped_data = prepped_data_path.read_delimited_files()

train_step = PythonScriptStep(
    name="train",
    script_name="train.py",
    compute_target=compute_target,
    arguments=["--prepped_data", prepped_data],
    source_directory="train_src"
)
steps = [ dataprep_step, train_step ]

pipeline = Pipeline(workspace=ws, steps=steps)

pipeline_run = experiment.submit(pipeline)
pipeline_run.wait_for_completion()

O trecho de código começa com objetos Azure Machine Learning comuns, a Workspace , a Datastore , um ComputeTargete um Experiment .The snippet starts with common Azure Machine Learning objects, a Workspace, a Datastore, a ComputeTarget, and an Experiment. Em seguida, o código cria os objetos a serem guardados input_data e prepped_data_path .Then, the code creates the objects to hold input_data and prepped_data_path. O input_data é uma instância de filedataset e prepped_data_path é uma instância de OutputFileDatasetConfig.The input_data is an instance of FileDataset and the prepped_data_path is an instance of OutputFileDatasetConfig. Para OutputFileDatasetConfig o comportamento padrão é copiar a saída para o workspaceblobstore repositório de armazenamento no caminho /dataset/{run-id}/{output-name} , em que run-id é a ID da execução e output-name é um valor gerado automaticamente se não for especificado pelo desenvolvedor.For OutputFileDatasetConfig the default behavior is to copy the output to the workspaceblobstore datastore under the path /dataset/{run-id}/{output-name}, where run-id is the Run's ID and output-name is an autogenerated value if not specified by the developer.

O código de preparação de dados (não mostrado), grava arquivos delimitados no prepped_data_path .The data preparation code (not shown), writes delimited files to prepped_data_path. Essas saídas da etapa de preparação de dados são passadas prepped_data para a etapa de treinamento.These outputs from the data preparation step are passed as prepped_data to the training step.

A matriz steps contém os dois PythonScriptStep s dataprep_step e train_step .The array steps holds the two PythonScriptSteps, dataprep_step and train_step. Azure Machine Learning analisará a dependência de dados de prepped_data e executar dataprep_step antes train_step .Azure Machine Learning will analyze the data dependency of prepped_data and run dataprep_step before train_step.

Em seguida, o código instancia o Pipeline objeto em si, passando o espaço de trabalho e a matriz de etapas.Then, the code instantiates the Pipeline object itself, passing in the workspace and steps array. A chamada para experiment.submit(pipeline) começa a execução do pipeline do Azure ml.The call to experiment.submit(pipeline) begins the Azure ML pipeline run. A chamada para wait_for_completion() blocos até que o pipeline seja concluído.The call to wait_for_completion() blocks until the pipeline is finished.

Para saber mais sobre como conectar seu pipeline a seus dados, confira os artigos acesso a dados em Azure Machine Learning e movendo dados para e entre as etapas de pipeline do ml (Python).To learn more about connecting your pipeline to your data, see the articles Data access in Azure Machine Learning and Moving data into and between ML pipeline steps (Python).

Criando pipelines com o designerBuilding pipelines with the designer

Os desenvolvedores que preferem uma superfície de Design Visual podem usar o designer de Azure Machine Learning para criar pipelines.Developers who prefer a visual design surface can use the Azure Machine Learning designer to create pipelines. Você pode acessar essa ferramenta por meio da seleção de Designer na home page do seu espaço de trabalho.You can access this tool from the Designer selection on the homepage of your workspace. O designer permite que você arraste e solte as etapas na superfície de design.The designer allows you to drag and drop steps onto the design surface.

Quando você cria pipelines visualmente, as entradas e saídas de uma etapa são exibidas visivelmente.When you visually design pipelines, the inputs and outputs of a step are displayed visibly. Você pode arrastar e soltar conexões de dados, permitindo que você entenda rapidamente e modifique o fluxo de armazenamento de seu pipeline.You can drag and drop data connections, allowing you to quickly understand and modify the dataflow of your pipeline.

Exemplo do Azure Machine Learning Designer

Principais vantagensKey advantages

As principais vantagens de usar pipelines para seus fluxos de trabalho de aprendizado de máquina são:The key advantages of using pipelines for your machine learning workflows are:

Principal vantagemKey advantage DescriçãoDescription
Execuções autônomasUnattended runs Agende as etapas para execução em paralelo ou em sequência de maneira confiável e autônoma.Schedule steps to run in parallel or in sequence in a reliable and unattended manner. A preparação e a modelagem de dados podem durar dias ou semanas, e os pipelines permitem que você se concentre em outras tarefas enquanto o processo está em execução.Data preparation and modeling can last days or weeks, and pipelines allow you to focus on other tasks while the process is running.
Computação heterogêneaHeterogenous compute Use vários pipelines que são coordenados de forma confiável entre os recursos de computação heterogêneos e escalonáveis e os locais de armazenamento.Use multiple pipelines that are reliably coordinated across heterogeneous and scalable compute resources and storage locations. Faça uso eficiente dos recursos de computação disponíveis executando etapas de pipeline individuais em diferentes destinos de computação, como o HDInsight, VMs de ciência de dados de GPU e databricks.Make efficient use of available compute resources by running individual pipeline steps on different compute targets, such as HDInsight, GPU Data Science VMs, and Databricks.
ReutilizaçãoReusability Crie modelos de pipeline para cenários específicos, como retreinamento e pontuação de lote.Create pipeline templates for specific scenarios, such as retraining and batch-scoring. Disparar pipelines publicados de sistemas externos por meio de chamadas REST simples.Trigger published pipelines from external systems via simple REST calls.
Acompanhamento e controle de versãoTracking and versioning Em vez de acompanhar manualmente os caminhos de dados e resultados durante a iteração, use o SDK de pipelines para fornecer explicitamente o nome e a versão de fontes de dados, entradas e saídas.Instead of manually tracking data and result paths as you iterate, use the pipelines SDK to explicitly name and version your data sources, inputs, and outputs. Você também pode gerenciar os scripts e os dados separadamente para aumentar a produtividade.You can also manage scripts and data separately for increased productivity.
ModularidadeModularity Separar áreas de preocupações e isolar alterações permite que o software evolua a uma taxa mais rápida com maior qualidade.Separating areas of concerns and isolating changes allows software to evolve at a faster rate with higher quality.
ColaboraçãoCollaboration Os pipelines permitem que os cientistas de dados colaborem em todas as áreas do processo de design do Machine Learning, ao mesmo tempo em que podem trabalhar simultaneamente em etapas de pipeline.Pipelines allow data scientists to collaborate across all areas of the machine learning design process, while being able to concurrently work on pipeline steps.

Próximas etapasNext steps

Azure Machine Learning pipelines são um recurso poderoso que começa a fornecer valor nos primeiros estágios de desenvolvimento.Azure Machine Learning pipelines are a powerful facility that begins delivering value in the early development stages. O valor aumenta conforme a equipe e o projeto crescem.The value increases as the team and project grows. Este artigo explicou como pipelines são especificados com o SDK Azure Machine Learning Python e orquestrados no Azure.This article has explained how pipelines are specified with the Azure Machine Learning Python SDK and orchestrated on Azure. Você viu um código-fonte simples e foi introduzido em algumas das PipelineStep classes disponíveis.You've seen some simple source code and been introduced to a few of the PipelineStep classes that are available. Você deve ter uma noção de quando usar Azure Machine Learning pipelines e como o Azure os executa.You should have a sense of when to use Azure Machine Learning pipelines and how Azure runs them.