什么是 Azure 机器学习组件?

适用范围:Azure CLI ml 扩展 v2(当前版本)Python SDK azure-ai-ml v2(当前版本)

Azure 机器学习组件是一段独立的代码,执行机器学习管道中的一个步骤。 组件类似于函数,有名称、输入、输出和主体。 组件是 Azure 机器学习管道的构建基块。

组件包含三个部分:

  • 元数据:名称、显示名称、版本、类型等。
  • 接口:输入/输出规范(名称、类型、说明、默认值等)。
  • 命令、代码和环境:运行组件所需的命令、代码和环境。

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.

为何应该使用组件?

生成机器学习管道以将完整的机器学习任务拆分为多步骤工作流是一种很好的工程设计做法。 这样,每个人都可以独立处理特定步骤。 在 Azure 机器学习中,组件表示管道中的一个可重用步骤。 组件旨在帮助提高生成管道的效率。 具体而言,组件提供:

  • 定义明确的接口:组件需要定义明确的接口(输入和输出)。 接口使用户能够轻松生成步骤和连接步骤。 接口还隐藏了步骤的复杂逻辑,并消除了理解步骤实现方式的负担。

  • 共享和重用:作为管道的构建基块,可以在管道、工作区和订阅之间轻松共享和重用组件。 一个团队生成的组件可以被另一个团队发现和使用。

  • 版本控制:组件实施版本控制。 组件生成者可以不断改进组件并发布新版本。 使用者可以在其管道中使用特定组件版本。 这使它们具有兼容性和可重现性。

可单元测试:组件是一段独立的代码。 可以轻松为组件编写单元测试。

组件和管道

机器学习管道是完整机器学习任务的工作流。 组件是机器学习管道的构建基块。 提到组件时,其背景必须是管道。

要生成组件,首先要定义机器学习管道。 这需要将整个机器学习任务分解为多步骤工作流。 每个步骤都是一个组件。 例如,假设有一个使用历史数据训练销售预测模型的简单机器学习任务,你可能需要生成顺序工作流,其中包含数据处理、模型训练和模型评估步骤。 对于复杂任务,可能需要进一步细分。 例如,将一个数据处理步骤拆分为数据引入、数据清理、数据预处理和特征工程步骤。

定义工作流中的步骤后,下一步是指定管道中每个步骤的连接方式。 例如,若要连接数据处理步骤和模型训练步骤,可能需要定义数据处理组件以输出包含已处理数据的文件夹。 训练组件将文件夹作为输入并输出包含已训练模型的文件夹。 这些输入和输出定义将成为组件接口定义的一部分。

现在,是时候开发执行步骤的代码了。 可以使用自己喜欢的语言(python、R 等)。 代码必须能够由 shell 命令执行。 在开发过程中,你可能希望添加一些输入来控制此步骤的执行方式。 例如,对于训练步骤,你可能希望添加学习率、时期数作为输入来控制训练。 这些额外的输入加上与其他步骤连接所需的输入和输出是组件的接口。 shell 命令的参数用于向代码传递输入和输出。 需要指定执行命令的环境和代码。 环境可以是特选的 Azure 机器学习环境、docker 映像或 conda 环境。

最后,可以将所有内容(包括代码、命令、环境、输入、输出、元数据)打包到组件中。 然后将这些组件连接在一起,为机器学习工作流生成管道。 一个组件可以在多个管道中使用。

若要详细了解如何生成组件,请参阅:

后续步骤