Udostępnij za pośrednictwem


ParallelRunConfig Klasa

Definiuje konfigurację ParallelRunStep obiektu.

Przykład użycia metody ParallelRunStep można znaleźć w notesie https://aka.ms/batch-inference-notebooks.

Aby uzyskać informacje na temat rozwiązywania problemów, zobacz https://aka.ms/prstsg. Więcej odwołań można znaleźć w tym miejscu.

Zainicjuj obiekt konfiguracji.

Dziedziczenie
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBase
ParallelRunConfig

Konstruktor

ParallelRunConfig(environment, entry_script, error_threshold, output_action, compute_target, node_count, process_count_per_node=None, mini_batch_size=None, source_directory=None, description=None, logging_level='INFO', run_invocation_timeout=60, run_max_try=3, append_row_file_name=None, allowed_failed_count=None, allowed_failed_percent=None, partition_keys=None, environment_variables=None)

Parametry

Nazwa Opis
environment
Wymagane

Definicja środowiska, która konfiguruje środowisko języka Python. Można go skonfigurować tak, aby używać istniejącego środowiska języka Python lub skonfigurować środowisko tymczasowe dla eksperymentu. Definicja środowiska jest odpowiedzialna za definiowanie wymaganych zależności aplikacji, takich jak pakiety conda lub pip.

entry_script
Wymagane
str

Skrypt użytkownika, który będzie uruchamiany równolegle w wielu węzłach. Jest to określona jako ścieżka pliku lokalnego. Jeśli source_directory zostanie określony, entry_script to jest ścieżką względną wewnątrz katalogu. W przeciwnym razie może to być dowolna ścieżka dostępna na maszynie. Entry_script powinna zawierać dwie funkcje: init(): ta funkcja powinna być używana do jakichkolwiek kosztownych lub typowych przygotowań do kolejnych wnioskowań, np. deserializacji i ładowania modelu do obiektu globalnego. run(mini_batch): metoda, która ma być zrównana. Każde wywołanie będzie miało jedną minisadę. "mini_batch": wnioskowanie wsadowe wywoła metodę uruchamiania i przekaże listę lub ramkę danych Biblioteki Pandas jako argument do metody. Każdy wpis w min_batch będzie ścieżką pliku, jeśli dane wejściowe to FileDataset, ramka danych Pandas, jeśli dane wejściowe są tabelarycznym zestawem danych. Metoda run() powinna zwrócić ramkę danych Biblioteki Pandas lub tablicę. W przypadku append_row output_action te zwrócone elementy są dołączane do wspólnego pliku wyjściowego. W przypadku summary_only zawartość elementów jest ignorowana. Dla wszystkich akcji wyjściowych każdy zwrócony element wyjściowy wskazuje jedną pomyślną wnioskowanie elementu wejściowego w minisadowej partii wejściowej. Każdy proces równoległego procesu roboczego będzie wywoływać wywołanie init raz, a następnie pętli przez funkcję run do momentu przetworzenia wszystkich minisadów.

error_threshold
Wymagane
int

Liczba niepowodzeń rekordów dla TabularDataset błędów i plików, FileDataset które powinny być ignorowane podczas przetwarzania. Jeśli liczba błędów przekroczy tę wartość, zadanie zostanie przerwane. Próg błędu dotyczy całej danych wejściowych, a nie dla poszczególnych minisadów wysłanych do metody run(). Zakres to [-1, int.max]. -1 wskazuje, że wszystkie błędy są ignorowane podczas przetwarzania.

output_action
Wymagane
str

Sposób organizowania danych wyjściowych. Bieżące obsługiwane wartości to "append_row" i "summary_only".

  1. "append_row" — wszystkie wartości wyjściowe metody run() zostaną zagregowane w jednym unikatowym pliku o nazwie parallel_run_step.txt, który jest tworzony w lokalizacji wyjściowej.
  2. "summary_only" — skrypt użytkownika powinien przechowywać dane wyjściowe. Wiersz wyjściowy jest nadal oczekiwany dla każdego pomyślnie przetworzonego elementu wejściowego. System używa tych danych wyjściowych tylko do obliczania progu błędu (ignorując rzeczywistą wartość wiersza).
compute_target
Wymagane

Obiekt docelowy obliczeniowy używany do wykonywania ParallelRunStep. Ten parametr może być określony jako obiekt docelowy obliczeniowy lub nazwa docelowego obiektu obliczeniowego w obszarze roboczym.

