Что такое Машинное обучение Azure конвейеров?What are Azure Machine Learning pipelines?

В этой статье вы узнаете, как конвейер машинного обучения помогает создавать, оптимизировать и администрировать рабочий процесс машинного обучения.In this article, you learn how a machine learning pipeline helps you build, optimize, and manage your machine learning workflow.

Какую технологию конвейера Azure следует использовать?Which Azure pipeline technology should I use?

Облако Azure предоставляет несколько типов конвейера, каждый из которых имеет другую цель.The Azure cloud provides several types of pipeline, each with a different purpose. В следующей таблице перечислены различные конвейеры и их использование.The following table lists the different pipelines and what they are used for:

СценарийScenario Первичный персонажPrimary persona Предложение AzureAzure offering Предложение OSSOSS offering Канонический каналCanonical pipe ПреимуществаStrengths
Оркестрации модели (машинное обучение)Model orchestration (Machine learning) Специалист по обработке и анализу данныхData scientist Конвейеры Машинного обучение AzureAzure Machine Learning Pipelines Конвейеры KubeflowKubeflow Pipelines Модель > данныхData -> Model Распространение, кэширование, сначала код, повторное использованиеDistribution, caching, code-first, reuse
Оркестрации данных (подготовка данных)Data orchestration (Data prep) Инженер данныхData engineer Конвейеры Фабрики данных AzureAzure Data Factory pipelines Apache AirflowApache Airflow Данные > данныхData -> Data Строго типизированное перемещение, действия, ориентированные на данныеStrongly typed movement, data-centric activities
Согласование кода & приложений (CI/CD)Code & app orchestration (CI/CD) Разработка и Ops приложенияApp Developer / Ops Azure PipelinesAzure Pipelines JenkinsJenkins Код + модель — > приложения или службыCode + Model -> App/Service Поддержка наиболее открытых и гибких действий, очереди утверждений, фазы с ограничениемMost open and flexible activity support, approval queues, phases with gating

Что могут выполнять конвейеры машинного обучения?What can machine learning pipelines do?

Конвейер Машинное обучение Azure — это независимый исполняемый рабочий процесс полной задачи машинного обучения.An Azure Machine Learning pipeline is an independently executable workflow of a complete machine learning task. Подзадачи инкапсулируются в последовательность шагов в конвейере.Subtasks are encapsulated as a series of steps within the pipeline. Конвейер Машинное обучение Azure может быть таким же простым, как и тот, который вызывает сценарий Python, поэтому может выполнять практически любые действия.An Azure Machine Learning pipeline can be as simple as one that calls a Python script, so may do just about anything. Конвейеры должны сосредоточиться на задачах машинного обучения, таких как:Pipelines should focus on machine learning tasks such as:

  • подготовка данных, включая импорт, проверку, очистку, изменение, преобразование, нормализацию и промежуточное хранение;Data preparation including importing, validating and cleaning, munging and transformation, normalization, and staging
  • настройка обучения, включая параметризацию аргументов, путей, а также конфигураций ведения журналов и отчетности;Training configuration including parameterizing arguments, filepaths, and logging / reporting configurations
  • Обучение и проверка эффективно и многократно.Training and validating efficiently and repeatedly. Эффективность может полагаться на указание конкретных поднаборов данных, различных вычислительных ресурсов оборудования, распределенной обработки и мониторинга хода выполнения.Efficiency might come from specifying specific data subsets, different hardware compute resources, distributed processing, and progress monitoring
  • развертывание, включая управление версиями, масштабирование, подготовку и управление доступом;Deployment, including versioning, scaling, provisioning, and access control

Независимые шаги позволяют нескольким специалистам по обработке данных работать в одном конвейере одновременно без чрезмерных ресурсов вычислений.Independent steps allow multiple data scientists to work on the same pipeline at the same time without over-taxing compute resources. Отдельные шаги также упрощают использование различных типов вычислений и размеров для каждого шага.Separate steps also make it easy to use different compute types/sizes for each step.

После создания конвейера часто нужно выполнить более тонкую настройку его цикла обучения.After the pipeline is designed, there is often more fine-tuning around the training loop of the pipeline. При повторном запуске конвейера выполняется переход к шагам, которые необходимо повторить, например обновленному сценарию обучения.When you rerun a pipeline, the run jumps to the steps that need to be rerun, such as an updated training script. Шаги, которые не нужно повторять, пропускаются.Steps that do not need to be rerun are skipped.

