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_folder mlflow_model custom_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 , , download direct , , eval_download eval_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_model custom_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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für