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. Sono disponibili altri riferimenti.

Inizializzare l'oggetto config.

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 dell'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 del file locale. Se source_directory viene specificato, è entry_script un percorso relativo all'interno della directory. In caso contrario, può essere accessibile qualsiasi percorso nel computer. Il entry_script deve contenere due funzioni: init()questa funzione deve essere usata per qualsiasi preparazione costosa o comune per le inferenze successive, ad esempio la deserializzazione e il 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 corretta 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 errori di file che FileDataset devono essere ignorati durante l'elaborazione. Se il numero di 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': è previsto che lo script utente archivii 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
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 riceve. Il numero totale di processi di lavoro nel processo è process_count_per_node * node_count, che determina il numero massimo di run() 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 è 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 1 MB per TabularDataset.

Valore predefinito: None
source_directory
str

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

Valore predefinito: None
description
str

Descrizione da 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 della 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 verrà conteggiato 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ò collaborare. 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 di 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 è [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ò collaborare. 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 di dump json dell'elenco perché per il momento il tipo di elenco non è supportato in PipelineParameter. 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 dell'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 del file locale. Se source_directory viene specificato, è entry_script un percorso relativo all'interno della directory. In caso contrario, può essere accessibile qualsiasi percorso nel computer. Il entry_script deve contenere due funzioni: init()questa funzione deve essere usata per qualsiasi preparazione costosa o comune per le inferenze successive, ad esempio la deserializzazione e il 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 corretta 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 errori di file che FileDataset devono essere ignorati durante l'elaborazione. Se il numero di 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': è previsto che lo script utente archivii 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 chiamerà run() ripetutamente passando il mini batch che riceve. Il numero totale di processi di lavoro nel processo è process_count_per_node * node_count, che determina il numero massimo di run() da eseguire in parallelo.

mini_batch_size
Necessario
str oppure int

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 è 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 1 MB 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 utilizzato 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 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 della coda 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 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 verrà conteggiato 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ò 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 di 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 è [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ò 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, 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 di dump json dell'elenco perché per il momento il tipo di elenco non è supportato in PipelineParameter. 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 di nomi e 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 elaborare 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 numero di nodi e altri parametri ottimizzabili per velocizzare l'elaborazione parallela possono essere controllate con la ParallelRunConfig classe . ParallelRunStep può funzionare con TabularDataset o FileDataset come input.

Per usare ParallelRunStep e ParallelRunConfig:

  • Creare un ParallelRunConfig oggetto per specificare come viene eseguita l'elaborazione batch, con parametri per controllare le dimensioni del batch, il numero di nodi per ogni 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 esattamente 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 dell'esecuzione parallela da un file YAML.

save_to_yaml

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

load_yaml

Caricare i dati di configurazione dell'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 dell'esecuzione parallela in un file YAML.

save_to_yaml(path)

Parametri

Nome Descrizione
path
Necessario
str

Percorso in cui salvare il file.