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._ParallelRunConfigBaseParallelRunConfig
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
- environment
- Environment
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
- 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
- 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
- str
Hoe de uitvoer moet worden georganiseerd. Huidige ondersteunde waarden zijn 'append_row' en 'summary_only'.
- '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.
- '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
- AmlCompute of str
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
- 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.
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
- str
Pad naar de map met de entry_script
ondersteunende bestanden en die worden gebruikt om uit te voeren op het rekendoel.
- description
- str
Een beschrijving voor de batchservice die wordt gebruikt voor weergavedoeleinden.
- 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'.)
- run_invocation_timeout
- int
Time-out in seconden voor elke aanroep van de methode run(). (optioneel, standaardwaarde is 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.
- append_row_file_name
- str
De naam van het uitvoerbestand als de output_action
'append_row' is.
(optioneel, standaardwaarde is 'parallel_run_step.txt')
- 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.
- allowed_failed_percent
- float
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.
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.
Een woordenlijst met namen en waarden van omgevingsvariabelen. Deze omgevingsvariabelen worden ingesteld voor het proces waarin het gebruikersscript wordt uitgevoerd.
- environment
- Environment
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
- 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
- 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
- str
Hoe de uitvoer moet worden georganiseerd. Huidige ondersteunde waarden zijn 'append_row' en 'summary_only'.
- '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.
- '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
- AmlCompute of str
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
- 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 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.
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
- str
Pad naar de map met de entry_script
ondersteunende bestanden en die worden gebruikt om uit te voeren op het rekendoel.
- description
- str
Een beschrijving voor de batchservice die wordt gebruikt voor weergavedoeleinden.
- 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'.)
- run_invocation_timeout
- int
Time-out in seconden voor elke aanroep van de methode run(). (optioneel, standaardwaarde is 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.
- append_row_file_name
- str
De naam van het uitvoerbestand als de output_action
'append_row' is.
(optioneel, standaardwaarde is 'parallel_run_step.txt')
- 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.
- allowed_failed_percent
- float
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.
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.
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:
Zelfstudie: Een Azure Machine Learning-pijplijn maken voor batchscores. In dit artikel wordt beschreven hoe u deze twee klassen gebruikt voor asynchrone batchscores in een pijplijn en hoe u een REST-eindpunt activeert om de pijplijn uit te voeren.
Batchdeductie uitvoeren voor grote hoeveelheden gegevens met Azure Machine Learning. In dit artikel wordt beschreven hoe u grote hoeveelheden gegevens asynchroon en parallel verwerkt met een aangepast deductiescript en een vooraf getraind model voor afbeeldingsclassificatie voor de MNIST-gegevensset.
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
save_to_yaml
Exporteer configuratiegegevens voor parallelle uitvoering naar een YAML-bestand.
save_to_yaml(path)
Parameters
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor