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 de handleiding https://aka.ms/prstsgvoor probleemoplossing. Meer verwijzingen vindt u hier.

Initialiseer het configuratieobject.

Overname
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBase
ParallelRunConfig

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. Deze 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 op meerdere knooppunten wordt uitgevoerd. Dit is opgegeven als een lokaal bestandspad. Als source_directory is opgegeven, is een entry_script relatief pad in de map. Anders kan het een willekeurig pad zijn dat toegankelijk is op de computer. De entry_script moet twee functies bevatten: init(): deze functie moet worden gebruikt voor een kostbare of algemene voorbereiding voor volgende deducties, bijvoorbeeld het deserialisatie 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': Batchdeductie roept de run-methode aan en geeft een lijst of een Pandas DataFrame als argument door aan de methode. Elke vermelding in min_batch is een bestandspad als de invoer een FileDataset is, een Pandas DataFrame als de 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 invoer-minibatch aan. Elk parallelle werkproces roept init eenmaal aan en vervolgens wordt de run-functie herhaald totdat alle minibatches zijn 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. De foutdrempelwaarde geldt voor de volledige invoer en niet voor afzonderlijke minibatches die zijn verzonden naar de methode run(). 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 georganiseerd. Huidige ondersteunde waarden zijn 'append_row' en 'summary_only'.

  1. 'append_row': alle waarden die worden uitgevoerd door run() methode-aanroepen worden samengevoegd tot één uniek bestand met de naam parallel_run_step.txt dat wordt gemaakt op de uitvoerlocatie.
  2. 'summary_only': van 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 de uitvoering van ParallelRunStep. 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 roept herhaaldelijk aan run() door de minibatch door te geven. Het totale aantal werkprocessen in uw taak is process_count_per_node * node_count, waarmee het maximumaantal run() wordt bepaald dat parallel moet worden uitgevoerd.

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 de gegevens die het gebruikersscript kan verwerken in één run()-aanroep. Voorbeeldwaarden zijn 1024, 1024 kB, 10 MB en 1 GB. (optioneel, de standaardwaarde is 10 bestanden voor FileDataset en 1 MB voor TabularDataset.)

Default value: None
source_directory
str

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

Default value: None
description
str

Een beschrijving voor de batchservice 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, standaardwaarde is 'INFO'.)

Default value: INFO
run_invocation_timeout
int

