ParallelRunConfig Classe
Définit la configuration d’un objet ParallelRunStep.
Pour obtenir un exemple d’utilisation de ParallelRunStep, consultez le notebook https://aka.ms/batch-inference-notebooks.
Pour obtenir le guide de résolution des problèmes, consultez https://aka.ms/prstsg. Vous trouverez plus de références ici.
Initialisez l’objet config.
- Héritage
-
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBaseParallelRunConfig
Constructeur
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)
Paramètres
Nom | Description |
---|---|
environment
Obligatoire
|
Définition de l’environnement qui configure l’environnement Python. Il peut être configuré pour utiliser un environnement Python existant ou pour configurer un environnement temporaire pour l’expérience. La définition de l’environnement est chargée de définir les dépendances d’application nécessaires, comme les packages conda ou pip. |
entry_script
Obligatoire
|
Script utilisateur qui sera exécuté en parallèle sur plusieurs nœuds. Il s’agit du chemin du fichier local. Si |
error_threshold
Obligatoire
|
nombre d’échecs d’enregistrement pour TabularDataset et d’échecs de fichiers pour FileDataset qui doivent être ignorés pendant le traitement. Si le nombre d’erreurs dépasse cette valeur, le travail sera interrompu. Le seuil d’erreurs concerne la totalité de l’entrée et non chacun des mini-lots envoyés à la méthode. La plage est [-1, int.max]. -1 indique d’ignorer toutes les défaillances lors du traitement. |
output_action
Obligatoire
|
Mode d’organisation de la sortie. Les valeurs actuellement prises en charge sont « append_row » et « summary_only ».
|
compute_target
Obligatoire
|
AmlCompute ou
str
Cible de calcul à utiliser pour l’exécution ParallelRunStep. Ce paramètre peut être spécifié sous la forme d’un objet de cible de calcul ou du nom d’une cible de calcul dans l’espace de travail. |
node_count
Obligatoire
|
Nombre de nœuds dans la cible de calcul utilisée pour l’exécution de ParallelRunStep. |
process_count_per_node
|
Nombre de processus Worker par nœud pour exécuter le script d’entrée en parallèle.
Pour une machine GPU, la valeur par défaut est 1.
Pour un ordinateur UC, la valeur par défaut est le nombre de cœurs.
Un processus Worker appellera Valeur par défaut: None
|
mini_batch_size
|
Pour une entrée FileDataset, ce champ correspond au nombre de fichiers que le script utilisateur peut traiter dans un appel de la méthode run(). Pour une entrée TabularDataset, ce champ correspond à la taille approximative des données que le script utilisateur peut traiter dans un appel de la méthode run(). Les exemples de valeurs sont 1 024, 1 024 Ko, 10 Mo et 1 Go. (Facultatif, la valeur par défaut est 10 fichiers pour FileDataset et 1 Mo pour TabularDataset.) Valeur par défaut: None
|
source_directory
|
Chemins du dossier qui contient le Valeur par défaut: None
|
description
|
Description du service Batch utilisé à des fins d’affichage. Valeur par défaut: None
|
logging_level
|
Chaîne du nom du niveau de journalisation, définie dans « Logging ». Les valeurs possibles sont « WARNING », « INFO »et « DEBUG ». (Facultatif : la valeur par défaut est « INFO ».) Valeur par défaut: INFO
|
run_invocation_timeout
|
Délai d’expiration en secondes de chaque appel à la méthode run(). (La valeur par défaut facultative est 60.) Valeur par défaut: 60
|
run_max_try
|
Nombre maximal de nouvelles tentatives pour un mini-lot ayant échoué ou dont le délai a expiré. La plage est [1, int.max]. La valeur par défaut est 3. Un mini-lot dont le nombre de dépilements est supérieur à cette valeur n’est pas retraité mais directement supprimé. Valeur par défaut: 3
|
append_row_file_name
|
Nom du fichier de sortie si Valeur par défaut: None
|
allowed_failed_count
|
Nombre de mini-lots ayant échoué qui doivent être ignorés pendant le traitement. Si le nombre d’échec dépasse cette valeur, le travail est abandonné. Ce seuil concerne l’ensemble de l’entrée plutôt que le mini-lot envoyé à la méthode run(). La plage est [-1, int.max]. -1 indique d’ignorer toutes les défaillances lors du traitement. Un mini-lot peut échouer la première fois qu’il est traité, puis réussir à la deuxième tentative. Une vérification entre la première et la deuxième fois le compte la tentative comme un échec. Une vérification après la deuxième tentative ne la compte pas comme un échec. Les arguments –error_threshold, –allowed_failed_count and –allowed_failed_percent peuvent fonctionner ensemble. Si plusieurs éléments sont spécifiés, le travail est abandonné si l’une des valeurs est dépassée. Valeur par défaut: None
|
allowed_failed_percent
|
Pourcentage de mini-lots ayant échoué qui doivent être ignorés pendant le traitement. Si le pourcentage d’échec dépasse cette valeur, le travail est abandonné. Ce seuil concerne l’ensemble de l’entrée plutôt que le mini-lot envoyé à la méthode run(). La plage est [0, 100]. 100 ou 100.0 indique d’ignorer toutes les défaillances lors du traitement. La vérification démarre une fois tous les mini-lots planifiés. Les arguments –error_threshold, –allowed_failed_count and –allowed_failed_percent peuvent fonctionner ensemble. Si plusieurs éléments sont spécifiés, le travail est abandonné si l’une des valeurs est dépassée. Valeur par défaut: None
|
partition_keys
|
Clés utilisées pour partitionner le jeu de données en mini-lots. Si la valeur est spécifiée, les données avec la même clé sont partitionnées dans le même mini-lot. Si à la fois partition_keys et mini_batch_size sont spécifiés, une erreur est générée. Il doit s’agir d’une liste d’éléments str, chacun d’entre eux étant une clé utilisée pour partitionner le jeu de données d’entrée. Toutefois, si elle est promue en PipelineParameter, les valeurs par défaut doivent être l’élément str de vidage JSON de la liste, car le type de liste n’est pas pris en charge dans PipelineParameter actuellement. Les entrées doivent être des jeux de données partitionnés et partition_keys doit être un sous-ensemble des clés de chaque jeu de données d’entrée pour que cela fonctionne. Valeur par défaut: None
|
environment_variables
|
Dictionnaire des noms et valeurs des variables d’environnement. Ces variables d’environnement sont définies sur le processus où le script utilisateur est en cours d’exécution. Valeur par défaut: None
|
environment
Obligatoire
|
Définition de l’environnement qui configure l’environnement Python. Il peut être configuré pour utiliser un environnement Python existant ou pour configurer un environnement temporaire pour l’expérience. La définition de l’environnement est chargée de définir les dépendances d’application nécessaires, comme les packages conda ou pip. |
entry_script
Obligatoire
|
Script utilisateur qui sera exécuté en parallèle sur plusieurs nœuds. Il s’agit du chemin du fichier local. Si |
error_threshold
Obligatoire
|
nombre d’échecs d’enregistrement pour TabularDataset et d’échecs de fichiers pour FileDataset qui doivent être ignorés pendant le traitement. Si le nombre d’erreurs dépasse cette valeur, le travail sera interrompu. Le seuil d’erreurs concerne la totalité de l’entrée et non chacun des mini-lots envoyés à la méthode. La plage est [-1, int.max]. -1 indique d’ignorer toutes les défaillances lors du traitement. |
output_action
Obligatoire
|
Mode d’organisation de la sortie. Les valeurs actuellement prises en charge sont « append_row » et « summary_only ».
|
compute_target
Obligatoire
|
AmlCompute ou
str
Cible de calcul à utiliser pour l’exécution ParallelRunStep. Ce paramètre peut être spécifié sous la forme d’un objet de cible de calcul ou du nom d’une cible de calcul dans l’espace de travail. |
node_count
Obligatoire
|
Nombre de nœuds dans la cible de calcul utilisée pour l’exécution de ParallelRunStep. |
process_count_per_node
Obligatoire
|
Nombre de processus Worker par nœud pour exécuter le script d’entrée en parallèle.
Pour un ordinateur GPU, la valeur par défaut est 1.
Pour un ordinateur processeur, la valeur par défaut est le nombre de cœurs.
Un processus Worker appellera |
mini_batch_size
Obligatoire
|
Pour une entrée FileDataset, ce champ correspond au nombre de fichiers que le script utilisateur peut traiter dans un appel de la méthode run(). Pour une entrée TabularDataset, ce champ correspond à la taille approximative des données que le script utilisateur peut traiter dans un appel de la méthode run(). Les exemples de valeurs sont 1 024, 1 024 Ko, 10 Mo et 1 Go. (Facultatif, la valeur par défaut est 10 fichiers pour FileDataset et 1 Mo pour TabularDataset.) |
source_directory
Obligatoire
|
Chemins du dossier qui contient le |
description
Obligatoire
|
Description du service Batch utilisé à des fins d’affichage. |
logging_level
Obligatoire
|
Chaîne du nom du niveau de journalisation, définie dans « Logging ». Les valeurs possibles sont « WARNING », « INFO »et « DEBUG ». (Facultatif : la valeur par défaut est « INFO ».) |
run_invocation_timeout
Obligatoire
|
Délai d’expiration en secondes de chaque appel à la méthode run(). (La valeur par défaut facultative est 60.) |
run_max_try
Obligatoire
|
Nombre maximal de nouvelles tentatives pour un mini-lot ayant échoué ou dont le délai a expiré. La plage est [1, int.max]. La valeur par défaut est 3. Un mini-lot dont le nombre de dépilements est supérieur à cette valeur n’est pas retraité mais directement supprimé. |
append_row_file_name
Obligatoire
|
Nom du fichier de sortie si |
allowed_failed_count
Obligatoire
|
Nombre de mini-lots ayant échoué qui doivent être ignorés pendant le traitement. Si le nombre d’échec dépasse cette valeur, le travail est abandonné. Ce seuil concerne l’ensemble de l’entrée plutôt que le mini-lot envoyé à la méthode run(). La plage est [-1, int.max]. -1 indique d’ignorer toutes les défaillances lors du traitement. Un mini-lot peut échouer la première fois qu’il est traité, puis réussir à la deuxième tentative. Une vérification entre la première et la deuxième fois le compte la tentative comme un échec. Une vérification après la deuxième tentative ne la compte pas comme un échec. Les arguments –error_threshold, –allowed_failed_count and –allowed_failed_percent peuvent fonctionner ensemble. Si plusieurs éléments sont spécifiés, le travail est abandonné si l’une des valeurs est dépassée. |
allowed_failed_percent
Obligatoire
|
Pourcentage de mini-lots ayant échoué qui doivent être ignorés pendant le traitement. Si le pourcentage d’échec dépasse cette valeur, le travail est abandonné. Ce seuil concerne l’ensemble de l’entrée plutôt que le mini-lot envoyé à la méthode run(). La plage est [0, 100]. 100 ou 100.0 indique d’ignorer toutes les défaillances lors du traitement. La vérification démarre une fois tous les mini-lots planifiés. Les arguments –error_threshold, –allowed_failed_count and –allowed_failed_percent peuvent fonctionner ensemble. Si plusieurs éléments sont spécifiés, le travail est abandonné si l’une des valeurs est dépassée. |
partition_keys
Obligatoire
|
Clés utilisées pour partitionner le jeu de données en mini-lots. Si la valeur est spécifiée, les données avec la même clé sont partitionnées dans le même mini-lot. Si à la fois partition_keys et mini_batch_size sont spécifiés, une erreur est générée. Il doit s’agir d’une liste d’éléments str, chacun d’entre eux étant une clé utilisée pour partitionner le jeu de données d’entrée. Toutefois, si elle est promue en PipelineParameter, les valeurs par défaut doivent être l’élément str de vidage JSON de la liste, car le type de liste n’est pas pris en charge dans PipelineParameter actuellement. Les entrées doivent être des jeux de données partitionnés et partition_keys doit être un sous-ensemble des clés de chaque jeu de données d’entrée pour que cela fonctionne. |
environment_variables
Obligatoire
|
Dictionnaire des noms et valeurs des variables d’environnement. Ces variables d’environnement sont définies sur le processus où le script utilisateur est en cours d’exécution. |
Remarques
La classe ParallelRunConfig est utilisée pour fournir la configuration de la classe ParallelRunStep. ParallelRunConfig et ParallelRunStep peuvent être utilisés conjointement pour traiter de grandes quantités de données en parallèle. Les cas d’usage courants sont l’entraînement d’un modèle ML ou l’exécution de l’inférence hors connexion pour générer des prédictions sur un lot d’observations. ParallelRunStep divise vos données en plusieurs lots qui seront traités en parallèle. La taille du lot, le nombre de nœuds et d’autres paramètres réglables permettant d’accélérer le traitement parallèle peuvent être contrôlés avec la classe ParallelRunConfig. ParallelRunStep peut fonctionner avec l’entrée TabularDataset ou FileDataset.
Pour utiliser ParallelRunStep et ParallelRunConfig :
Créez un objet ParallelRunConfig pour spécifier le mode d’exécution du traitement par lots, en définissant les paramètres pour contrôler la taille de lot, le nombre de nœuds par cible de calcul et une référence à votre script Python personnalisé.
Créez un objet ParallelRunStep qui utilise l’objet ParallelRunConfig et qui définit les entrées et sorties de l’étape.
Utilisez l’objet ParallelRunStep configuré dans un Pipeline comme vous le feriez avec d’autres types d’étapes de pipeline.
Vous trouverez des exemples d’utilisation des classes ParallelRunStep et ParallelRunConfig pour l’inférence de lot dans les articles suivants :
Tutoriel : Créer un pipeline Azure Machine Learning pour le scoring par lots. Cet article montre comment utiliser ces deux classes pour le scoring par lots asynchrone dans un pipeline et permettre à un point de terminaison REST d’exécuter le pipeline.
Exécuter l’inférence par lots sur de grandes quantités de données à l’aide d’Azure Machine Learning. Cet article explique comment traiter de grandes quantités de données de façon asynchrone et en parallèle avec un script d’inférence personnalisé et un modèle de classification d’images pré-entraîné à partir du jeu de données MNIST.
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
)
Pour plus d’informations sur cet exemple, consultez le notebook https://aka.ms/batch-inference-notebooks.
Méthodes
load_yaml |
Chargez les données de configuration de série de tests parallèle à partir d’un fichier YAML. |
save_to_yaml |
Exporte les données de configuration de série de tests vers un fichier YAML. |
load_yaml
Chargez les données de configuration de série de tests parallèle à partir d’un fichier YAML.
static load_yaml(workspace, path)
Paramètres
Nom | Description |
---|---|
workspace
Obligatoire
|
Espace de travail à partir duquel les données de configuration sont lues. |
path
Obligatoire
|
Chemin à partir duquel charger la configuration. |
save_to_yaml
Exporte les données de configuration de série de tests vers un fichier YAML.
save_to_yaml(path)
Paramètres
Nom | Description |
---|---|
path
Obligatoire
|
Chemin où enregistrer le fichier. |