CLI (v2) 自动化 ML 预测命令作业 YAML 架构
可在 https://azuremlschemas.azureedge.net/latest/autoMLForecastingJob.schema.json 中找到源 JSON 架构
注意
本文档中详细介绍的 YAML 语法基于最新版本的 ML CLI v2 扩展的 JSON 架构。 此语法必定仅适用于最新版本的 ML CLI v2 扩展。 可以在 https://azuremlschemasprod.azureedge.net/ 上查找早期扩展版本的架构。
YAML 语法
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
$schema |
string | 用于加载 YAML 架构的位置/URL。 如果用户使用 Azure 机器学习 VS Code 扩展来创作 YAML 文件,则用户可通过在文件顶部包含 $schema 来调用架构和资源完成操作。 |
||
compute |
字符串 | 必需。 要对其执行作业的 AML 计算基础结构的名称。 该计算可以是对工作区中现有计算机的引用 注意:管道中的作业不支持使用“本地”(local) 作为 compute 。 此处的“本地”是指在用户的 Azure 机器学习工作室工作区中创建的计算实例。 |
1. 模式 [^azureml:<compute_name>] 表示使用现有计算2. 'local' 表示使用本地执行 |
'local' |
limits |
object | 表示由自动化 ML 表格作业的限制配置组成的字典对象。 键是作业上下文中的限制的名称,值是限制值。 请参阅限制了解此对象的属性。 |
||
name |
string | 提交的自动化 ML 作业的名称。 它对工作区中的所有作业必须唯一。 如果未指定,Azure 机器学习将为该名称自动生成一个 GUID。 |
||
description |
string | 自动化 ML 作业的说明。 | ||
display_name |
string | 用户想要在工作室 UI 中显示的作业名称。 它在工作区中可以不唯一。 如果省略此项,Azure 机器学习将为显示名称自动生成人类可读的形容词-名词标识符。 | ||
experiment_name |
string | 试验的名称。 试验是 Azure 上的 ML 训练作业的记录。 试验包含运行结果,以及日志、图表和图形。 每个作业的运行记录将组织到工作室“试验”选项卡中的相应试验下。 |
在其中创建了试验的工作目录的名称 | |
environment_variables |
object | 要在执行命令的进程上设置的环境变量的字典对象。 | ||
outputs |
object | 表示作业的输出配置字典。 键是作业上下文中的输出名称,值是输出配置。 请参阅作业输出了解此对象的属性。 | ||
log_files |
object | 包含自动 ML 作业执行日志的字典对象 | ||
log_verbosity |
string | 写入日志文件的日志详细级别。 可接受的值在 Python 日志记录库中定义。 |
'not_set' 、'debug' 、'info' 、'warning' 、'error' 、'critical' |
'info' |
type |
const | 必需。 作业类型。 |
automl |
automl |
task |
const | 必需。 要执行的自动化 ML 任务的类型。 |
forecasting |
forecasting |
target_column_name |
字符串 | 必需。 表示要预测的列的名称。 如果未指定,自动化 ML 作业将引发错误。 |
||
featurization |
object | 定义自定义特征化配置的字典对象。 如果未创建此对象,自动化 ML 配置将应用自动特征化。 请参阅特征化了解此对象的属性。 | ||
forecasting |
object | 定义预测作业设置的字典对象。 请参阅预测了解此对象的属性。 | ||
n_cross_validations |
字符串或整数 | 如果未指定 validation_data ,则使用选择模型/管道期间要执行的交叉验证数。如果 validation_data 和此参数均未提供或设置为 None ,则自动化 ML 作业默认会将其设置为 auto 。 如果已启用 distributed_featurization 且未指定 validation_data ,则此参数默认设置为 2。 |
'auto' 、[int] |
None |
primary_metric |
string | 自动化 ML 为时序预测模型选择优化的指标。 如果 allowed_training_algorithms 包含用于训练的“tcn_forecaster”,则自动化 ML 仅支持使用“normalized_root_mean_squared_error”和“normalized_mean_absolute_error”作为 primary_metric。 |
"spearman_correlation" 、"normalized_root_mean_squared_error" 、"r2_score" "normalized_mean_absolute_error" |
"normalized_root_mean_squared_error" |
training |
object | 定义模型训练中使用的配置的字典对象。 请查看训练了解此对象的属性。 |
||
training_data |
object | 必需 包含 MLTable 配置的字典对象,定义用作模型训练输入的训练数据。 此数据是一个数据子集,应由独立特征/列和目标特征/列组成。 用户可以使用格式“:”在工作区中使用已注册的 MLTable(例如 Input(mltable ='my_mltable:1')),或者可以使用本地文件或文件夹作为 MLTable(例如 Input(mltable=MLTable(local_path="./data"))。 必须提供此对象。 如果源文件中不存在目标特征,自动化 ML 将引发错误。 请查看训练、验证或测试数据了解此对象的属性。 |
||
validation_data |
object | 包含 MLTable 配置的字典对象,定义要在自动化 ML 试验中用于交叉验证的验证数据。 如果提供了此对象,此参数应该由独立特征/列和目标特征/列组成。 训练数据和验证数据中的样本不能在折叠中重叠。 请参阅训练、验证或测试数据了解此对象的属性。 如果未定义此对象,自动化 ML 会使用 n_cross_validations 将验证数据与 training_data 对象中定义的训练数据分开。 |
||
test_data |
object | 包含 MLTable 配置的字典对象,定义要在测试运行中使用的测试数据,这些数据用于通过最佳模型进行预测,并使用定义的指标评估模型。 如果提供了此对象,此参数应仅由训练数据中使用的独立特征(没有目标特征)组成。 请查看训练、验证或测试数据了解此对象的属性。 如果未提供,则自动化 ML 将使用其他内置方法来推荐用于推理的最佳模型。 |
限制
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
enable_early_termination |
boolean | 表示如果在“x”次迭代后损失分数未得到改善,是否启用试验终止。 在自动化 ML 作业中,不会对前 20 次迭代应用提前停止。 提前停止窗口仅在前 20 次迭代后开始。 |
true 、false |
true |
max_concurrent_trials |
整型 | 要并行执行的最大试运行(子作业)数量。 强烈建议将并发运行数设置为群集中的节点数(compute 中定义的 aml 计算)。 |
1 |
|
max_trials |
整型 | 表示自动化 ML 作业在使用不同的超参数组合来运行训练算法时可以尝试的最大试运行数量。 其默认值设置为 1000。 如果定义了 enable_early_termination ,则用于运行训练算法的试运行数量可以更少。 |
1000 |
|
max_cores_per_trial |
整型 | 表示每个试运行可用的最大核心数。 其默认值设置为 -1,表示在过程中使用所有核心。 | -1 |
|
timeout_minutes |
整型 | 提交的自动化 ML 作业可运行的最长时间(以分钟为单位)。 在指定的时间过后,作业将终止。 此超时包括所有试运行的设置、特征化、训练运行、融合和模型可解释性(如果已提供)。 请注意,如果作业无法在提供的 timeout_minutes 内完成,它将不包括在过程结束时运行的融合和模型可解释性,因为一旦完成所有试运行(子作业),这些特征就可用。 其默认值设置为 360 分钟(6 小时)。 若要指定小于或等于 1 小时(60 分钟)的超时,用户应确保数据集的大小不大于 10,000,000(行数乘以列数),否则会出错。 |
360 |
|
trial_timeout_minutes |
整型 | 提交的自动化 ML 作业中每个试运行(子作业)可运行的最长时间(以分钟为单位)。 在指定的时间过后,子作业将终止。 | 30 |
|
exit_score |
FLOAT | 试验要达到的分数。 试验在达到指定的分数后将终止。 如果未指定(无条件),则试验将一直运行到定义的 primary metric 没有进一步变化为止。 |
预测
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
time_column_name |
string | 必需 数据集中与每个时序的时间轴对应的列的名称。 如果任务为 forecasting ,则用于训练、验证或测试的输入数据集必须包含此列。 如果未提供或设置为 None ,则自动化 ML 预测作业会引发错误并终止试验。 |
||
forecast_horizon |
字符串或整数 | 最大预测边际,以时序频率为单位。 这些单位基于由预测器用来预测的训练数据的推理时间间隔(例如:每月、每周)。 如果它设置为 None 或 auto ,则其默认值设置为 1,表示与输入数据中最后一个时间戳 t 相隔“t+1”。 |
auto 、[int] |
1 |
frequency |
string | 所需的预测生成频率,例如每日、每周、每年等。 如果未指定或设置为 None,则其默认值是从数据集时间索引推理出来的。 用户可将其值设置为大于数据集的推理频率,但不能小于此频率。 例如,如果数据集的频率为每日,则此参数可以采用每日、每周、每月等值,但不能采用每小时,因为每小时小于每日(24 小时)。 有关详细信息,请参阅 pandas 文档。 |
None |
|
time_series_id_column_names |
字符串或列表(字符串) | 数据中用于将数据分组成多个时序的列的名称。 如果 time_series_id_column_names 未定义或设置为 None,则自动化 ML 将使用自动检测逻辑来检测列。 | None |
|
feature_lags |
string | 表示用户是否希望为提供的数字特征自动生成滞后。 默认设置为 auto ,表示自动化 ML 使用基于自动关联的启发法来自动选择滞后顺序,并为所有数字特征生成相应的滞后特征。 “None”表示不为任何数字特征生成滞后。 |
'auto' 、None |
None |
country_or_region_for_holidays |
string | 用于生成节假日特征的国家或地区。 这些字符应以 ISO 3166 双字母国家/地区代码来表示,例如“US”或“GB”。 可在 https://wikipedia.org/wiki/List_of_ISO_3166_country_codes 找到 ISO 代码的列表。 | None |
|
cv_step_size |
字符串或整数 | 从一个 CV 折叠到下一个 CV 折叠的 origin_time 之间的周期数。 例如,如果它为每日数据设置为 3,则每个折叠的源时间将相隔 3 天。 如果它设置为 None 或未指定,则默认设置为 auto 。 如果它是整数类型,它可以采用的最小值为 1,否则会引发错误。 |
auto 、[int] |
auto |
seasonality |
字符串或整数 | 时序季节性,作为序列频率的整数倍数。 如果未指定季节性,则其值设置为 'auto' ,表示它由自动化 ML 自动推理。 如果此参数未设置为 None ,则自动化 ML 会假设时序没有季节性,这相当于将其设置为整数值 1。 |
'auto' 、[int] |
auto |
short_series_handling_config |
string | 表示自动化 ML 处理短时序的方式(如果已指定)。 它采用以下值:
|
'auto' 、'pad' 、'drop' 、None |
auto |
target_aggregate_function |
string | 表示用于聚合时序中的目标列并按指定频率(在 freq 中定义)生成预测的聚合函数。 如果设置了此参数但未设置 freq 参数,则会引发错误。 如果省略此参数或将其设置为 None,则不应用任何聚合。 |
'sum' 、'max' 、'min' 、'mean' |
auto |
target_lags |
字符串、整数或列表(整数) | 用于根据数据集频率从目标值滞后的以往/历史周期数。 此参数默认处于关闭状态。 'auto' 设置允许系统使用基于启发的自动滞后。 默认情况下,当独立变量和依赖变量之间的关系不关联时,应使用此滞后属性。 有关详细信息,请参阅自动化 ML 中时序预测的滞后特征。 |
'auto' 、[int] |
None |
target_rolling_window_size |
字符串或整数 | 用于创建目标列的滚动窗口平均值的以往观测项数。 预测时,此参数表示用于生成预测值的 n 个历史周期,<= 训练集大小。 如果省略,则 n 为完整训练集大小。 如果训练模型时只想考虑一定量的历史记录,请指定此参数。 | 'auto' 、整数、None |
None |
use_stl |
string | 通过对时序应用 STL 分解生成的组件。如果未提供或设置为 None,则不会生成任何时序组件。 use_stl 可以采用两个值: 'season' :生成季节组件。 'season_trend' :生成季节自动化 ML 和趋势组件。 |
'season' 、'seasontrend' |
None |
训练、验证或测试数据
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
datastore |
string | 用户将数据上传到的数据存储的名称。 | ||
path |
字符串 | 应从中加载数据的路径。 它可以是 file 路径、folder 路径,或路径的 pattern 。 pattern 指定搜索模式,以允许对包含数据的文件和文件夹进行通配(* 和 ** )。 支持的 URI 类型为 azureml 、https 、wasbs 、abfss 和 adl 。 有关详细信息,请参阅核心 yaml 语法了解如何使用 azureml:// URI 格式。 项目文件位置的 URI。 如果此 URI 没有方案(例如,http:、azureml: 等),则会将它视为本地引用,它指向的文件将在创建实体时上传到默认工作区 blob-storage。 |
||
type |
const | 输入数据的类型。 若要生成计算机视觉模型,用户需要以 MLTable 的形式引入标记的图像数据作为模型训练的输入。 | mltable |
mltable |
定型
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
allowed_training_algorithms |
list(string) | 时序预测算法的列表,可以尝试将其用作基础模型在试验中进行模型训练。 如果省略或设置为 None,则在试验期间使用所有支持的算法,blocked_training_algorithms 中指定的算法除外。 |
'auto_arima' 、'prophet' 、'naive' 、'seasonal_naive' 、'average' 、'seasonal_average' 、'exponential_smoothing' 、'arimax' 、'tcn_forecaster' 、'elastic_net' 、'gradient_boosting' 、'decision_tree' 、'knn' 、'lasso_lars' 、'sgd' 、'random_forest' 、'extreme_random_trees' 、'light_gbm' 、'xg_boost_regressor' |
None |
blocked_training_algorithms |
list(string) | 时序预测算法的列表,在试验中进行模型训练时不会将其作为基础模型运行。 如果省略或设置为 None,则在模型训练期间将使用所有支持的算法。 | 'auto_arima' 、'prophet' 、'naive' 、'seasonal_naive' 、'average' 、'seasonal_average' 、'exponential_smoothing' 、'arimax' 、'tcn_forecaster' 、'elastic_net' 、'gradient_boosting' 、'decision_tree' 、'knn' 、'lasso_lars' 、'sgd' 、'random_forest' 、'extreme_random_trees' 、'light_gbm' 、'xg_boost_regressor' |
None |
enable_dnn_training |
boolean | 一个标志,用于启用或禁用包含要在模型选择期间试用的基于 DNN 的模型。 | True 、False |
False |
enable_model_explainability |
boolean | 表示一个标志,用于启用自动化 ML 系统评估的最佳模型的模型可解释性,例如特征重要性。 | True 、False |
True |
enable_vote_ensemble |
boolean | 一个标志,用于启用或禁用使用投票算法融合某些基础模型。 有关融合的详细信息,请参阅设置自动训练。 | true 、false |
true |
enable_stack_ensemble |
boolean | 一个标志,用于启用或禁用使用堆积算法融合某些基础模型。 在预测任务中,默认已禁用此标志,以避免因使用较小训练集拟合元学习器时而导致过度拟合的风险。 有关融合的详细信息,请参阅设置自动训练。 | true 、false |
false |
特征化
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
mode |
string | 自动化 ML 作业使用的特征化模式。 将其设置为: 'auto' 表示是否应自动完成特征化步骤'off' 表示没有特征化<'custom' 表示是否应使用自定义特征化。 备注:如果输入数据是稀疏的,则无法启用特征化。 |
'auto' 、'off' 、'custom' |
None |
blocked_transformers |
list(string) | 如果特征化 mode 设置为“custom”,则使用自动化 ML 在特征化步骤期间要阻止的转换器名称列表。 |
'text_target_encoder' , 'one_hot_encoder' , 'cat_target_encoder' , 'tf_idf' , 'wo_e_target_encoder' , 'label_encoder' , 'word_embedding' , 'naive_bayes' , 'count_vectorizer' , 'hash_one_hot_encoder' |
None |
column_name_and_types |
object | 如果特征化 mode 设置为“custom”,则使用一个字典对象,该对象由用作字典键的列名称和用于更新列用途(关联值)的特征类型组成。 |
||
transformer_params |
object | 如果特征化 mode 设置为“custom”,则使用一个嵌套字典对象,该对象由用作键的转换器名称和数据集列中用于特征化的相应自定义参数组成。预测仅支持使用 imputer 转换器进行自定义。请查看 column_transformers 了解如何创建自定义参数。 |
None |
column_transformers
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
fields |
list(string) | 要对其应用提供的 transformer_params 的列名称列表。 |
||
parameters |
object | 一个字典对象,由用作键的“策略”和用作插补策略的值组成。 此处的示例中提供了有关如何提供此参数的更多详细信息。 |
作业输出
键 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
type |
字符串 | 作业输出的类型。 对于默认的 uri_folder 类型,输出对应于某个文件夹。 |
uri_folder 、mlflow_model 、custom_model |
uri_folder |
mode |
字符串 | 将输出文件传送到目标存储的模式。 对于读写装载模式 (rw_mount ),输出目录是装载的目录。 对于上传模式,写入的文件将在作业结束时上传。 |
rw_mount 、upload |
rw_mount |
如何通过 CLI 运行预测作业
az ml job create --file [YOUR_CLI_YAML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]