node_count
Wymagane
int

Liczba węzłów w docelowym obiekcie obliczeniowym używanym do uruchamiania elementu ParallelRunStep.

process_count_per_node
int

Liczba procesów roboczych na węzeł do równoległego uruchamiania skryptu wprowadzania. W przypadku maszyny z procesorem GPU wartość domyślna to 1. W przypadku maszyny cpu wartość domyślna to liczba rdzeni. Proces roboczy będzie wywoływany run() wielokrotnie, przekazując minisadową partię. Całkowita liczba procesów roboczych w zadaniu to process_count_per_node * node_count, która decyduje o maksymalnej liczbie procesów run() do wykonania równolegle.

Domyślna wartość: None
mini_batch_size

W przypadku danych wejściowych fileDataset to pole jest liczbą plików, które skrypt użytkownika może przetworzyć w jednym wywołaniu run(). W przypadku danych wejściowych TabularDataset to przybliżony rozmiar danych, które skrypt użytkownika może przetworzyć w jednym wywołaniu run(). Przykładowe wartości to 1024, 1024 KB, 10 MB i 1 GB. (opcjonalnie wartość domyślna to 10 plików dla zestawu plików i 1 MB dla zestawu tabularDataset).

Domyślna wartość: None
source_directory
str

Ścieżka do folderu zawierającego entry_script pliki pomocnicze i używane do wykonywania w obiekcie docelowym obliczeniowym.

Domyślna wartość: None
description
str

Opis umożliwiający nadanie usłudze wsadowej używanej do celów wyświetlania.

Domyślna wartość: None
logging_level
str