С помощью конвейеров вы можете использовать разные аппаратные средства для различных задач.With pipelines, you may choose to use different hardware for different tasks. Azure координирует различные используемые целевые объекты вычислений , поэтому промежуточные данные легко передаются в подчиненные целевые объекты вычислений.Azure coordinates the various compute targets you use, so your intermediate data seamlessly flows to downstream compute targets.

Метрики для экспериментов конвейера можно отслеживаниь непосредственно в портал Azure или на целевой странице рабочей области (Предварительная версия).You can track the metrics for your pipeline experiments directly in Azure portal or your workspace landing page (preview). После публикации конвейера можно настроить конечную точку RESTFUL, которая позволит перезапустить конвейер из любой платформы или стека.After a pipeline has been published, you can configure a REST endpoint, which allows you to rerun the pipeline from any platform or stack.

Вкратце, все сложные задачи жизненного цикла машинного обучения можно использовать с конвейерами.In short, all of the complex tasks of the machine learning lifecycle can be helped with pipelines. Другие технологии конвейера Azure обладают собственными преимуществами.Other Azure pipeline technologies have their own strengths. Конвейеры фабрики данных Azure предназначен в работе с данными и Azure pipelines — это подходящий инструмент для непрерывной интеграции и развертывания.Azure Data Factory pipelines excels at working with data and Azure Pipelines is the right tool for continuous integration and deployment. Но если ваше внимание уделяется машинному обучению, Машинное обучение Azure конвейеры, скорее всего, будут лучшим выбором для нужд рабочего процесса.But if your focus is machine learning, Azure Machine Learning pipelines are likely to be the best choice for your workflow needs.

Анализ зависимостейAnalyzing dependencies

Многие экосистемы программирования имеют средства для управления зависимостями ресурсов, библиотек или компиляции.Many programming ecosystems have tools that orchestrate resource, library, or compilation dependencies. Как правило, эти средства используют метки времени файлов для вычисления зависимостей.Generally, these tools use file timestamps to calculate dependencies. При изменении файла только он и его зависимые элементы обновляются (скачаны, перекомпилированы или упакованы).When a file is changed, only it and its dependents are updated (downloaded, recompiled, or packaged). Машинное обучение Azure конвейеры расширяют эту концепцию.Azure Machine Learning pipelines extend this concept. Как и традиционные средства сборки, конвейеры вычисляют зависимости между шагами и выполняют только необходимые повторные вычисления.Like traditional build tools, pipelines calculate dependencies between steps and only perform the necessary recalculations.

Анализ зависимостей в конвейерах Машинное обучение Azure является более сложным, чем простые метки времени.The dependency analysis in Azure Machine Learning pipelines is more sophisticated than simple timestamps though. Каждый шаг может выполняться в различных аппаратных и программных средах.Every step may run in a different hardware and software environment. Подготовка данных может быть трудоемким процессом, но не нужно работать на оборудовании с мощными графическими процессорами. для некоторых шагов может потребоваться программное обеспечение, предназначенное для конкретной операционной системы, можно использовать распределенное обучение и т. д.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 автоматически управляет всеми зависимостями между этапами конвейера.Azure Machine Learning automatically orchestrates all of the dependencies between pipeline steps. Это может привести к ускорению и понижению работы образов DOCKER, подключению и отсоединению вычислений и перемещению данных между действиями в единообразном и автоматическом режиме.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.

Координация необходимых действийCoordinating the steps involved

При создании и запуске Pipeline объекта выполняются следующие общие действия.When you create and run a Pipeline object, the following high-level steps occur:

  • Для каждого шага служба вычисляет требования для:For each step, the service calculates requirements for:
    • Аппаратные ресурсы для вычисленийHardware compute resources
    • Ресурсы ОС (образы DOCKER)OS resources (Docker image(s))
    • Ресурсы программного обеспечения (зависимости Conda и Virtualenv)Software resources (Conda / virtualenv dependencies)
    • Входные данныеData inputs
  • Служба определяет зависимости между шагами, что приводит к динамическому графу выполненияThe service determines the dependencies between steps, resulting in a dynamic execution graph
  • При выполнении каждого узла в графе выполнения:When each node in the execution graph runs:
    • Служба настраивает необходимую аппаратную и программную среду (возможно, повторное использование существующих ресурсов).The service configures the necessary hardware and software environment (perhaps reusing existing resources)
    • Этот шаг выполняется, предоставляя сведения о ведении журнала и мониторинге содержащего его Experiment объекта.The step runs, providing logging and monitoring information to its containing Experiment object
    • После завершения шага его выходные данные подготавливаются в качестве входных данных для следующего шага и (или) записи в хранилище.When the step completes, its outputs are prepared as inputs to the next step and/or written to storage
    • Ресурсы, которые больше не нужны, завершаются и отсоединяютсяResources that are no longer needed are finalized and detached

