Schéma YAML úlohy příkazového řádku (v2)

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)

Zdrojové schéma JSON najdete na adrese https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.

Poznámka

Syntaxe YAML podrobně popsané v tomto dokumentu je založená na schématu JSON pro nejnovější verzi rozšíření ML CLI v2. Tato syntaxe zaručuje, že bude fungovat jenom 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 Výchozí hodnota
$schema řetězec Schéma YAML. Pokud k vytvoření souboru YAML použijete rozšíření VS Code pro Azure Machine Learning, včetně horní části souboru, $schema umožní vám to vyvolat doplňování schématu a prostředků.
type const Typ úlohy. command command
name řetězec Název úlohy Musí být jedinečný ve všech úlohách v pracovním prostoru. Pokud tento parametr vynecháte, Azure Machine Learning pro název automaticky vygeneruje identifikátor GUID.
display_name řetězec Zobrazovaný název úlohy v uživatelském rozhraní studia Může být v rámci pracovního prostoru jedinečný. Pokud tento identifikátor vynecháte, Azure Machine Learning pro zobrazovaný název automaticky vygeneruje identifikátor adjektivního jména čitelný pro člověka.
experiment_name řetězec Název experimentu pro uspořádání úlohy. Záznam spuštění každé úlohy bude uspořádaný v odpovídajícím experimentu na kartě Experimenty ve studiu. Pokud tento parametr vynecháte, azure Machine Learning použije výchozí název pracovního adresáře, ve kterém byla úloha vytvořena.
description řetězec Popis úlohy
tags object Slovník značek pro úlohu
command řetězec Povinné (pokud nepoužíváte component pole). Příkaz, který se má spustit.
code řetězec Místní cesta k adresáři zdrojového kódu, který se má nahrát a použít pro úlohu.
environment řetězec nebo objekt Povinné (pokud nepoužíváte component pole). Prostředí, které se má použít pro úlohu. Může se jednat buď o odkaz na existující prostředí s verzemi v pracovním prostoru, nebo o vloženou specifikaci prostředí.

Pokud chcete odkazovat na existující prostředí, použijte syntaxi azureml:<environment_name>:<environment_version> nebo azureml:<environment_name>@latest (pokud chcete odkazovat na nejnovější verzi prostředí).

Pokud chcete definovat vložené prostředí, postupujte podle schématu prostředí. name Vylučte vlastnosti a version , protože se pro vložená prostředí nepodporují.
environment_variables object Slovník párů klíč-hodnota proměnných prostředí, které se mají nastavit v procesu, ve kterém je příkaz proveden.
distribution object Konfigurace distribuce pro scénáře distribuovaného trénování Jeden z MpiConfiguration, PyTorchConfiguration nebo TensorFlowConfiguration.
compute řetězec Název cílového výpočetního objektu, na který se má úloha spustit. Může se jednat buď o odkaz na existující výpočetní prostředky v pracovním prostoru (pomocí azureml:<compute_name> syntaxe), nebo local o určení místního spuštění. Poznámka: Úlohy v kanálu se nepodpořily local jako compute local
resources.instance_count integer Počet uzlů, které se mají použít pro úlohu. 1
resources.instance_type řetězec Typ instance, který se má použít pro úlohu. Platí pro úlohy spuštěné na výpočetních prostředcích Kubernetes s podporou Azure Arc (kde cílový výpočetní objekt zadaný v compute poli je ).type: kubernentes Pokud tento parametr vynecháte, použije se výchozí typ instance pro cluster Kubernetes. Další informace najdete v tématu Vytvoření a výběr typů instancí Kubernetes.
resources.shm_size řetězec Velikost bloku sdílené paměti kontejneru Dockeru Mělo by to být ve formátu <number><unit> , kde číslo musí být větší než 0 a jednotka může být jedna z b hodnot (bajty), k (kilobajty), m (megabajty) nebo g (gigabajty). 2g
limits.timeout integer Maximální doba v sekundách, po kterou může úloha běžet. Po dosažení tohoto limitu systém úlohu zruší.
inputs object Slovník vstupů pro úlohu Klíč je název pro vstup v kontextu úlohy a hodnota je vstupní hodnota.

Na vstupy je možné odkazovat pomocí command výrazu ${{ inputs.<input_name> }} .
inputs.<input_name> číslo, celé číslo, logická hodnota, řetězec nebo objekt Jedna z hodnot literálu (typu číslo, celé číslo, logická hodnota nebo řetězec) nebo objekt obsahující specifikaci vstupních dat úlohy.
outputs object Slovník výstupních konfigurací úlohy. Klíč je název výstupu v kontextu úlohy a hodnota je konfigurace výstupu.

Na výstupy lze odkazovat v příkazu command pomocí výrazu ${{ outputs.<output_name> }} .
outputs.<output_name> object Objekt můžete nechat prázdný. Ve výchozím nastavení bude výstup typu uri_folder a Azure Machine Learning pro výstup vygeneruje umístění výstupu systémem. Soubory do výstupního adresáře se zapíšou přes připojení pro čtení i zápis. Pokud chcete pro výstup zadat jiný režim, zadejte objekt obsahující specifikaci výstupu úlohy.
identity object Identita se používá pro přístup k datům. Může to být UserIdentityConfiguration, ManagedIdentityConfiguration nebo None. Pokud se jedná o UserIdentityConfiguration, použije se identita odesílatele úlohy pro přístup ke vstupním datům a zápisu výsledku do výstupní složky, jinak se použije spravovaná identita cílového výpočetního objektu.

Konfigurace distribuce

Konfigurace mpi

Klíč Typ Popis Povolené hodnoty
type const Povinná hodnota. Typ distribuce. mpi
process_count_per_instance integer Povinná hodnota. Počet procesů na uzel, které se mají spustit pro úlohu.

Konfigurace PyTorch

Klíč Typ Popis Povolené hodnoty Výchozí hodnota
type const Povinná hodnota. Typ distribuce. pytorch
process_count_per_instance integer Počet procesů na uzel, které se mají spustit pro úlohu. 1

TensorFlowConfiguration

Klíč Typ Popis Povolené hodnoty Výchozí hodnota
type const Povinná hodnota. Typ distribuce. tensorflow
worker_count integer Počet pracovních procesů, které se mají spustit pro úlohu. Výchozí hodnota je resources.instance_count.
parameter_server_count integer Počet serverů parametrů, které se mají spustit pro úlohu. 0

Vstupy úloh

Klíč Typ Popis Povolené hodnoty Výchozí hodnota
type řetězec Typ vstupu úlohy. Zadejte uri_file pro vstupní data, která odkazují na jeden zdroj souboru, nebo uri_folder pro vstupní data, která odkazují na zdroj složky. uri_file, uri_folder, mlflow_model, custom_model uri_folder
path řetězec Cesta k datům, která se mají použít jako vstup. Můžete ho zadat několika způsoby:

– Místní cesta k souboru nebo složce zdroje dat, například path: ./iris.csv. Data se nahrají během odesílání úlohy.

– Identifikátor URI cloudové cesty k souboru nebo složce, který se použije jako vstup. Podporované typy identifikátorů URI jsou azureml, https, wasbs, abfss, . adl Další informace o tom, jak používat formát identifikátoru URI, najdete v azureml:// tématu Základní syntaxe YAML.

– Existující zaregistrovaný datový asset 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 (pro odkazování na nejnovější verzi tohoto datového assetu), například path: azureml:cifar10-data:1 nebo path: azureml:cifar10-data@latest.
mode řetězec Režim doručení dat do cílového výpočetního objektu

U připojení jen pro čtení (ro_mount) se data spotřebují jako cesta pro 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í.

V download režimu 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 jenom adresu URL umístění úložiště artefaktů dat, můžete použít direct režim . Tím se předá adresa URL umístění úložiště jako vstup úlohy. Všimněte si, že v tomto případě plně zodpovídáte za zpracování přihlašovacích údajů pro přístup k úložišti.

eval_mount Režimy a eval_download jsou jedinečné pro MLTable a buď data připojí jako cestu, nebo je stáhne do cílového výpočetního objektu.

Další informace o režimech najdete v tématu Přístup k datům v úloze.
ro_mount, download, direct, eval_download, eval_mount ro_mount

Výstupy úloh

Klíč Typ Popis Povolené hodnoty Výchozí hodnota
type řetězec Typ výstupu úlohy. U výchozího uri_folder typu bude výstup odpovídat složce. uri_folder , mlflow_model, custom_model uri_folder
mode řetězec 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ím adresářem připojený adresář. V režimu nahrávání se zapsané soubory nahrají na konci úlohy. rw_mount, upload rw_mount

Konfigurace identit

UserIdentityConfiguration

Klíč Typ Popis Povolené hodnoty
type const Povinná hodnota. Typ identity. user_identity

ManagedIdentityConfiguration

Klíč Typ Popis Povolené hodnoty
type const Povinná hodnota. Typ identity. managed nebo managed_identity

Poznámky

Příkaz az ml job je možné použít ke správě úloh služby Azure Machine Learning.

Příklady

Příklady jsou k dispozici v ukázkovém úložišti GitHub. Níže je jich několik.

YAML: hello world

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: library/python:latest

YAML: zobrazovaný název, název experimentu, popis a značky

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: library/python:latest
tags:
  hello: world
display_name: hello-world-example
experiment_name: hello-world-example
description: |
  # Azure Machine Learning "hello world" job

  This is a "hello world" job running in the cloud via Azure Machine Learning!

  ## Description

  Markdown is supported in the studio for job descriptions! You can edit the description there or via CLI.

YAML: proměnné prostředí

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo $hello_env_var
environment:
  image: library/python:latest
environment_variables:
  hello_env_var: "hello world"

YAML: zdrojový kód

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
  image: library/python:latest

YAML: literální vstupy

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  echo ${{inputs.hello_string}}
  echo ${{inputs.hello_number}}
environment:
  image: library/python:latest
inputs:
  hello_string: "hello world"
  hello_number: 42

YAML: zápis do výchozích výstupů

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
  image: library/python:latest

YAML: zápis do výstupu pojmenovaných dat

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ${{outputs.hello_output}}/helloworld.txt
outputs:
  hello_output:
environment:
  image: python

YAML: vstup souboru URI úložiště dat

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  echo "--iris-csv: ${{inputs.iris_csv}}"
  python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
  iris_csv:
    type: uri_file 
    path: azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: vstup složky URI úložiště dat

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  ls ${{inputs.data_dir}}
  echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
  python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
  data_dir:
    type: uri_folder 
    path: azureml://datastores/workspaceblobstore/paths/example-data/
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: Vstup souboru URI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  echo "--iris-csv: ${{inputs.iris_csv}}"
  python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
  iris_csv:
    type: uri_file 
    path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: Vstup složky URI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  ls ${{inputs.data_dir}}
  echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
  python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
  data_dir:
    type: uri_folder 
    path: wasbs://datasets@azuremlexamples.blob.core.windows.net/
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: Poznámkový blok prostřednictvím papírny

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
  pip install ipykernel papermill
  papermill hello-notebook.ipynb outputs/out.ipynb -k python
code: src
environment:
  image: library/python:3.11.6

YAML: základní trénování modelu Pythonu

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python main.py 
  --iris-csv ${{inputs.iris_csv}}
  --C ${{inputs.C}}
  --kernel ${{inputs.kernel}}
  --coef0 ${{inputs.coef0}}
inputs:
  iris_csv: 
    type: uri_file
    path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
  C: 0.8
  kernel: "rbf"
  coef0: 0.1
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
compute: azureml:cpu-cluster
display_name: sklearn-iris-example
experiment_name: sklearn-iris-example
description: Train a scikit-learn SVM on the Iris dataset.

YAML: základní trénování modelu R s využitím místního kontextu sestavení Dockeru

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
  Rscript train.R 
  --data_folder ${{inputs.iris}}
code: src
inputs:
  iris: 
    type: uri_file
    path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
  build:
    path: docker-context
compute: azureml:cpu-cluster
display_name: r-iris-example
experiment_name: r-iris-example
description: Train an R model on the Iris dataset.

YAML: distribuovaný PyTorch

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
  --learning-rate ${{inputs.learning_rate}}
  --data-dir ${{inputs.cifar}}
inputs:
  epochs: 1
  learning_rate: 0.2
  cifar:
     type: uri_folder
     path: azureml:cifar-10-example@latest
environment: azureml:AzureML-acpt-pytorch-1.13-cuda11.7@latest
compute: azureml:gpu-cluster
distribution:
  type: pytorch
  process_count_per_instance: 1
resources:
  instance_count: 2
display_name: pytorch-cifar-distributed-example
experiment_name: pytorch-cifar-distributed-example
description: Train a basic convolutional neural network (CNN) with PyTorch on the CIFAR-10 dataset, distributed via PyTorch.

YAML: distribuovaný TensorFlow

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
  --model-dir ${{inputs.model_dir}}
inputs:
  epochs: 1
  model_dir: outputs/keras-model
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: tensorflow
  worker_count: 2
display_name: tensorflow-mnist-distributed-example
experiment_name: tensorflow-mnist-distributed-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via TensorFlow.

YAML: distribuované MPI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
inputs:
  epochs: 1
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: mpi
  process_count_per_instance: 1
display_name: tensorflow-mnist-distributed-horovod-example
experiment_name: tensorflow-mnist-distributed-horovod-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via Horovod.

Další kroky