Delen via


ParallelRunConfig Klas

Hiermee definieert u de configuratie voor een ParallelRunStep object.

Zie het notebook https://aka.ms/batch-inference-notebooksvoor een voorbeeld van het gebruik van ParallelRunStep.

Zie voor probleemoplossingsgids https://aka.ms/prstsg. Hier vindt u meer verwijzingen.

Initialiseer het configuratieobject.

Constructor

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)

Parameters

Name Description
environment
Vereist

De omgevingsdefinitie waarmee de Python-omgeving wordt geconfigureerd. Het kan worden geconfigureerd voor het gebruik van een bestaande Python-omgeving of voor het instellen van een tijdelijke omgeving voor het experiment. De omgevingsdefinitie is verantwoordelijk voor het definiëren van de vereiste toepassingsafhankelijkheden, zoals conda- of pip-pakketten.

entry_script
Vereist
str

Gebruikersscript dat parallel wordt uitgevoerd op meerdere knooppunten. Dit wordt opgegeven als een lokaal bestandspad. Als source_directory dit is opgegeven, is dit entry_script een relatief pad in de map. Anders kan het elk pad zijn dat toegankelijk is op de computer. De entry_script moet twee functies bevatten: init()deze functie moet worden gebruikt voor kostbare of algemene voorbereiding op volgende deducties, bijvoorbeeld het deserialiseren en laden van het model in een globaal object. run(mini_batch): De methode die moet worden geparallelliseerd. Elke aanroep heeft één minibatch. 'mini_batch': Met batchdeductie wordt de uitvoeringsmethode aangeroepen en wordt een lijst of een Pandas DataFrame als argument aan de methode doorgegeven. Elke vermelding in min_batch is een bestandspad als invoer een FileDataset is, een Pandas DataFrame als invoer een TabularDataset is. de methode run() moet een Pandas DataFrame of een matrix retourneren. Voor append_row output_action worden deze geretourneerde elementen toegevoegd aan het algemene uitvoerbestand. Voor summary_only wordt de inhoud van de elementen genegeerd. Voor alle uitvoeracties geeft elk geretourneerd uitvoerelement één geslaagde deductie van het invoerelement in de minibatch voor invoer aan. Elk parallel worker-proces roept init eenmaal aan en voert vervolgens de run-functie uit totdat alle minibatches worden verwerkt.

error_threshold
Vereist
int

Het aantal recordfouten voor TabularDataset en bestandsfouten hiervoor FileDataset moet tijdens de verwerking worden genegeerd. Als het aantal fouten boven deze waarde komt, wordt de taak afgebroken. Foutdrempel is voor de volledige invoer en niet voor afzonderlijke minibatches die naar de methode run() worden verzonden. Het bereik is [-1, int.max]. -1 geeft aan dat alle fouten tijdens de verwerking worden genegeerd.

output_action
Vereist
str

Hoe de uitvoer moet worden ingedeeld. De huidige ondersteunde waarden zijn 'append_row' en 'summary_only'.

  1. 'append_row': alle waarden die worden uitgevoerd door methode-aanroepen van run() worden samengevoegd in één uniek bestand met de naam parallel_run_step.txt dat op de uitvoerlocatie wordt gemaakt.
  2. 'summary_only': het gebruikersscript wordt verwacht dat de uitvoer zelf wordt opgeslagen. Er wordt nog steeds een uitvoerrij verwacht voor elk verwerkt invoeritem. Het systeem gebruikt deze uitvoer alleen voor foutdrempelberekening (waarbij de werkelijke waarde van de rij wordt genegeerd).
compute_target
Vereist

Rekendoel dat moet worden gebruikt voor parallellerunstep-uitvoering. Deze parameter kan worden opgegeven als een rekendoelobject of de naam van een rekendoel in de werkruimte.

node_count
Vereist
int

Het aantal knooppunten in het rekendoel dat wordt gebruikt voor het uitvoeren van de ParallelRunStep.

process_count_per_node
int

