什么是 Azure 机器学习管道?

适用范围:Azure CLI ml 扩展 v1Python SDK azureml v1

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

Azure 机器学习管道是整个机器学习任务的可独立执行的工作流。 Azure 机器学习管道有助于标准化生成机器学习模型的最佳做法,使团队能够大规模执行,并提高模型构建效率。

为什么需要 Azure 机器学习管道?

机器学习管道的核心是将完整的机器学习任务拆分为多步骤工作流。 每个步骤都是一个可管理的组件,可以单独开发、优化、配置和自动化。 步骤通过明确定义的接口连接。 Azure 机器学习管道服务可自动协调管道步骤之间的所有依赖项。 这种模块化方法带来了两项关键优势:

标准化 MLOps 实践并支持可缩放的团队协作

机器学习操作 (MLOps) 自动执行构建机器学习模型并将模型投入生产的过程。 这是一个复杂的过程。 它通常需要不同技能团队间的协作。 一个定义明确的机器学习管道可以将这个复杂的过程抽象为一个多步骤的工作流,将每个步骤映射到一个特定的任务,这样每个团队都可以独立工作。

例如,一个典型的机器学习项目包括数据收集、数据准备、模型训练、模型评估和模型部署的步骤。 通常,数据工程师专注于数据步骤,数据科学家将大部分时间花在模型训练和评估上,而机器学习工程师则专注于模型部署和整个工作流的自动化。 通过利用机器学习管道,每个团队只需构建自己的步骤。 构建步骤的最佳方式是使用 Azure 机器学习组件,它是一段独立的代码,执行机器学习管道中的一个步骤。 所有这些由不同用户构建的步骤最终通过管道定义集成到一个工作流中。 管道是项目中每个人的协作工具。 定义管道的过程及其所有步骤可以按照每个公司的首选 DevOps 实践进行标准化。 管道可以进一步进行版本控制和自动化。 如果将 ML 项目描述为管道,则代表已应用了最佳 MLOps 实践。

训练效率和成本缩减

除了作为将 MLOps 付诸实践的工具外,机器学习管道还提高了大型模型训练的效率并降低了成本。 以现代自然语言模型训练为例。 它需要预处理大量数据和 GPU 密集型转换器模型训练。 每次训练一个模型需要几小时到几天的时间。 在构建模型时,数据科学家希望测试不同的训练代码或超参数,并多次运行训练,以获得最佳的模型性能。 对于大多数这些训练来说,每个训练之间通常都有小的变化。 如果每次都进行从数据处理到模型训练的全程训练,将是一个巨大的浪费。 通过使用机器学习管道,可以自动计算哪些步骤结果不变,并重复使用先前训练的输出。 此外,机器学习管道还支持在不同的计算资源上运行每个步骤。 因此,内存密集型数据处理工作可在高内存 CPU 计算机上运行,计算密集型训练可在资源占用量大的 GPU 计算机上运行。 通过恰当选择在哪种类型的计算机上运行哪个步骤,可以显着降低训练成本。

入门最佳做法

根据机器学习项目已有的内容,构建机器学习管道的起点可能会有所不同。 构建管道有几种典型的方法。

第一种方法通常适用于以前没有使用过管道并希望利用 MLOps 等管道的团队。 在这种情况下,数据科学家通常会使用自己喜欢的工具在本地环境中开发一些机器学习模型。 机器学习工程师需要将数据科学家的成果投入生产。 这项工作包括清理原始笔记本或 python 代码中一些不必要的代码,将本地数据中的训练输入更改为参数化值,根据需要将训练代码拆分为多个步骤,对每个步骤执行单元测试,最后将所有步骤包装到一个管道中。

一旦团队熟悉了管道,并想要使用管道完成更多的机器学习项目,他们会发现第一种方法很难扩展。 第二种方法是设置几个管道模板,每个模板都尝试解决一个特定的机器学习问题。 该模板预定义了管道结构,包括有多少个步骤、每个步骤的输入和输出以及它们的连接性。 若要启动新的机器学习项目,团队首先会创建模板存储库的分支。 然后,团队主管会给成员分配各自需要完成的步骤。 数据科学家和数据工程师则完成本职工作。 当他们对结果感到满意时,将构建代码以适应预定义的步骤。 签入结构化代码后,便可以执行或自动化管道。 如果有任何更改,每个成员只需要处理自己的那段代码,而不涉及管道代码的其余部分。

一旦团队构建了机器学习管道和可重用组件的集合,他们就可以通过克隆先前的管道或将现有的可重用组件捆绑在一起来开始构建机器学习管道。 在此阶段,团队的整体工作效率将显著提高。

Azure 机器学习提供了不同的方法来构建管道。 对于熟悉 DevOps 实践的用户,建议使用 CLI。 对于熟悉 Python 的数据科学家,建议使用 Azure ML SDK v1 编写管道。 对于喜欢使用 UI 的用户,可以使用设计器通过注册组件构建管道

我应该使用哪种 Azure 管道技术?

Azure 云提供了多种类型的管道,每一种都有不同用途。 下表列出了各种不同的管道及其用途:

方案 主要角色 Azure 产品/服务 OSS 产品/服务 规范管道 优势
模型业务流程(机器学习) 数据科学家 Azure 机器学习管道 Kubeflow 管道 数据 -> 模型 分布、缓存、代码优先、重用
数据业务流程(数据准备) 数据工程师 Azure 数据工厂管道 Apache Airflow 数据 -> 数据 强类型的移动,以数据为中心的活动
代码 & 应用业务流程 (CI/CD) 应用开发人员/Ops Azure Pipelines Jenkins 代码 + 模型 -> 应用/服务 最开放和灵活的活动支持、审批队列、门控相位

后续步骤

Azure 机器学习管道是一个功能强大的工具,在早期开发阶段就开始产生价值。