通过 Azure 机器学习工作室使用组件创建和运行机器学习管道

适用于:Azure CLI ml 扩展 v2(当前)

本文介绍如何使用 Azure 机器学习工作室和组件来创建并运行机器学习管道。 可以在不使用组件的情况下创建管道,但组件可提供最大的灵活性和可重用性。 可以使用 YAML 定义 Azure 机器学习管道并从 CLI 运行,也可以使用 Python 创作 Azure 机器学习管道,或在 Azure 机器学习工作室设计器中通过拖放 UI 操作来编写 Azure 机器学习管道。 本文档重点介绍 Azure 机器学习工作室设计器 UI。

先决条件

注意

设计器支持两种类型的组件:经典预生成组件 (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 目录中。 需要先将存储库克隆到本地。

  1. 在 Azure 机器学习工作区中,导航到“组件”页并选择“新建组件”(将显示两个样式页之一)。

显示组件页面中的注册条目按钮的屏幕截图。

显示带有“可包含存档”的组件页面中的注册条目按钮的屏幕截图。

此示例在目录中使用 train.yml。 YAML 文件定义此组件的名称、类型、接口,包括输入和输出、代码、环境和命令。 此组件的代码 train.py 位于文件夹 ./train_src 下,用于描述此组件的执行逻辑。 若要详细了解组件架构,请参阅命令组件 YAML 架构参考

注意

在 UI 中注册组件时,组件 YAML 文件中定义的 code 只能指向 YAML 文件所在的当前文件夹或子文件夹,这意味着无法为 code 指定 ../,因为 UI 无法识别父目录。 additional_includes 只能指向当前文件夹或子文件夹。 目前,UI 仅支持使用 command 类型注册组件。

  1. 选择从“文件夹”上传,然后选择要上传的 1b_e2e_registered_components 文件夹。 从下拉列表中选择“train.yml”。

显示从本地文件夹上传的屏幕截图。

  1. 选择底部的“下一步”,可以确认此组件的详细信息。 确认后,选择“创建”完成注册流程。

  2. 重复之前的步骤,使用 score.yml 以及 eval.yml 注册“分数”和“Eval”组件。

  3. 成功注册这三个组件后,就可以在工作室 UI 中看到你的组件。

显示组件页中已注册组件的屏幕截图。

使用已注册的组件创建管道

  1. 在设计器中创建新管道。 请记住选择自定义选项。

    显示在设计器主页中创建新管道的屏幕截图。

  2. 选择自动生成的名称旁边的铅笔图标,为管道指定一个有意义的名称。

    显示“重命名管道”的屏幕截图。

  3. 在设计器资产库中,可以看到数据模型组件选项卡。 切换到组件选项卡,可以看到在上一部分注册的组件。 如果组件太多,可以使用组件名称进行搜索。

    显示资产库中已注册组件的屏幕截图。

    查找在上一部分注册的训练评分评估组件,然后将其拖放到画布面板。 默认情况下,它使用组件的默认版本,可以在组件的右窗格中更改为特定版本。 通过双击组件调用组件右窗格。

    显示更改组件版本的屏幕截图。

    在此示例中,我们将使用此路径下的示例数据。 选择设计器资产库中的“添加”图标 -> 数据选项卡,将数据注册到工作区中,设置 Type = Folder(uri_folder),然后按照向导注册数据。 需要 uri_folder 数据类型,以便与训练组件定义保持一致。

    显示“添加数据”的屏幕截图。

    然后将数据拖放到画布面板。 管道外观现在应如以下屏幕截图所示。

    显示管道草稿的屏幕截图。

  4. 通过在画布面板中拖动连接来连接数据和组件。

    显示连接管道的 Gif。

  5. 双击一个组件,你将看到一个右窗格,你可以在其中配置该组件。

    显示组件参数设置的屏幕截图。

    对于具有基元类型输入(如数字、整数、字符串和布尔值)的组件,可以在输入部分下的组件详细信息窗格中更改此类输入的值。

    还可以在右窗格中更改输出设置(存储组件输出的位置),和运行设置(用于运行此组件的计算目标)。

    现在,让我们将训练组件的 max_epocs 输入提升为管道级输入。 这样做,可以在每次提交管道之前为此输入分配不同的值。

    屏幕截图显示如何将组件输入提升为管道输入。

注意

自定义组件和设计器经典预生成组件不能一起使用。

提交管道

  1. 选择右上角的“配置和提交”以提交管道。

    显示“配置和提交”按钮的屏幕截图。

  2. 然后,将看到一个分步向导,按照向导提交管道作业。

显示提交向导的屏幕截图。

在“基本信息”步骤中,可以配置试验、作业显示名称、作业说明等。

在“输入和输出”步骤中,可以配置提升到管道级别的输入/输出。 在上一步中,我们已将训练组件的 max_epocs 提升为管道输入,因此在此处应该能看到 max_epocs 并为其赋值。

运行时设置中,可以配置管道的默认数据存储和默认计算。 它是管道中所有组件的默认数据存储/计算。 但请注意,如果显式为组件设置不同的计算或数据存储,系统将遵循组件级别设置。 否则,它使用管道默认值。

审阅 + 提交步骤是在提交之前审阅所有配置的最后一步。 如果曾经提交过管道,向导会记住你上次的配置。

提交管道作业后,顶部会显示一条消息,其中包含指向作业详细信息的链接。 你可以选择此链接来查看作业详细信息。

显示提交消息的屏幕截图。

在管道作业中指定标识

提交管道作业时,可以指定要访问 Run settings 下数据的标识。 默认标识为 AMLToken,不使用任何标识,同时我们也支持 UserIdentityManaged。 对于 UserIdentity,将会使用作业提交者的标识来访问输入数据并将结果写入输出文件夹。 如果指定 Managed,系统将使用托管标识访问输入数据并将结果写入输出文件夹。

显示如何在管道作业中设置标识的屏幕截图。

后续步骤