Schemat yaML zadania polecenia interfejsu wiersza polecenia (wersja 2)

DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)

Źródłowy schemat JSON można znaleźć pod adresem https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.

Uwaga

Składnia YAML szczegółowo w tym dokumencie jest oparta na schemacie JSON dla najnowszej wersji rozszerzenia interfejsu wiersza polecenia uczenia maszynowego w wersji 2. Ta składnia jest gwarantowana tylko do pracy z najnowszą wersją rozszerzenia interfejsu wiersza polecenia uczenia maszynowego w wersji 2. Schematy dla starszych wersji rozszerzeń można znaleźć na stronie https://azuremlschemasprod.azureedge.net/.

Składnia YAML

Klucz Typ Opis Dozwolone wartości Wartość domyślna
$schema ciąg Schemat YAML. Jeśli używasz rozszerzenia programu VS Code usługi Azure Machine Learning do tworzenia pliku YAML, w tym $schema w górnej części pliku, możesz wywoływać schemat i uzupełnianie zasobów.
type const Typ zadania. command command
name ciąg Nazwa zadania. Musi być unikatowa we wszystkich zadaniach w obszarze roboczym. W przypadku pominięcia usługa Azure Machine Learning automatycznie wygeneruje identyfikator GUID dla nazwy.
display_name ciąg Nazwa wyświetlana zadania w interfejsie użytkownika programu Studio. Może nie być unikatowa w obszarze roboczym. W przypadku pominięcia usługa Azure Machine Learning automatycznie wygeneruje identyfikator przymiotnika-rzeczownik do odczytu przez człowieka dla nazwy wyświetlanej.
experiment_name ciąg Nazwa eksperymentu w celu zorganizowania zadania w ramach. Każdy rekord przebiegu zadania zostanie zorganizowany w ramach odpowiedniego eksperymentu na karcie "Eksperymenty" w studio. W przypadku pominięcia usługa Azure Machine Learning domyślnie będzie miała nazwę katalogu roboczego, w którym utworzono zadanie.
description ciąg Opis zadania.
tags object Słownik tagów zadania.
command ciąg Wymagane (jeśli nie jest używane component pole). Polecenie do wykonania.
code ciąg Ścieżka lokalna do katalogu kodu źródłowego, który ma zostać przekazany i użyty do zadania.
environment ciąg lub obiekt Wymagane (jeśli nie jest używane component pole). Środowisko do użycia dla zadania. Może to być odwołanie do istniejącego środowiska w wersji w obszarze roboczym lub specyfikacji środowiska wbudowanego.

Aby odwołać się do istniejącego środowiska, użyj azureml:<environment_name>:<environment_version> składni lub azureml:<environment_name>@latest (aby odwołać się do najnowszej wersji środowiska).

Aby zdefiniować środowisko wbudowane, postępuj zgodnie ze schematem środowiska. name Wyklucz właściwości iversion, ponieważ nie są obsługiwane w środowiskach wbudowanych.
environment_variables object Słownik par klucz-wartość zmiennej środowiskowej do ustawienia w procesie, w którym polecenie jest wykonywane.
distribution object Konfiguracja dystrybucji dla scenariuszy trenowania rozproszonego. Jeden z elementów MpiConfiguration, PyTorchConfiguration lub TensorFlowConfiguration.
compute ciąg Nazwa docelowego obiektu obliczeniowego do wykonania zadania. Może to być odwołanie do istniejącego środowiska obliczeniowego w obszarze roboczym (przy użyciu azureml:<compute_name> składni) lub local wyznaczenie lokalnego wykonania. Uwaga: zadania w potoku nie są obsługiwane local jako compute local
resources.instance_count liczba całkowita Liczba węzłów do użycia dla zadania. 1
resources.instance_type ciąg Typ wystąpienia, który ma być używany dla zadania. Dotyczy zadań uruchomionych w obliczeniach platformy Kubernetes z włączoną usługą Azure Arc (gdzie docelowy obiekt obliczeniowy określony w compute polu to type: kubernentes). W przypadku pominięcia zostanie to domyślne ustawienie domyślnego typu wystąpienia klastra Kubernetes. Aby uzyskać więcej informacji, zobacz Create and select Kubernetes instance types (Tworzenie i wybieranie typów wystąpień kubernetes).
resources.shm_size ciąg Rozmiar bloku pamięci udostępnionej kontenera platformy Docker. Powinno to być w formacie <number><unit> , w którym liczba musi być większa niż 0, a jednostka może być jedną z b (bajtów), (kilobajtów), km (megabajtów) lub g (gigabajty). 2g
limits.timeout liczba całkowita Maksymalny czas w sekundach, przez który zadanie może zostać uruchomione. Po osiągnięciu tego limitu system anuluje zadanie.
inputs object Słownik danych wejściowych zadania. Klucz jest nazwą danych wejściowych w kontekście zadania, a wartość jest wartością wejściową.

