CLI (v2) 管道作业 YAML 架构
可以从 https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json 找到源 JSON 架构。
注意
本文档中详细介绍的 YAML 语法基于最新版本的 ML CLI v2 扩展的 JSON 架构。 此语法必定仅适用于最新版本的 ML CLI v2 扩展。 可以在 https://azuremlschemasprod.azureedge.net/ 上查找早期扩展版本的架构。
YAML 语法
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
$schema |
字符串 | YAML 架构。 如果使用 Azure 机器学习 VS Code 扩展创作 YAML 文件,可以通过在文件顶部包含 $schema 来调用架构和资源完成操作。 |
||
type |
const | 必需。 作业类型。 | pipeline |
|
name |
字符串 | 作业的名称。 对工作区中的所有作业必须唯一。 如果省略,Azure 机器学习将自动生成该名称的 GUID。 | ||
display_name |
字符串 | 作业在工作室 UI 中的显示名称。 在工作区中可以不唯一。 如果省略此项,Azure 机器学习将为显示名称自动生成人类可读的形容词-名词标识符。 | ||
experiment_name |
string | 在试验名称下组织作业。 工作室的“试验”选项卡中相应的试验下整理了每项作业的运行记录。 如果省略,Azure 机器学习会将 experiment_name 默认为创建作业的工作目录的名称。 |
||
tags |
object | 作业的标记字典。 | ||
settings |
object | 管道作业的默认设置。 访问可配置属性集的 settings 键的特性。 |
||
jobs |
object | 必需。 在管道中作为步骤运行的一组单个作业的字典。 这些作业被视为父管道作业的子作业。 键是步骤在管道作业的上下文中的名称。 此名称不同于子作业的唯一作业名称。 该值是作业规范,可以遵循命令作业架构或扫描作业架构。 目前,只能在管道中运行命令作业和扫描作业。 以后的版本将支持其他作业类型。 |
||
inputs |
object | 管道作业的输入字典。 该键是作业上下文中的输入的名称。 该值是输入值。 管道中单个步骤作业的输入可以用 ${{ parent.inputs.<input_name> }} 表达式引用这些管道输入。 有关将管道步骤的输入绑定到顶级管道作业的输入的详细信息,请访问用于在管道作业的步骤之间绑定输入和输出的表达式语法。 |
||
inputs.<input_name> |
数字、整数、布尔值、字符串或对象 | 文字值(数字、整数、布尔值或字符串类型)或包含作业输入数据规范的对象之一。 | ||
outputs |
object | 管道作业的输出配置字典。 该键是作业上下文中的输出的名称。 该值是输出配置。 管道中单个步骤作业的输出可以用 ${{ parents.outputs.<output_name> }} 表达式引用这些管道输出。 有关将管道步骤的输出绑定到顶级管道作业的输出的详细信息,请访问用于在管道作业的步骤之间绑定输入和输出的表达式语法。 |
||
outputs.<output_name> |
object | 可以将对象留空。 在这种情况下,输出的类型默认为 uri_folder ,Azure 机器学习将基于此模板化路径系统生成输出的输出位置:{settings.datastore}/azureml/{job-name}/{output-name}/ 。 到输出目录的文件将通过读-写装载写入。 要指定不同的输出模式,请提供包含作业输出规范的对象。 |
||
identity |
object | 此标识用于数据访问。 该标识可以是 UserIdentityConfiguration、ManagedIdentityConfiguration 或 None。 如果是 UserIdentityConfiguration,则作业提交者的标识将用于访问输入数据并将结果写入输出文件夹,否则将使用计算目标的托管标识。 |
settings
键的属性
键 | 类型 | 说明 | 默认值 |
---|---|---|---|
default_datastore |
字符串 | 要用作管道作业的默认数据存储的数据存储的名称。 此值必须是使用 azureml:<datastore-name> 语法对工作区中的现有数据存储的引用。 父管道作业或子步骤作业的 outputs 属性中定义的任何输出都存储在此数据存储中。 如果省略,则输出将存储在工作区 blob 数据存储中。 |
|
default_compute |
string | 要用作管道中所有步骤的默认计算的计算目标的名称。 在步骤级别定义的计算将替代该特定步骤的此默认计算。 default_compute 值必须是使用 azureml:<compute-name> 语法对工作区中的现有计算的引用。 |
|
continue_on_step_failure |
boolean | 此设置决定了当管道中的某个步骤失败时会发生什么情况。 默认情况下,即使一个步骤失败,管道也会继续运行。 这意味着任何不依赖于失败步骤的步骤仍将执行。 但是,如果将此设置更改为“False”,则当某个步骤失败时,整个管道都将停止运行,当前正在运行的任何步骤都将被取消。 | True |
force_rerun |
boolean | 是否强制重新运行整个管道。 默认值为 False 。 这意味着,默认情况下,如果管道满足重用条件,则它会尝试重用上一作业的输出。 如果设置为 True ,则管道中的所有步骤都将重新运行。 |
False |
作业输入
键 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
type |
字符串 | 作业输入的类型。 为指向单个文件源的输入数据指定 uri_file ,或为指向文件夹源的输入数据指定 uri_folder 。 有关详细信息,请访问详细了解数据访问。 |
uri_file 、uri_folder 、mltable 、mlflow_model |
uri_folder |
path |
字符串 | 用作输入的数据的路径。 可通过几种方式来执行它: - 数据源文件或文件夹的本地路径,例如 path: ./iris.csv 。 数据会在作业提交期间上传。 - 要用作输入的文件或文件夹的云路径的 URI。 支持的 URI 类型为 azureml 、https 、wasbs 、abfss 、adl 。 有关如何使用 azureml:// URI 格式的详细信息,请访问核心 yaml 语法。 - 要用作输入的现有已注册的 Azure 机器学习数据资产。 要引用已注册的数据资产,请使用 azureml:<data_name>:<data_version> 语法或 azureml:<data_name>@latest (引用该数据资产的最新版本),例如 path: azureml:cifar10-data:1 或 path: azureml:cifar10-data@latest 。 |
||
mode |
string | 将数据传送到计算目标的模式。 对于只读装载 ( ro_mount ),数据将用作装载路径。 文件夹是文件夹装载的,而文件则作为文件装载。 Azure 机器学习会将输入解析为装载路径。 对于 download 模式,数据将下载到计算目标。 Azure 机器学习会将输入解析为下载的路径。 对于数据项目或项目存储位置的 URL,请使用 direct 模式,而不是装载或下载数据本身。 这会将存储位置的 URL 作为作业输入传入。 在这种情况下,你全权负责处理凭证以访问存储。 |
ro_mount 、download 、direct |
ro_mount |
作业输出
键 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
type |
string | 作业输出类型。 对于默认的 uri_folder 类型,输出对应于某个文件夹。 |
uri_file 、uri_folder 、mltable 、mlflow_model |
uri_folder |
mode |
string | 将输出文件或文件发送到目标存储的模式。 对于读-写装载模式 (rw_mount ),输出目录是装载的目录。 对于上传模式,写入的文件会在作业结束时上传。 |
rw_mount 、upload |
rw_mount |
标识配置
UserIdentityConfiguration
密钥 | 类型 | 说明 | 允许的值 |
---|---|---|---|
type |
const | 必需。 标识类型。 | user_identity |
ManagedIdentityConfiguration
密钥 | 类型 | 说明 | 允许的值 |
---|---|---|---|
type |
const | 必需。 标识类型。 | managed 或 managed_identity |
注解
可以使用 az ml job
命令管理 Azure 机器学习作业。
示例
有关示例,请访问 示例 GitHub 存储库。 下面显示了几个示例:
YAML:hello 管道
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline
jobs:
hello_job:
command: echo "hello"
environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
compute: azureml:cpu-cluster
world_job:
command: echo "world"
environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
compute: azureml:cpu-cluster
YAML:输入/输出依赖项
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_io
jobs:
hello_job:
command: echo "hello" && echo "world" > ${{outputs.world_output}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
compute: azureml:cpu-cluster
outputs:
world_output:
world_job:
command: cat ${{inputs.world_input}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
compute: azureml:cpu-cluster
inputs:
world_input: ${{parent.jobs.hello_job.outputs.world_output}}
YAML:常见管道作业设置
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_settings
settings:
default_datastore: azureml:workspaceblobstore
default_compute: azureml:cpu-cluster
jobs:
hello_job:
command: echo 202204190 & echo "hello"
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
world_job:
command: echo 202204190 & echo "hello"
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
YAML:顶级输入和替代常见管道作业设置
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_abc
settings:
default_compute: azureml:cpu-cluster
inputs:
hello_string_top_level_input: "hello world"
jobs:
a:
command: echo hello ${{inputs.hello_string}}
environment: azureml:azureml-sklearn-1.0:23
inputs:
hello_string: ${{parent.inputs.hello_string_top_level_input}}
b:
command: echo "world" >> ${{outputs.world_output}}/world.txt
environment: azureml:azureml-sklearn-1.0:23
outputs:
world_output:
c:
command: echo ${{inputs.world_input}}/world.txt
environment: azureml:azureml-sklearn-1.0:23
inputs:
world_input: ${{parent.jobs.b.outputs.world_output}}