Het aantal werkprocessen per knooppunt om het invoerscript parallel uit te voeren. Voor GPU-machine is de standaardwaarde 1. Voor de CPU-machine is de standaardwaarde het aantal kernen. Een werkproces wordt herhaaldelijk aangeroepen run() door de minibatch door te geven. Het totale aantal werkprocessen in uw taak is process_count_per_node * node_count, waarmee het maximum aantal run() gelijktijdige uitvoeringen wordt bepaald.

Default value: None
mini_batch_size

Voor FileDataset-invoer is dit veld het aantal bestanden dat een gebruikersscript kan verwerken in één run()-aanroep. Voor TabularDataset-invoer is dit veld de geschatte grootte van gegevens die het gebruikersscript in één run()-aanroep kan verwerken. Voorbeeldwaarden zijn 1024, 1024 KB, 10 MB en 1 GB. (Optioneel is de standaardwaarde 10 bestanden voor FileDataset en 1 MB voor TabularDataset.)

Default value: None
source_directory
str

Pad naar map die de entry_script en ondersteunende bestanden bevat die worden gebruikt om uit te voeren op het rekendoel.

Default value: None
description
str

Een beschrijving om de batchservice te geven die wordt gebruikt voor weergavedoeleinden.

Default value: None
logging_level
str

Een tekenreeks van de naam van het logboekregistratieniveau, die is gedefinieerd in 'logboekregistratie'. Mogelijke waarden zijn WAARSCHUWING, INFO en FOUTOPSPORING. (Optioneel is de standaardwaarde INFO.)

Default value: INFO
run_invocation_timeout
int

Time-out in seconden voor elke aanroep van de methode run(). (Optioneel, de standaardwaarde is 60.)

Default value: 60
run_max_try
int

Het maximum aantal pogingen voor een mislukte of time-out minibatch. Het bereik is [1, int.max]. De standaardwaarde is 3. Een minibatch met het aantal dequeues groter dan dit wordt niet opnieuw verwerkt en wordt rechtstreeks verwijderd.

Default value: 3
append_row_file_name
str

De naam van het uitvoerbestand als de output_action naam 'append_row' is. (optioneel is de standaardwaarde 'parallel_run_step.txt')

Default value: None
allowed_failed_count
int

Het aantal mislukte minibatches dat tijdens de verwerking moet worden genegeerd. Als het aantal mislukte pogingen hoger is dan deze waarde, wordt de taak afgebroken. Deze drempelwaarde is bedoeld voor de volledige invoer in plaats van de afzonderlijke minibatch die is verzonden om de methode run() uit te voeren. Het bereik is [-1, int.max]. -1 geeft aan dat alle fouten tijdens de verwerking worden genegeerd. Een minibatch kan mislukken wanneer deze de eerste keer wordt verwerkt en vervolgens slaagt bij de tweede poging. Controleren tussen de eerste en tweede keer wordt geteld als mislukt. Als u na de tweede keer controleert, wordt deze niet meegeteld als mislukt. Het argument –error_threshold, –allowed_failed_count en –allowed_failed_percent kunnen samenwerken. Als er meer dan één opgegeven is, wordt de taak afgebroken als deze groter is dan een van de opgegeven taken.

Default value: None
allowed_failed_percent

Het percentage mislukte minibatches dat tijdens de verwerking moet worden genegeerd. Als het mislukte percentage hoger is dan deze waarde, wordt de taak afgebroken. Deze drempelwaarde is bedoeld voor de volledige invoer in plaats van de afzonderlijke minibatch die is verzonden om de methode run() uit te voeren. Het bereik is [0, 100]. 100 of 100.0 geeft aan dat alle fouten tijdens de verwerking worden genegeerd. De controle wordt gestart nadat alle minibatches zijn gepland. Het argument –error_threshold, –allowed_failed_count en –allowed_failed_percent kunnen samenwerken. Als er meer dan één opgegeven is, wordt de taak afgebroken als deze groter is dan een van de opgegeven taken.

Default value: None
partition_keys

