CLI (v2) 作业计划 YAML 架构

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

源 JSON 架构可在 https://azuremlschemas.azureedge.net/latest/schedule.schema.json 中找到。

注意

本文档中详细介绍的 YAML 语法基于最新版本的 ML CLI v2 扩展的 JSON 架构。 此语法必定仅适用于最新版本的 ML CLI v2 扩展。 可以在 https://azuremlschemasprod.azureedge.net/ 上查找早期扩展版本的架构。

YAML 语法

密钥 类型 说明 允许的值
$schema 字符串 YAML 架构。
name 字符串 必需。 计划名称。
description string 计划的描述。
tags object 计划的标记字典。
trigger object 用于定义何时触发作业的规则的触发器配置。 必须指定 RecurrenceTriggerCronTrigger
create_job 对象或字符串 必需。 将由计划触发的作业的定义。 必须指定 stringJobDefinition

触发器配置

重复触发器

密钥 类型 说明 允许的值
type 字符串 必需。 指定计划类型。 recurrence
frequency 字符串 必需。 指定描述计划触发频率的时间单位。 minutehourdayweekmonth
interval 整型 必需。 指定计划触发的时间间隔。
start_time 字符串 使用时区描述开始日期和时间。 如果省略 start_time,第一个作业将立即运行,以后的作业根据计划触发,即 start_time 等于作业创建时间。 如果开始时间在过去,则第一个作业将在下一个计算的运行时间运行。
end_time 字符串 用时区描述结束日期和时间。 如果 end_time 被省略,计划将继续运行,直到被显式禁用为止。
timezone 字符串 指定定期时区。 如果省略,则默认为 UTC。 请参阅时区值附录
pattern object 指定定期模式。 如果省略模式,将根据 start_time、frequency 和 interval 的逻辑触发作业。

定期计划

定期计划定义定期模式,包含 hoursminutesweekdays

  • 当频率为 day 时,模式可指定 hoursminutes
  • 当频率为 weekmonth 时,模式可指定 hoursminutesweekdays
密钥 类型 允许的值
hours 整数或整数数组 0-23
minutes 整数或整数数组 0-59
week_days 字符串或字符串数组 mondaytuesdaywednesdaythursdayfridaysaturdaysunday

CronTrigger

密钥 类型 说明 允许的值
type 字符串 必需。 指定计划类型。 cron
expression 字符串 必需。 指定用于定义如何触发作业的 cron 表达式。 表达式使用标准 crontab 表达式来表达定期计划。 单个表达式由 5 个空格分隔的字段组成:MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK
start_time 字符串 使用时区描述开始日期和时间。 如果省略 start_time,第一个作业将立即运行,以后的作业根据计划触发,即 start_time 等于作业创建时间。 如果开始时间在过去,则第一个作业将在下一个计算的运行时间运行。
end_time 字符串 用时区描述结束日期和时间。 如果 end_time 被省略,计划将继续运行,直到被显式禁用为止。
timezone 字符串 指定定期时区。 如果省略,则默认为 UTC。 请参阅时区值附录

作业定义

客户可直接使用 create_job: azureml:<job_name>,也可使用以下属性来定义作业。

密钥 类型 说明 允许的值
type 字符串 必需。 指定作业类型。 仅支持管道作业。 pipeline
job 字符串 必需。 定义如何引用作业,可以是 azureml:<job_name> 或者本地管道作业 yaml,例如 file:hello-pipeline.yml
experiment_name 字符串 用于对作业进行组织的试验名称。 每个作业的运行纪录均整理在工作室的“实验”选项卡中的相应实验下。如果省略,我们将计划名称作为默认值。
inputs object 作业的输入字典。 键是作业上下文中的输入名称,值是输入值。
outputs object 作业的输出配置字典。 键是作业上下文中的输出名称,值是输出配置。
settings object 管道作业的默认设置。 有关可配置属性的集合,请参阅 settings 键的属性

settings 键的属性

