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 mltable klasy , 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ć code skrypt języka , entry_script i 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 , , https wasbs , 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 , , download direct |
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}}