YAML-schema voor CLI-opdrachttaak (v2)

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)

Het JSON-bronschema vindt u op https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.

Notitie

De YAML-syntaxis die in dit document wordt beschreven, is gebaseerd op het JSON-schema voor de nieuwste versie van de ML CLI v2-extensie. Deze syntaxis werkt gegarandeerd alleen met de nieuwste versie van de ML CLI v2-extensie. U vindt de schema's voor oudere extensieversies op https://azuremlschemasprod.azureedge.net/.

YAML-syntaxis

Sleutel Type Beschrijving Toegestane waarden Standaardwaarde
$schema tekenreeks Het YAML-schema. Als u de Azure Machine Learning VS Code-extensie gebruikt om het YAML-bestand te maken, kunt $schema u ook bovenaan het bestand schema- en resourcevoltooiingen aanroepen.
type Const Het type taak. command command
name tekenreeks Naam van de taak. Moet uniek zijn voor alle taken in de werkruimte. Als u dit weglaat, wordt in Azure Machine Learning automatisch een GUID voor de naam gegenereerd.
display_name tekenreeks Weergavenaam van de taak in de gebruikersinterface van Studio. Kan niet uniek zijn binnen de werkruimte. Als u dit weglaat, wordt in Azure Machine Learning automatisch een door mensen leesbare id voor bijvoeglijke naamwoorden voor de weergavenaam gegenereerd.
experiment_name tekenreeks De naam van het experiment om de taak onder te organiseren. De uitvoeringsrecord van elke taak wordt geordend onder het bijbehorende experiment op het tabblad Experimenten van de studio. Als u dit weglaat, wordt azure machine learning standaard ingesteld op de naam van de werkmap waarin de taak is gemaakt.
description tekenreeks Beschrijving van de taak.
tags object Woordenlijst met tags voor de taak.
command tekenreeks Vereist (als u geen veld gebruikt component ). De opdracht die moet worden uitgevoerd.
code tekenreeks Lokaal pad naar de broncodemap die moet worden geüpload en gebruikt voor de taak.
environment tekenreeks of object Vereist (als u geen veld gebruikt component ). De omgeving die voor de taak moet worden gebruikt. Dit kan een verwijzing zijn naar een bestaande omgeving met versiebeheer in de werkruimte of een inline-omgevingsspecificatie.

Als u naar een bestaande omgeving wilt verwijzen, gebruikt u de azureml:<environment_name>:<environment_version> syntaxis of azureml:<environment_name>@latest (om te verwijzen naar de nieuwste versie van een omgeving).

Als u een omgeving inline wilt definiëren, volgt u het omgevingsschema. Sluit de name eigenschappen en version uit omdat deze niet worden ondersteund voor inline-omgevingen.
environment_variables object Woordenlijst van omgevingsvariabele-sleutel-waardeparen die moeten worden ingesteld voor het proces waarin de opdracht wordt uitgevoerd.
distribution object De distributieconfiguratie voor gedistribueerde trainingsscenario's. Een van MpiConfiguration, PyTorchConfiguration of TensorFlowConfiguration.
compute tekenreeks Naam van het rekendoel waarop de taak moet worden uitgevoerd. Dit kan een verwijzing zijn naar een bestaande berekening in de werkruimte (met behulp van de azureml:<compute_name> syntaxis) of local om lokale uitvoering aan te wijzen. Opmerking: taken in de pijplijn bieden geen ondersteuning voor localcompute local
resources.instance_count geheel getal Het aantal knooppunten dat voor de taak moet worden gebruikt. 1
resources.instance_type tekenreeks Het exemplaartype dat voor de taak moet worden gebruikt. Van toepassing op taken die worden uitgevoerd op Kubernetes-berekeningen met Azure Arc (waarbij het opgegeven rekendoel in het compute veld is van type: kubernentes). Als u dit weglaat, wordt standaard het standaardexemplarentype voor het Kubernetes-cluster gebruikt. Zie Kubernetes-exemplaartypen maken en selecteren voor meer informatie.
resources.shm_size tekenreeks De grootte van het gedeelde geheugenblok van de Docker-container. Dit moet de notatie <number><unit> hebben waarbij getal groter moet zijn dan 0 en de eenheid een van b (bytes), (kilobytes), km (megabytes) of g (gigabytes) kan zijn. 2g
limits.timeout geheel getal De maximale tijd in seconden die de taak mag uitvoeren. Zodra deze limiet is bereikt, annuleert het systeem de taak.
inputs object Woordenlijst met invoer voor de taak. De sleutel is een naam voor de invoer binnen de context van de taak en de waarde is de invoerwaarde.

