Partager via


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
str

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 source_directory elle est spécifiée, il s’agit entry_script d’un chemin relatif à l’intérieur du répertoire. Sinon, il peut s’agir de n’importe quel chemin accessible sur l’ordinateur. La entry_script doit contenir deux fonctions : init()cette fonction doit être utilisée pour toute préparation coûteuse ou courante pour les inférences suivantes, par exemple, désérialiser et charger le modèle dans un objet global. run(mini_batch): méthode à paralléliser. Chaque appel aura un mini-lot. 'mini_batch' : l’inférence par lot appelle la méthode d’exécution et passe une liste ou un DataFrame Pandas en tant qu’argument à la méthode. Chaque entrée dans min_batch sera un chemin de fichier si l’entrée est un FileDataset, un DataFrame Pandas si l’entrée est un TabularDataset. La méthode run() doit retourner un DataFrame Pandas ou un tableau. Pour append_row output_action, les éléments retournés sont ajoutés au fichier de sortie commun. Pour summary_only, le contenu des éléments est ignoré. Pour toutes les actions de sortie, chaque élément de sortie retourné indique une inférence réussie de l’élément d’entrée dans le mini-lot d’entrée. Chaque processus de travail parallèle appelle init une fois, puis effectue une boucle sur la fonction d’exécution jusqu’à ce que tous les mini-lots soient traités.

error_threshold
Obligatoire
int

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
str

Comment la sortie doit être organisée. Les valeurs prises en charge actuelles sont « append_row » et « summary_only ».

  1. 'append_row' : toutes les valeurs générées par les appels de méthode run() sont agrégées dans un fichier unique nommé parallel_run_step.txt créé à l’emplacement de sortie.
  2. 'summary_only' : le script utilisateur est censé stocker la sortie elle-même. Une ligne de sortie est toujours attendue pour chaque élément d’entrée réussi traité. Le système utilise cette sortie uniquement pour le calcul du seuil d’erreur (en ignorant la valeur réelle de la ligne).
compute_target
Obligatoire

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
int

Nombre de nœuds dans la cible de calcul utilisée pour exécuter ParallelRunStep.

process_count_per_node
int

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 run() de manière répétée en transmettant le mini lot qu’il obtient. Le nombre total de processus Worker dans votre travail est process_count_per_node * node_count, qui détermine le nombre maximal de run() à exécuter en parallèle.

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
str

Chemin d’accès au dossier qui contient les entry_script fichiers de prise en charge utilisés pour s’exécuter sur la cible de calcul.

Valeur par défaut: None
description
str

Description permettant de donner au service batch utilisé à des fins d’affichage.

Valeur par défaut: None
logging_level
str

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
int

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
int

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
str

Nom du fichier de sortie si la output_action valeur est « append_row ». (facultatif, la valeur par défaut est 'parallel_run_step.txt')

Valeur par défaut: None
allowed_failed_count
int

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
str

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 source_directory elle est spécifiée, il s’agit entry_script d’un chemin relatif à l’intérieur du répertoire. Sinon, il peut s’agir de n’importe quel chemin accessible sur l’ordinateur. La entry_script doit contenir deux fonctions : init()cette fonction doit être utilisée pour toute préparation coûteuse ou courante pour les inférences suivantes, par exemple, désérialiser et charger le modèle dans un objet global. run(mini_batch): méthode à paralléliser. Chaque appel aura un mini-lot. 'mini_batch' : l’inférence par lot appelle la méthode d’exécution et passe une liste ou un DataFrame Pandas en tant qu’argument à la méthode. Chaque entrée dans min_batch sera un chemin de fichier si l’entrée est un FileDataset, un DataFrame Pandas si l’entrée est un TabularDataset. La méthode run() doit retourner un DataFrame Pandas ou un tableau. Pour append_row output_action, les éléments retournés sont ajoutés au fichier de sortie commun. Pour summary_only, le contenu des éléments est ignoré. Pour toutes les actions de sortie, chaque élément de sortie retourné indique une inférence réussie de l’élément d’entrée dans le mini-lot d’entrée. Chaque processus de travail parallèle appelle init une fois, puis effectue une boucle sur la fonction d’exécution jusqu’à ce que tous les mini-lots soient traités.

error_threshold
Obligatoire
int

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
str

Comment la sortie doit être organisée. Les valeurs prises en charge actuelles sont « append_row » et « summary_only ».

  1. 'append_row' : toutes les valeurs générées par les appels de méthode run() sont agrégées dans un fichier unique nommé parallel_run_step.txt créé à l’emplacement de sortie.
  2. 'summary_only' : le script utilisateur est censé stocker la sortie elle-même. Une ligne de sortie est toujours attendue pour chaque élément d’entrée réussi traité. Le système utilise cette sortie uniquement pour le calcul du seuil d’erreur (en ignorant la valeur réelle de la ligne).
compute_target
Obligatoire

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
int

Nombre de nœuds dans la cible de calcul utilisée pour exécuter ParallelRunStep.

process_count_per_node
Obligatoire
int

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 run() de manière répétée en transmettant le mini lot qu’il obtient. Le nombre total de processus Worker dans votre travail est process_count_per_node * node_count, qui détermine le nombre maximal de run() à exécuter en parallèle.

mini_batch_size
Obligatoire
str ou int

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
str

Chemin d’accès au dossier qui contient les entry_script fichiers de prise en charge utilisés pour s’exécuter sur la cible de calcul.

description
Obligatoire
str

Description permettant de donner au service batch utilisé à des fins d’affichage.

logging_level
Obligatoire
str

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
int

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
int

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
str

Nom du fichier de sortie si la output_action valeur est « append_row ». (facultatif, la valeur par défaut est 'parallel_run_step.txt')

allowed_failed_count
Obligatoire
int

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 :


   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
str

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
str

Chemin d’accès dans lequel enregistrer le fichier.