Przy użyciu ${{ inputs.<input_name> }} wyrażenia można odwoływać się do command danych wejściowych.
inputs.<input_name> liczba, liczba całkowita, wartość logiczna, ciąg lub obiekt Jedna z wartości literałów (typu liczba, liczba całkowita, wartość logiczna lub ciąg) lub obiekt zawierający specyfikację danych wejściowych zadania.
outputs object Słownik konfiguracji wyjściowych zadania. Klucz jest nazwą danych wyjściowych w kontekście zadania, a wartość jest konfiguracją wyjściową.

Przy użyciu ${{ outputs.<output_name> }} wyrażenia można odwoływać się do command danych wyjściowych.
outputs.<output_name> object Możesz pozostawić obiekt pusty. W tym przypadku domyślnie dane wyjściowe będą typu uri_folder , a usługa Azure Machine Learning wygeneruje systemową lokalizację wyjściową dla danych wyjściowych. Pliki do katalogu wyjściowego zostaną zapisane za pośrednictwem instalacji odczytu i zapisu. Jeśli chcesz określić inny tryb dla danych wyjściowych, podaj obiekt zawierający specyfikację danych wyjściowych zadania.
identity object Tożsamość jest używana do uzyskiwania dostępu do danych. Może to być userIdentityConfiguration, ManagedIdentityConfiguration lub None. Jeśli jest to userIdentityConfiguration tożsamość osoby przesyłającej zadanie będzie używana do uzyskiwania dostępu do danych wejściowych i zapisywania wyników w folderze wyjściowym, w przeciwnym razie zostanie użyta tożsamość zarządzana docelowego obiektu obliczeniowego.

Konfiguracje dystrybucji

MpiConfiguration

Klucz Typ Opis Dozwolone wartości
type const Wymagane. Typ dystrybucji. mpi
process_count_per_instance liczba całkowita Wymagane. Liczba procesów na węzeł do uruchomienia dla zadania.

PyTorchConfiguration

Klucz Typ Opis Dozwolone wartości Wartość domyślna
type const Wymagane. Typ dystrybucji. pytorch
process_count_per_instance liczba całkowita Liczba procesów na węzeł do uruchomienia dla zadania. 1

TensorFlowConfiguration

Klucz Typ Opis Dozwolone wartości Wartość domyślna
type const Wymagane. Typ dystrybucji. tensorflow
worker_count liczba całkowita Liczba procesów roboczych do uruchomienia dla zadania. Wartość domyślna to resources.instance_count.
parameter_server_count liczba całkowita Liczba serwerów parametrów do uruchomienia dla zadania. 0

Dane wejściowe zadania

Klucz Typ Opis Dozwolone wartości Wartość domyślna
type ciąg Typ danych wejściowych zadania. Określ uri_file dane wejściowe wskazujące jedno źródło pliku lub uri_folder dane wejściowe wskazujące źródło folderu. uri_file, uri_folder, mlflow_model, custom_model uri_folder
path ciąg Ścieżka do danych do użycia jako dane wejściowe. Można to określić na kilka sposobów:

— ścieżka lokalna do pliku lub folderu źródła danych, np. path: ./iris.csv. Dane zostaną przekazane podczas przesyłania zadania.

— Identyfikator URI ścieżki chmury do pliku lub folderu, który ma być używany jako dane wejściowe. Obsługiwane typy identyfikatorów URI to azureml, , httpswasbs, abfss, adl. Aby uzyskać więcej informacji na temat używania formatu identyfikatora URI, zobacz Podstawowa składniaazureml:// yaml.

