你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

CLI (v2) 管道作业 YAML 架构

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

可以从 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_folderAzure 机器学习将基于此模板化路径为输出生成输出位置: {settings.datastore}/azureml/{job-name}/{output-name}/ 到输出目录的文件将通过读写装载写入。 若要指定不同的输出模式,请提供包含 作业输出规范的对象。
identity object 访问数据使用标识。 可以是 用户标识配置托管标识配置 或 None。 对于 UserIdentityConfiguration,作业提交者的标识用于访问输入数据并将结果写入输出文件夹。 否则,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_foldermltable、、mlflow_model uri_folder
path 字符串 用作输入的数据的路径。 可通过几种方式来执行它:

- 数据源文件或文件夹的本地路径,例如 path: ./iris.csv。 数据在作业提交期间上传。

- 要用作输入的文件或文件夹的云路径的 URI。 支持的 URI 类型为 azuremlhttpswasbsabfssadl。 有关 URI 格式用法 azureml:// 的详细信息,请访问 Core yaml 语法

- 要用作输入的现有已注册的 Azure 机器学习数据资产。 若要引用已注册的数据资产,请使用 azureml:<data_name>:<data_version> 语法或 azureml:<data_name>@latest (引用该数据资产的最新版本),例如 path: azureml:cifar10-data:1path: azureml:cifar10-data@latest
mode string 将数据传送到计算目标的模式。

对于只读装载 (ro_mount),数据将用作装载路径。 文件夹作为文件夹装载,文件装载为文件。 Azure 机器学习将输入解析为装载路径。

对于 download 模式,数据将下载到计算目标。 Azure 机器学习将输入解析为下载的路径。

对于数据项目或项目的存储位置的 URL,而不是装载或下载数据本身,请使用 direct 模式。 这会作为作业输入传入存储位置的 URL。 在这种情况下,你全权负责处理凭证以访问存储。
ro_mountdownload、、 direct ro_mount

作业输出

类型 说明 允许的值 默认值
type string 作业输出类型。 对于默认的 uri_folder 类型,输出对应于某个文件夹。 uri_file、、uri_foldermltable、、mlflow_model uri_folder
mode string 将输出文件或文件传送到目标存储的模式。 对于读写装载模式(rw_mount),输出目录将是装载的目录。 对于上传模式,写入的文件在作业结束时上传。 rw_mount, upload rw_mount

标识配置

UserIdentityConfiguration

密钥 类型 说明 允许的值
type const 必需。 标识类型。 user_identity

ManagedIdentityConfiguration

密钥 类型 说明 允许的值
type const 必需。 标识类型。 managedmanaged_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://registries/azureml/environments/sklearn-1.0/labels/latest
    compute: azureml:cpu-cluster
  world_job:
    command: echo "world"
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/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://registries/azureml/environments/sklearn-1.0/labels/latest
    inputs:
      hello_string: ${{parent.inputs.hello_string_top_level_input}}
  b:
    command: echo "world" >> ${{outputs.world_output}}/world.txt
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    outputs:
      world_output:
  c:
    command: echo ${{inputs.world_input}}/world.txt
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    inputs:
      world_input: ${{parent.jobs.b.outputs.world_output}}

后续步骤