Шаги конвейера

Создание конвейеров с помощью пакета SDK для PythonBuilding pipelines with the Python SDK

В пакете SDK для машинное обучение Azure Pythonконвейер — это объект Python, определенный в azureml.pipeline.core модуле.In the Azure Machine Learning Python SDK, a pipeline is a Python object defined in the azureml.pipeline.core module. Объект конвейера содержит упорядоченную последовательность из одного или нескольких объектов пипелинестеп .A Pipeline object contains an ordered sequence of one or more PipelineStep objects. PipelineStepКласс является абстрактным, и фактические шаги будут подклассами, такими как естиматорстеп, писонскриптстепили дататрансферстеп.The PipelineStep class is abstract and the actual steps will be of subclasses such as EstimatorStep, PythonScriptStep, or DataTransferStep. Класс модулестеп содержит многократно используемую последовательность действий, которые могут совместно использоваться в конвейерах.The ModuleStep class holds a reusable sequence of steps that can be shared among pipelines. PipelineВыполняется как часть Experiment .A Pipeline runs as part of an Experiment.

Конвейер машинного обучения Azure связан с рабочей областью Машинное обучение Azure, а этап конвейера связан с целевым объектом вычислений, доступным в этой рабочей области.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. Дополнительные сведения см. в статьях создание рабочих областей машинное обучение Azure и управление ими в портал Azure или целевые объекты вычислений в машинное обучение Azure?.For more information, see Create and manage Azure Machine Learning workspaces in the Azure portal or What are compute targets in Azure Machine Learning?.

Простой конвейер PythonA simple Python Pipeline

В этом фрагменте кода показаны объекты и вызовы, необходимые для создания и выполнения 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()

Фрагмент кода начинается с общих Машинное обучение Azure объектов,, a, Workspace Datastore ComputeTargetи Experiment .The snippet starts with common Azure Machine Learning objects, a Workspace, a Datastore, a ComputeTarget, and an Experiment. Затем код создает объекты для хранения input_data и prepped_data_path .Then, the code creates the objects to hold input_data and prepped_data_path. input_dataЯвляется экземпляром филедатасет , а prepped_data_path — экземпляром аутпутфиледатасетконфиг.The input_data is an instance of FileDataset and the prepped_data_path is an instance of OutputFileDatasetConfig. Для OutputFileDatasetConfig поведения по умолчанию необходимо скопировать выходные данные в хранилище данных по workspaceblobstore пути /dataset/{run-id}/{output-name} , где run-id — идентификатор выполнения, а output-name — автоматически сформированное значение, если оно не указано разработчиком.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.

Код подготовки данных (не показан) записывает файлы с разделителями в prepped_data_path .The data preparation code (not shown), writes delimited files to prepped_data_path. Эти выходные данные этапа подготовки данных передаются в качестве prepped_data этапа обучения.These outputs from the data preparation step are passed as prepped_data to the training step.

Массив steps содержит два массива PythonScriptStep : dataprep_step и train_step .The array steps holds the two PythonScriptSteps, dataprep_step and train_step. Машинное обучение Azure проанализирует зависимость данных и будет prepped_data выполняться dataprep_step раньше train_step .Azure Machine Learning will analyze the data dependency of prepped_data and run dataprep_step before train_step.

Затем код создает экземпляр Pipeline самого объекта, передавая в него рабочую область и массив шагов.Then, the code instantiates the Pipeline object itself, passing in the workspace and steps array. Вызов начинается с experiment.submit(pipeline) запуска конвейера машинного обучения Azure.The call to experiment.submit(pipeline) begins the Azure ML pipeline run. Вызов wait_for_completion() блокируется до завершения конвейера.The call to wait_for_completion() blocks until the pipeline is finished.

