Sdílet prostřednictvím


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 codeentry_scriptprogram_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.csvnapří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, , httpswasbs, 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, , downloaddirect 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}}

Další kroky