Udostępnij za pośrednictwem


Schemat YAML zadania równoległego interfejsu wiersza polecenia (wersja 2)

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

Ważne

Zadanie równoległe może być używane tylko jako pojedynczy krok w zadaniu potoku usługi Azure Machine Learning. W związku z tym w tej chwili nie ma źródłowego schematu JSON dla zadania równoległego. Ten dokument zawiera listę prawidłowych kluczy i ich wartości podczas tworzenia zadania równoległego w potoku.

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źć pod adresem https://azuremlschemasprod.azureedge.net/.

Składnia YAML

Klucz Type Opis Dozwolone wartości Domyślna wartość
type const Wymagany. Typ zadania. parallel
inputs obiekt Słownik danych wejściowych do zadania równoległego. 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 program_arguments danych wejściowych.

Do danych wejściowych zadań równoległych można odwoływać się przez dane wejściowe potoku ${{ parent.inputs.<input_name> }} przy użyciu wyrażenia . Aby dowiedzieć się, jak powiązać dane wejściowe kroku równoległego z danymi wejściowymi potoku, zobacz Składnia wyrażeń dla powiązań danych wejściowych i wyjściowych między krokami zadania potoku.
inputs.<input_name> liczba, liczba całkowita, wartość logiczna, ciąg lub obiekt Jedna z wartości literału (typu liczba, liczba całkowita, wartość logiczna lub ciąg) lub obiekt zawierający specyfikację danych wejściowych zadania.
outputs obiekt Słownik konfiguracji wyjściowych zadania równoległego. Klucz jest nazwą danych wyjściowych w kontekście zadania, a wartość jest konfiguracją wyjściową.

Dane wyjściowe zadań równoległych mogą być przywoływane przez dane wyjściowe potoku ${{ parents.outputs.<output_name> }} przy użyciu wyrażenia . Aby dowiedzieć się, jak powiązać dane wyjściowe kroku równoległego z danymi wyjściowymi potoku, zobacz Składnia wyrażeń dla powiązań danych wejściowych i wyjściowych między krokami zadania potoku.
outputs.<output_name> obiekt 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 lokalizację wyjściową dla danych wyjściowych na podstawie następującej ścieżki templatized: {settings.datastore}/azureml/{job-name}/{output-name}/. 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.
compute string Nazwa docelowego obiektu obliczeniowego do wykonania zadania. Wartość może być odwołaniem do istniejącego środowiska obliczeniowego w obszarze roboczym (przy użyciu azureml:<compute_name> składni) lub local wyznaczenia wykonywania lokalnego.

W przypadku korzystania z zadania równoległego w potoku można pozostawić to ustawienie puste, w takim przypadku obliczenia zostaną automatycznie wybrane przez default_compute potok.
local
task obiekt Wymagany. Szablon do definiowania zadań rozproszonych dla zadań równoległych. Zobacz Atrybuty task klucza.
input_data obiekt Wymagany. Zdefiniuj, które dane wejściowe zostaną podzielone na mini-partie w celu uruchomienia zadania równoległego. Dotyczy tylko odwoływania się do jednego z zadań inputs równoległych przy użyciu ${{ inputs.<input_name> }} wyrażenia
mini_batch_size string Zdefiniuj rozmiar każdej mini-partii, aby podzielić dane wejściowe.

Jeśli input_data jest folderem lub zestawem plików, ta liczba definiuje liczbę plików dla każdej minisady. Na przykład 10, 100.
Jeśli input_data jest danymi tabelarycznymi z mltableklasy , ta liczba definiuje proporcjonalny rozmiar fizyczny dla każdej mini-partii. Na przykład 100 kb, 100 mb.
1
partition_keys lista Klucze używane do partycjonowania zestawu danych w minisadach.

Jeśli zostanie określony, dane z tym samym kluczem zostaną podzielone na tę samą minisadę. Jeśli zostaną określone zarówno, jak partition_keys i mini_batch_size , klucze partycji zostaną zastosowane.
mini_batch_error_threshold integer Zdefiniuj liczbę nieudanych minisadów, które mogą być ignorowane w tym zadaniu równoległym. Jeśli liczba nieudanych minisadów wsadowych jest większa niż ten próg, zadanie równoległe zostanie oznaczone jako niepowodzenie.

Mini-batch jest oznaczony jako niepowodzenie, jeśli:
- liczba zwrotów z run() jest mniejsza niż liczba danych wejściowych mini-batch.
— przechwytywanie wyjątków w kodzie run().