Time-out in seconden voor elke aanroep van de methode run(). (optioneel, 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 een groter aantal wachtrijen dan dit wordt niet opnieuw verwerkt en wordt direct verwijderd.

Default value: 3
append_row_file_name
str

De naam van het uitvoerbestand als de output_action 'append_row' is. (optioneel, standaardwaarde is '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 items hoger is dan deze waarde, wordt de taak afgebroken. Deze drempelwaarde geldt voor de volledige invoer in plaats van voor de afzonderlijke minibatch die is verzonden naar de run()-methode. Het bereik is [-1, int.max]. -1 geeft aan dat alle fouten tijdens de verwerking worden genegeerd. Een minibatch kan mislukken bij de eerste keer dat deze wordt verwerkt en slaagt bij de tweede poging. Controleren tussen de eerste en tweede keer wordt als mislukt geteld. Als u na de tweede keer controleert, wordt het niet als mislukt geteld. Het argument –error_threshold, –allowed_failed_count en –allowed_failed_percent kunnen samenwerken. Als er meer dan één is opgegeven, wordt de taak afgebroken als deze een van de opgegeven taken overschrijdt.

Default value: None
allowed_failed_percent

Het percentage mislukte minibatches dat tijdens de verwerking moet worden genegeerd. Als het percentage mislukt boven deze waarde komt, wordt de taak afgebroken. Deze drempelwaarde geldt voor de volledige invoer in plaats van voor de afzonderlijke minibatch die is verzonden naar de run()-methode. 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 is opgegeven, wordt de taak afgebroken als deze een van de opgegeven taken overschrijdt.

Default value: None
partition_keys

De sleutels die worden gebruikt voor het partitioneren van de gegevensset in minibatches. Indien opgegeven, worden de gegevens met dezelfde sleutel gepartitioneerd in dezelfde minibatch. Als zowel partition_keys als mini_batch_size zijn opgegeven, treedt er een fout op. Het moet een lijst met str-elementen zijn die elk een sleutel zijn die wordt gebruikt om de invoergegevensset te partitioneren. Als u echter wordt gepromoveerd naar PipelineParameter, moeten de standaardwaarden de json-dump-str van de lijst zijn, omdat het lijsttype momenteel niet wordt ondersteund in PipelineParameter. De invoer(en) moeten gepartitioneerde gegevenssets zijn en de partition_keys moet een subset van de sleutels van elke invoergegevensset zijn 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. Deze 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 op meerdere knooppunten wordt uitgevoerd. Dit is opgegeven als een lokaal bestandspad. Als source_directory is opgegeven, is een entry_script relatief pad in de map. Anders kan het een willekeurig pad zijn dat toegankelijk is op de computer. De entry_script moet twee functies bevatten: init(): deze functie moet worden gebruikt voor een kostbare of algemene voorbereiding voor volgende deducties, bijvoorbeeld het deserialisatie 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': Batchdeductie roept de run-methode aan en geeft een lijst of een Pandas DataFrame als argument door aan de methode. Elke vermelding in min_batch is een bestandspad als de invoer een FileDataset is, een Pandas DataFrame als de 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 invoer-minibatch aan. Elk parallelle werkproces roept init eenmaal aan en vervolgens wordt de run-functie herhaald totdat alle minibatches zijn 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. De foutdrempelwaarde geldt voor de volledige invoer en niet voor afzonderlijke minibatches die zijn verzonden naar de methode run(). 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 georganiseerd. Huidige ondersteunde waarden zijn 'append_row' en 'summary_only'.

  1. 'append_row': alle waarden die worden uitgevoerd door run() methode-aanroepen worden samengevoegd tot één uniek bestand met de naam parallel_run_step.txt dat wordt gemaakt op de uitvoerlocatie.
  2. 'summary_only': van 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 de uitvoering van ParallelRunStep. 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 roept herhaaldelijk aan run() door de minibatch door te geven. Het totale aantal werkprocessen in uw taak is process_count_per_node * node_count, waarmee het maximumaantal run() wordt bepaald dat parallel moet worden uitgevoerd.

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 de gegevens die het gebruikersscript kan verwerken in één run()-aanroep. Voorbeeldwaarden zijn 1024, 1024 kB, 10 MB en 1 GB. (optioneel, de standaardwaarde is 10 bestanden voor FileDataset en 1 MB voor TabularDataset.)

source_directory
Vereist
str

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

description
Vereist
str

Een beschrijving voor de batchservice 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, standaardwaarde is 'INFO'.)

run_invocation_timeout
Vereist
int

Time-out in seconden voor elke aanroep van de methode run(). (optioneel, 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 een groter aantal wachtrijen dan dit wordt niet opnieuw verwerkt en wordt direct verwijderd.

append_row_file_name
Vereist
str

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

allowed_failed_count
Vereist
int

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

allowed_failed_percent
Vereist

Het percentage mislukte minibatches dat tijdens de verwerking moet worden genegeerd. Als het percentage mislukt boven deze waarde komt, wordt de taak afgebroken. Deze drempelwaarde geldt voor de volledige invoer in plaats van voor de afzonderlijke minibatch die is verzonden naar de run()-methode. 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 is opgegeven, wordt de taak afgebroken als deze een van de opgegeven taken overschrijdt.

partition_keys
Vereist

De sleutels die worden gebruikt voor het partitioneren van de gegevensset in minibatches. Indien opgegeven, worden de gegevens met dezelfde sleutel gepartitioneerd in dezelfde minibatch. Als zowel partition_keys als mini_batch_size zijn opgegeven, treedt er een fout op. Het moet een lijst met str-elementen zijn die elk een sleutel zijn die wordt gebruikt om de invoergegevensset te partitioneren. Als u echter wordt gepromoveerd naar PipelineParameter, moeten de standaardwaarden de json-dump-str van de lijst zijn, omdat het lijsttype momenteel niet wordt ondersteund in PipelineParameter. De invoer(en) moeten gepartitioneerde gegevenssets zijn en de partition_keys moet een subset van de sleutels van elke invoergegevensset zijn 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 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 instelbare parameters om uw parallelle verwerking te versnellen, kunnen worden beheerd met de ParallelRunConfig klasse . ParallelRunStep kan werken met TabularDataset of FileDataset als invoer.

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 object ParallelRunConfig en de invoer en uitvoer voor de stap definieert.

  • Gebruik het geconfigureerde ParallelRunStep-object in een Pipeline , net als bij andere typen pijplijnstappen.

In de volgende artikelen worden voorbeelden besproken van het werken met de klassen ParallelRunStep en ParallelRunConfig 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

Configuratiegegevens van parallelle uitvoering laden vanuit een YAML-bestand.

save_to_yaml

Exporteer configuratiegegevens voor parallelle uitvoering naar een YAML-bestand.

load_yaml

Configuratiegegevens van parallelle uitvoering laden vanuit 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 waaruit de configuratie moet worden geladen.

save_to_yaml

Exporteer configuratiegegevens voor parallelle uitvoering naar een YAML-bestand.

save_to_yaml(path)

Parameters

Name Description
path
Vereist
str

Het pad om het bestand op te slaan.