De sleutels die worden gebruikt voor het partitioneren van gegevenssets in minibatches. Indien opgegeven, worden de gegevens met dezelfde sleutel gepartitioneerd in dezelfde minibatch. Als zowel partition_keys als mini_batch_size zijn opgegeven, wordt er een fout gegenereerd. Dit moet een lijst zijn met str-elementen die elk een sleutel zijn die wordt gebruikt voor het partitioneren van de invoergegevensset. Als u echter wordt gepromoveerd naar PipelineParameter, moeten de standaardwaarden de json-dump str van de lijst zijn omdat het lijsttype voorlopig niet wordt ondersteund in PipelineParameter. De invoer(en) moeten een of meer gepartitioneerde gegevenssets zijn en de partition_keys moet een subset zijn van de sleutels van elke invoergegevensset om dit te laten werken.

Default value: None
environment_variables

Een woordenlijst met namen en waarden van omgevingsvariabelen. Deze omgevingsvariabelen worden ingesteld voor het proces waarin het gebruikersscript wordt uitgevoerd.

Default value: None
environment
Vereist

De omgevingsdefinitie waarmee de Python-omgeving wordt geconfigureerd. Het kan worden geconfigureerd voor het gebruik van een bestaande Python-omgeving of voor het instellen van een tijdelijke omgeving voor het experiment. De omgevingsdefinitie is verantwoordelijk voor het definiëren van de vereiste toepassingsafhankelijkheden, zoals conda- of pip-pakketten.

entry_script
Vereist
str

Gebruikersscript dat parallel wordt uitgevoerd op meerdere knooppunten. Dit wordt opgegeven als een lokaal bestandspad. Als source_directory dit is opgegeven, is dit entry_script een relatief pad in de map. Anders kan het elk pad zijn dat toegankelijk is op de computer. De entry_script moet twee functies bevatten: init()deze functie moet worden gebruikt voor kostbare of algemene voorbereiding op volgende deducties, bijvoorbeeld het deserialiseren en laden van het model in een globaal object. run(mini_batch): De methode die moet worden geparallelliseerd. Elke aanroep heeft één minibatch. 'mini_batch': Met batchdeductie wordt de uitvoeringsmethode aangeroepen en wordt een lijst of een Pandas DataFrame als argument aan de methode doorgegeven. Elke vermelding in min_batch is een bestandspad als invoer een FileDataset is, een Pandas DataFrame als invoer een TabularDataset is. de methode run() moet een Pandas DataFrame of een matrix retourneren. Voor append_row output_action worden deze geretourneerde elementen toegevoegd aan het algemene uitvoerbestand. Voor summary_only wordt de inhoud van de elementen genegeerd. Voor alle uitvoeracties geeft elk geretourneerd uitvoerelement één geslaagde deductie van het invoerelement in de minibatch voor invoer aan. Elk parallel worker-proces roept init eenmaal aan en voert vervolgens de run-functie uit totdat alle minibatches worden verwerkt.

error_threshold
Vereist
int

Het aantal recordfouten voor TabularDataset en bestandsfouten hiervoor FileDataset moet tijdens de verwerking worden genegeerd. Als het aantal fouten boven deze waarde komt, wordt de taak afgebroken. Foutdrempel is voor de volledige invoer en niet voor afzonderlijke minibatches die naar de methode run() worden verzonden. Het bereik is [-1, int.max]. -1 geeft aan dat alle fouten tijdens de verwerking worden genegeerd.

output_action
Vereist
str

Hoe de uitvoer moet worden ingedeeld. De huidige ondersteunde waarden zijn 'append_row' en 'summary_only'.

  1. 'append_row': alle waarden die worden uitgevoerd door methode-aanroepen van run() worden samengevoegd in één uniek bestand met de naam parallel_run_step.txt dat op de uitvoerlocatie wordt gemaakt.
  2. 'summary_only': het gebruikersscript wordt verwacht dat de uitvoer zelf wordt opgeslagen. Er wordt nog steeds een uitvoerrij verwacht voor elk verwerkt invoeritem. Het systeem gebruikt deze uitvoer alleen voor foutdrempelberekening (waarbij de werkelijke waarde van de rij wordt genegeerd).
