Freigeben über


CLI (v2) Befehlsauftrag YAML-Schema

GILT FÜR:Azure CLI ml-Erweiterung v2 (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 Typ BESCHREIBUNG Zulässige Werte Standardwert
$schema Schnur 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 Schnur Name des Auftrags. Muss für alle Aufträge im Arbeitsbereich eindeutig sein. Falls nicht angegeben, generiert Azure Machine Learning automatisch eine GUID für den Namen.
display_name Schnur Der Anzeigename des Auftrags auf der Studio-Benutzeroberfläche. Kann innerhalb des Arbeitsbereichs uneindeutig sein. Falls nicht angegeben, generiert Azure Machine Learning als Anzeigename automatisch einen für Menschen lesbaren Bezeichner aus Adjektiv und Nomen.
experiment_name Schnur Der Experimentname zum Organisieren des Auftrags. Jeder Auftragslaufdatensatz wird unter dem entsprechenden Experiment auf der Registerkarte "Experimente" des Studios organisiert. Wenn dieser Parameter nicht angegeben wird, verwendet Azure Machine Learning standardmäßig den Namen des Arbeitsverzeichnisses, in dem der Auftrag erstellt wurde.
description Schnur Die Beschreibung des Auftrags
tags Objekt Das Wörterbuch der Tags für den Auftrag
command Schnur Der auszuführende Befehl.
code Schnur Lokaler Pfad zum Quellcodeverzeichnis, das hochgeladen und für den Auftrag verwendet werden soll.
environment Zeichenfolge oder Objekt Die Umgebung, die für den Auftrag verwendet werden soll. Kann entweder ein Verweis auf eine vorhandene versionsierte Umgebung im Arbeitsbereich oder eine Inlineumgebungsspezifikation 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, folgen Sie dem Umgebungsschema. Schließen Sie die Eigenschaften name und version aus, da sie für Inline-Umgebungen nicht unterstützt werden.

Wenn Sie mit kuratierten Umgebungen in der CLI oder dem SDK arbeiten, beginnen kuratierte Umgebungsnamen mit AzureML-. Wenn Sie das Azure Machine Learning-Studio verwenden, weisen die kuratierten Umgebungsnamen dieses Präfix nicht auf. Der Grund für diesen Unterschied ist, dass die Studio-Benutzeroberfläche kuratierte und benutzerdefinierte Umgebungen auf separaten Tabs anzeigt, sodass das Präfix nicht notwendig ist. Das CLI und das SDK haben diese Trennung nicht, daher wird das Präfix verwendet, um zwischen kuratierten und benutzerdefinierten Umgebungen zu unterscheiden.
environment_variables Objekt 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 Die Verteilungskonfiguration für verteilte Trainingsszenarien Eine von MpiConfiguration, PyTorchConfigurationoder TensorFlowConfiguration.
compute Schnur Name des Computeziels, auf dem der Auftrag ausgeführt werden soll. Dabei kann es sich entweder um einen Verweis auf eine vorhandene Berechnung im Arbeitsbereich (mithilfe der azureml:<compute_name> Syntax) oder local um die lokale Ausführung festlegen. Hinweis: Aufträge in der Pipeline wurden nicht unterstützt local wie compute local
resources.instance_count Integer Die Anzahl von Knoten, die für den Auftrag verwendet werden sollen. 1
resources.instance_type Schnur Der Instanztyp, der für den Auftrag verwendet werden soll. Gilt für Aufträge, die auf Azure Arc-fähigen Kubernetes-Compute ausgeführt werden (wobei das im compute Feld angegebene Computeziel von type: kubernentes). Wenn diese Angabe nicht angegeben wird, 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 Schnur Die Größe des freigegebenen Speicherblocks des Docker-Containers. Sollte das Format <number><unit> aufweisen, in dem die Zahl größer als 0 sein muss, und die Einheit kann eine von b (Bytes), k (Kilobyte), m (Megabyte) oder g (Gigabyte) sein. 2g
limits.timeout Integer Die maximale Zeit in Sekunden, die der Auftrag ausführen darf. Wenn dieser Grenzwert erreicht ist, bricht das System den Auftrag ab.
inputs Objekt 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 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 und uri_folder Azure Machine Learning generiert einen Ausgabespeicherort für die Ausgabe. Dateien in das Ausgabeverzeichnis werden über die Bereitstellung 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 Die Identität wird für den Datenzugriff verwendet. Dies kann "UserIdentityConfiguration", "ManagedIdentityConfiguration" oder "None" sein. Wenn UserIdentityConfiguration, die Identität des Auftragszusendes verwendet wird, um auf Den Ausgabeordner zuzugreifen, Eingabedaten und Schreibergebnisse zu schreiben, andernfalls wird die verwaltete Identität des Computeziels verwendet.

Verteilungskonfigurationen

MpiConfiguration

Schlüssel Typ 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 Typ 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 Typ 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 Typ BESCHREIBUNG Zulässige Werte Standardwert
type Schnur 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 Schnur Der Pfad zu den Daten, die als Eingabe verwendet werden sollen. 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 core yaml-Syntax.

– 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 Schnur Modus, in dem die Daten an das Computeziel übermittelt werden sollen.

Für die schreibgeschützte Bereitstellung (ro_mount) werden die Daten als Bereitstellungspfad verwendet. Ein Ordner wird als Ordner bereitgestellt, und eine Datei wird als Datei bereitgestellt. Azure Machine Learning löst die Eingabe in den Bereitstellungspfad auf.

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

Wenn Sie nur die URL des Speicherorts der Datenartefakte verwenden möchten, anstatt die Daten selbst zu installieren oder herunterzuladen, können Sie den direct Modus verwenden. Dieser Modus übergibt die URL des Speicherorts als Auftragseingabe. In diesem Fall sind Sie vollständig für die Handhabung der Anmeldeinformationen für den Zugriff auf den Speicher verantwortlich.

Die eval_mount Modi eval_download sind für MLTable eindeutig und stellen entweder die Daten als Pfad bereit oder laden die Daten in das Computeziel herunter.

Weitere Informationen zu Modi finden Sie unter Access-Daten in einem Auftrag.
ro_mount, , downloaddirect, , eval_downloadeval_mount ro_mount

Auftragsausgaben

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

Identitätskonfigurationen

UserIdentityConfiguration

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

ManagedIdentityConfiguration

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

Bemerkungen

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

Beispiele

Beispiele finden Sie im GitHub-Beispielrepository. In den folgenden Abschnitten sind einige beispiele aufgeführt.

YAML: Hello World

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

$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 von Datenspeicher-URI-Dateien

$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.5/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.5/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.5/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.5/labels/latest

YAML: Notizbuch über Papiermühle

$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: grundlegende Python-Modellschulung

$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.5/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: grundlegende R-Modellschulung mit lokalem Docker-Buildkontext

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
  source /usr/venv/bin/activate
  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: verteilter 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-2.2-cuda12.1@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: distributed 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.16-cuda12@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.

Nächste Schritte