Teilen über


YAML-Schema für Befehlsaufträge der CLI (v2)

GILT FÜR:Azure CLI-ML-Erweiterungv2 (aktuell)

Das JSON-Quellschema finden Sie unter https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.

Hinweis

Die in diesem Dokument beschriebene YAML-Syntax basiert auf dem JSON-Schema für die neueste Version der ML CLI v2-Erweiterung. Die Funktion dieser Syntax wird nur mit der neuesten Version der ML CLI v2-Erweiterung garantiert. Die Schemas für ältere Erweiterungsversionen finden Sie unter https://azuremlschemasprod.azureedge.net/.

YAML-Syntax

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
$schema Zeichenfolge Das YAML-Schema. Wenn Sie die VS Code-Erweiterung für Azure Machine Learning zum Erstellen einer YAML-Datei verwenden, können Sie durch das Einfügen von $schema am Anfang der Datei Schema- und Ressourcenvervollständigungen aufrufen.
type const Typ des Auftrags. command command
name Zeichenfolge Der Name des Auftrags. Muss für alle Aufträge im Arbeitsbereich eindeutig sein. Wenn hier nichts angegeben wird, generiert Azure Machine Learning automatisch eine GUID für den Namen.
display_name Zeichenfolge Der Anzeigename des Auftrags auf der Studio-Benutzeroberfläche. Kann innerhalb des Arbeitsbereichs nicht eindeutig sein. Wenn hier nichts angegeben wird, generiert Azure Machine Learning automatisch einen für Menschen lesbaren Bezeichner für den Anzeigenamen.
experiment_name Zeichenfolge Der Experimentname zum Organisieren des Auftrags. Die Ausführungsaufzeichnung jedes Auftrags wird auf der Studio-Registerkarte „Experimente“ unter dem entsprechenden Experiment eingeordnet. Wenn hier nichts angegeben wird, verwendet Azure Machine Learning standardmäßig den Namen des Arbeitsverzeichnisses, in dem der Auftrag erstellt wurde.
description Zeichenfolge Die Beschreibung des Auftrags
tags Objekt (object) Wörterbuch der Tags für den Auftrag.
command Zeichenfolge Erforderlich (wenn das Feld component nicht verwendet wird). Den auszuführenden Befehl.
code Zeichenfolge Lokaler Pfad zum Quellcodeverzeichnis, das hochgeladen und für den Auftrag verwendet werden soll.
environment Zeichenfolge oder Objekt Erforderlich (wenn das Feld component nicht verwendet wird). Die Umgebung, die für den Auftrag verwendet werden soll. Dies kann entweder ein Verweis auf eine vorhandene Umgebung mit Versionsangabe im Arbeitsbereich oder eine Inline-Umgebungsspezifikation sein.

Um auf eine vorhandene Umgebung zu verweisen, verwenden Sie die Syntax azureml:<environment_name>:<environment_version> oder azureml:<environment_name>@latest (um auf die neueste Version einer Umgebung zu verweisen).