compute_target
Vereist

Rekendoel dat moet worden gebruikt voor parallellerunstep-uitvoering. Deze parameter kan worden opgegeven als een rekendoelobject of de naam van een rekendoel in de werkruimte.

node_count
Vereist
int

Het aantal knooppunten in het rekendoel dat wordt gebruikt voor het uitvoeren van de ParallelRunStep.

process_count_per_node
Vereist
int

Het aantal werkprocessen per knooppunt om het invoerscript parallel uit te voeren. Voor een GPU-machine is de standaardwaarde 1. Voor een CPU-machine is de standaardwaarde het aantal kernen. Een werkproces wordt herhaaldelijk aangeroepen run() door de minibatch door te geven. Het totale aantal werkprocessen in uw taak is process_count_per_node * node_count, waarmee het maximum aantal run() gelijktijdige uitvoeringen wordt bepaald.

mini_batch_size
Vereist
str of int

Voor FileDataset-invoer is dit veld het aantal bestanden dat een gebruikersscript kan verwerken in één run()-aanroep. Voor TabularDataset-invoer is dit veld de geschatte grootte van gegevens die het gebruikersscript in één run()-aanroep kan verwerken. Voorbeeldwaarden zijn 1024, 1024 KB, 10 MB en 1 GB. (Optioneel is de standaardwaarde 10 bestanden voor FileDataset en 1 MB voor TabularDataset.)

source_directory
Vereist
str

Pad naar map die de entry_script en ondersteunende bestanden bevat die worden gebruikt om uit te voeren op het rekendoel.

description
Vereist
str

Een beschrijving om de batchservice te geven die wordt gebruikt voor weergavedoeleinden.

logging_level
Vereist
str

Een tekenreeks van de naam van het logboekregistratieniveau, die is gedefinieerd in 'logboekregistratie'. Mogelijke waarden zijn WAARSCHUWING, INFO en FOUTOPSPORING. (Optioneel is de standaardwaarde INFO.)

run_invocation_timeout
Vereist
int

Time-out in seconden voor elke aanroep van de methode run(). (Optioneel, de standaardwaarde is 60.)

run_max_try
Vereist
int

Het maximum aantal pogingen voor een mislukte of time-out minibatch. Het bereik is [1, int.max]. De standaardwaarde is 3. Een minibatch met het aantal dequeues groter dan dit wordt niet opnieuw verwerkt en wordt rechtstreeks verwijderd.

append_row_file_name
Vereist
str

De naam van het uitvoerbestand als de output_action naam 'append_row' is. (optioneel is de standaardwaarde 'parallel_run_step.txt')

allowed_failed_count
Vereist
int

Het aantal mislukte minibatches dat tijdens de verwerking moet worden genegeerd. Als het aantal mislukte pogingen hoger is dan deze waarde, wordt de taak afgebroken. Deze drempelwaarde is bedoeld voor de volledige invoer in plaats van de afzonderlijke minibatch die is verzonden om de methode run() uit te voeren. Het bereik is [-1, int.max]. -1 geeft aan dat alle fouten tijdens de verwerking worden genegeerd. Een minibatch kan mislukken wanneer deze de eerste keer wordt verwerkt en vervolgens slaagt bij de tweede poging. Controleren tussen de eerste en tweede keer wordt geteld als mislukt. Als u na de tweede keer controleert, wordt deze niet meegeteld als mislukt. Het argument –error_threshold, –allowed_failed_count en –allowed_failed_percent kunnen samenwerken. Als er meer dan één opgegeven is, wordt de taak afgebroken als deze groter is dan een van de opgegeven taken.

allowed_failed_percent
Vereist

