Condividi tramite


ParallelRunConfig Classe

Definisce la configurazione per un ParallelRunStep oggetto.

Per un esempio di uso di ParallelRunStep, vedere il notebook https://aka.ms/batch-inference-notebooks.

Per la guida alla risoluzione dei problemi, vedere https://aka.ms/prstsg. È possibile trovare altri riferimenti in questa posizione.

Inizializzare l'oggetto config.

Ereditarietà
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBase
ParallelRunConfig

Costruttore

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)

Parametri

Nome Descrizione
environment
Necessario

Definizione di ambiente che configura l'ambiente Python. Può essere configurato per l'uso di un ambiente Python esistente o per configurare un ambiente temporaneo per l'esperimento. La definizione dell'ambiente è responsabile della definizione delle dipendenze dell'applicazione necessarie, ad esempio pacchetti conda o pip.

entry_script
Necessario
str

Script utente che verrà eseguito in parallelo su più nodi. Viene specificato come percorso di file locale. Se source_directory viene specificato, è entry_script un percorso relativo all'interno della directory. In caso contrario, può essere qualsiasi percorso accessibile nel computer. Il entry_script deve contenere due funzioni: init()questa funzione deve essere usata per qualsiasi preparazione costosa o comune per inferenze successive, ad esempio deserializzazione e caricamento del modello in un oggetto globale. run(mini_batch): metodo da parallelizzare. Ogni chiamata avrà un mini batch. 'mini_batch': l'inferenza batch richiamerà il metodo run e passerà un elenco o un dataframe Pandas come argomento al metodo . Ogni voce in min_batch sarà un percorso file se l'input è un oggetto FileDataset, un dataframe Pandas se l'input è un oggetto TabularDataset. Il metodo run() deve restituire un dataframe Pandas o una matrice. Per append_row output_action, questi elementi restituiti vengono accodati nel file di output comune. Per summary_only, il contenuto degli elementi viene ignorato. Per tutte le azioni di output, ogni elemento di output restituito indica un'inferenza riuscita dell'elemento di input nel mini-batch di input. Ogni processo di lavoro parallelo chiamerà init una sola volta e quindi eseguirà il ciclo sulla funzione fino a quando non vengono elaborati tutti i mini batch.

error_threshold
Necessario
int

numero di errori di record per TabularDataset e di errori di file per FileDataset che devono essere ignorati durante l'elaborazione. Se il conteggio degli errori supera questo valore, il processo verrà interrotto. La soglia di errore è relativa all'intero input e non ai singoli mini batch inviati al metodo run(). L'intervallo è [-1, int.max]. -1 indica che tutti gli errori vengono ignorati durante l'elaborazione.

output_action
Necessario
str

Modalità di organizzazione dell'output. I valori supportati correnti sono 'append_row' e 'summary_only'.

  1. 'append_row': tutti i valori restituiti dalle chiamate al metodo run() verranno aggregati in un unico file denominato parallel_run_step.txt creato nel percorso di output.
  2. 'summary_only': lo script utente deve archiviare l'output stesso. È comunque prevista una riga di output per ogni elemento di input elaborato correttamente. Il sistema usa questo output solo per il calcolo della soglia di errore (ignorando il valore effettivo della riga).
compute_target
Necessario
AmlCompute oppure str

Destinazione di calcolo da usare per l'esecuzione parallelRunStep. Questo parametro può essere specificato come oggetto di destinazione di calcolo o come nome di una destinazione di calcolo nell'area di lavoro.

node_count
Necessario
int

Numero di nodi nella destinazione di calcolo usata per l'esecuzione di ParallelRunStep.

process_count_per_node
int

Numero di processi di lavoro per nodo per eseguire lo script di immissione in parallelo. Per il computer GPU, il valore predefinito è 1. Per il computer CPU, il valore predefinito è il numero di core. Un processo di lavoro chiamerà run() ripetutamente passando il mini batch che ottiene. Il numero totale di processi di lavoro nel processo è process_count_per_node * node_count, che determina il numero massimo di run() processi da eseguire in parallelo.

Valore predefinito: None
mini_batch_size

Per l'input FileDataset, questo campo è il numero di file che uno script utente può elaborare in una sola chiamata run(). Per l'input TabularDataset, questo campo corrisponde alle dimensioni approssimative dei dati che lo script utente può elaborare in una chiamata run(). I valori di esempio sono 1024, 1024 KB, 10 MB e 1 GB. Facoltativo, il valore predefinito è 10 file per FileDataset e 1 MB per TabularDataset.

