YAML-Schema für Befehlsaufträge der CLI (v2)
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 | 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. Falls nicht angegeben, 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 uneindeutig sein. Falls nicht angegeben, generiert Azure Machine Learning als Anzeigename automatisch einen für Menschen lesbaren Bezeichner aus Adjektiv und Nomen. | ||
experiment_name |
Zeichenfolge | 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 |
Zeichenfolge | Die Beschreibung des Auftrags | ||
tags |
Objekt (object) | Wörterbuch der Tags für den Auftrag. | ||
command |
Zeichenfolge | Den auszuführenden Befehl. | ||
code |
Zeichenfolge | 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, befolgen Sie das Umgebungsschema. Schließen Sie die Eigenschaften name und version aus, da sie für Inline-Umgebungen nicht unterstützt werden. |
||
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 (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. 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 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 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 |
Zeichenfolge | 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 ausgeführt werden 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 (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 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 (object) | 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 | 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. 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. 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 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 | 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 | 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. In den folgenden Abschnitten sind einige beispiele 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.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: 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.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: Grundlegendes R-Modelltraining 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: 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-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: 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.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.