Um eine Umgebung inline zu definieren, befolgen Sie das Umgebungsschema. Schließen Sie die Eigenschaften name und version aus, da sie für Inlineumgebungen nicht unterstützt werden.
environment_variables Objekt (object) Wörterbuch der Name-Wert-Paare von Umgebungsvariablen, die für den Prozess festgelegt werden sollen, in dem der Befehl ausgeführt wird.
distribution Objekt (object) Die Verteilungskonfiguration für verteilte Trainingsszenarien Eine von MpiConfiguration,PyTorchConfigurationoder TensorFlowConfiguration.
compute Zeichenfolge Name des Computeziels, auf dem der Auftrag ausgeführt werden soll. Dies kann entweder ein Verweis auf ein vorhandenes Compute im Arbeitsbereich (mithilfe der Syntax azureml:<compute_name>) oder local zum Festlegen der lokalen Ausführung sein. Hinweis: Aufträge in der Pipeline unterstützen local als compute nicht. local
resources.instance_count integer Die Anzahl von Knoten, die für den Auftrag verwendet werden sollen. 1
resources.instance_type Zeichenfolge Der Instanztyp, der für den Auftrag verwendet werden soll. Gilt für Aufträge, die auf Kubernetes-Computezielen mit Azure Arc-Unterstützung ausgeführt werden (bei denen das Computeziel im Feld compute auf type: kubernentes festgelegt ist). Wenn keine Angabe erfolgt, wird standardmäßig der Standardinstanztyp für den Kubernetes-Cluster verwendet. Weitere Informationen finden Sie unter Erstellen und Auswählen von Kubernetes-Instanztypen.
resources.shm_size Zeichenfolge Die Größe des freigegebenen Speicherblocks des Docker-Containers. Diese sollte im Format <number><unit> angegeben sein, wobei die Zahl größer als 0 sein und die Einheit b (Byte), k (Kilobyte), m (Megabyte) oder g (Gigabyte) lauten muss. 2g
limits.timeout integer Die maximale Zeit in Sekunden, die der Auftrag ausgeführt werden darf. Sobald dieser Grenzwert erreicht ist, bricht das System den Auftrag ab.
inputs Objekt (object) Wörterbuch der Eingaben für den Auftrag. Der Schlüssel ist ein Name für die Eingabe im Kontext des Auftrags, und der Wert ist der Eingabewert.

Eingaben können im command mit dem Ausdruck ${{ inputs.<input_name> }} verwiesen werden.
inputs.<input_name> number, integer, boolean, string oder object Ein Literalwert (vom Typ Zahl, Integer, boolescher Wert oder Zeichenfolge) oder ein Objekt, das eine Datenspezifikation für Auftragseingaben enthält.
outputs Objekt (object) Wörterbuch der Ausgabekonfigurationen des Auftrags. Der Schlüssel ist ein Name für die Ausgabe im Kontext des Auftrags, und der Wert ist die Ausgabekonfiguration.

Ausgaben können im command mit dem Ausdruck ${{ outputs.<output_name> }} verwiesen werden.
outputs.<output_name> Objekt Sie können das Objekt leer lassen. In diesem Fall ist die Ausgabe standardmäßig vom Typ uri_folder, und Azure Machine Learning generiert systemseitig einen Ausgabespeicherort für die Ausgabe. Die Dateien im Ausgabeverzeichnis wird über die Einbindung mit Lese-/Schreibzugriff geschrieben. Wenn Sie einen anderen Modus für die Ausgabe angeben möchten, stellen Sie ein Objekt bereit, das die Auftragsausgabespezifikation enthält.
identity Objekt (object) Die Identität wird für den Datenzugriff verwendet. Dafür kann UserIdentityConfiguration, ManagedIdentityConfiguration oder „Kein“ verwendet werden. Bei UserIdentityConfiguration wird die Identität des Auftragsübermittlers verwendet, um auf Eingabedaten zuzugreifen und das Ergebnis in den Ausgabeordner zu schreiben. Andernfalls wird die verwaltete Identität des Computeziels verwendet.

Verteilungskonfigurationen

MpiConfiguration

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Verteilungstyp. mpi
process_count_per_instance integer Erforderlich. Die Anzahl der Prozesse pro Knoten, die für den Auftrag gestartet werden sollen

PyTorchConfiguration

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type const Erforderlich. Verteilungstyp. pytorch
process_count_per_instance integer Die Anzahl der Prozesse pro Knoten, die für den Auftrag gestartet werden sollen 1

TensorFlowConfiguration

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type const Erforderlich. Verteilungstyp. tensorflow
worker_count integer Die Anzahl von Workerrollen, die für den Auftrag gestartet werden. Wird standardmäßig auf resources.instance_count festgelegt.
parameter_server_count integer Die Anzahl von Parameterservern, die für den Auftrag gestartet werden. 0

Auftragseingaben

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type Zeichenfolge Der Typ der Auftragseingabe. Geben Sie für Eingabedaten, die auf eine einzelne Dateiquelle verweisen, uri_file und für Eingabedaten, die auf eine Ordnerquelle verweisen, uri_folder an. uri_file, , uri_foldermlflow_modelcustom_model uri_folder
path Zeichenfolge Der Pfad zu den Daten, die als Eingabe verwendet werden sollen. Dies kann auf verschiedene Arten angegeben werden:

