本文介绍如何使用 Azure 机器学习工作室和组件来创建并运行机器学习管道。 可以在不使用组件的情况下创建管道,但组件可提供最大的灵活性和可重用性。 可以使用 YAML 定义 Azure 机器学习管道并从 CLI 运行,也可以使用 Python 创作 Azure 机器学习管道,或在 Azure 机器学习工作室设计器中通过拖放 UI 操作来编写 Azure 机器学习管道。 本文档重点介绍 Azure 机器学习工作室设计器 UI。
先决条件
- 如果没有 Azure 订阅,请在开始前创建一个试用版订阅。 尝试试用版订阅。 
- 一个 Azure 机器学习工作区。请参阅创建工作区资源。 
- 克隆示例存储库: - git clone https://github.com/Azure/azureml-examples --depth 1 cd azureml-examples/cli/jobs/pipelines-with-components/
注意
设计器支持两种类型的组件:经典预生成组件 (v1) 和自定义组件 (v2)。 这两种类型的组件不兼容。
经典预生成组件主要为数据处理和传统的机器学习任务(如回归和分类)提供预生成组件。 经典预生成组件将继续受支持,但不会再添加任何新组件。 此外,经典预生成 (v1) 组件的部署不支持托管联机终结点 (v2)。
自定义组件允许以组件的形式包装自己的代码。 它支持跨工作区共享组件,并跨工作室、CLI v2 和 SDK v2 接口进行无缝创作。
对于新项目,强烈建议使用自定义组件,它与 AzureML V2 兼容,并且会不断接收新更新。
本文适用于自定义组件。
在工作区中注册组件
若要使用 UI 中的组件生成管道,需要先将组件注册到工作区。 可以使用 UI、CLI 或 SDK 将组件注册到工作区,以便在工作区内共享和重用组件。 已注册的组件支持自动版本控制,因此你可以更新组件,但要确保需使用较旧版本的管道能够继续工作。
以下示例使用 UI 注册组件,组件源文件位于azureml-examples 存储库的 cli/jobs/pipelines-with-components/basics/1b_e2e_registered_components 目录中。 需要先将存储库克隆到本地。
- 在 Azure 机器学习工作区中,导航到“组件”页并选择“新建组件”(将显示两个样式页之一)。
此示例在目录中使用 train.yml。 YAML 文件定义此组件的名称、类型、接口,包括输入和输出、代码、环境和命令。 此组件的代码 train.py 位于文件夹 ./train_src 下,用于描述此组件的执行逻辑。 若要详细了解组件架构,请参阅命令组件 YAML 架构参考。
注意
在 UI 中注册组件时,组件 YAML 文件中定义的 code 只能指向 YAML 文件所在的当前文件夹或子文件夹,这意味着无法为 code 指定 ../,因为 UI 无法识别父目录。
additional_includes 只能指向当前文件夹或子文件夹。
目前,UI 仅支持使用 command 类型注册组件。
- 选择从“文件夹”上传,然后选择要上传的 1b_e2e_registered_components文件夹。 从下拉列表中选择“train.yml”。
- 选择底部的“下一步”,可以确认此组件的详细信息。 确认后,选择“创建”完成注册流程。 
- 重复之前的步骤,使用 - score.yml以及- eval.yml注册“分数”和“Eval”组件。
- 成功注册这三个组件后,就可以在工作室 UI 中看到你的组件。 
使用已注册的组件创建管道
- 在设计器中创建新管道。 请记住选择自定义选项。 
- 选择自动生成的名称旁边的铅笔图标,为管道指定一个有意义的名称。 
- 在设计器资产库中,可以看到数据、模型和组件选项卡。 切换到组件选项卡,可以看到在上一部分注册的组件。 如果组件太多,可以使用组件名称进行搜索。 - 查找在上一部分注册的训练、评分和评估组件,然后将其拖放到画布面板。 默认情况下,它使用组件的默认版本,可以在组件的右窗格中更改为特定版本。 通过双击组件调用组件右窗格。 - 在此示例中,我们将使用此路径下的示例数据。 选择设计器资产库中的“添加”图标 -> 数据选项卡,将数据注册到工作区中,设置 Type = Folder(uri_folder),然后按照向导注册数据。 需要 uri_folder 数据类型,以便与训练组件定义保持一致。 - 然后将数据拖放到画布面板。 管道外观现在应如以下屏幕截图所示。 
- 通过在画布面板中拖动连接来连接数据和组件。 
- 双击一个组件,你将看到一个右窗格,你可以在其中配置该组件。 - 对于具有基元类型输入(如数字、整数、字符串和布尔值)的组件,可以在输入部分下的组件详细信息窗格中更改此类输入的值。 - 还可以在右窗格中更改输出设置(存储组件输出的位置),和运行设置(用于运行此组件的计算目标)。 - 现在,让我们将训练组件的 max_epocs 输入提升为管道级输入。 这样做,可以在每次提交管道之前为此输入分配不同的值。 
注意
自定义组件和设计器经典预生成组件不能一起使用。
提交管道
- 选择右上角的“配置和提交”以提交管道。   
- 然后,将看到一个分步向导,按照向导提交管道作业。 
在“基本信息”步骤中,可以配置试验、作业显示名称、作业说明等。
在“输入和输出”步骤中,可以配置提升到管道级别的输入/输出。 在上一步中,我们已将训练组件的 max_epocs 提升为管道输入,因此在此处应该能看到 max_epocs 并为其赋值。
在运行时设置中,可以配置管道的默认数据存储和默认计算。 它是管道中所有组件的默认数据存储/计算。 但请注意,如果显式为组件设置不同的计算或数据存储,系统将遵循组件级别设置。 否则,它使用管道默认值。
审阅 + 提交步骤是在提交之前审阅所有配置的最后一步。 如果曾经提交过管道,向导会记住你上次的配置。
提交管道作业后,顶部会显示一条消息,其中包含指向作业详细信息的链接。 你可以选择此链接来查看作业详细信息。
在管道作业中指定标识
提交管道作业时,可以指定要访问 Run settings 下数据的标识。 默认标识为 AMLToken,不使用任何标识,同时我们也支持 UserIdentity 和 Managed。 对于 UserIdentity,将会使用作业提交者的标识来访问输入数据并将结果写入输出文件夹。 如果指定 Managed,系统将使用托管标识访问输入数据并将结果写入输出文件夹。
后续步骤
- 使用 GitHub 上的这些 Jupyter 笔记本来进一步探索机器学习管道
- 了解如何通过组件使用 CLI v2 创建管道。
- 了解如何通过组件使用 SDK v2 创建管道
















