Schéma YAML paralelní úlohy CLI (v2)
PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)
Důležité
Paralelní úlohu je možné použít pouze jako jeden krok v úloze kanálu služby Azure Machine Learning. Proto v tuto chvíli neexistuje žádné zdrojové schéma JSON pro paralelní úlohu. Tento dokument obsahuje seznam platných klíčů a jejich hodnot při vytváření paralelní úlohy v kanálu.
Poznámka:
Syntaxe YAML podrobná v tomto dokumentu je založená na schématu JSON pro nejnovější verzi rozšíření ML CLI v2. Tato syntaxe je zaručena pouze pro práci s nejnovější verzí rozšíření ML CLI v2. Schémata pro starší verze rozšíření najdete na adrese https://azuremlschemasprod.azureedge.net/.
Syntaxe YAML
Klíč | Typ | Popis | Povolené hodnoty | Default value |
---|---|---|---|---|
type |
const | Povinný: Typ úlohy. | parallel |
|
inputs |
objekt | Slovník vstupů pro paralelní úlohu Klíč je název vstupu v kontextu úlohy a hodnota je vstupní hodnota. Vstupy lze odkazovat ve program_arguments výrazu ${{ inputs.<input_name> }} . Na vstupy paralelní úlohy lze odkazovat vstupy kanálu pomocí výrazu ${{ parent.inputs.<input_name> }} . Informace o tom, jak svázat vstupy paralelního kroku se vstupy kanálu, najdete v syntaxi výrazu pro vazby vstupů a výstupů mezi kroky v úloze kanálu. |
||
inputs.<input_name> |
number, integer, boolean, string nebo object | Jedna z literálových hodnot (typu číslo, celé číslo, logická hodnota nebo řetězec) nebo objekt obsahující specifikaci vstupních dat úlohy. | ||
outputs |
objekt | Slovník výstupních konfigurací paralelní úlohy Klíč je název výstupu v kontextu úlohy a hodnota je výstupní konfigurace. Výstupy paralelní úlohy můžou odkazovat výstupy kanálu pomocí výrazu ${{ parents.outputs.<output_name> }} . Informace o tom, jak svázat výstupy paralelního kroku s výstupy kanálu, najdete v syntaxi výrazu pro vazby vstupů a výstupů mezi kroky v úloze kanálu. |
||
outputs.<output_name> |
objekt | Objekt můžete nechat prázdný, v takovém případě bude výstup typu uri_folder a Azure Machine Learning vygeneruje výstupní umístění výstupu pro výstup na základě následující cesty šablony: {settings.datastore}/azureml/{job-name}/{output-name}/ Soubory do výstupního adresáře se zapíšou prostřednictvím připojení pro čtení i zápis. Pokud chcete pro výstup zadat jiný režim, zadejte objekt obsahující specifikaci výstupu úlohy. |
||
compute |
string | Název cílového výpočetního objektu pro spuštění úlohy Hodnota může být odkazem na existující výpočetní prostředky v pracovním prostoru (pomocí azureml:<compute_name> syntaxe) nebo local určit místní spuštění. Při použití paralelní úlohy v kanálu můžete ponechat toto nastavení prázdné, v takovém případě bude výpočetní výkon automaticky vybrán kanálem default_compute . |
local |
|
task |
objekt | Povinný: Šablona pro definování distribuovaných úkolů pro paralelní úlohu. Viz Atributy task klíče. |
||
input_data |
objekt | Povinný: Definujte, která vstupní data se rozdělí do minidávek pro spuštění paralelní úlohy. Platí pouze pro odkazování na jednu z paralelních úloh inputs pomocí výrazu ${{ inputs.<input_name> }} . |
||
mini_batch_size |
string | Definujte velikost každé minidávkové dávky pro rozdělení vstupu. Pokud je input_data složka nebo sada souborů, toto číslo definuje počet souborů pro každou minidávku. Například 10, 100. Pokud je input_data tabulková data z mltable , toto číslo definuje fyzickou velikostxim pro každou minidávku. Například 100 kB, 100 mb. |
0 | |
partition_keys |
list | Klíče používané k rozdělení datové sady do minidávek. Pokud je zadáno, data se stejným klíčem se rozdělí do stejné minidávkové dávky. Pokud zadáte obojí partition_keys a mini_batch_size jsou zadané, projeví se klíče oddílu. |
||
mini_batch_error_threshold |
integer | Definujte počet neúspěšných mini dávek, které lze v této paralelní úloze ignorovat. Pokud je počet neúspěšných minidávek vyšší než tato prahová hodnota, bude paralelní úloha označena jako neúspěšná. Minidávka se označí jako neúspěšná, pokud: – počet návratů z příkazu run() je menší než minimální počet dávkových vstupů. – zachytává výjimky ve vlastním kódu run(). "-1" je výchozí číslo, což znamená ignorovat všechny neúspěšné minidávkové dávky během paralelní úlohy. |
[-1, int.max] | -1 |
logging_level |
string | Definujte, jakou úroveň protokolů se vypíše do souborů protokolu uživatelů. | INFORMACE, UPOZORNĚNÍ, LADĚNÍ | INFO |
resources.instance_count |
integer | Počet uzlů, které se mají pro úlohu použít. | 0 | |
max_concurrency_per_instance |
integer | Definujte počet procesů na každém uzlu výpočetních prostředků. U výpočetních prostředků GPU je výchozí hodnota 1. U výpočetních prostředků procesoru je výchozí hodnota počet jader. |
||
retry_settings.max_retries |
integer | Definujte počet opakovaných pokusů, když minisádka selhala nebo vypršel časový limit. Pokud dojde k selhání všech opakovaných pokusů, bude minidávka označena jako neúspěšná mini_batch_error_threshold při výpočtu. |
2 | |
retry_settings.timeout |
integer | Definujte časový limit v sekundách pro spuštění vlastní funkce run(). Pokud je doba provádění vyšší než tato prahová hodnota, minidávka se přeruší a označí se jako neúspěšná minidávka, aby se aktivovalo opakování. | (0, 259200] | 60 |
environment_variables |
objekt | Slovník párů klíč-hodnota proměnné prostředí, které se nastaví v procesu, ve kterém se příkaz spouští. |
task
Atributy klíče
Klíč | Typ | Popis | Povolené hodnoty | Default value |
---|---|---|---|---|
type |
const | Povinný: Typ úkolu. Platí pouze pro run_function tuto chvíli.V run_function režimu musíte zadat code entry_script program_arguments a definovat skript Pythonu se spustitelnými funkcemi a argumenty. Poznámka: Paralelní úloha v tomto režimu podporuje pouze skript Pythonu. |
run_function | run_function |
code |
string | Místní cesta k adresáři zdrojového kódu, který se má nahrát a použít pro úlohu. | ||
entry_script |
string | Soubor Pythonu, který obsahuje implementaci předdefinovaných paralelních funkcí. Další informace najdete v tématu Příprava vstupního skriptu na paralelní úlohu. | ||
environment |
řetězec nebo objekt | Vyžaduje se prostředí, které se má použít ke spuštění úlohy. Hodnota může být odkazem na existující prostředí s verzí v pracovním prostoru nebo specifikaci vloženého prostředí. Pokud chcete odkazovat na existující prostředí, použijte azureml:<environment_name>:<environment_version> syntaxi nebo azureml:<environment_name>@latest (k odkazování na nejnovější verzi prostředí). Pokud chcete definovat vložené prostředí, postupujte podle schématu prostředí. Vylučte vlastnosti name a version vlastnosti, protože nejsou podporované pro vložená prostředí. |
||
program_arguments |
string | Argumenty, které mají být předány vstupnímu skriptu. Může obsahovat "--<arg_name> ${{vstupy.<>intput_name}} odkaz na vstupy nebo výstupy. Paralelní úloha poskytuje seznam předdefinovaných argumentů pro nastavení konfigurace paralelního spuštění. Další informace najdete v předdefinovaných argumentech pro paralelní úlohu. |
||
append_row_to |
string | Agregujte všechny výnosy z každého spuštění minidávkové dávky a vypíšete je do tohoto souboru. Může odkazovat na jeden z výstupů paralelní úlohy pomocí výrazu ${{outputs.<>output_name}} |
Vstupy úloh
Klíč | Typ | Popis | Povolené hodnoty | Default value |
---|---|---|---|---|
type |
string | Typ vstupu úlohy. Zadejte mltable pro vstupní data, která odkazuje na umístění, kde má soubor metadat mltable, nebo uri_folder pro vstupní data, která odkazuje na zdroj složky. |
mltable , uri_folder |
uri_folder |
path |
string | Cesta k datům, která se mají použít jako vstup. Hodnotu je možné zadat několika způsoby: – Místní cesta k souboru nebo složce zdroje dat, path: ./iris.csv například . Data se nahrají během odeslání úlohy. – Identifikátor URI cloudové cesty k souboru nebo složce, které se mají použít jako vstup. Podporované typy identifikátorů URI jsou azureml , , https wasbs , abfss , adl . Další informace najdete v tématu Syntaxe Core yaml o tom, jak používat formát identifikátoru azureml:// URI. – Existující zaregistrovaný datový prostředek Služby Azure Machine Learning, který se použije jako vstup. Pokud chcete odkazovat na registrovaný datový asset, použijte azureml:<data_name>:<data_version> syntaxi nebo azureml:<data_name>@latest (k odkazování na nejnovější verzi tohoto datového assetu), například path: azureml:cifar10-data:1 nebo path: azureml:cifar10-data@latest . |
||
mode |
string | Režim doručení dat do cílového výpočetního objektu Pro připojení jen pro čtení ( ro_mount ) budou data spotřebována jako cesta připojení. Složka se připojí jako složka a soubor se připojí jako soubor. Azure Machine Learning přeloží vstup do cesty připojení. Pro download režim se data stáhnou do cílového výpočetního objektu. Azure Machine Learning přeloží vstup do stažené cesty. Pokud chcete místo připojení nebo stahování samotných dat pouze adresu URL umístění úložiště artefaktů dat, můžete použít direct režim. Jako vstup úlohy předá adresu URL umístění úložiště. V tomto případě jste plně zodpovědní za zpracování přihlašovacích údajů pro přístup k úložišti. |
ro_mount , , download direct |
ro_mount |
Výstupy úloh
Klíč | Typ | Popis | Povolené hodnoty | Default value |
---|---|---|---|---|
type |
string | Typ výstupu úlohy. Pro výchozí uri_folder typ bude výstup odpovídat složce. |
uri_folder |
uri_folder |
mode |
string | Režim doručení výstupních souborů do cílového úložiště Pro režim připojení pro čtení i zápis (rw_mount ) bude výstupní adresář připojeným adresářem. V režimu nahrávání se soubory zapsané nahrají na konci úlohy. |
rw_mount , upload |
rw_mount |
Předdefinované argumenty pro paralelní úlohu
Key | Popis | Povolené hodnoty | Default value |
---|---|---|---|
--error_threshold |
Prahová hodnota neúspěšných položek Neúspěšné položky se počítají podle počtu mezer mezi vstupy a výnosy z každé minidávkové dávky. Pokud je součet neúspěšných položek vyšší než tato prahová hodnota, bude paralelní úloha označena jako neúspěšná. Poznámka: "-1" je výchozí číslo, což znamená ignorovat všechna selhání během paralelní úlohy. |
[-1, int.max] | -1 |
--allowed_failed_percent |
Podobá se mini_batch_error_threshold tomu, ale používá procento neúspěšných minidávek místo počtu. |
[0, 100] | 100 |
--task_overhead_timeout |
Časový limit za sekundu pro inicializaci každé minidávkové dávky. Například načtěte minidávová data a předejte je do funkce run(). | (0, 259200] | 30 |
--progress_update_timeout |
Časový limit za sekundu pro monitorování průběhu minidávkového spouštění. Pokud v tomto nastavení časového limitu nepřijdou žádné aktualizace průběhu, bude paralelní úloha označena jako neúspěšná. | (0, 259200] | Dynamicky vypočítané jinými nastaveními. |
--first_task_creation_timeout |
Časový limit za sekundu pro monitorování času mezi spuštěním úlohy do spuštění první minidávkové dávky. | (0, 259200] | 600 |
--copy_logs_to_parent |
Logická možnost, jestli zkopírujete průběh úlohy, přehled a protokoly do nadřazené úlohy kanálu. | True, False | False |
--metrics_name_prefix |
Zadejte vlastní předponu metrik v této paralelní úloze. | ||
--push_metrics_to_parent |
Logická možnost, jestli se metriky nasdílí do úlohy nadřazeného kanálu. | True, False | False |
--resource_monitor_interval |
Časový interval v sekundách pro výpis využití prostředků uzlu (například procesor, paměť) pro protokolování složky v cestě logs/sys/perf. Poznámka: Protokoly prostředků s častým výpisem paměti mírně zpomalí rychlost spouštění vaší minidávkové dávky. Nastavte tuto hodnotu na 0, aby se zastavilo dumpingové využití prostředků. |
[0, int.max] | 600 |
Poznámky
Příkazy az ml job
se dají použít ke správě úloh Azure Machine Learning.
Příklady
Příklady jsou k dispozici v příkladech v úložišti GitHub. Níže je uvedeno několik.
YAML: Použití paralelní úlohy v kanálu
$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}}