YAML-Schema für Sweep-Aufträge in der Befehlszeilenschnittstelle (v2)

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

Das JSON-Quellschema finden Sie unter https://azuremlschemas.azureedge.net/latest/sweepJob.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. sweep sweep
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 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.
description Zeichenfolge Die Beschreibung des Auftrags
tags Objekt (object) Das Wörterbuch der Tags für den Auftrag
sampling_algorithm Objekt Erforderlich. Der Hyperparameter-Samplingalgorithmus, der über search_space verwendet werden soll. Entweder RandomSamplingAlgorithm oder GridSamplingAlgorithm oder BayesianSamplingAlgorithm.
search_space Objekt (object) Erforderlich. Wörterbuch des Suchbereichs für Hyperparameter. Der Hyperparametername ist der Schlüssel, und der Wert ist der Parameterausdruck.

Hyperparameter können im trial.command Ausdruck ${{ search_space.<hyperparameter> }} referenziert werden.
search_space.<hyperparameter> Objekt Besuchen Sie Parameterausdrücke für die Gruppe möglicher Ausdrücke, die verwendet werden sollen.
objective.primary_metric Zeichenfolge Erforderlich. Der Name der primären Metrik, die von jedem Testauftrag gemeldet wird. Die Metrik muss im Schulungsskript mlflow.log_metric() des Benutzers mit demselben metrischen Namen protokolliert werden.
objective.goal Zeichenfolge Erforderlich. Das Optimierungsziel von objective.primary_metric. maximize, minimize
early_termination Objekt Die zu verwendende Richtlinie für vorzeitige Beendigung. Ein Testauftrag wird abgebrochen, wenn die Kriterien der angegebenen Richtlinie erfüllt sind. Ohne Angabe wird keine Richtlinie für vorzeitige Beendigung angewendet. Eine von BanditPolicy, MedianStoppingPolicy oder TruncationSelectionPolicy.
limits Objekt Grenzwerte für den Sweep-Auftrag. Siehe Attribute des limits-Schlüssels.
compute Zeichenfolge Erforderlich. Name des Computeziels, für das der Auftrag ausgeführt werden soll, mit der azureml:<compute_name> Syntax.
trial Objekt Erforderlich. Die Auftragsvorlage für die einzelnen Testversionen. Jeder Testauftrag wird mit einer anderen Kombination von Hyperparameterwerten bereitgestellt, die von den Systembeispielen stammen search_space. Besuchen Sie Attribute des trial Schlüssels.
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 "Number", "integer", "boolean" oder "string") oder ein Objekt, das eine Auftragseingabedatenspezifikation 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, und in diesem Fall ist die Ausgabe standardmäßig vom uri_folder Typ und das Azure Machine Learning-System generiert einen Ausgabespeicherort für die Ausgabe. Alle Dateien in das Ausgabeverzeichnis werden über die Bereitstellung mit Lese-/Schreibzugriff geschrieben. Um einen anderen Modus für die Ausgabe anzugeben, geben Sie ein Objekt an, das die Auftragsausgabespezifikation enthält.
identity Objekt Die Identität wird für den Datenzugriff verwendet. 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 Ergebnisse in den Ausgabeordner zu schreiben. Andernfalls wird die verwaltete Identität des Computeziels verwendet.

Samplingalgorithmen

RandomSamplingAlgorithm

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type const Erforderlich. Der Typ des Samplingalgorithmus. random
seed integer Ein zufälliger Ausgangswert, der zum Initialisieren der Zufallszahlengenerierung verwendet werden soll. Wenn dieser Wert nicht angegeben wird, ist der Standardwert null.
rule Zeichenfolge Der zu verwendende Typ für die zufällige Stichprobenentnahme. Die Standardeinstellung verwendet randomeinfache, einheitliche Zufallssamplings, während sobol die Sobol quasi-zufällige Sequenz verwendet wird. random, sobol random

GridSamplingAlgorithm

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Samplingalgorithmustyp. grid

BayesianSamplingAlgorithm

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Samplingalgorithmustyp. bayesian

Richtlinien zum vorzeitigen Beenden

BanditPolicy

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type const Erforderlich. Den Richtlinientyp. bandit
slack_factor Zahl Das Verhältnis, das zur Berechnung des zulässigen Abstands zur besten Testversion verwendet wird. Eines von slack_factor oder slack_amount ist erforderlich.
slack_amount number Der absolute Abstand, der von der Testversion mit der besten Leistung zulässig ist. Eines von slack_factor oder slack_amount ist erforderlich.
evaluation_interval integer Die Anwendungshäufigkeit der Richtlinie. 1
delay_evaluation integer Die Anzahl der Intervalle, für die die erste Richtlinienauswertung verzögert werden soll. Sofern angegeben, gilt die Richtlinie für jedes Vielfache von evaluation_interval, das größer oder gleich delay_evaluation ist. 0

MedianStoppingPolicy

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type const Erforderlich. Den Richtlinientyp. median_stopping
evaluation_interval integer Die Anwendungshäufigkeit der Richtlinie. 1
delay_evaluation integer Die Anzahl der Intervalle, für die die erste Richtlinienauswertung verzögert werden soll. Sofern angegeben, gilt die Richtlinie für jedes Vielfache von evaluation_interval, das größer oder gleich delay_evaluation ist. 0

TruncationSelectionPolicy

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type const Erforderlich. Den Richtlinientyp. truncation_selection
truncation_percentage integer Erforderlich. Der Prozentsatz der Testaufträge, die bei jedem Auswertungsintervall abgebrochen werden sollen.
evaluation_interval integer Die Anwendungshäufigkeit der Richtlinie. 1
delay_evaluation integer Die Anzahl der Intervalle, für die die erste Richtlinienauswertung verzögert werden soll. Sofern angegeben, gilt die Richtlinie für jedes Vielfache von evaluation_interval, das größer oder gleich delay_evaluation ist. 0

