$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command
name: component_a
display_name: componentA
version: 1
inputs:
component_a_input:
type: uri_folder
outputs:
component_a_output:
type: uri_folder
code: ./componentA_src
environment:
image: python
command: >-
python hello.py --componentA_input ${{inputs.component_a_input}} --componentA_output ${{outputs.component_a_output}}
下表介绍了组件 YAML 最常用的架构。 请参阅此处了解完整组件 YAML 架构。
description
对于 3b_pipeline_with_data/componentA.yml 中的示例,componentA 有一个数据输入和一个数据输出,可以连接到父管道中的其他步骤。 提交管道作业时,组件 YAML 中 code
部分下的所有文件都将上传到 Azure 机器学习。 在此示例中,将上传 ./componentA_src
下的文件(componentA.yml 中的第 16 行)。 可在工作室 UI 中查看上传的源代码:双击 ComponentA 步骤并导航到“快照”选项卡,如以下屏幕截图所示。 可看到它是一个仅执行一些简单打印的 hello-world 脚本,并可将当前日期/时间写入 componentA_output
路径。 组件通过命令行参数获取输入和输出,并在 hello.py 中使用 argparse
进行处理。
输入和输出定义组件的接口。 输入和输出可以是文本值(string
、number
、integer
或 boolean
类型)或包含输入架构的对象。
对象输入(uri_file
、uri_folder
、mltable
、mlflow_model
、custom_model
类型)可以连接到父管道作业中的其他步骤,从而将数据/模型传递给其他步骤。 在管道图形中,对象类型输入将呈现为连接点。
文本值输入(string
、number
、integer
、boolean
)是可以在运行时传递给组件的参数。 可在 default
字段下添加文本输入的默认值。 对于 number
和 integer
类型,还可使用 min
和 max
字段添加接受值的最小值和最大值。 如果输入值超过最小值和最大值,管道在验证时将失败。 提交管道作业之前进行验证以节省时间。 验证适用于 CLI、Python SDK 和设计器 UI。 以下屏幕截图显示了设计器 UI 中的验证示例。 同样,可在 enum
字段中定义允许的值。
如果要向组件添加输入,务必编辑三个位置:1) 组件 YAML 中的 inputs
字段 2) 组件 YAML 中的 command
字段。 3) 处理命令行输入的组件源代码。 在上面的屏幕截图中用绿色框进行了标记。
环境定义要执行组件的环境。 可以是 Azure 机器学习环境(特选或客户注册的)、Docker 映像或 conda 环境。 请参阅以下示例。
已注册 Azure 机器学习的环境资产。 它在组件中引用,遵循 azureml:<environment-name>:<environment-version>
语法。
公共 docker 映像
conda 文件 Conda 文件需要与基础映像一起使用。
注册组件以重用和共享
虽然某些组件特定于特定管道,但组件的实际优势来自重用和共享。 在机器学习工作区中注册组件,使其可供重用。 已注册的组件支持自动版本控制,因此你可以更新组件,但要确保需使用较旧版本的管道能够继续工作。
在 azureml-examples 存储库中,导航到 cli/jobs/pipelines-with-components/basics/1b_e2e_registered_components
目录。
若要注册组件,请使用 az ml component create
命令:
az ml component create --file train.yml
az ml component create --file score.yml
az ml component create --file eval.yml
运行完这些命令后,可在工作室的“资产”->“组件”下查看组件:
选择组件。 你将看到每个版本的组件的详细信息。
在“详细信息”选项卡下,可看到组件的基本信息,例如名称、创建者、版本等。还可看到“标记”和“说明”的可编辑字段。 标记可用于添加快速搜索的关键字。 说明字段支持 Markdown 格式设置,应将其用于描述组件的功能和基本用途。
在“作业”选项卡下,你将看到使用此组件的所有作业的历史记录。
在管道作业 YAML 文件中使用已注册的组件
现在使用 1b_e2e_registered_components
演示如何在管道 YAML 中使用已注册的组件。 导航到 1b_e2e_registered_components
目录,打开 pipeline.yml
文件。 inputs
和 outputs
字段中的键和值类似于之前讨论过的键和值。 唯一的显著区别是 jobs.<JOB_NAME>.component
项中 component
字段的值。 component
值的格式为 azureml:<COMPONENT_NAME>:<COMPONENT_VERSION>
。 例如,train-job
定义指定应使用已注册组件 my_train
的最新版本:
type: command
component: azureml:my_train@latest
inputs:
training_data:
type: uri_folder
path: ./data
max_epocs: ${{parent.inputs.pipeline_job_training_max_epocs}}
learning_rate: ${{parent.inputs.pipeline_job_training_learning_rate}}
learning_rate_schedule: ${{parent.inputs.pipeline_job_learning_rate_schedule}}
outputs:
model_output: ${{parent.outputs.pipeline_job_trained_model}}
services:
my_vscode:
可以使用 CLI (v2) 检查组件详细信息和管理组件。 使用 az ml component -h
获取有关组件命令的详细说明。 下表列出了所有可用的命令。 请参阅 Azure CLI 参考了解更多示例
description