"-1" jest liczbą domyślną, co oznacza ignorowanie wszystkich zakończonych niepowodzeniem minisadów podczas zadania równoległego.
[-1, int.max] -1
logging_level string Zdefiniuj poziom dzienników po cenach dumpingowych dla plików dziennika użytkownika. INFORMACJE, OSTRZEŻENIE, DEBUGOWANIE INFO
resources.instance_count integer Liczba węzłów do użycia dla zadania. 1
max_concurrency_per_instance integer Zdefiniuj liczbę procesów w każdym węźle obliczeniowym.

W przypadku obliczeń procesora GPU wartość domyślna to 1.
W przypadku obliczeń procesora CPU wartość domyślna to liczba rdzeni.
retry_settings.max_retries integer Zdefiniuj liczbę ponownych prób po awarii lub przekroczeniu limitu czasu dla mini-partii. Jeśli wszystkie ponawianie prób zakończy się niepowodzeniem, mini-partia zostanie oznaczona jako nieudana zliczanie według mini_batch_error_threshold obliczeń. 2
retry_settings.timeout integer Zdefiniuj limit czasu w sekundach na potrzeby wykonywania niestandardowej funkcji run(). Jeśli czas wykonywania jest wyższy niż ten próg, mini-partia zostanie przerwana i oznaczona jako nieudana minisada w celu wyzwolenia ponawiania próby. (0, 259200] 60
environment_variables obiekt Słownik par klucz-wartość zmiennej środowiskowej do ustawienia w procesie, w którym jest wykonywane polecenie.

task Atrybuty klucza

Klucz Type Opis Dozwolone wartości Domyślna wartość
type const Wymagany. Typ zadania. Dotyczy tylko do run_function tej pory.

W run_function trybie musisz podać codeskrypt języka , entry_scripti program_arguments zdefiniować skrypt języka Python za pomocą funkcji i argumentów wykonywalnych. Uwaga: Zadanie równoległe obsługuje tylko skrypt języka Python w tym trybie.
run_function run_function
code string Ścieżka lokalna do katalogu kodu źródłowego, który ma zostać przekazany i użyty do zadania.
entry_script string Plik języka Python zawierający implementację wstępnie zdefiniowanych funkcji równoległych. Aby uzyskać więcej informacji, zobacz Przygotowywanie skryptu wejścia do zadania równoległego.
environment ciąg lub obiekt Wymagane środowisko do użycia do uruchamiania zadania. Wartość może być odwołaniem 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.
program_arguments string Argumenty, które mają zostać przekazane do skryptu wpisu. Może zawierać wartość "--arg_name<> ${{inputs.<>intput_name}}" odwołanie do danych wejściowych lub wyjściowych.

Zadanie równoległe udostępnia listę wstępnie zdefiniowanych argumentów do ustawiania konfiguracji przebiegu równoległego. Aby uzyskać więcej informacji, zobacz wstępnie zdefiniowane argumenty dla zadania równoległego.
append_row_to string Agregowanie wszystkich zwraca z każdego przebiegu mini-batch i wyprowadza je do tego pliku. Może odwoływać się do jednego z danych wyjściowych zadania równoległego przy użyciu wyrażenia ${{outputs.<>output_name}}

Dane wejściowe zadania

Klucz Type Opis Dozwolone wartości Domyślna wartość
type string Typ danych wejściowych zadania. Określ mltable dane wejściowe wskazujące lokalizację, w której znajduje się plik meta mltable lub uri_folder dane wejściowe wskazujące źródło folderu. mltable, uri_folder uri_folder
path string Ścieżka do danych do użycia jako dane wejściowe. Wartość można określić na kilka sposobów:

- Ścieżka lokalna do pliku lub folderu źródła danych, na przykład 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, zobacz Podstawowa składnia yaml dotycząca sposobu używania formatu identyfikatora azureml:// URI.

— 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 (aby odwołać się do najnowszej wersji tego zasobu danych), na przykład path: azureml:cifar10-data:1 lub path: azureml:cifar10-data@latest.
mode string 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, a nie instalowania lub pobierania samych danych, możesz użyć direct trybu . Spowoduje to przekazanie adresu URL lokalizacji magazynu jako danych wejściowych zadania. W takim przypadku ponosisz pełną odpowiedzialność za obsługę poświadczeń w celu uzyskania dostępu do magazynu.
ro_mount, , downloaddirect ro_mount