Parameterausdrücke

Option

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Ausdruckstyp. choice
values array Erforderlich. Die Liste der diskreten Werte, aus denen Sie wählen möchten.

Randint

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Ausdruckstyp. randint
upper integer Erforderlich. Die exklusive Obergrenze für den Bereich ganzer Zahlen.

Qlognormal, qnormal

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Ausdruckstyp. qlognormal, qnormal
mu number Erforderlich. Der Mittelwert der Normalverteilung.
sigma number Erforderlich. Die Standardabweichung der Normalverteilung.
q integer Erforderlich. Der Glättungsfaktor.

Qloguniform, quniform

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Ausdruckstyp. qloguniform, quniform
min_value number Erforderlich. Der Mindestwert im Bereich (einschließlich).
max_value number Erforderlich. Der Höchstwert im Bereich (einschließlich).
q integer Erforderlich. Der Glättungsfaktor.

Lognormal, normal

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Ausdruckstyp. lognormal, normal
mu number Erforderlich. Der Mittelwert der Normalverteilung.
sigma number Erforderlich. Die Standardabweichung der Normalverteilung.

Loguniform

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Ausdruckstyp. loguniform
min_value Zahl Erforderlich. Der Mindestwert im Bereich ist exp(min_value) (einschließlich).
max_value Zahl Erforderlich. Der Maximalwert im Bereich ist exp(max_value) (einschließlich).

Uniform

Schlüssel type BESCHREIBUNG Zulässige Werte
type const Erforderlich. Der Ausdruckstyp. uniform
min_value Zahl Erforderlich. Der Mindestwert im Bereich (einschließlich).
max_value number Erforderlich. Der Höchstwert im Bereich (einschließlich).

Attribute des limits-Schlüssels

Schlüssel type BESCHREIBUNG Standardwert
max_total_trials integer Die maximale Anzahl von Testaufträgen. 1000
max_concurrent_trials integer Die maximale Anzahl von Testaufträgen, die gleichzeitig ausgeführt werden können. Wird standardmäßig auf max_total_trials festgelegt.
timeout integer Die maximale Zeit in Sekunden, für die der gesamte Aufräumauftrag ausgeführt werden darf. Sobald dieser Grenzwert erreicht ist, bricht das System den Aufräumauftrag ab, einschließlich aller versuche. 5184000
trial_timeout integer Die maximale Zeit in Sekunden, die jeder Testauftrag ausgeführt werden darf. Sobald dieser Grenzwert erreicht ist, bricht das System die Testversion ab.

Attribute des trial-Schlüssels

Schlüssel type BESCHREIBUNG Standardwert
command Zeichenfolge Erforderlich. 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. Die Umgebung, die für den Auftrag verwendet werden soll. Dieser Wert kann entweder ein Verweis auf eine vorhandene versionierte Umgebung im Arbeitsbereich oder eine Inline-Umgebungsspezifikation sein.

Verwenden Sie die Syntax azureml:<environment-name>:<environment-version>, um auf eine vorhandene Umgebung zu verweisen.

Um eine Umgebung inline zu definieren, folgen Sie dem Umgebungsschema. Schließen Sie die name Eigenschaften aus version , da inlineumgebungen sie nicht unterstützen.
environment_variables Objekt Wörterbuch der Name-Wert-Paare von Umgebungsvariablen, die für den Prozess festgelegt werden, in dem der Befehl ausgeführt wird.
distribution Objekt Die Verteilungskonfiguration für verteilte Trainingsszenarien Eine der Mpi-Konfigurationen, PyTorch-Konfiguration oder TensorFlow-Konfiguration.
resources.instance_count integer Die Anzahl von Knoten, die für den Auftrag verwendet werden sollen. 1

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. 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. Dieser Wert 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 path: azureml:cifar10-data:1 . B. 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.

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 alle 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: Hello-Sweep

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
  command: >-
    python hello-sweep.py
    --A ${{inputs.A}}
    --B ${{search_space.B}}
    --C ${{search_space.C}}
  code: src
  environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
inputs:
  A: 0.5
sampling_algorithm: random
search_space:
  B:
    type: choice
    values: ["hello", "world", "hello_world"]
  C:
    type: uniform
    min_value: 0.1
    max_value: 1.0
objective:
  goal: minimize
  primary_metric: random_metric
limits:
  max_total_trials: 4
  max_concurrent_trials: 2
  timeout: 3600
display_name: hello-sweep-example
experiment_name: hello-sweep-example
description: Hello sweep job example.

YAML: Grundlegende Optimierung von Python-Modellen mit Hyperparametern

$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
  code: src
  command: >-
    python main.py 
    --iris-csv ${{inputs.iris_csv}}
    --C ${{search_space.C}}
    --kernel ${{search_space.kernel}}
    --coef0 ${{search_space.coef0}}
  environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
inputs:
  iris_csv: 
    type: uri_file
    path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
compute: azureml:cpu-cluster
sampling_algorithm: random
search_space:
  C:
    type: uniform
    min_value: 0.5
    max_value: 0.9
  kernel:
    type: choice
    values: ["rbf", "linear", "poly"]
  coef0:
    type: uniform
    min_value: 0.1
    max_value: 1
objective:
  goal: minimize
  primary_metric: training_f1_score
limits:
  max_total_trials: 20
  max_concurrent_trials: 10
  timeout: 7200
display_name: sklearn-iris-sweep-example
experiment_name: sklearn-iris-sweep-example
description: Sweep hyperparemeters for training a scikit-learn SVM on the Iris dataset.

Nächste Schritte