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

适用范围:Azure CLI ml 扩展 v2(最新版)

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

先决条件

注意

设计器支持两种类型的组件:经典预生成组件 (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 机器学习工作区中,导航到“组件”页并选择“新建组件”(将显示两个样式页之一)。

Screenshot showing register entry button in component page.

Screenshot showing register entry button in component page with can include archive.

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

注意

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

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

Screenshot showing upload from local folder.

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

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

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

Screenshot showing registered component in component page.

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

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

    Screenshot showing creating new pipeline in designer homepage.

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

    Screenshot showing rename the pipeline.

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

    Screenshot showing registered component in asset library.

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

    Screenshot showing changing version of component.

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

    Screenshot showing add data.

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

    Screenshot showing the pipeline draft.

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

    Gif showing connecting the pipeline.

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

    Screenshot showing component parameter settings.

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

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

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

    Screenshot showing how to promote component input to pipeline input.

注意

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

提交管道

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

    Screenshot showing configure and submit button.

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

Screenshot showing submission wizard.

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

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

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

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

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

Screenshot showing submission message.

后续步骤