Дополнительные сведения о подключении конвейера к данным см. в статьях доступ к данным в машинное обучение Azure и Перемещение данных между этапами конвейера 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).

Создание конвейеров с помощью конструктораBuilding pipelines with the designer

Разработчики, предпочитающие визуальную область конструктора, могут использовать конструктор Машинное обучение Azure для создания конвейеров.Developers who prefer a visual design surface can use the Azure Machine Learning designer to create pipelines. Доступ к этому средству можно получить с помощью выбора конструктора на домашней странице рабочей области.You can access this tool from the Designer selection on the homepage of your workspace. Конструктор позволяет перетаскивать шаги в область конструктора.The designer allows you to drag and drop steps onto the design surface.

При визуальном проектировании конвейеров входные и выходные данные шага отображаются как видимые.When you visually design pipelines, the inputs and outputs of a step are displayed visibly. Можно перетаскивать подключения к данным, что позволяет быстро понять и изменить поток данных конвейера.You can drag and drop data connections, allowing you to quickly understand and modify the dataflow of your pipeline.

Пример конструктора Машинного обучения Azure

Ключевые преимуществаKey advantages

Основные преимущества использования конвейеров для рабочих процессов машинного обучения:The key advantages of using pipelines for your machine learning workflows are:

Ключевое преимуществоKey advantage ОписаниеDescription
Автоматические выполненияUnattended runs Планирование выполнения шагов параллельно или в последовательности в надежном и автоматическом режиме.Schedule steps to run in parallel or in sequence in a reliable and unattended manner. Подготовка и моделирование данных могут быть за последние дни или недели, а Конвейеры позволяют сосредоточиться на других задачах во время выполнения процесса.Data preparation and modeling can last days or weeks, and pipelines allow you to focus on other tasks while the process is running.
Разнородных вычисленийHeterogenous compute Используйте несколько конвейеров, которые надежно скоординированы между разнородными и масштабируемыми вычислительными ресурсами и местами хранения.Use multiple pipelines that are reliably coordinated across heterogeneous and scalable compute resources and storage locations. Эффективно используйте доступные вычислительные ресурсы, выполняя отдельные этапы конвейера для различных целевых объектов вычислений, таких как HDInsight, виртуальные машины обработки и анализа данных GPU, а также кирпичы.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.
Возможность многократного использованияReusability Создание шаблонов конвейера для конкретных сценариев, таких как переобучение и пакетная оценка.Create pipeline templates for specific scenarios, such as retraining and batch-scoring. Активация опубликованных конвейеров из внешних систем с помощью простых вызовов RESTFUL.Trigger published pipelines from external systems via simple REST calls.
Отслеживание и управление версиямиTracking and versioning Вместо отслеживания данных и папок результатов вручную при выполнении итераций используйте пакет SDK для конвейеров, чтобы присваивать имена и определять версии источников данных, входных и выходных данных.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. Вы можете также отдельно управлять сценариями и данными для повышения эффективности.You can also manage scripts and data separately for increased productivity.
МодульностьModularity Отделение областей проблем и изоляция изменений позволяет программному обеспечению развиваться быстрее с более высоким качеством.Separating areas of concerns and isolating changes allows software to evolve at a faster rate with higher quality.
Совместная работаCollaboration Конвейеры позволяют специалистам по обработке и анализу данных совместно работать во всех областях процесса разработки машинного обучения, в то же время одновременно работая с этапами конвейера.Pipelines allow data scientists to collaborate across all areas of the machine learning design process, while being able to concurrently work on pipeline steps.

Дальнейшие действияNext steps

Машинное обучение Azure конвейеры — это мощное средство, которое начинает доставку ценности на стадии раннего развертывания.Azure Machine Learning pipelines are a powerful facility that begins delivering value in the early development stages. Значение увеличивается по мере роста группы и проекта.The value increases as the team and project grows. В этой статье объясняется, как указать конвейеры с помощью пакета SDK для Машинное обучение Azure Python и в Azure.This article has explained how pipelines are specified with the Azure Machine Learning Python SDK and orchestrated on Azure. Вы увидели простой исходный код и предоставили несколько PipelineStep доступных классов.You've seen some simple source code and been introduced to a few of the PipelineStep classes that are available. Вы должны иметь представление о том, когда использовать конвейеры Машинное обучение Azure и как они работают в Azure.You should have a sense of when to use Azure Machine Learning pipelines and how Azure runs them.