Naar invoer kan worden verwezen in de command met behulp van de ${{ inputs.<input_name> }} expressie.
inputs.<input_name> getal, geheel getal, booleaanse waarde, tekenreeks of object Een van een letterlijke waarde (van het type getal, geheel getal, booleaanse waarde of tekenreeks) of een object met een taakinvoergegevensspecificatie.
outputs object Woordenlijst met uitvoerconfiguraties van de taak. De sleutel is een naam voor de uitvoer binnen de context van de taak en de waarde is de uitvoerconfiguratie.

Naar uitvoer kan worden verwezen in de command met behulp van de ${{ outputs.<output_name> }} expressie.
outputs.<output_name> object U kunt het object leeg laten. In dat geval is de uitvoer standaard van het type uri_folder en genereert Azure Machine Learning in het systeem een uitvoerlocatie voor de uitvoer. Bestand(en) naar de uitvoermap worden geschreven via lees-schrijfkoppeling. Als u een andere modus voor de uitvoer wilt opgeven, geeft u een object op dat de taakuitvoerspecificatie bevat.
identity object De identiteit wordt gebruikt voor toegang tot gegevens. Dit kan UserIdentityConfiguration, ManagedIdentityConfiguration of None zijn. Als het UserIdentityConfiguration is, wordt de identiteit van de taakinzender gebruikt voor toegang tot invoergegevens en het schrijven van resultaten naar de uitvoermap. Anders wordt de beheerde identiteit van het rekendoel gebruikt.

Distributieconfiguraties

MpiConfiguration

Sleutel Type Beschrijving Toegestane waarden
type Const Vereist. Distributietype. mpi
process_count_per_instance geheel getal Vereist. Het aantal processen per knooppunt dat voor de taak moet worden gestart.

PyTorchConfiguration

Sleutel Type Beschrijving Toegestane waarden Standaardwaarde
type Const Vereist. Distributietype. pytorch
process_count_per_instance geheel getal Het aantal processen per knooppunt dat voor de taak moet worden gestart. 1

TensorFlowConfiguration

Sleutel Type Beschrijving Toegestane waarden Standaardwaarde
type Const Vereist. Distributietype. tensorflow
worker_count geheel getal Het aantal werkrollen dat voor de taak moet worden gestart. De standaardwaarde is resources.instance_count.
parameter_server_count geheel getal Het aantal parameterservers dat voor de taak moet worden gestart. 0

Taakinvoer

Sleutel Type Beschrijving Toegestane waarden Standaardwaarde
type tekenreeks Het type taakinvoer. Geef uri_file op voor invoergegevens die naar één bestandsbron verwijst of uri_folder voor invoergegevens die naar een mapbron verwijst. uri_file, uri_folder, mlflow_model, custom_model uri_folder
path tekenreeks Het pad naar de gegevens die als invoer moeten worden gebruikt. Dit kan op een aantal manieren worden opgegeven:

- Een lokaal pad naar het gegevensbronbestand of de gegevensbronmap, bijvoorbeeld path: ./iris.csv. De gegevens worden geüpload tijdens het indienen van de taak.

