CLI (v2) 作业计划 YAML 架构
源 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 | 用于定义何时触发作业的规则的触发器配置。 必须指定 RecurrenceTrigger 或 CronTrigger 。 |
|
create_job |
对象或字符串 | 必需。 将由计划触发的作业的定义。 必须指定 string 或 JobDefinition 。 |
触发器配置
重复触发器
密钥 | 类型 | 说明 | 允许的值 |
---|---|---|---|
type |
字符串 | 必需。 指定计划类型。 | recurrence |
frequency |
字符串 | 必需。 指定描述计划触发频率的时间单位。 | minute ,hour ,day ,week ,month |
interval |
整型 | 必需。 指定计划触发的时间间隔。 | |
start_time |
字符串 | 使用时区描述开始日期和时间。 如果省略 start_time,第一个作业将立即运行,以后的作业根据计划触发,即 start_time 等于作业创建时间。 如果开始时间在过去,则第一个作业将在下一个计算的运行时间运行。 | |
end_time |
字符串 | 用时区描述结束日期和时间。 如果 end_time 被省略,计划将继续运行,直到被显式禁用为止。 | |
timezone |
字符串 | 指定定期时区。 如果省略,则默认为 UTC。 | 请参阅时区值附录 |
pattern |
object | 指定定期模式。 如果省略模式,将根据 start_time、frequency 和 interval 的逻辑触发作业。 |
定期计划
定期计划定义定期模式,包含 hours
、minutes
和 weekdays
。
- 当频率为
day
时,模式可指定hours
和minutes
。 - 当频率为
week
和month
时,模式可指定hours
、minutes
和weekdays
。
密钥 | 类型 | 允许的值 |
---|---|---|
hours |
整数或整数数组 | 0-23 |
minutes |
整数或整数数组 | 0-59 |
week_days |
字符串或字符串数组 | monday ,tuesday ,wednesday ,thursday ,friday ,saturday ,sunday |
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_file ,uri_folder |
uri_folder |
path |
字符串 | 用作输入的数据的路径。 可通过几种方式来执行它: - 数据源文件或文件夹的本地路径,例如 path: ./iris.csv 。 数据将在作业提交期间上传。 - 要用作输入的文件或文件夹的云路径的 URI。 支持的 URI 类型为 azureml 、https 、wasbs 、abfss 、adl 。 有关如何使用 URI 格式的详细信息,请参阅azureml:// 核心 YAML 语法。 - 要用作输入的现有已注册的 Azure 机器学习数据资产。 若要引用已注册的数据资产,请使用 azureml:<data_name>:<data_version> 语法或 azureml:<data_name>@latest (用于引用数据资产的最新版本),例如 path: azureml:cifar10-data:1 或 path: azureml:cifar10-data@latest 。 |
||
mode |
字符串 | 将数据传送到计算目标的模式。 对于只读装载 ( ro_mount ),数据将用作装载路径。 文件夹将装载为文件夹,文件将装载为文件。 Azure 机器学习会将输入解析为装载路径。 对于 download 模式,数据将下载到计算目标。 Azure 机器学习会将输入解析为下载的路径。 如果你只想要数据工件的存储位置的 URL 而不是挂载或下载数据本身,则可以使用 direct 模式。 这将传入存储位置的 URL 作为作业输入。 在这种情况下,你全权负责处理凭证以访问存储。 |
ro_mount ,download ,direct |
ro_mount |
作业输出
键 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
type |
字符串 | 作业输出的类型。 对于默认的 uri_folder 类型,输出将对应一个文件夹。 |
uri_folder |
uri_folder |
path |
字符串 | 用作输入的数据的路径。 可通过几种方式来执行它: - 数据源文件或文件夹的本地路径,例如 path: ./iris.csv 。 数据将在作业提交期间上传。 - 要用作输入的文件或文件夹的云路径的 URI。 支持的 URI 类型为 azureml 、https 、wasbs 、abfss 、adl 。 有关如何使用 URI 格式的详细信息,请参阅azureml:// 核心 YAML 语法。 - 要用作输入的现有已注册的 Azure 机器学习数据资产。 若要引用已注册的数据资产,请使用 azureml:<data_name>:<data_version> 语法或 azureml:<data_name>@latest (用于引用数据资产的最新版本),例如 path: azureml:cifar10-data:1 或 path: azureml:cifar10-data@latest 。 |
||
mode |
字符串 | 输出文件传送到目标存储的模式。 对于读写装载模式 (rw_mount ),输出目录是装载的目录。 对于上传模式,写入的文件将在作业结束时上传。 |
rw_mount ,upload |
rw_mount |
备注
az ml schedule
命令可用于管理 Azure 机器学习模型。
示例
示例 GitHub 存储库中提供了示例。 以下显示了几个示例。
YAML:具有定期模式的计划
$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 表达式的计划
$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 | “中国标准时间” |