— Istniejący zarejestrowany zasób danych usługi Azure Machine Learning do użycia jako dane wejściowe. Aby odwołać się do zarejestrowanego zasobu danych, użyj azureml:<data_name>:<data_version> składni lub azureml:<data_name>@latest (w celu odwołania się do najnowszej wersji tego zasobu danych), np. path: azureml:cifar10-data:1 lub path: azureml:cifar10-data@latest.
mode ciąg Tryb dostarczania danych do docelowego obiektu obliczeniowego.

W przypadku instalacji tylko do odczytu (ro_mount) dane będą używane jako ścieżka instalacji. Folder zostanie zainstalowany jako folder, a plik zostanie zainstalowany jako plik. Usługa Azure Machine Learning rozpozna dane wejściowe ścieżki instalacji.

W download trybie dane zostaną pobrane do docelowego obiektu obliczeniowego. Usługa Azure Machine Learning rozpozna dane wejściowe pobranej ścieżki.

Jeśli chcesz tylko adres URL lokalizacji przechowywania artefaktów danych, zamiast instalowania lub pobierania samych danych, możesz użyć direct trybu . Spowoduje to przekazanie adresu URL lokalizacji magazynu jako danych wejściowych zadania. Należy pamiętać, że w tym przypadku użytkownik jest w pełni odpowiedzialny za obsługę poświadczeń w celu uzyskania dostępu do magazynu.

Tryby eval_mount i eval_download są unikatowe dla tabeli MLTable i instaluje dane jako ścieżkę lub pobiera dane do docelowego obiektu obliczeniowego.

Aby uzyskać więcej informacji na temat trybów, zobacz Uzyskiwanie dostępu do danych w zadaniu
ro_mount, download, direct, eval_download, eval_mount ro_mount

Dane wyjściowe zadania

Klucz Typ Opis Dozwolone wartości Wartość domyślna
type ciąg Typ danych wyjściowych zadania. Dla domyślnego uri_folder typu dane wyjściowe będą odpowiadać folderowi. uri_folder , mlflow_model, custom_model uri_folder
mode ciąg Tryb dostarczania plików wyjściowych do magazynu docelowego. W przypadku trybu instalacji odczytu i zapisu (rw_mount) katalog wyjściowy będzie katalogiem zainstalowanym. W przypadku trybu przekazywania zapisane pliki zostaną przekazane na końcu zadania. rw_mount, upload rw_mount

Konfiguracje tożsamości

UserIdentityConfiguration

Klucz Typ Opis Dozwolone wartości
type const Wymagane. Typ tożsamości. user_identity

ManagedIdentityConfiguration

Klucz Typ Opis Dozwolone wartości
type const Wymagane. Typ tożsamości. managed lub managed_identity

Uwagi

Polecenie az ml job może służyć do zarządzania zadaniami usługi Azure Machine Learning.

Przykłady

Przykłady są dostępne w repozytorium GitHub przykładów. Poniżej przedstawiono kilka.

YAML: hello world

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: library/python:latest

YAML: nazwa wyświetlana, nazwa eksperymentu, opis i tagi

$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: zmienne środowiskowe

$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: kod źródłowy

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
  image: library/python:latest

YAML: dane wejściowe literału

$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: zapisywanie w domyślnych danych wyjściowych

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
  image: library/python:latest

YAML: zapisywanie w nazwanych danych wyjściowych

$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: dane wejściowe pliku URI magazynu danych

$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.0/labels/latest

YAML: dane wejściowe folderu URI magazynu danych

$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.0/labels/latest

YAML: dane wejściowe pliku URI

$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.0/labels/latest

YAML: dane wejściowe folderu URI

$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.0/labels/latest

YAML: Notes przez papiermill

$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: podstawowe szkolenie modelu języka Python

$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.0/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: podstawowe trenowanie modelu języka R przy użyciu lokalnego kontekstu kompilacji platformy Docker

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
  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: rozproszona 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-pytorch-1.9-ubuntu18.04-py37-cuda11-gpu@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: rozproszony 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.4-ubuntu18.04-py37-cuda11-gpu@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.

YAML: rozproszony interfejs MPI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
inputs:
  epochs: 1
environment: azureml:AzureML-tensorflow-2.7-ubuntu20.04-py38-cuda11-gpu@latest
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: mpi
  process_count_per_instance: 1
display_name: tensorflow-mnist-distributed-horovod-example
experiment_name: tensorflow-mnist-distributed-horovod-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via Horovod.

Następne kroki