YAML-Schema für einen CLI-Pipelineauftrag (v2)

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

Das JSON-Quellschema finden Sie unter https://azuremlschemas.azureedge.net/latest/pipelineJob.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 Schema- und Ressourcenvervollständigungen aufrufen, wenn Sie am Anfang ihrer Datei $schema einschließen.
type const Erforderlich. Typ des Auftrags. pipeline
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. Falls nicht angegeben, generiert Azure Machine Learning als Anzeigename automatisch einen für Menschen lesbaren Bezeichner aus Adjektiv und Nomen.
experiment_name Zeichenfolge Organisieren Sie den Auftrag unter dem Namen des Experiments. Die Ausführungsaufzeichnung jedes Auftrags ist im Studio auf der Registerkarte „Experimente“ unter dem entsprechenden Experiment strukturiert. Wenn nicht angegeben, wird Azure Machine Learning standardmäßig auf den Namen des Arbeitsverzeichnisses experiment_name festgelegt, in dem der Auftrag erstellt wurde.
tags Objekt Das Wörterbuch der Tags für den Auftrag
settings Objekt (object) Die Standardeinstellungen für den Pipelineauftrag. Besuchen Sie Attribute des settings Schlüssels für den Satz konfigurierbarer Eigenschaften.
jobs Objekt Erforderlich. Das Wörterbuch der einzelnen Aufträge, die als Schritte innerhalb der Pipeline ausgeführt werden sollen. Diese Aufträge werden als untergeordnete Aufträge des übergeordneten Pipelineauftrags betrachtet.

Der Schlüssel ist der Name des Schritts im Kontext des Pipelineauftrags. Dieser Name unterscheidet sich vom eindeutigen Auftragsnamen des untergeordneten Auftrags. Der Wert ist die Auftragsspezifikation, die dem Befehlsauftragsschema oder dem Aufräumen des Auftragsschemas folgen kann. Derzeit können nur Befehlsaufträge und Aufräumaufträge in einer Pipeline ausgeführt werden. In späteren Releases werden andere Auftragstypen unterstützt.
inputs Objekt (object) Das Wörterbuch der Eingaben für den Pipelineauftrag. Der Schlüssel ist ein Name für die Eingabe im Kontext des Auftrags. Der Wert ist der Eingabewert.

Die Eingaben eines einzelnen Schrittauftrags in der Pipeline können mit dem ${{ parent.inputs.<input_name> }} Ausdruck auf diese Pipelineeingaben verweisen. Weitere Informationen zum Binden der Eingaben eines Pipelineschritts an die Eingaben des Pipelineauftrags der obersten Ebene finden Sie unter Ausdruckssyntax zum Binden von Eingaben und Ausgaben zwischen Schritten in einem Pipelineauftrag.
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) Das Wörterbuch der Ausgabekonfigurationen des Pipelineauftrags. Der Schlüssel ist ein Name für die Ausgabe im Kontext des Auftrags. Der Wert ist die Ausgabekonfiguration.

Die Ausgaben eines einzelnen Schrittauftrags in der Pipeline können mit dem ${{ parents.outputs.<output_name> }} Ausdruck auf diese Pipelineausgaben verweisen. Weitere Informationen zum Binden der Ausgaben eines Pipelineschritts an die Ausgaben des Pipelineauftrags der obersten Ebene finden Sie in der Ausdruckssyntax zum Binden von Eingaben und Ausgaben zwischen Schritten in einem Pipelineauftrag.
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 einen Ausgabespeicherort für die Ausgabe basierend auf diesem templatisierten Pfad: {settings.datastore}/azureml/{job-name}/{output-name}/. Dateien in das Ausgabeverzeichnis werden über eine Lese-/Schreibzugriffs-Bereitstellung geschrieben. Um einen anderen Ausgabemodus anzugeben, stellen Sie ein Objekt bereit, das die Auftragsausgabespezifikation enthält.
identity Objekt Der Zugriff auf Daten verwendet die Identität. Dies kann eine Benutzeridentitätskonfiguration, eine verwaltete Identitätskonfiguration oder keine sein. Bei UserIdentityConfiguration wird die Identität des Auftragszusendes verwendet, um auf Eingabedaten zuzugreifen und das Ergebnis in den Ausgabeordner zu schreiben. Andernfalls verwendet UserIdentityConfiguration die verwaltete Identität des Computeziels.

Attribute des settings-Schlüssels