Ciąg nazwy poziomu rejestrowania, który jest zdefiniowany w "rejestrowaniu". Możliwe wartości to "WARNING", "INFO" i "DEBUG". (opcjonalnie wartość domyślna to "INFO".

Domyślna wartość: INFO
run_invocation_timeout
int

Limit czasu w sekundach dla każdej wywołania metody run(). (opcjonalnie wartość domyślna to 60).

Domyślna wartość: 60
run_max_try
int

Maksymalna liczba prób dla minisadowej liczby prób zakończonych niepowodzeniem lub przekroczenia limitu czasu. Zakres to [1, int.max]. Wartość domyślna to 3. Minisadowa partia z liczbą dequeue większą niż ta nie zostanie ponownie przetworzona i zostanie usunięta bezpośrednio.

Domyślna wartość: 3
append_row_file_name
str

Nazwa pliku wyjściowego, jeśli output_action jest to "append_row". (opcjonalnie, wartość domyślna to "parallel_run_step.txt"

Domyślna wartość: None
allowed_failed_count
int

Liczba nieudanych minisadów, które powinny być ignorowane podczas przetwarzania. Jeśli liczba niepomyślnie przekroczy tę wartość, zadanie zostanie przerwane. Ten próg dotyczy całej danych wejściowych, a nie pojedynczej minisadowej wysłanej do metody run(). Zakres to [-1, int.max]. -1 wskazuje, że wszystkie błędy są ignorowane podczas przetwarzania. Minisadowa partia może zakończyć się niepowodzeniem przy pierwszym przetworzeniu, a następnie pomyślnym w drugiej próbie. Sprawdzanie między pierwszym i drugim razem będzie liczyć je jako nieudane. Sprawdzanie po raz drugi nie będzie liczyć go jako nieudanego. Argument –error_threshold, –allowed_failed_count i –allowed_failed_percent może współpracować. Jeśli zostanie określona więcej niż jedna, zadanie zostanie przerwane, jeśli zostanie przekroczone dowolne z nich.

Domyślna wartość: None
allowed_failed_percent

Procent nieudanych minisadów, które powinny być ignorowane podczas przetwarzania. Jeśli procent niepowodzenia przekroczy tę wartość, zadanie zostanie przerwane. Ten próg dotyczy całej danych wejściowych, a nie pojedynczej minisadowej wysłanej do metody run(). Zakres to [0, 100]. Wartość 100 lub 100.0 wskazuje ignorowanie wszystkich błędów podczas przetwarzania. Sprawdzanie rozpoczyna się po zaplanowaniu wszystkich minisadów. Argument –error_threshold, –allowed_failed_count i –allowed_failed_percent może współpracować. Jeśli zostanie określona więcej niż jedna, zadanie zostanie przerwane, jeśli zostanie przekroczone dowolne z nich.

Domyślna wartość: None
partition_keys

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 określono zarówno partition_keys, jak i mini_batch_size, zostanie zgłoszony błąd. Powinna to być lista elementów str, które są kluczem używanym do partycjonowania wejściowego zestawu danych. Jednak w przypadku podwyższenia poziomu do parametru PipelineParameter wartości domyślne powinny być ciągiem zrzutu json listy, ponieważ typ listy nie jest obecnie obsługiwany w potokuParameter. Dane wejściowe muszą być podzielone na partycje zestawy danych, a partition_keys musi być podzbiorem kluczy każdego wejściowego zestawu danych, aby to działało.

Domyślna wartość: None
environment_variables

Słownik nazw i wartości zmiennych środowiskowych. Te zmienne środowiskowe są ustawiane w procesie, w którym jest wykonywany skrypt użytkownika.

Domyślna wartość: None
environment
Wymagane

Definicja środowiska, która konfiguruje środowisko języka Python. Można go skonfigurować tak, aby używać istniejącego środowiska języka Python lub skonfigurować środowisko tymczasowe dla eksperymentu. Definicja środowiska jest odpowiedzialna za definiowanie wymaganych zależności aplikacji, takich jak pakiety conda lub pip.

entry_script
Wymagane
str

Skrypt użytkownika, który będzie uruchamiany równolegle w wielu węzłach. Jest to określone jako lokalna ścieżka pliku. Jeśli source_directory jest określona, entry_script jest ścieżką względną wewnątrz katalogu. W przeciwnym razie może to być dowolna ścieżka dostępna na maszynie. Entry_script powinna zawierać dwie funkcje: init(): ta funkcja powinna być używana do każdego kosztownego lub wspólnego przygotowania do kolejnych wnioskowań, np. deserializacji i załadowania modelu do obiektu globalnego. run(mini_batch): metoda, która ma zostać zrównanana. Każde wywołanie będzie mieć jedną minisadę. "mini_batch": Wnioskowanie wsadowe wywoła metodę uruchamiania i przekaże listę lub obiekt DataFrame biblioteki Pandas jako argument do metody. Każdy wpis w min_batch będzie ścieżką pliku, jeśli dane wejściowe to FileDataset, ramka danych Pandas, jeśli dane wejściowe są tabelarycznym zestawem danych. Metoda run() powinna zwracać ramkę danych biblioteki Pandas lub tablicę. W przypadku append_row output_action zwracane elementy są dołączane do wspólnego pliku wyjściowego. W przypadku summary_only zawartość elementów jest ignorowana. Dla wszystkich akcji wyjściowych każdy zwrócony element wyjściowy wskazuje jeden pomyślny wnioskowanie elementu wejściowego w minisadowej partii wejściowej. Każdy proces równoległego procesu roboczego wywoła metodę init raz, a następnie zapętla funkcję run do momentu przetworzenia wszystkich minisadów.

error_threshold
Wymagane
int

Liczba niepowodzeń rekordów i TabularDataset błędów plików, FileDataset które należy zignorować podczas przetwarzania. Jeśli liczba błędów przekroczy tę wartość, zadanie zostanie przerwane. Próg błędu jest przeznaczony dla całego wejścia, a nie dla pojedynczych minisadów wysyłanych do metody run(). Zakres to [-1, int.max]. -1 wskazuje ignorować wszystkie błędy podczas przetwarzania.

output_action
Wymagane
str

Sposób organizowania danych wyjściowych. Bieżące obsługiwane wartości to "append_row" i "summary_only".

  1. "append_row" — wszystkie wartości wyjściowe wywołań metody run() zostaną zagregowane w jednym unikatowym pliku o nazwie parallel_run_step.txt, który jest tworzony w lokalizacji wyjściowej.
  2. "summary_only" — skrypt użytkownika powinien przechowywać dane wyjściowe. Wiersz danych wyjściowych jest nadal oczekiwany dla każdego przetworzonego pomyślnego elementu wejściowego. System używa tych danych wyjściowych tylko do obliczania progu błędu (ignorując rzeczywistą wartość wiersza).
compute_target
Wymagane

Docelowy obiekt obliczeniowy do użycia na potrzeby wykonywania ParallelRunStep. Ten parametr można określić jako obiekt docelowy obliczeniowy lub nazwę docelowego obiektu obliczeniowego w obszarze roboczym.

node_count
Wymagane
int

Liczba węzłów w docelowym obiekcie obliczeniowym używanym do uruchamiania elementu ParallelRunStep.

process_count_per_node
Wymagane
int

Liczba procesów roboczych na węzeł do równoległego uruchamiania skryptu wejściowego. W przypadku maszyny z procesorem GPU wartość domyślna to 1. W przypadku maszyny procesora CPU wartość domyślna to liczba rdzeni. Proces roboczy będzie wywoływany run() wielokrotnie, przekazując minisadową partię. Łączna liczba procesów roboczych w zadaniu to process_count_per_node * node_count, która decyduje o maksymalnej liczbie wykonywanych run() równolegle.

mini_batch_size
Wymagane
str lub int

W przypadku danych wejściowych fileDataset to pole jest liczbą plików, które skrypt użytkownika może przetworzyć w jednym wywołaniu run(). W przypadku danych wejściowych TabularDataset to przybliżony rozmiar danych, które skrypt użytkownika może przetworzyć w jednym wywołaniu run(). Przykładowe wartości to 1024, 1024 KB, 10 MB i 1 GB. (opcjonalnie wartość domyślna to 10 plików dla elementu FileDataset i 1 MB dla elementu TabularDataset).

source_directory
Wymagane
str

Ścieżka do folderu zawierającego entry_script pliki pomocnicze i używane do wykonywania na docelowym obiekcie obliczeniowym.

description
Wymagane
str

Opis umożliwiający przekazanie usługi wsadowej używanej do celów wyświetlania.

logging_level
Wymagane
str

Ciąg nazwy poziomu rejestrowania, który jest zdefiniowany w ciągu "rejestrowania". Możliwe wartości to "WARNING", "INFO" i "DEBUG". (opcjonalnie wartość domyślna to "INFO".

run_invocation_timeout
Wymagane
int

Limit czasu w sekundach dla każdej wywołania metody run(). (opcjonalnie wartość domyślna to 60).

run_max_try
Wymagane
int

Maksymalna liczba prób dla minisadowej partii zakończonych niepowodzeniem lub przekroczenia limitu czasu. Zakres to [1, int.max]. Wartość domyślna to 3. Mini batch z liczbą dequeue większą niż ta nie zostanie ponownie przetworzona i zostanie usunięta bezpośrednio.

append_row_file_name
Wymagane
str

Nazwa pliku wyjściowego, jeśli jest output_action to "append_row". (opcjonalnie wartość domyślna to "parallel_run_step.txt")

allowed_failed_count
Wymagane
int

Liczba nieudanych minisadów, które powinny być ignorowane podczas przetwarzania. Jeśli liczba niepomyślnie przekroczy tę wartość, zadanie zostanie przerwane. Ten próg dotyczy całej danych wejściowych, a nie pojedynczej minisadowej wysłanej do metody run(). Zakres to [-1, int.max]. -1 wskazuje ignorować wszystkie błędy podczas przetwarzania. Minisadowa partia może zakończyć się niepowodzeniem po pierwszym przetworzeniu, a następnie po pomyślnym zakończeniu drugiej próby. Sprawdzanie między pierwszym i drugim czasem będzie zliczane jako niepowodzenie. Sprawdzanie po raz drugi nie będzie zliczane jako nieudane. Argument –error_threshold, –allowed_failed_count i –allowed_failed_percent może współpracować. Jeśli zostanie określona więcej niż jedna, zadanie zostanie przerwane, jeśli przekroczy którykolwiek z nich.

allowed_failed_percent
Wymagane

Procent nieudanych minisadów, które powinny być ignorowane podczas przetwarzania. Jeśli procent niepowodzenia przekroczy tę wartość, zadanie zostanie przerwane. Ten próg dotyczy całej danych wejściowych, a nie pojedynczej minisadowej wysłanej do metody run(). Zakres to [0, 100]. Wartość 100 lub 100.0 wskazuje, że ignoruje wszystkie błędy podczas przetwarzania. Sprawdzanie rozpoczyna się po zaplanowaniu wszystkich minisadów. Argument –error_threshold, –allowed_failed_count i –allowed_failed_percent może współpracować. Jeśli zostanie określona więcej niż jedna, zadanie zostanie przerwane, jeśli przekroczy którykolwiek z nich.

partition_keys
Wymagane

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 określono zarówno partition_keys, jak i mini_batch_size, zostanie zgłoszony błąd. Powinna to być lista elementów str, z których każdy jest kluczem używanym do partycjonowania wejściowego zestawu danych. Jednak w przypadku podwyższenia poziomu do parametru PipelineParameter wartości domyślne powinny być ciągiem zrzutu json listy, ponieważ typ listy nie jest obecnie obsługiwany w parametrze PipelineParameter. Dane wejściowe muszą być partycjonowane, a partition_keys musi być podzbiorem kluczy każdego wejściowego zestawu danych, aby to działało.

environment_variables
Wymagane

Słownik nazw i wartości zmiennych środowiskowych. Te zmienne środowiskowe są ustawiane w procesie wykonywania skryptu użytkownika.

Uwagi

Klasa ParallelRunConfig służy do zapewnienia konfiguracji dla ParallelRunStep klasy . ParallelRunConfig i ParallelRunStep mogą być używane razem do równoległego przetwarzania dużych ilości danych. Typowe przypadki użycia to trenowanie modelu uczenia maszynowego lub uruchamianie wnioskowania w trybie offline w celu generowania przewidywań na podstawie partii obserwacji. Działanie klasy ParallelRunStep polega na podziale danych na partie przetwarzane równolegle. Rozmiar partii, liczba węzłów i inne parametry dostrajania w celu przyspieszenia przetwarzania równoległego można kontrolować za ParallelRunConfig pomocą klasy . Element ParallelRunStep może pracować z danymi wejściowymi TabularDataset lub FileDataset .

Aby użyć klasy ParallelRunStep i ParallelRunConfig:

  • ParallelRunConfig Utwórz obiekt w celu określenia sposobu wykonywania przetwarzania wsadowego z parametrami służącymi do kontrolowania rozmiaru partii, liczby węzłów na docelowy obiekt obliczeniowy i odwołania do niestandardowego skryptu języka Python.

  • Utwórz obiekt ParallelRunStep, który używa obiektu ParallelRunConfig, definiuje dane wejściowe i wyjściowe dla kroku.

  • Użyj skonfigurowanego obiektu ParallelRunStep w taki sam sposób, jak w Pipeline przypadku innych typów kroków potoku.

Przykłady pracy z klasami ParallelRunStep i ParallelRunConfig na potrzeby wnioskowania wsadowego zostały omówione w następujących artykułach:


   from azureml.pipeline.steps import ParallelRunStep, ParallelRunConfig

   parallel_run_config = ParallelRunConfig(
       source_directory=scripts_folder,
       entry_script=script_file,
       mini_batch_size="5",        # or partition_keys=["key1", "key2"], which is another way to partition the
                                   # input to mini-batches, refer to the parameter description for details
       error_threshold=10,         # Optional, allowed failed count on mini batch items
       allowed_failed_count=15,    # Optional, allowed failed count on mini batches
       allowed_failed_percent=10,  # Optional, allowed failed percent on mini batches
       run_max_try=3,
       output_action="append_row",
       environment=batch_env,
       compute_target=compute_target,
       node_count=2)

   parallelrun_step = ParallelRunStep(
       name="predict-digits-mnist",
       parallel_run_config=parallel_run_config,
       inputs=[ named_mnist_ds ],
       output=output_dir,
       arguments=[ "--extra_arg", "example_value" ],
       allow_reuse=True
   )

Aby uzyskać więcej informacji na temat tego przykładu, zobacz notes https://aka.ms/batch-inference-notebooks.

Metody

load_yaml

Ładowanie równoległych danych konfiguracji uruchamiania z pliku YAML.

save_to_yaml

Eksportowanie równoległych danych konfiguracji uruchamiania do pliku YAML.

load_yaml

Ładowanie równoległych danych konfiguracji uruchamiania z pliku YAML.

static load_yaml(workspace, path)

Parametry

Nazwa Opis
workspace
Wymagane

Obszar roboczy do odczytywania danych konfiguracji.

path
Wymagane
str

Ścieżka do załadowania konfiguracji z.

save_to_yaml

Eksportowanie równoległych danych konfiguracji uruchamiania do pliku YAML.

save_to_yaml(path)

Parametry

Nazwa Opis
path
Wymagane
str

Ścieżka do zapisania pliku.