Dane wyjściowe zadania

Klucz Type Opis Dozwolone wartości Domyślna wartość
type string Typ danych wyjściowych zadania. Dla domyślnego uri_folder typu dane wyjściowe będą odpowiadać folderowi. uri_folder uri_folder
mode string 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

Wstępnie zdefiniowane argumenty dla zadania równoległego

Key opis Dozwolone wartości Domyślna wartość
--error_threshold Próg elementów, które zakończyły się niepowodzeniem. Elementy, które zakończyły się niepowodzeniem, są liczone przez lukę liczbową między danymi wejściowymi i zwracanymi z każdej minisadowej partii. Jeśli suma elementów, które zakończyły się niepowodzeniem, jest wyższa niż ten próg, zadanie równoległe zostanie oznaczone jako niepowodzenie.

Uwaga: "-1" jest liczbą domyślną, co oznacza ignorowanie wszystkich błędów podczas zadania równoległego.
[-1, int.max] -1
--allowed_failed_percent Podobnie jak w przypadku mini_batch_error_threshold , ale używa procentu nieudanych minisadów zamiast liczby. [0, 100] 100
--task_overhead_timeout Limit czasu w sekundzie na potrzeby inicjowania każdej mini-partii. Na przykład załaduj dane minisadowe i przekaż je do funkcji run(). (0, 259200] 30
--progress_update_timeout Limit czasu w sekundzie na potrzeby monitorowania postępu wykonywania mini-partii. Jeśli w tym ustawieniu limitu czasu nie zostaną odebrane żadne aktualizacje postępu, zadanie równoległe zostanie oznaczone jako niepowodzenie. (0, 259200] Dynamicznie obliczane przez inne ustawienia.
--first_task_creation_timeout Limit czasu w sekundzie na potrzeby monitorowania czasu między uruchomieniem zadania pierwszego mini-partii. (0, 259200] 600
--copy_logs_to_parent Opcja logiczna umożliwiająca skopiowanie postępu zadania, omówienia i dzienników do nadrzędnego zadania potoku. Prawda, fałsz Fałsz
--metrics_name_prefix Podaj niestandardowy prefiks metryk w tym zadaniu równoległym.
--push_metrics_to_parent Opcja logiczna określająca, czy metryki wypychane do nadrzędnego zadania potoku. Prawda, fałsz Fałsz
--resource_monitor_interval Interwał czasu w sekundach do zrzutu użycia zasobów węzła (na przykład procesora CPU, pamięci) do folderu dziennika w ścieżce "logs/sys/perf".

Uwaga: Częste dzienniki zasobów zrzutu nieco spowalniają szybkość wykonywania mini-partii. Ustaw tę wartość na "0", aby zatrzymać dumping użycia zasobów.
[0, int.max] 600

Uwagi

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

Przykłady

Przykłady są dostępne w repozytorium GitHub przykłady. Poniżej przedstawiono kilka z poniższych elementów.

YAML: Używanie zadania równoległego w potoku

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

display_name: iris-batch-prediction-using-parallel
description: The hello world pipeline job with inline parallel job
tags:
  tag: tagvalue
  owner: sdkteam

settings:
  default_compute: azureml:cpu-cluster

jobs:
  batch_prediction:
    type: parallel
    compute: azureml:cpu-cluster
    inputs:
      input_data: 
        type: mltable
        path: ./neural-iris-mltable
        mode: direct
      score_model: 
        type: uri_folder
        path: ./iris-model
        mode: download
    outputs:
      job_output_file:
        type: uri_file
        mode: rw_mount

    input_data: ${{inputs.input_data}}
    mini_batch_size: "10kb"
    resources:
        instance_count: 2
    max_concurrency_per_instance: 2

    logging_level: "DEBUG"
    mini_batch_error_threshold: 5
    retry_settings:
      max_retries: 2
      timeout: 60

    task:
      type: run_function
      code: "./script"
      entry_script: iris_prediction.py
      environment:
        name: "prs-env"
        version: 1
        image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
        conda_file: ./environment/environment_parallel.yml
      program_arguments: >-
        --model ${{inputs.score_model}}
        --error_threshold 5
        --allowed_failed_percent 30
        --task_overhead_timeout 1200
        --progress_update_timeout 600
        --first_task_creation_timeout 600
        --copy_logs_to_parent True
        --resource_monitor_interva 20
      append_row_to: ${{outputs.job_output_file}}

Następne kroki