Schlüssel type BESCHREIBUNG Standardwert
default_datastore Zeichenfolge Der Name des Datenspeichers, der als Standarddatenspeicher für den Pipelineauftrag verwendet werden soll. Dieser Wert muss ein Verweis auf einen vorhandenen Datenspeicher im Arbeitsbereich sein, wobei die azureml:<datastore-name> Syntax verwendet wird. Alle in der outputs Eigenschaft des übergeordneten Pipelineauftrags oder untergeordneten Schrittaufträge definierten Ausgaben werden in diesem Datenspeicher gespeichert. Wenn diese Angabe weggelassen wird, werden Die Ausgaben im Blob-Datenspeicher des Arbeitsbereichs gespeichert.
default_compute Zeichenfolge Der Name des Computeziels, das als Standardberechnung für alle Schritte in der Pipeline verwendet werden soll. Die auf Schrittebene definierte Berechnung setzt diese Standardberechnung für diesen bestimmten Schritt außer Kraft. Der default_compute Wert muss ein Verweis auf eine vorhandene Berechnung im Arbeitsbereich sein, wobei die azureml:<compute-name> Syntax verwendet wird.
continue_on_step_failure boolean Diese Einstellung bestimmt, was geschieht, wenn ein Schritt in der Pipeline fehlschlägt. Standardmäßig wird die Pipeline auch dann weiterhin ausgeführt, wenn ein Schritt fehlschlägt. Dies bedeutet, dass alle Schritte, die nicht vom fehlgeschlagenen Schritt abhängen, weiterhin ausgeführt werden. Wenn Sie diese Einstellung jedoch in "False" ändern, wird die gesamte Pipeline nicht mehr ausgeführt, und alle derzeit ausgeführten Schritte werden abgebrochen, wenn ein Schritt fehlschlägt. True
force_rerun boolean Gibt an, ob die erneute Ausführung der gesamten Pipeline erzwungen werden soll. Der Standardwert ist False. Dies bedeutet, dass die Pipeline standardmäßig versucht, die Ausgabe des vorherigen Auftrags wiederzuverwenden, wenn sie die Wiederverwendungskriterien erfüllt. Wenn diese Option als True festgelegt ist, werden alle Schritte in der Pipeline erneut ausgeführt. False

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. Weitere Informationen finden Sie unter "Weitere Informationen zum Datenzugriff". uri_file, , uri_foldermltablemlflow_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 Core yaml-Syntax.

– Ein vorhandenes registriertes Azure Machine Learning-Datenobjekt, das als Eingabe verwendet werden soll. Um auf eine registrierte Datenressource zu verweisen, verwenden Sie die azureml:<data_name>:<data_version> Syntax oder azureml:<data_name>@latest (um auf die neueste Version dieses Datenobjekts 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 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.

Verwenden Sie den Modus, um nur die URL des Speicherorts des Datenartefaktes oder der Artefakte zu installieren direct oder herunterzuladen. Dies ü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.
ro_mount, downloaddirect ro_mount

Auftragsausgaben

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type Zeichenfolge Der Auftragsausgabetyp. Für den Standardtyp uri_folder entspricht die Ausgabe einem Ordner. uri_file, , uri_foldermltablemlflow_model uri_folder
mode Zeichenfolge Modus der Übermittlung der Ausgabedatei oder -dateien an den Zielspeicher. 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

Sie können den az ml job Befehl zum Verwalten von Azure Machine Learning-Aufträgen verwenden.

Beispiele

Beispiele finden Sie im GitHub-Repository . Hier sind mehrere aufgeführt:

YAML: Hallo Pipeline

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline
jobs:
  hello_job:
    command: echo "hello"
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    compute: azureml:cpu-cluster
  world_job:
    command: echo "world"
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    compute: azureml:cpu-cluster

YAML: Eingabe-/Ausgabeabhängigkeit

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_io
jobs:
  hello_job:
    command: echo "hello" && echo "world" > ${{outputs.world_output}}/world.txt
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    compute: azureml:cpu-cluster
    outputs:
      world_output:
  world_job:
    command: cat ${{inputs.world_input}}/world.txt
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    compute: azureml:cpu-cluster
    inputs:
      world_input: ${{parent.jobs.hello_job.outputs.world_output}}

YAML: Allgemein Einstellungen für Pipelineaufträge

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_settings

settings:
  default_datastore: azureml:workspaceblobstore
  default_compute: azureml:cpu-cluster
jobs:
  hello_job:
    command: echo 202204190 & echo "hello"
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
  world_job:
    command: echo 202204190 & echo "hello"
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest

YAML: Eingabe auf oberster Ebene und Überschreiben allgemeiner Einstellungen für Pipelineaufträge

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_abc
settings:
    default_compute: azureml:cpu-cluster
  
inputs:
  hello_string_top_level_input: "hello world"
jobs:
  a:
    command: echo hello ${{inputs.hello_string}}
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    inputs:
      hello_string: ${{parent.inputs.hello_string_top_level_input}}
  b:
    command: echo "world" >> ${{outputs.world_output}}/world.txt
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    outputs:
      world_output:
  c:
    command: echo ${{inputs.world_input}}/world.txt
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    inputs:
      world_input: ${{parent.jobs.b.outputs.world_output}}

Nächste Schritte