ParallelRunConfig Classe
Définit la configuration d’un ParallelRunStep objet.
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 y trouverez d’autres références.
Initialisez l’objet config.
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 d’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 d’environnement est chargée de définir les dépendances d’application requises, telles que les packages conda ou pip. |
|
entry_script
Obligatoire
|
Script utilisateur qui sera exécuté en parallèle sur plusieurs nœuds. Il s’agit d’un chemin d’accès de fichier local. Si |
|
error_threshold
Obligatoire
|
Nombre d’échecs d’enregistrement et TabularDataset d’échecs de fichiers pour ceux-ci FileDataset doivent être ignorés pendant le traitement. Si le nombre d’erreurs dépasse cette valeur, le travail est abandonné. Le seuil d’erreur concerne l’ensemble de l’entrée et non pour les mini-lots individuels envoyés à la méthode run(). La plage est [-1, int.max]. -1 indique ignorer toutes les défaillances pendant le traitement. |
|
output_action
Obligatoire
|
Comment la sortie doit être organisée. Les valeurs prises en charge actuelles sont « append_row » et « summary_only ».
|
|
compute_target
Obligatoire
|
AmlCompute ou
str
Cible de calcul à utiliser pour l’exécution de ParallelRunStep. Ce paramètre peut être spécifié en tant qu’objet cible de calcul ou le 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 exécuter ParallelRunStep. |
|
process_count_per_node
|
Nombre de processus de travail par nœud pour exécuter le script d’entrée en parallèle.
Pour la machine GPU, la valeur par défaut est 1.
Pour l’ordinateur processeur, la valeur par défaut est le nombre de cœurs.
Un processus Worker appellera Valeur par défaut: None
|
|
mini_batch_size
|
Pour l’entrée FileDataset, ce champ correspond au nombre de fichiers qu’un script utilisateur peut traiter dans un appel d’exécution(). Pour l’entrée TabularDataset, ce champ correspond à la taille approximative des données que le script utilisateur peut traiter dans un appel d’exécution(). Les exemples de valeurs sont 1024, 1024 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
|
Chemin d’accès au dossier qui contient les Valeur par défaut: None
|
|
description
|
Description permettant de donner au service batch utilisé à des fins d’affichage. Valeur par défaut: None
|
|
logging_level
|
Chaîne du nom du niveau de journalisation, qui est définie dans « journalisation ». 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 pour chaque appel de la méthode run(). (facultatif, la valeur par défaut est 60.) Valeur par défaut: 60
|
|
run_max_try
|
Nombre maximal de tentatives pour un mini-lot d’échecs ou de délai d’expiration. La plage est [1, int.max]. La valeur par défaut est 3. Un mini lot dont le nombre de file d’attente est supérieur à celui-ci ne sera pas traité à nouveau et sera supprimé directement. Valeur par défaut: 3
|
|
append_row_file_name
|
Nom du fichier de sortie si la 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’échecs dépasse cette valeur, le travail est abandonné. Ce seuil concerne l’ensemble de l’entrée plutôt que le mini-lot individuel envoyé à la méthode run(). La plage est [-1, int.max]. -1 indique ignorer toutes les défaillances pendant le traitement. Un mini lot peut échouer lors de la première fois qu’il est traité, puis réussir lors de la deuxième tentative. La vérification entre la première et la deuxième fois le comptera comme ayant échoué. La vérification après la deuxième fois ne la compte pas comme ayant échoué. L’argument –error_threshold, –allowed_failed_count et –allowed_failed_percent peuvent fonctionner ensemble. Si plusieurs éléments sont spécifiés, le travail est abandonné s’il dépasse l’un d’eux. 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 ayant échoué dépasse cette valeur, le travail est abandonné. Ce seuil concerne l’ensemble de l’entrée plutôt que le mini-lot individuel envoyé à la méthode run(). La plage est [0, 100]. 100 ou 100.0 indique ignorer toutes les défaillances pendant le traitement. La vérification commence après que tous les mini-lots ont été planifiés. L’argument –error_threshold, –allowed_failed_count et –allowed_failed_percent peuvent fonctionner ensemble. Si plusieurs éléments sont spécifiés, le travail est abandonné s’il dépasse l’un d’eux. 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 les partition_keys et les mini_batch_size sont spécifiés, l’erreur est générée. Il doit s’agir d’une liste d’éléments str chacun étant une clé utilisée pour partitionner le jeu de données d’entrée. Toutefois, si elles sont promues vers PipelineParameter, les valeurs par défaut doivent être la str de vidage json de la liste, car le type de liste n’est pas pris en charge dans PipelineParameter pour le moment. Les entrées doivent être partitionnés et les partition_keys doivent ê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 de noms et de 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 d’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 d’environnement est chargée de définir les dépendances d’application requises, telles que les packages conda ou pip. |
|
entry_script
Obligatoire
|
Script utilisateur qui sera exécuté en parallèle sur plusieurs nœuds. Il s’agit d’un chemin d’accès de fichier local. Si |
|
error_threshold
Obligatoire
|
Nombre d’échecs d’enregistrement et TabularDataset d’échecs de fichiers pour ceux-ci FileDataset doivent être ignorés pendant le traitement. Si le nombre d’erreurs dépasse cette valeur, le travail est abandonné. Le seuil d’erreur concerne l’ensemble de l’entrée et non pour les mini-lots individuels envoyés à la méthode run(). La plage est [-1, int.max]. -1 indique ignorer toutes les défaillances pendant le traitement. |
|
output_action
Obligatoire
|
Comment la sortie doit être organisée. Les valeurs prises en charge actuelles sont « append_row » et « summary_only ».
|
|
compute_target
Obligatoire
|
AmlCompute ou
str
Cible de calcul à utiliser pour l’exécution de ParallelRunStep. Ce paramètre peut être spécifié en tant qu’objet cible de calcul ou le 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 exécuter ParallelRunStep. |
|
process_count_per_node
Obligatoire
|
Nombre de processus de travail 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 une machine processeur, la valeur par défaut est le nombre de cœurs.
Un processus Worker appellera |
|
mini_batch_size
Obligatoire
|
Pour l’entrée FileDataset, ce champ correspond au nombre de fichiers qu’un script utilisateur peut traiter dans un appel d’exécution(). Pour l’entrée TabularDataset, ce champ correspond à la taille approximative des données que le script utilisateur peut traiter dans un appel d’exécution(). Les exemples de valeurs sont 1024, 1024 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
|
Chemin d’accès au dossier qui contient les |
|
description
Obligatoire
|
Description permettant de donner au service batch utilisé à des fins d’affichage. |
|
logging_level
Obligatoire
|
Chaîne du nom du niveau de journalisation, qui est définie dans « journalisation ». 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 pour chaque appel de la méthode run(). (facultatif, la valeur par défaut est 60.) |
|
run_max_try
Obligatoire
|
Nombre maximal de tentatives pour un mini-lot d’échecs ou de délai d’expiration. La plage est [1, int.max]. La valeur par défaut est 3. Un mini lot dont le nombre de file d’attente est supérieur à celui-ci ne sera pas traité à nouveau et sera supprimé directement. |
|
append_row_file_name
Obligatoire
|
Nom du fichier de sortie si la |
|
allowed_failed_count
Obligatoire
|
Nombre de mini-lots ayant échoué qui doivent être ignorés pendant le traitement. Si le nombre d’échecs dépasse cette valeur, le travail est abandonné. Ce seuil concerne l’ensemble de l’entrée plutôt que le mini-lot individuel envoyé à la méthode run(). La plage est [-1, int.max]. -1 indique ignorer toutes les défaillances pendant le traitement. Un mini lot peut échouer lors de la première fois qu’il est traité, puis réussir lors de la deuxième tentative. La vérification entre la première et la deuxième fois le comptera comme ayant échoué. La vérification après la deuxième fois ne la compte pas comme ayant échoué. L’argument –error_threshold, –allowed_failed_count et –allowed_failed_percent peuvent fonctionner ensemble. Si plusieurs éléments sont spécifiés, le travail est abandonné s’il dépasse l’un d’eux. |
|
allowed_failed_percent
Obligatoire
|
Pourcentage de mini-lots ayant échoué qui doivent être ignorés pendant le traitement. Si le pourcentage ayant échoué dépasse cette valeur, le travail est abandonné. Ce seuil concerne l’ensemble de l’entrée plutôt que le mini-lot individuel envoyé à la méthode run(). La plage est [0, 100]. 100 ou 100.0 indique ignorer toutes les défaillances pendant le traitement. La vérification commence après que tous les mini-lots ont été planifiés. L’argument –error_threshold, –allowed_failed_count et –allowed_failed_percent peuvent fonctionner ensemble. Si plusieurs éléments sont spécifiés, le travail est abandonné s’il dépasse l’un d’eux. |
|
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 les partition_keys et les mini_batch_size sont spécifiés, l’erreur est générée. Il doit s’agir d’une liste d’éléments str chacun étant une clé utilisée pour partitionner le jeu de données d’entrée. Toutefois, si elles sont promues vers PipelineParameter, les valeurs par défaut doivent être la str de vidage json de la liste, car le type de liste n’est pas pris en charge dans PipelineParameter pour le moment. Les entrées doivent être partitionnés et les partition_keys doivent être un sous-ensemble des clés de chaque jeu de données d’entrée pour que cela fonctionne. |
|
environment_variables
Obligatoire
|
Dictionnaire de noms et de 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 une configuration pour la ParallelRunStep classe. ParallelRunConfig et ParallelRunStep peuvent être utilisés ensemble 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 paramétrables pour accélérer le traitement parallèle peuvent être contrôlés avec la ParallelRunConfig classe. ParallelRunStep peut utiliser l’une ou TabularDataset l’autre FileDataset des entrées.
Pour utiliser ParallelRunStep et ParallelRunConfig :
Créez un ParallelRunConfig objet pour spécifier la façon dont le traitement par lots est effectué, avec des paramètres pour contrôler la taille du 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, définit des entrées et des sorties pour l’étape.
Utilisez l’objet ParallelRunStep configuré comme Pipeline vous le feriez avec d’autres types d’étapes de pipeline.
Des exemples d’utilisation des classes ParallelRunStep et ParallelRunConfig pour l’inférence par lots sont abordés 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 des données de configuration d’exécution parallèle à partir d’un fichier YAML. |
| save_to_yaml |
Exportez des données de configuration d’exécution parallèle dans un fichier YAML. |
load_yaml
Chargez des données de configuration d’exécution parallèle à partir d’un fichier YAML.
static load_yaml(workspace, path)
Paramètres
| Nom | Description |
|---|---|
|
workspace
Obligatoire
|
Espace de travail à partir duquel lire les données de configuration. |
|
path
Obligatoire
|
Chemin d’accès à partir duquel charger la configuration. |
save_to_yaml
Exportez des données de configuration d’exécution parallèle dans un fichier YAML.
save_to_yaml(path)
Paramètres
| Nom | Description |
|---|---|
|
path
Obligatoire
|
Chemin d’accès dans lequel enregistrer le fichier. |