YAML-Schema der CLI-Befehlskomponente (v2)
GILT FÜR Azure CLI-ML-Erweiterung v2 (aktuell)
Das JSON-Quellschema finden Sie unter https://azuremlschemas.azureedge.net/latest/commandComponent.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 | Der Typ der Komponente. | command |
command |
name |
Zeichenfolge | Erforderlich. Der Name der Komponente. Muss mit einem Kleinbuchstaben beginnen. Zulässige Zeichen sind Kleinbuchstaben, Zahlen und Unterstriche (_). Die maximale Länge beträgt 255 Zeichen. | ||
version |
Zeichenfolge | Version der Komponente. Wenn hier nichts angegeben wird, generiert Azure Machine Learning automatisch eine Version. | ||
display_name |
Zeichenfolge | Anzeigename der Komponente auf der Studio-Benutzeroberfläche Kann innerhalb des Arbeitsbereichs auch nicht eindeutig sein | ||
description |
Zeichenfolge | Die Beschreibung der Komponente | ||
tags |
Objekt (object) | Wörterbuch der Tags für die Komponente | ||
is_deterministic |
boolean | Diese Option steuert, ob die Komponente die gleiche Ausgabe für die gleichen Eingabedaten erzeugt. Für Komponenten, die Daten aus externen Quellen laden (also beispielsweise Daten aus einer URL importieren) sollte diese Einstellung in der Regel auf false festgelegt werden. Der Grund ist, dass sich die Daten unter der URL im Laufe der Zeit ändern können. |
true |
|
command |
Zeichenfolge | Erforderlich. Den auszuführenden Befehl. | ||
code |
Zeichenfolge | Lokaler Pfad zum Quellcodeverzeichnis, das hochgeladen und für die Komponente verwendet werden soll | ||
environment |
Zeichenfolge oder Objekt | Erforderlich. Die Umgebung, die für die Komponente verwendet werden soll. Dieser Wert kann entweder ein Verweis auf eine vorhandene Umgebung mit Versionsangabe im Arbeitsbereich oder eine Inlineumgebungsspezifikation sein. Verwenden Sie die azureml:<environment-name>:<environment-version> Syntax, um auf eine vorhandene benutzerdefinierte Umgebung zu verweisen. Verwenden Sie die azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> Syntax, um auf eine kuratierte Umgebung zu verweisen. Weitere Informationen zum Verweisen auf Umgebungen finden Sie unter How to Manage Environments 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. |
||
distribution |
Objekt (object) | Die Verteilungskonfiguration für verteilte Trainingsszenarien Eine von MpiConfiguration, PyTorchConfigurationoder TensorFlowConfiguration. | ||
resources.instance_count |
integer | Die Anzahl von Knoten, die für den Auftrag verwendet werden sollen | 1 |
|
inputs |
Objekt (object) | Wörterbuch der Komponenteneingaben Der Schlüssel ist ein Name für die Eingabe im Kontext der Komponente, und der Wert ist die Komponenteneingabedefinition. Eingaben können im command mit dem Ausdruck ${{ inputs.<input_name> }} verwiesen werden. |
||
inputs.<input_name> |
Objekt (object) | Die Komponenteneingabedefinition Informationen zu den konfigurierbaren Eigenschaften finden Sie unter Komponenteneingabe. | ||
outputs |
Objekt (object) | Wörterbuch der Komponentenausgaben Der Schlüssel ist ein Name für die Ausgabe im Kontext der Komponente, und der Wert ist die Komponentenausgabedefinition. Ausgaben können im command mit dem Ausdruck ${{ outputs.<output_name> }} verwiesen werden. |
||
outputs.<output_name> |
Objekt (object) | Die Komponentenausgabedefinition Informationen zu den konfigurierbaren Eigenschaften finden Sie unter Komponentenausgabe. |
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 |
Komponenteneingabe
Schlüssel | type | BESCHREIBUNG | Zulässige Werte | Standardwert |
---|---|---|---|---|
type |
Zeichenfolge | Erforderlich. Der Typ der Komponenteneingabe Erfahren Sie mehr über Datenzugriff. | number , , integer boolean , string , uri_file , uri_folder , , mltable mlflow_model |
|
description |
Zeichenfolge | Die Beschreibung der Eingabe | ||
default |
number, integer, boolean oder string | Der Standardwert für die Eingabe | ||
optional |
boolean | Gibt an, ob die Eingabe erforderlich ist Wenn diese Einstellung auf true festgelegt ist, müssen Sie den Befehl zum Einschließen optionaler Eingaben mit $[[]] verwenden |
false |
|
min |
ganze Zahl oder Zahl | Der minimale akzeptierte Wert für die Eingabe Dieses Feld kann nur angegeben werden, wenn das Feld type number oder integer ist. |
||
max |
ganze Zahl oder Zahl | Der maximale akzeptierte Wert für die Eingabe Dieses Feld kann nur angegeben werden, wenn das Feld type number oder integer ist. |
||
enum |
array | Die Liste der zulässigen Werte für die Eingabe Trifft nur zu, wenn das Feld type string ist. |
Komponentenausgabe
Schlüssel | type | BESCHREIBUNG | Zulässige Werte | Standardwert |
---|---|---|---|---|
type |
Zeichenfolge | Erforderlich. Der Typ der Komponentenausgabe | uri_file , , uri_folder mltable mlflow_model |
|
description |
Zeichenfolge | Beschreibung der Ausgabe |
Bemerkungen
Mit den Befehlen az ml component
können Sie Azure Machine Learning-Komponenten verwalten.
Beispiele
Beispiele für Befehlskomponenten finden Sie im GitHub-Beispielrepository. Ausgewählte Beispiele sind unten dargestellt.
Beispiele finden Sie im GitHub-Beispielrepository. Im Folgenden sind mehrere aufgeführt.
YAML: Hallo Welt-Befehlskomponente
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command
name: hello_python_world
display_name: Hello_Python_World
version: 1
code: ./src
environment:
image: python
command: >-
python hello.py
YAML: Komponente mit unterschiedlichen Eingabetypen
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_data_component_cli
display_name: train_data
description: A example train component
tags:
author: azureml-sdk-team
type: command
inputs:
training_data:
type: uri_folder
max_epocs:
type: integer
optional: true
learning_rate:
type: number
default: 0.01
optional: true
learning_rate_schedule:
type: string
default: time-based
optional: true
outputs:
model_output:
type: uri_folder
code: ./train_src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
python train.py
--training_data ${{inputs.training_data}}
$[[--max_epocs ${{inputs.max_epocs}}]]
$[[--learning_rate ${{inputs.learning_rate}}]]
$[[--learning_rate_schedule ${{inputs.learning_rate_schedule}}]]
--model_output ${{outputs.model_output}}
Definieren optionaler Eingaben in der Befehlszeile
Wenn die Eingabe als optional = true
festgelegt ist, müssen Sie $[[]]
verwenden, um die Befehlszeile mit Eingaben zu nutzen. Beispiel: $[[--input1 ${{inputs.input1}}]
. Die Befehlszeile zur Laufzeit verfügt möglicherweise über unterschiedliche Eingaben.
- Wenn Sie nur die erforderlichen Parameter
training_data
undmodel_output
angeben, sieht die Befehlszeile wie folgt aus:
python train.py --training_data some_input_path --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path
Wird zur Laufzeit kein Wert angegeben, nutzen learning_rate
und learning_rate_schedule
den Standardwert.
- Wenn alle Eingaben/Ausgaben Werte während der Laufzeit bereitstellen, sieht die Befehlszeile wie folgt aus:
python train.py --training_data some_input_path --max_epocs 10 --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path
Häufige Fehler und Empfehlungen
Im Folgenden finden Sie einige häufige Fehler und entsprechende empfohlene Vorschläge, wenn Sie eine Komponente definieren.
Schlüssel | Errors | Empfehlung |
---|---|---|
command | 1. $[[]] kann nur optionale Eingaben enthalten.2. Die Verwendung von \ , um eine neue Zeile zu erzeugen, wird im Befehl nicht unterstützt.3. Eingaben oder Ausgaben werden nicht gefunden. |
1. Überprüfen Sie, ob alle im Befehl verwendeten Eingaben oder Ausgaben bereits in den Abschnitten inputs und outputs definiert sind, und verwenden Sie das richtige Format für optionale Eingaben $[[]] oder erforderliche Eingaben ${{}} .2. Verwenden Sie nicht \ , um eine neue Zeile zu erzeugen. |
Environment | 1. Es ist keine Definition für die Umgebung {envName} , Version {envVersion} , vorhanden. 2. Für den Namen {envName} , Version {envVersion} , ist keine Umgebung vorhanden.3. Die Ressource mit der ID {envAssetId} wurde nicht gefunden. |
1. Stellen Sie sicher, dass der Umgebungsname und die Version, auf die Sie in der Komponentendefinition verweisen, vorhanden sind. 2. Sie müssen die Version angeben, wenn Sie auf eine registrierte Umgebung verweisen. |
Eingaben/Ausgaben | 1. Eingabe-/Ausgabenamen stehen in Konflikt mit reservierten Systemparametern. 2. Doppelte Namen von Eingaben oder Ausgaben. |
1. Verwenden Sie keine dieser reservierten Parameter als Eingabe-/Ausgabenamen: path , ld_library_path , user , logname , home , pwd , shell .2. Stellen Sie sicher, dass die Namen von Ein- und Ausgaben nicht doppelt sind. |