Valore predefinito: None
source_directory
str

Percorso della cartella che contiene i entry_script file di supporto e usati per l'esecuzione nella destinazione di calcolo.

Valore predefinito: None
description
str

Descrizione per assegnare al servizio batch utilizzato a scopo di visualizzazione.

Valore predefinito: None
logging_level
str

Stringa del nome del livello di registrazione, definito in 'logging'. I valori possibili sono 'WARNING', 'INFO' e 'DEBUG'. (facoltativo, il valore predefinito è 'INFO').

Valore predefinito: INFO
run_invocation_timeout
int

Timeout in secondi per ogni chiamata del metodo run(). (facoltativo, il valore predefinito è 60.)

Valore predefinito: 60
run_max_try
int

Numero massimo di tentativi per un mini batch non riuscito o di timeout. L'intervallo è [1, int.max]. Il valore predefinito è 3. Un mini batch con conteggio di rimozione dalla coda maggiore di questo non verrà elaborato di nuovo e verrà eliminato direttamente.

Valore predefinito: 3
append_row_file_name
str

Nome del file di output se è output_action "append_row". (facoltativo, il valore predefinito è 'parallel_run_step.txt')

Valore predefinito: None
allowed_failed_count
int

Numero di mini batch non riusciti che devono essere ignorati durante l'elaborazione. Se il conteggio degli errori supera questo valore, il processo verrà interrotto. Questa soglia è relativa all'intero input anziché al singolo mini batch inviato al metodo run(). L'intervallo è [-1, int.max]. -1 indica che tutti gli errori vengono ignorati durante l'elaborazione. Un mini batch potrebbe non riuscire la prima volta che viene elaborato e quindi avere esito positivo al secondo tentativo. Il controllo tra la prima e la seconda volta lo conteggierà come non riuscito. Il controllo dopo la seconda volta non verrà conteggiato come non riuscito. L'argomento –error_threshold, –allowed_failed_count e –allowed_failed_percent può funzionare insieme. Se più di uno specificato, il processo verrà interrotto se supera uno di essi.

Valore predefinito: None
allowed_failed_percent

Percentuale di mini batch non riusciti che devono essere ignorati durante l'elaborazione. Se la percentuale non riuscita supera questo valore, il processo verrà interrotto. Questa soglia è relativa all'intero input anziché al singolo mini batch inviato al metodo run(). L'intervallo è [0, 100]. 100 o 100.0 indica che tutti gli errori durante l'elaborazione vengono ignorati. Il controllo viene avviato dopo che tutti i mini batch sono stati pianificati. L'argomento –error_threshold, –allowed_failed_count e –allowed_failed_percent può funzionare insieme. Se più di uno specificato, il processo verrà interrotto se supera uno di essi.

Valore predefinito: None
partition_keys

Chiavi usate per partizionare il set di dati in mini batch. Se specificato, i dati con la stessa chiave verranno partizionati nello stesso mini batch. Se vengono specificati sia partition_keys che mini_batch_size, verrà generato un errore. Deve essere un elenco di elementi str ognuno dei quali è una chiave usata per partizionare il set di dati di input. Tuttavia, se promosso a PipelineParameter, i valori predefiniti devono essere lo str del dump json dell'elenco perché il tipo di elenco non è supportato in PipelineParameter per il momento. Gli input devono essere set di dati partizionati e il partition_keys deve essere un subset delle chiavi di ogni set di dati di input per il funzionamento.

Valore predefinito: None
environment_variables

Dizionario di nomi e valori delle variabili di ambiente. Queste variabili di ambiente vengono impostate nel processo in cui viene eseguito lo script utente.

Valore predefinito: None
environment
Necessario

Definizione di ambiente che configura l'ambiente Python. Può essere configurato per l'uso di un ambiente Python esistente o per configurare un ambiente temporaneo per l'esperimento. La definizione dell'ambiente è responsabile della definizione delle dipendenze dell'applicazione necessarie, ad esempio pacchetti conda o pip.

entry_script
Necessario
str

