Freigeben über


CLI (v2): YAML-Schema des Auftrags zur Bildklassifizierung mit AutoML

GILT FÜR: Azure CLI ml Erweiterung v2 (aktuell)

Das JSON-Quellschema finden Sie unter https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLImageClassificationJob.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 der Benutzer die VS Code-Erweiterung für Azure Machine Learning zum Erstellen einer YAML-Datei verwendet, kann er durch Einfügen von $schema am Anfang der Datei Schema- und Ressourcenvervollständigungen aufrufen.
type const Erforderlich. Typ des Auftrags. automl automl
task const Erforderlich. Der Typ der AutoML-Aufgabe. image_classification image_classification
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.
compute Zeichenfolge Name des Computeziels, auf dem der Auftrag ausgeführt werden soll. Diese Compute kann entweder ein Verweis auf eine im Arbeitsbereich vorhandene Compute (mithilfe der Syntax azureml:<compute_name>) oder local zum Festlegen der lokalen Ausführung sein. Weitere Informationen zu Compute für AutoML-Bildaufträge finden Sie im Abschnitt Compute zum Ausführen des Experiments.

Hinweis: Aufträge in der Pipeline unterstützen local nicht als compute. *
local
log_verbosity number Verschiedene Ebenen der Protokollausführlichkeit. not_set, , debuginfo, warning, , errorcritical info
primary_metric Zeichenfolge Die Metrik, die AutoML für die Modellauswahl optimiert. accuracy accuracy
target_column_name Zeichenfolge Erforderlich. Der Name der Spalte, die als Ziel für Vorhersagen verwendet werden soll. Sie muss stets angegeben werden. Dieser Parameter gilt für training_data und validation_data.
training_data Objekt (object) Erforderlich. Die innerhalb des Auftrags zu verwendenden Daten. Sie müssen sowohl Trainingsfeaturespalten als auch eine Zielspalte enthalten. Der Parameter training_data muss stets angegeben werden. Weitere Informationen zu Schlüsseln und deren Beschreibungen finden Sie im Abschnitt Trainings- oder Validierungsdaten. Ein Beispiel finden Sie im Abschnitt Nutzen von Daten.
validation_data Objekt (object) Die im Experiment zu verwendenden Validierungsdaten. Sie sollte sowohl Trainingsfeatures als auch eine Bezeichnungsspalte (optional eine Spalte mit Stichprobengewichtungen) enthalten. Wenn validation_data angegeben wird, müssen die Parameter training_data und target_column_name angegeben werden. Weitere Informationen zu Schlüsseln und deren Beschreibungen finden Sie im Abschnitt Trainings- oder Validierungsdaten. Ein Beispiel finden Sie im Abschnitt Nutzen von Daten.
validation_data_size float Der Teil der Daten, der für die Validierung zurückbehalten werden soll, wenn keine Benutzervalidierungsdaten angegeben werden. Ein Wert im Bereich (0,0, 1,0)
limits Objekt (object) Wörterbuch von Grenzwertkonfigurationen des Auftrags. Der Schlüssel ist ein Name des Grenzwerts im Kontext des Auftrags, der Wert ist der Grenzwert selbst. Weitere Informationen finden Sie im Abschnitt Konfigurieren von Experimenteinstellungen.
training_parameters Objekt (object) Wörterbuch mit Trainingsparametern für den Auftrag. Geben Sie ein Objekt mit Schlüsseln an, wie in den folgenden Abschnitten aufgeführt.
- Modellunabhängige Hyperparameter
- Spezifische Hyperparameter für die Bildklassifizierung (mehrere Klassen und mehrere Bezeichnungen)