- Een URI van een cloudpad naar het bestand of de map die als invoer moet worden gebruikt. Ondersteunde URI-typen zijn azureml, https, wasbs, abfss, adl. Zie Core yaml syntaxis voor meer informatie over het gebruik van de azureml:// URI-indeling.

- Een bestaande geregistreerde Azure Machine Learning-gegevensasset die als invoer moet worden gebruikt. Als u wilt verwijzen naar een geregistreerde gegevensasset, gebruikt u de azureml:<data_name>:<data_version> syntaxis of azureml:<data_name>@latest (om te verwijzen naar de nieuwste versie van dat gegevensasset), bijvoorbeeld path: azureml:cifar10-data:1 of path: azureml:cifar10-data@latest.
mode tekenreeks Modus voor de manier waarop de gegevens moeten worden geleverd aan het rekendoel.

Voor alleen-lezen koppelen (ro_mount) worden de gegevens gebruikt als een koppelingspad. Een map wordt gekoppeld als een map en een bestand als een bestand. Azure Machine Learning lost de invoer op het koppelingspad op.

Voor download de modus worden de gegevens gedownload naar het rekendoel. Azure Machine Learning lost de invoer op het gedownloade pad op.

Als u alleen de URL van de opslaglocatie van de gegevensartefacten wilt in plaats van de gegevens zelf te koppelen of te downloaden, kunt u de direct modus gebruiken. Hiermee wordt de URL van de opslaglocatie doorgegeven als de taakinvoer. Houd er rekening mee dat u in dit geval volledig verantwoordelijk bent voor het verwerken van referenties voor toegang tot de opslag.

De eval_mount modi en eval_download zijn uniek voor MLTable en koppelt de gegevens als een pad of downloadt de gegevens naar het rekendoel.

Zie Gegevens in een taak openen voor meer informatie over modi
ro_mount, download, direct, eval_download, eval_mount ro_mount

Taakuitvoer

Sleutel Type Beschrijving Toegestane waarden Standaardwaarde
type tekenreeks Het type taakuitvoer. Voor het standaardtype uri_folder komt de uitvoer overeen met een map. uri_folder , mlflow_model, custom_model uri_folder
mode tekenreeks Modus van hoe uitvoerbestand(en) worden geleverd aan de doelopslag. Voor de koppelingsmodus lezen/schrijven (rw_mount) is de uitvoermap een gekoppelde map. Voor de uploadmodus worden de geschreven bestanden aan het einde van de taak geüpload. rw_mount, upload rw_mount

Identiteitsconfiguraties

UserIdentityConfiguration

Sleutel Type Beschrijving Toegestane waarden
type Const Vereist. Identiteitstype. user_identity

ManagedIdentityConfiguration

Sleutel Type Beschrijving Toegestane waarden
type Const Vereist. Identiteitstype. managed of managed_identity

Opmerkingen

De az ml job opdracht kan worden gebruikt voor het beheren van Azure Machine Learning-taken.

Voorbeelden

Voorbeelden zijn beschikbaar in de GitHub-voorbeeldopslagplaats. Hieronder worden er verschillende weergegeven.

YAML: hallo wereld

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

YAML: weergavenaam, experimentnaam, beschrijving en tags

$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: omgevingsvariabelen

$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: broncode

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

YAML: letterlijke invoer

$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: schrijven naar standaarduitvoer

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

YAML: schrijven naar benoemde gegevensuitvoer

$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: URI-bestandsinvoer voor gegevensarchief

$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: URI-mapinvoer voor gegevensarchief

$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: invoer van URI-bestand

$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: URI-mapinvoer

$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: Notebook via papiermachine

$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: basistraining voor Python-modellen

$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: basistraining voor R-modellen met lokale Docker-buildcontext

$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: gedistribueerde 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-pytorch-1.9-ubuntu18.04-py37-cuda11-gpu@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: gedistribueerde 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.4-ubuntu18.04-py37-cuda11-gpu@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: gedistribueerde 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.7-ubuntu20.04-py38-cuda11-gpu@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.

Volgende stappen