Script utente che verrà eseguito in parallelo su più nodi. Viene specificato come percorso di file locale. Se source_directory specificato, è entry_script un percorso relativo all'interno della directory. In caso contrario, può essere qualsiasi percorso accessibile nel computer. La entry_script deve contenere due funzioni: init()questa funzione deve essere usata per qualsiasi preparazione costosa o comune per le inferenze successive, ad esempio deserializzazione e caricamento del modello in un oggetto globale. run(mini_batch): metodo da parallelizzare. Ogni chiamata avrà un mini-batch. 'mini_batch': l'inferenza batch richiama il metodo di esecuzione e passa un elenco o un DataFrame Pandas come argomento al metodo. Ogni voce in min_batch sarà un filepath se l'input è un FileDataset, un DataFrame Pandas se l'input è un TabularDataset. il metodo run() deve restituire un dataframe Pandas o una matrice. Per append_row output_action, questi elementi restituiti vengono accodati nel file di output comune. Per summary_only, il contenuto degli elementi viene ignorato. Per tutte le azioni di output, ogni elemento di output restituito indica un'inferenza riuscita dell'elemento di input nel mini-batch di input. Ogni processo di lavoro parallelo chiama init una volta e quindi esegue il ciclo della funzione di esecuzione fino a quando non vengono elaborati tutti i mini-batch.

error_threshold
Necessario
int

numero di errori di record per TabularDataset e di errori di file per FileDataset che devono essere ignorati durante l'elaborazione. Se il conteggio degli errori supera questo valore, il processo verrà interrotto. La soglia di errore è per l'intero input e non per singoli mini-batch inviati al metodo run(). L'intervallo è [-1, int.max]. -1 indica che ignora tutti gli errori durante l'elaborazione.

output_action
Necessario
str

Come organizzare l'output. I valori supportati correnti sono "append_row" e "summary_only".

  1. 'append_row': tutti i valori restituiti dalle chiamate al metodo run() verranno aggregati in un file univoco denominato parallel_run_step.txt che viene creato nel percorso di output.
  2. 'summary_only': lo script utente dovrebbe archiviare l'output stesso. Per ogni elemento di input elaborato correttamente è ancora prevista una riga di output. Il sistema usa questo output solo per il calcolo della soglia di errore (ignorando il valore effettivo della riga).
compute_target
Necessario
AmlCompute oppure str

Destinazione di calcolo da usare per l'esecuzione parallelRunStep. Questo parametro può essere specificato come oggetto di destinazione di calcolo o come nome di una destinazione di calcolo nell'area di lavoro.

node_count
Necessario
int

Numero di nodi nella destinazione di calcolo usata per l'esecuzione di ParallelRunStep.

process_count_per_node
Necessario
int

Numero di processi di lavoro per nodo per eseguire lo script di immissione in parallelo. Per un computer GPU, il valore predefinito è 1. Per un computer CPU, il valore predefinito è il numero di core. Un processo di lavoro chiama run() ripetutamente passando il mini batch che ottiene. Il numero totale di processi di lavoro nel processo è process_count_per_node * node_count, che decide il numero massimo di run() da eseguire in parallelo.

mini_batch_size
Necessario
str oppure int

Per l'input di FileDataset, questo campo è il numero di file che uno script utente può elaborare in una chiamata run(). Per l'input tabularDataset, questo campo è la dimensione approssimativa dei dati che lo script utente può elaborare in una chiamata run(). I valori di esempio sono 1024, 1024 KB, 10 MB e 1 GB. Facoltativo, il valore predefinito è 10 file per FileDataset e 1MB per TabularDataset.

source_directory
Necessario
str

Percorso della cartella contenente i file di supporto e usati per l'esecuzione entry_script nella destinazione di calcolo.

description
Necessario
str

Descrizione da assegnare al servizio batch usato a scopo di visualizzazione.

logging_level
Necessario
str

Stringa del nome del livello di registrazione, definito in 'logging'. I valori possibili sono "WARNING", "INFO" e "DEBUG". (facoltativo, il valore predefinito è 'INFO').

run_invocation_timeout
Necessario
int

Timeout in secondi per ogni chiamata del metodo run(). (facoltativo, il valore predefinito è 60.)

run_max_try
Necessario
int

Numero di tentativi massimi per un batch mini di timeout non riuscito o di timeout. L'intervallo è [1, int.max]. Il valore predefinito è 3. Un mini batch con conteggio dequeue maggiore di questo non verrà elaborato di nuovo e verrà eliminato direttamente.

append_row_file_name
Necessario
str

Nome del file di output se è output_action "append_row". (facoltativo, il valore predefinito è 'parallel_run_step.txt')

allowed_failed_count
Necessario
int