Ein Beispiel finden Sie im Abschnitt Unterstützte Modellarchitekturen.
sweep Objekt (object) Wörterbuch mit Sweep-Parametern für den Auftrag. Es verfügt über zwei Schlüssel: sampling_algorithm (erforderlich) und early_termination. Weitere Informationen und ein Beispiel finden Sie in den Abschnitten Samplingmethoden für den Sweep und Richtlinien zum vorzeitigen Beenden.
search_space Objekt (object) Wörterbuch des Suchbereichs für Hyperparameter. Der Schlüssel ist der Name des Hyperparameters, und der Wert ist der Parameterausdruck. Der Benutzer kann die möglichen Hyperparameter anhand von Parametern finden, die für den Schlüssel training_parameters angegeben sind. Ein Beispiel finden Sie im Abschnitt Durchführen von Sweeps für Hyperparameter für Ihr Modell.
search_space.<hyperparameter> Objekt Es gibt zwei Arten von Hyperparametern:
- Diskrete Hyperparameter werden als choice unter diskreten Werten angegeben. choice kann einen oder mehrere durch Komma getrennte Werte annehmen bzw. ein range-Objekt oder beliebiges list-Objekt sein. Erweiterte diskrete Hyperparameter können ferner mithilfe einer Verteilung angegeben werden: randint, qlognormal, qnormal, qloguniform, quniform. Weitere Informationen finden Sie in diesem Abschnitt.
- Kontinuierliche Hyperparameter werden als Verteilung über einen kontinuierlichen Wertebereich angegeben. Derzeit unterstützte Verteilungen sind: lognormal , normal, loguniform, uniform. Weitere Informationen finden Sie in diesem Abschnitt.

Weitere Informationen zu den möglichen Ausdrücken finden Sie unter Parameterausdrücke.
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.
outputs.best_model Objekt (object) Wörterbuch der Ausgabekonfigurationen für das beste Modell. Weitere Informationen finden Sie unter Ausgabekonfiguration für das beste Modell.

Trainings- oder Validierungsdaten

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
description Zeichenfolge Die detaillierten Informationen, die diese Eingabedaten beschreiben.
path Zeichenfolge Für „Pfad“ sind ein file-Pfad, folder-Pfad und pattern-Pfade zulässig. pattern gibt ein Suchmuster an, das das Verwenden von Platzhaltern (* und **) für Dateien und Ordner mit Daten zulässt. Unterstützte URI-Typen sind azureml, https, wasbs, abfss und adl. Weitere Informationen zum Verwenden des URI-Formats azureml:// finden Sie unter YAML-Kernsyntax. URI des Speicherorts der Artefaktdatei. Wenn dieser URI kein Schema hat (z. B. http:, azureml: usw.), wird er als lokaler Verweis betrachtet. Die Datei, auf die er verweist, wird bei Erstellung der Entität in den standardmäßigen Blobspeicher des Arbeitsbereichs hochgeladen.
mode Zeichenfolge Mechanismus zur Zustellung des Datasets. direct direct
type const Um Modelle für maschinelles Sehen zu erstellen, müssen Benutzer als Eingabe für das Modelltraining bezeichnete Bilddaten in Form einer MLTable bereitstellen. MLTable MLTable

Ausgabekonfiguration für das beste Modell

Schlüssel type BESCHREIBUNG Zulässige Werte Standardwert
type Zeichenfolge Erforderlich. Typ des besten Modells. AutoML lässt nur MLflow-Modelle zu. mlflow_model mlflow_model
path Zeichenfolge Erforderlich. URI des Speicherorts, an dem die Modellartefaktdateien gespeichert sind. Wenn dieser URI kein Schema hat (z. B. http:, azureml: usw.), wird er als lokaler Verweis betrachtet. Die Datei, auf die er verweist, wird bei Erstellung der Entität in den standardmäßigen Blobspeicher des Arbeitsbereichs hochgeladen.
storage_uri Zeichenfolge Die HTTP-URL des Modells. Verwenden Sie diese URL mit az storage copy -s THIS_URL -d DESTINATION_PATH --recursive, um die Daten herunterzuladen.

Hinweise