Het percentage mislukte minibatches dat tijdens de verwerking moet worden genegeerd. Als het mislukte percentage hoger is dan deze waarde, wordt de taak afgebroken. Deze drempelwaarde is bedoeld voor de volledige invoer in plaats van de afzonderlijke minibatch die is verzonden om de methode run() uit te voeren. Het bereik is [0, 100]. 100 of 100.0 geeft aan dat alle fouten tijdens de verwerking worden genegeerd. De controle wordt gestart nadat alle minibatches zijn gepland. Het argument –error_threshold, –allowed_failed_count en –allowed_failed_percent kunnen samenwerken. Als er meer dan één opgegeven is, wordt de taak afgebroken als deze groter is dan een van de opgegeven taken.

partition_keys
Vereist

De sleutels die worden gebruikt voor het partitioneren van gegevenssets in minibatches. Indien opgegeven, worden de gegevens met dezelfde sleutel gepartitioneerd in dezelfde minibatch. Als zowel partition_keys als mini_batch_size zijn opgegeven, wordt er een fout gegenereerd. Dit moet een lijst zijn met str-elementen die elk een sleutel zijn die wordt gebruikt voor het partitioneren van de invoergegevensset. Als u echter wordt gepromoveerd naar PipelineParameter, moeten de standaardwaarden de json-dump str van de lijst zijn omdat het lijsttype voorlopig niet wordt ondersteund in PipelineParameter. De invoer(en) moeten een of meer gepartitioneerde gegevenssets zijn en de partition_keys moet een subset zijn van de sleutels van elke invoergegevensset om dit te laten werken.

environment_variables
Vereist

Een woordenlijst met namen en waarden van omgevingsvariabelen. Deze omgevingsvariabelen worden ingesteld voor het proces waarin het gebruikersscript wordt uitgevoerd.

Opmerkingen

De klasse ParallelRunConfig wordt gebruikt om de configuratie voor de ParallelRunStep klasse te bieden. ParallelRunConfig en ParallelRunStep kunnen samen worden gebruikt voor het parallel verwerken van grote hoeveelheden gegevens. Veelvoorkomende toepassingen zijn het trainen van een ML-model of het uitvoeren van offline deductie om voorspellingen te genereren voor een batch van waarnemingen. Bij ParallelRunStep worden uw gegevens opgedeeld in batches die parallel worden verwerkt. De batchgrootte, het aantal knooppunten en andere niet-instelbare parameters om uw parallelle verwerking te versnellen, kunnen worden beheerd met de ParallelRunConfig klasse. ParallelRunStep kan met TabularDataset of FileDataset als invoer werken.

ParallelRunStep en ParallelRunConfig gebruiken:

  • Maak een ParallelRunConfig object om op te geven hoe batchverwerking wordt uitgevoerd, met parameters voor het beheren van de batchgrootte, het aantal knooppunten per rekendoel en een verwijzing naar uw aangepaste Python-script.

  • Maak een ParallelRunStep-object dat gebruikmaakt van het ParallelRunConfig-object, definieert invoer en uitvoer voor de stap.

  • Gebruik het geconfigureerde ParallelRunStep-object in een Pipeline net zoals u dat zou doen met andere typen pijplijnstappen.

In de volgende artikelen worden voorbeelden besproken van het werken met ParallelRunStep- en ParallelRunConfig-klassen voor batchdeductie:


   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
   )

Zie het notebook https://aka.ms/batch-inference-notebooksvoor meer informatie over dit voorbeeld.

Methoden

load_yaml

Laad parallelle uitvoeringsconfiguratiegegevens uit een YAML-bestand.

save_to_yaml

Exporteer parallelle uitvoeringsconfiguratiegegevens naar een YAML-bestand.

load_yaml

Laad parallelle uitvoeringsconfiguratiegegevens uit een YAML-bestand.

static load_yaml(workspace, path)

Parameters

Name Description
workspace
Vereist

De werkruimte waaruit de configuratiegegevens moeten worden gelezen.

path
Vereist
str

Het pad van waaruit de configuratie moet worden geladen.

save_to_yaml

Exporteer parallelle uitvoeringsconfiguratiegegevens naar een YAML-bestand.

save_to_yaml(path)

Parameters

Name Description
path
Vereist
str

Het pad naar het bestand opslaan.