Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
重要
只能将并行作业用作Azure 机器学习管道作业内的单个步骤。 因此,并行作业没有源 JSON 架构。 本文列出了在管道中创建并行作业时的有效键及其值。
注意
本文档中详细介绍的 YAML 语法基于最新版本的 ML CLI v2 扩展的 JSON 架构。 此语法必定仅适用于最新版本的 ML CLI v2 扩展。 可以在 https://azuremlschemasprod.azureedge.net/ 上查找早期扩展版本的架构。
YAML 语法
| 密钥 | 类型 | 说明 | 允许的值 | 默认值 |
|---|---|---|---|---|
type |
const | 必需。 作业类型。 | parallel |
|
inputs |
对象 | 并行作业的输入字典。 键是作业上下文中的输入名称,值是输入值。 可以使用表达式引用输入 program_arguments${{ inputs.<input_name> }}。 管道输入可以使用表达式引用并行作业输入 ${{ parent.inputs.<input_name> }} 。 有关如何将并行步骤的输入绑定到管道输入的信息,请参阅 管道作业中步骤之间的绑定输入和输出的表达式语法。 |
||
inputs.<input_name> |
数字、整数、布尔值、字符串或对象 | 文字值(数字、整数、布尔值或字符串类型)或包含作业输入数据规范的对象之一。 | ||
outputs |
对象 | 并行作业的输出配置字典。 键是作业上下文中的输出名称,值是输出配置。 管道输出可以使用表达式引用并行作业输出 ${{ parents.outputs.<output_name> }} 。 有关如何将并行步骤的输出绑定到管道输出的信息,请参阅 管道作业中步骤之间的绑定输入和输出的表达式语法。 |
||
outputs.<output_name> |
对象 | 可以将对象留空。 默认情况下,输出的类型uri_folder和Azure 机器学习系统根据以下模板化路径生成输出的输出位置: {settings.datastore}/azureml/{job-name}/{output-name}/ 作业通过读写装载将文件写入输出目录。 如果要为输出指定不同的模式,请提供一个包含作业输出规范的对象。 |
||
compute |
字符串 | 要在其上执行作业的计算目标的名称。 该值是对工作区中现有计算的引用(使用 azureml:<compute_name> 语法),也可以是对 local 的引用,以指定本地执行。 在管道中使用并行作业时,可以将此设置留空。 default_compute管道自动选择计算。 |
local |
|
task |
对象 | 必需。 用于定义并行作业的分布式任务的模板。 请参阅 task 键的属性。 |
||
input_data |
对象 | 必需。 定义将哪些输入数据拆分为小型批处理以运行并行作业。 仅适用于使用inputs表达式引用其中一个并行作业${{ inputs.<input_name> }}。 |
||
mini_batch_size |
字符串 | 定义每个微批的大小以拆分输入。input_data如果这是一个文件夹或一组文件,则此数字定义每个微型批的文件计数。 例如 10、100。input_data如果它是表格数据mltable,则此数字定义每个微型批的近似物理大小。 例如,100 kb、100 mb。 |
1 | |
partition_keys |
列表 | 用于将数据集分区为小型批处理的键。 如果指定,则具有相同键的数据将分区到同一个微型批处理中。 如果同时 partition_keys 指定并 mini_batch_size 指定了分区键,分区键将生效。 |
||
mini_batch_error_threshold |
整数 | 定义作业可以忽略的失败小型批数。 如果失败的小批处理计数高于此阈值,则并行作业将失败。 如果出现以下情况,微批将标记为失败: - run() 的返回计数小于微批输入计数。 - 在自定义 run() 代码中捕获异常。 “-1”是默认数字,表示在执行并行作业期间忽略所有失败的微批。 |
[-1, int.max] | -1 |
logging_level |
字符串 | 定义发送到用户日志文件的日志级别。 | INFO、WARNING、DEBUG | INFO |
resources.instance_count |
整数 | 用于作业的节点数。 | 1 | |
max_concurrency_per_instance |
整数 | 定义每个计算节点上的进程数。 对于 GPU 计算,默认值为 1。 对于 CPU 计算,默认值为核心数。 |
||
retry_settings.max_retries |
整数 | 定义小型批处理失败或超时时重试次数。如果所有重试失败,则小批处理将标记为无法按 mini_batch_error_threshold 计算进行计数。 |
2 | |
retry_settings.timeout |
整数 | 定义执行自定义 run() 函数的超时(以秒为单位)。 如果执行时间高于此阈值,则会中止小型批处理,并标记为失败的迷你批处理以触发重试。 | (0, 259200] | 60 |
environment_variables |
对象 | 要在执行命令的进程上设置的环境变量键/值对的字典。 |
task 键的属性
| 密钥 | 类型 | 说明 | 允许的值 | 默认值 |
|---|---|---|---|---|
type |
const | 必需。 任务的类型。 目前仅适用于 run_function。在 run_function 模式下,需要提供 code、entry_script 和 program_arguments 以定义具有可执行函数和参数的 Python 脚本。 注意:并行作业仅支持此模式下的 Python 脚本。 |
run_function | run_function |
code |
字符串 | 要上传并用于作业的源代码目录的本地路径。 | ||
entry_script |
字符串 | 包含预定义并行函数的实现的 Python 文件。 有关详细信息,请参阅准备并行作业的入口脚本。 | ||
environment |
字符串或对象 |
必填 用于运行任务的环境。 此值可以是对工作区中现有版本受控环境的引用,也可以是对内联环境规范的引用。 若要引用现有环境,请使用 azureml:<environment_name>:<environment_version> 语法或 azureml:<environment_name>@latest(引用环境的最新版本)。 若要定义内联环境,请遵循环境架构。 排除 name 和 version 属性,因为内联环境不支持这些属性。 |
||
program_arguments |
字符串 | 要传递给入口脚本的参数。 可能包含对输入和输出的“--<arg_name> ${{inputs.<intput_name>}}”引用。 并行作业提供预定义参数列表,用于设置并行运行的配置。 有关详细信息,请参阅并行作业的预定义参数。 |
||
append_row_to |
字符串 | 聚合每次运行微批后的所有返回值并将其输出到此文件中。 可以使用表达式 ${{outputs.<output_name>}} 引用并行作业的输出之一 |
作业输入
| 密钥 | 类型 | 说明 | 允许的值 | 默认值 |
|---|---|---|---|---|
type |
字符串 | 作业输入的类型。 为指向具有 mltable 元文件的位置的输入数据指定 mltable,或为指向文件夹源的输入数据指定 uri_folder。 |
mltable,uri_folder |
uri_folder |
path |
字符串 | 用作输入的数据的路径。 使用以下方法之一指定值: - 数据源文件或文件夹的本地路径,例如 path: ./iris.csv。 数据在作业提交期间上传。 - 要用作输入的文件或文件夹的云路径的 URI。 支持的 URI 类型为 azureml、https、wasbs、abfss、adl。 有关详细信息,请参阅核心 yaml 语法,了解如何使用 azureml:// URI 格式。 - 要用作输入的现有已注册的 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 |
mode |
字符串 | 输出文件如何传送到目标存储的模式。 对于读写装载模式(rw_mount) 输出目录是装载的目录。 对于上传模式,写入的文件会在作业结束时上传。 |
rw_mount,upload |
rw_mount |
并行作业的预定义参数
| 密钥 | 说明 | 允许的值 | 默认值 |
|---|---|---|---|
--error_threshold |
“失败项”的阈值。 系统按输入之间的数字差距和每个微型批处理的返回值对失败项进行计数。 如果失败项的总和高于此阈值,则并行作业将失败。 注意:“-1”是默认数字,这意味着系统忽略并行作业期间的所有故障。 |
[-1, int.max] | -1 |
--allowed_failed_percent |
与 mini_batch_error_threshold 类似,但使用失败的微批数百分比而不是计数。 |
[0, 100] | 100 |
--task_overhead_timeout |
每个微型批处理初始化的超时(以秒为单位)。 例如,加载微批数据并将其传递给 run() 函数。 | (0, 259200] | 30 |
--progress_update_timeout |
用于监视迷你批处理执行的进度的超时(以秒为单位)。 如果此超时设置内未收到进度更新,则并行作业将失败。 | (0, 259200] | 由其他设置动态计算。 |
--first_task_creation_timeout |
监视作业开始运行到第一个小型批处理之间的时间的超时(以秒为单位)。 | (0, 259200] | 600 |
--copy_logs_to_parent |
指示是否将作业进度、概述和日志复制到父管道作业的布尔选项。 | True、False | 错误 |
--metrics_name_prefix |
提供此并行作业中指标的自定义前缀。 | ||
--push_metrics_to_parent |
布尔选项,用于选择是否将指标推送到父管道作业。 | True、False | 错误 |
--resource_monitor_interval |
转储节点资源使用情况(例如 CPU、内存)到“logs/sys/perf”路径下的记录文件夹的时间间隔(以秒为单位)。 注意:频繁的转储资源日志会稍微降低迷你批处理的执行速度。 将此值设置为“0”可停止转储资源使用情况。 |
[0, int.max] | 600 |
注解
使用az ml job命令管理Azure 机器学习作业。
示例
示例 GitHub 存储库中提供了示例。 以下部分显示了多个内容。
YAML:在管道中使用并行作业
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: iris-batch-prediction-using-parallel
description: The hello world pipeline job with inline parallel job
tags:
tag: tagvalue
owner: sdkteam
settings:
default_compute: azureml:cpu-cluster
jobs:
batch_prediction:
type: parallel
compute: azureml:cpu-cluster
inputs:
input_data:
type: mltable
path: ./neural-iris-mltable
mode: direct
score_model:
type: uri_folder
path: ./iris-model
mode: download
outputs:
job_output_file:
type: uri_file
mode: rw_mount
input_data: ${{inputs.input_data}}
mini_batch_size: "10kb"
resources:
instance_count: 2
max_concurrency_per_instance: 2
logging_level: "DEBUG"
mini_batch_error_threshold: 5
retry_settings:
max_retries: 2
timeout: 60
task:
type: run_function
code: "./script"
entry_script: iris_prediction.py
environment:
name: "prs-env"
version: 1
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: ./environment/environment_parallel.yml
program_arguments: >-
--model ${{inputs.score_model}}
--error_threshold 5
--allowed_failed_percent 30
--task_overhead_timeout 1200
--progress_update_timeout 600
--first_task_creation_timeout 600
--copy_logs_to_parent True
--resource_monitor_interva 20
append_row_to: ${{outputs.job_output_file}}
Azure CLI ml 扩展 v2(当前)