Mit dem Befehl az ml job können Sie Azure Machine Learning-Aufträge verwalten.

Beispiele

Beispiele finden Sie im GitHub-Beispielrepository. Nachstehend finden Sie Links zu für den Bildklassifizierungsauftrag relevanten Beispielen.

YAML: AutoML-Auftrag zur Bildklassifizierung

$schema: https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLJob.schema.json

type: automl

experiment_name: dpv2-cli-automl-image-classification-experiment
description: A multi-class Image classification job using fridge items dataset

compute: azureml:gpu-cluster

task: image_classification
log_verbosity: debug
primary_metric: accuracy

target_column_name: label
training_data:
  # Update the path, if prepare_data.py is using data_path other than "./data"
  path: data/training-mltable-folder
  type: mltable
validation_data:
  # Update the path, if prepare_data.py is using data_path other than "./data"
  path: data/validation-mltable-folder
  type: mltable

limits:
  timeout_minutes: 60
  max_trials: 10
  max_concurrent_trials: 2

training_parameters:
  early_stopping: True
  evaluation_frequency: 1

sweep:
  sampling_algorithm: random
  early_termination:
    type: bandit
    evaluation_interval: 2
    slack_factor: 0.2
    delay_evaluation: 6

search_space:
  - model_name:
      type: choice
      values: [vitb16r224, vits16r224]
    learning_rate:
      type: uniform
      min_value: 0.001
      max_value: 0.01
    number_of_epochs:
      type: choice
      values: [15, 30]

  - model_name:
      type: choice
      values: [seresnext, resnet50]
    learning_rate:
      type: uniform
      min_value: 0.001
      max_value: 0.01
    layers_to_freeze:
      type: choice
      values: [0, 2]

YAML: AutoML-Pipelineauftrag zur Bildklassifizierung

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

description: Pipeline using AutoML Image Multiclass Classification task

display_name: pipeline-with-image-classification
experiment_name: pipeline-with-automl

settings:
  default_compute: azureml:gpu-cluster

inputs:
  image_multiclass_classification_training_data:
    type: mltable
    # Update the path, if prepare_data.py is using data_path other than "./data"
    path: data/training-mltable-folder
  image_multiclass_classification_validation_data:
    type: mltable
    # Update the path, if prepare_data.py is using data_path other than "./data"
    path: data/validation-mltable-folder

jobs:
  image_multiclass_classification_node:
    type: automl
    task: image_classification
    log_verbosity: info
    primary_metric: accuracy
    limits:
      timeout_minutes: 180
      max_trials: 10
      max_concurrent_trials: 2
    target_column_name: label
    training_data: ${{parent.inputs.image_multiclass_classification_training_data}}
    validation_data: ${{parent.inputs.image_multiclass_classification_validation_data}}
    sweep:
      sampling_algorithm: random
      early_termination:
        type: bandit
        evaluation_interval: 2
        slack_factor: 0.2
        delay_evaluation: 6
    search_space:
      - model_name:
          type: choice
          values: [vitb16r224, vits16r224]
        learning_rate:
          type: uniform
          min_value: 0.001
          max_value: 0.01
        number_of_epochs:
          type: choice
          values: [15, 30]

      - model_name:
          type: choice
          values: [seresnext, resnet50]
        learning_rate:
          type: uniform
          min_value: 0.001
          max_value: 0.01
        layers_to_freeze:
          type: choice
          values: [0, 2]
    training_parameters:
      early_stopping: True
      evaluation_frequency: 1
    # currently need to specify outputs "mlflow_model" explicitly to reference it in following nodes
    outputs:
      best_model:
        type: mlflow_model
  register_model_node:
    type: command
    component: file:./components/component_register_model.yaml
    inputs:
      model_input_path: ${{parent.jobs.image_multiclass_classification_node.outputs.best_model}}
      model_base_name: fridge_items_multiclass_classification_model

Nächste Schritte