类型 说明 默认值
default_datastore 字符串 要用作管道作业的默认数据存储的数据存储的名称。 此值必须是通过 azureml:<datastore-name> 语法对工作区中现有数据存储的引用。 在父管道作业或子步骤作业的 outputs 属性中定义的任何输出都将存储在此数据存储中。 如果省略,输出将存储在工作区 blob 数据存储中。
default_compute 字符串 要用作管道中所有步骤的默认计算的计算目标的名称。 如果在步骤级别定义了计算,它将覆盖该特定步骤的默认计算。 此值必须是通过 azureml:<compute-name> 语法对工作区中现有计算的引用。
continue_on_step_failure boolean 如果一个步骤失败,管道中步骤的执行是否应继续。 默认值为 False,这意味着如果一个步骤失败,管道执行将停止,从而取消任何正在运行的步骤。 False

作业输入

类型 说明 允许的值 默认值
type 字符串 作业输入的类型。 为指向单个文件源的输入数据指定 uri_file,或为指向文件夹源的输入数据指定 uri_folder uri_fileuri_folder uri_folder
path 字符串 用作输入的数据的路径。 可通过几种方式来执行它:

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

- 要用作输入的文件或文件夹的云路径的 URI。 支持的 URI 类型为 azuremlhttpswasbsabfssadl。 有关如何使用 URI 格式的详细信息,请参阅azureml://核心 YAML 语法

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

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

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

如果你只想要数据工件的存储位置的 URL 而不是挂载或下载数据本身,则可以使用 direct 模式。 这将传入存储位置的 URL 作为作业输入。 在这种情况下,你全权负责处理凭证以访问存储。
ro_mountdownloaddirect ro_mount

作业输出

类型 说明 允许的值 默认值
type 字符串 作业输出的类型。 对于默认的 uri_folder 类型,输出将对应一个文件夹。 uri_folder uri_folder
path 字符串 用作输入的数据的路径。 可通过几种方式来执行它:

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

- 要用作输入的文件或文件夹的云路径的 URI。 支持的 URI 类型为 azuremlhttpswasbsabfssadl。 有关如何使用 URI 格式的详细信息,请参阅azureml://核心 YAML 语法

- 要用作输入的现有已注册的 Azure 机器学习数据资产。 若要引用已注册的数据资产,请使用 azureml:<data_name>:<data_version> 语法或 azureml:<data_name>@latest(用于引用数据资产的最新版本),例如 path: azureml:cifar10-data:1path: azureml:cifar10-data@latest
mode 字符串 输出文件传送到目标存储的模式。 对于读写装载模式 (rw_mount),输出目录是装载的目录。 对于上传模式,写入的文件将在作业结束时上传。 rw_mountupload rw_mount

备注

az ml schedule 命令可用于管理 Azure 机器学习模型。

示例

示例 GitHub 存储库中提供了示例。 以下显示了几个示例。

YAML:具有定期模式的计划

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

$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_recurrence_job_schedule
display_name: Simple recurrence job schedule
description: a simple hourly recurrence job schedule

trigger:
  type: recurrence
  frequency: day #can be minute, hour, day, week, month
  interval: 1 #every day
  schedule:
    hours: [4,5,10,11,12]
    minutes: [0,30]
  start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
  time_zone: "Pacific Standard Time" # optional - default will be UTC

create_job: ./simple-pipeline-job.yml
# create_job: azureml:simple-pipeline-job

YAML:具有 cron 表达式的计划

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

$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_cron_job_schedule
display_name: Simple cron job schedule
description: a simple hourly cron job schedule

trigger:
  type: cron
  expression: "0 * * * *"
  start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
  time_zone: "Pacific Standard Time" # optional - default will be UTC

# create_job: azureml:simple-pipeline-job
create_job: ./simple-pipeline-job.yml

附录

时区

当前计划支持以下时区。 键可直接在 Python SDK 中使用,而值可在 YAML 作业中使用。 下表按 UTC(协调世界时)进行整理。

UTC 密钥
UTC +08:00 CHINA_STANDARD_TIME “中国标准时间”