- Ein lokaler Pfad zur Datenquellendatei oder zum Datenquellenordner, z. B. path: ./iris.csv. Die Daten werden während der Auftragsübermittlung hochgeladen.

- Ein URI eines Cloudpfads zur Datei oder zum Ordner, die bzw. der als Eingabe verwendet werden soll. Unterstützte URI-Typen sind azureml, https, wasbs, abfss und adl. Weitere Informationen zur Verwendung des azureml://-URI-Formats finden Sie unter YAML-Kernsyntax.

– Ein vorhandenes registriertes Azure Machine Learning-Datenobjekt, das als Eingabe verwendet werden soll. Um auf eine registriertes Datenressource zu verweisen, verwenden Sie die Syntax azureml:<data_name>:<data_version> oder azureml:<data_name>@latest (um auf die neueste Version dieser Datenressource zu verweisen), z. B. path: azureml:cifar10-data:1 oder path: azureml:cifar10-data@latest.
mode Zeichenfolge Modus, in dem die Daten an das Computeziel übermittelt werden sollen.

Bei einer schreibgeschützten Einbindung (ro_mount) werden die Daten als Einbindungspfad verwendet. Ein Ordner wird als Ordner eingebunden, und eine Datei wird als Datei eingebunden. Azure Machine Learning löst die Eingabe in den Bereitstellungspfad auf.

Für den Modus download werden die Daten auf das Computeziel heruntergeladen. Azure Machine Learning löst die Eingabe in den Downloadpfad auf.

Wenn Sie nur die URL des Speicherorts der Datenartefakte angeben möchten, anstatt die Daten selbst einzubinden oder herunterzuladen, können Sie den Modus direct verwenden. Dadurch wird die URL des Speicherorts als Auftragseingabe übergeben. Beachten Sie, dass Sie in diesem Fall vollständig für die Behandlung der Anmeldeinformationen für den Zugriff auf den Speicher verantwortlich sind.

Die Modi eval_mount und eval_download sind für MLTable eindeutig und binden die Daten entweder als Pfad ein oder laden die Daten auf das Computeziel herunter.

Weitere Informationen zu den Modi finden Sie unter Zugreifen auf Daten in einem Auftrag.
ro_mount, , downloaddirect, , eval_downloadeval_mount ro_mount

Auftragsausgaben

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type Zeichenfolge Der Typ der Auftragsausgabe. Für den Standardtyp uri_folder entspricht die Ausgabe einem Ordner. uri_folder, mlflow_modelcustom_model uri_folder
mode Zeichenfolge Modus, wie Ausgabedateien an den Zielspeicher übermittelt werden. Für den Einbindungsmodus mit Lese-/Schreibzugriff (rw_mount) ist das Ausgabeverzeichnis ein eingebundenes Verzeichnis. Im Uploadmodus werden die geschriebenen Dateien am Ende des Auftrags hochgeladen. rw_mount, upload rw_mount

Identitätskonfigurationen

UserIdentityConfiguration

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Identitätstyp user_identity

ManagedIdentityConfiguration

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Identitätstyp managed oder managed_identity

Hinweise

Mit dem Befehl az ml job können Sie Azure Machine Learning-Aufträge verwalten.

Beispiele

Beispiele finden Sie im GitHub-Beispielrepository. Im Folgenden sind mehrere aufgeführt.

YAML: Hallo Welt

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

YAML: Anzeigename, Experimentname, Beschreibung und 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: Umgebungsvariablen

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

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

YAML: Literaleingaben

$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: Schreiben in Standardausgabe

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

YAML: Schreiben in benannte Datenausgabe

$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: Eingabe der Datenspeicher-URI-Datei

$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: Eingabe des Datenspeicher-URI-Ordners

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

$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-Ordnereingabe

$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 über Papermill

$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: Grundlegendes Python-Modelltraining

$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: Grundlegendes R-Modelltraining mit lokalem Docker-Buildkontext

$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: verteiltes 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: verteilter 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: verteiltes 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.

Nächste Schritte