Numero di mini batch non riusciti che devono essere ignorati durante l'elaborazione. Se il conteggio non riuscito supera questo valore, il processo verrà interrotto. Questa soglia è per l'intero input anziché per il singolo mini-batch inviato al metodo run(). L'intervallo è [-1, int.max]. -1 indica che ignora tutti gli errori durante l'elaborazione. Un mini batch potrebbe non riuscire la prima volta che viene elaborato e quindi riuscire al secondo tentativo. Il controllo tra la prima e la seconda volta verrà conteggiato come non riuscito. Il controllo dopo la seconda volta non lo conteggierà come non riuscito. L'argomento –error_threshold, –allowed_failed_count e –allowed_failed_percent può collaborare. Se più di uno specificato, il processo verrà interrotto se supera uno di essi.

allowed_failed_percent
Necessario

Percentuale di mini batch non riusciti che devono essere ignorati durante l'elaborazione. Se la percentuale non riuscita supera questo valore, il processo verrà interrotto. Questa soglia è per l'intero input anziché per il singolo mini-batch inviato al metodo run(). L'intervallo è [0, 100]. 100 o 100.0 indica l'ignorare tutti gli errori durante l'elaborazione. Il controllo inizia dopo che tutti i mini batch sono stati pianificati. L'argomento –error_threshold, –allowed_failed_count e –allowed_failed_percent può collaborare. Se più di uno specificato, il processo verrà interrotto se supera uno di essi.

partition_keys
Necessario

Chiavi usate per partizionare il set di dati in mini-batch. Se specificato, i dati con la stessa chiave verranno partizionati nello stesso mini-batch. Se vengono specificati sia partition_keys che mini_batch_size, verrà generato un errore. Deve essere un elenco di elementi str ogni chiave usata per partizionare il set di dati di input. Tuttavia, se promosso a PipelineParameter, i valori predefiniti devono essere lo str di dump json dell'elenco perché il tipo di elenco non è supportato in PipelineParameter per il momento. Gli input devono essere set di dati partizionati e il partition_keys deve essere un subset delle chiavi di ogni set di dati di input per il funzionamento.

environment_variables
Necessario

Dizionario dei nomi e dei valori delle variabili di ambiente. Queste variabili di ambiente vengono impostate nel processo in cui viene eseguito lo script utente.

Commenti

La classe ParallelRunConfig viene usata per fornire la configurazione per la ParallelRunStep classe. ParallelRunConfig e ParallelRunStep possono essere usati insieme per l'elaborazione di grandi quantità di dati in parallelo. I casi d'uso comuni sono il training di un modello ML o l'esecuzione dell'inferenza offline per generare stime in un batch di osservazioni. ParallelRunStep funziona suddividendo i dati in batch elaborati in parallelo. Le dimensioni del batch, il conteggio dei nodi e altri parametri di tonno per velocizzare l'elaborazione parallela possono essere controllati con la ParallelRunConfig classe . ParallelRunStep può funzionare con TabularDataset o FileDataset come input.

Per usare ParallelRunStep e ParallelRunConfig:

  • Creare un ParallelRunConfig oggetto per specificare il modo in cui viene eseguita l'elaborazione batch, con parametri per controllare le dimensioni batch, il numero di nodi per destinazione di calcolo e un riferimento allo script Python personalizzato.

  • Creare un oggetto ParallelRunStep che usa l'oggetto ParallelRunConfig, definisce input e output per il passaggio.

  • Usare l'oggetto ParallelRunStep configurato in un Pipeline oggetto proprio come si farebbe con altri tipi di passaggio della pipeline.

Gli esempi di utilizzo delle classi ParallelRunStep e ParallelRunConfig per l'inferenza batch sono illustrati negli articoli seguenti:


   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
   )

Per altre informazioni su questo esempio, vedere il notebook https://aka.ms/batch-inference-notebooks.

Metodi

load_yaml

Caricare i dati di configurazione di esecuzione parallela da un file YAML.

save_to_yaml

Esportare i dati di configurazione di esecuzione parallela in un file YAML.

load_yaml

Caricare i dati di configurazione di esecuzione parallela da un file YAML.

static load_yaml(workspace, path)

Parametri

Nome Descrizione
workspace
Necessario

Area di lavoro da cui leggere i dati di configurazione.

path
Necessario
str

Percorso da cui caricare la configurazione.

save_to_yaml

Esportare i dati di configurazione di esecuzione parallela in un file YAML.

save_to_yaml(path)

Parametri

Nome Descrizione
path
Necessario
str

Percorso in cui salvare il file.