Dela via


ParallelRunConfig Klass

Definierar konfiguration för ett ParallelRunStep objekt.

Ett exempel på hur du använder ParallelRunStep finns i notebook-filen https://aka.ms/batch-inference-notebooks.

Felsökningsguide finns i https://aka.ms/prstsg. Du hittar fler referenser där.

Initiera konfigurationsobjektet.

Arv
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBase
ParallelRunConfig

Konstruktor

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)

Parametrar

Name Description
environment
Obligatorisk

Miljödefinitionen som konfigurerar Python-miljön. Den kan konfigureras för att använda en befintlig Python-miljö eller för att konfigurera en temporär miljö för experimentet. Miljödefinitionen ansvarar för att definiera de programberoenden som krävs, till exempel conda- eller pip-paket.

entry_script
Obligatorisk
str

Användarskript som körs parallellt på flera noder. Detta anges som en lokal filsökväg. Om source_directory anges är en entry_script relativ sökväg i katalogen. Annars kan det vara vilken sökväg som helst som kan nås på datorn. Den entry_script ska innehålla två funktioner: init(): den här funktionen ska användas för eventuella kostsamma eller vanliga förberedelser för efterföljande slutsatsdragningar, t.ex. avserialisering och inläsning av modellen i ett globalt objekt. run(mini_batch): Metoden som ska parallelliseras. Varje anrop har en mini-batch. "mini_batch": Batch-slutsatsdragning anropar körningsmetoden och skickar antingen en lista eller en Pandas DataFrame som ett argument till metoden. Varje post i min_batch blir en filsökväg om indata är en FileDataset, en Pandas DataFrame om indata är en TabularDataset. run()-metoden ska returnera en Pandas DataFrame eller en matris. För append_row output_action läggs de returnerade elementen till i den gemensamma utdatafilen. För summary_only ignoreras innehållet i elementen. För alla utdataåtgärder anger varje returnerat utdataelement en lyckad slutsatsdragning av indataelementet i minibatchen för indata. Varje parallell arbetsprocess anropar init en gång och loopar sedan över körningsfunktionen tills alla minibatchar bearbetas.

error_threshold
Obligatorisk
int

Antalet postfel för TabularDataset och filfel för FileDataset som ska ignoreras under bearbetningen. Om antalet fel överskrider det här värdet avbryts jobbet. Tröskelvärdet för fel gäller för hela indata och inte för enskilda minibatchar som skickas till run()-metoden. Intervallet är [-1, int.max]. -1 anger ignorera alla fel under bearbetningen.

output_action
Obligatorisk
str

Hur utdata ska ordnas. Aktuella värden som stöds är "append_row" och "summary_only".

  1. "append_row" – Alla värden som matas ut av run()-metodanrop aggregeras till en unik fil med namnet parallel_run_step.txt som skapas på utdataplatsen.
  2. "summary_only" – Användarskriptet förväntas lagra själva utdata. En utdatarad förväntas fortfarande för varje bearbetat indataobjekt. Systemet använder endast dessa utdata för beräkning av feltröskel (ignorerar det faktiska värdet för raden).
compute_target
Obligatorisk
AmlCompute eller str

Beräkningsmål som ska användas för ParallelRunStep-körning. Den här parametern kan anges som ett beräkningsmålobjekt eller namnet på ett beräkningsmål på arbetsytan.

node_count
Obligatorisk
int

Antal noder i beräkningsmålet som används för att köra ParallelRunStep.

process_count_per_node
int

Antalet arbetsprocesser per nod för att köra startskriptet parallellt. För GPU-datorn är standardvärdet 1. För processordatorer är standardvärdet antalet kärnor. En arbetsprocess anropar run() upprepade gånger genom att skicka den minibatch som den får. Det totala antalet arbetsprocesser i jobbet är process_count_per_node * node_count, vilket avgör det maximala antalet run() som ska köras parallellt.

Standardvärde: None
mini_batch_size

För FileDataset-indata är det här fältet antalet filer som ett användarskript kan bearbeta i ett run()-anrop. För TabularDataset-indata är det här fältet den ungefärliga storleken på data som användarskriptet kan bearbeta i ett run()-anrop. Exempelvärden är 1 024, 1 024 kB, 10 MB och 1 GB. (valfritt, standardvärdet är 10 filer för FileDataset och 1 MB för TabularDataset.)

Standardvärde: None
source_directory
str

Sökväg till mappen som innehåller de entry_script filer och stödfiler som används för att köra på beräkningsmålet.

Standardvärde: None
description
str

En beskrivning för att ge batchtjänsten som används för visning.

Standardvärde: None
logging_level
str

En sträng med namnet på loggningsnivån, som definieras i loggning. Möjliga värden är "WARNING", "INFO" och "DEBUG". (valfritt, standardvärdet är "INFO".)

Standardvärde: INFO
run_invocation_timeout
int

Tidsgräns i sekunder för varje anrop av metoden run(). (valfritt, standardvärdet är 60.)

Standardvärde: 60
run_max_try
int

Antalet maximala försök för en minibatch med misslyckad eller tidsgräns. Intervallet är [1, int.max]. Standardvärdet är 3. En minibatch med antalet borttagningar som är större än detta bearbetas inte igen och tas bort direkt.

Standardvärde: 3
append_row_file_name
str

Namnet på utdatafilen om output_action är "append_row". (valfritt, standardvärdet är "parallel_run_step.txt")

Standardvärde: None
allowed_failed_count
int

Antalet misslyckade minibatchar som ska ignoreras under bearbetningen. Om antalet misslyckade fel överskrider det här värdet avbryts jobbet. Det här tröskelvärdet gäller för hela indata i stället för den enskilda minibatch som skickas till metoden run(). Intervallet är [-1, int.max]. -1 anger ignorera alla fel under bearbetningen. En minibatch kan misslyckas första gången den bearbetas och sedan lyckas på det andra försöket. Om du kontrollerar mellan första och andra gången räknas det som misslyckat. Om du kontrollerar efter den andra gången räknas den inte som misslyckad. Argumentet –error_threshold, –allowed_failed_count och –allowed_failed_percent kan fungera tillsammans. Om fler än en har angetts avbryts jobbet om det överskrider någon av dem.

Standardvärde: None
allowed_failed_percent

Procentandelen misslyckade minibatchar som ska ignoreras under bearbetningen. Om den misslyckade procenten överskrider det här värdet avbryts jobbet. Det här tröskelvärdet gäller för hela indata i stället för den enskilda minibatch som skickas till metoden run(). Intervallet är [0, 100]. 100 eller 100.0 anger att alla fel ignoreras under bearbetningen. Kontrollen startar när alla minibatchar har schemalagts. Argumentet –error_threshold, –allowed_failed_count och –allowed_failed_percent kan fungera tillsammans. Om fler än en har angetts avbryts jobbet om det överskrider någon av dem.

Standardvärde: None
partition_keys

Nycklarna som används för att partitionera datauppsättningen i minibatchar. Om de anges partitioneras data med samma nyckel i samma minibatch. Om både partition_keys och mini_batch_size anges utlöses ett fel. Det bör vara en lista över str-element som var och en är en nyckel som används för att partitionering av indatauppsättningen. Men om de befordras till PipelineParameter ska standardvärdena vara json dump str i listan eftersom listtypen inte stöds i PipelineParameter för tillfället. Indata måste vara partitionerade datauppsättningar och partition_keys måste vara en delmängd av nycklarna för varje indatauppsättning för att detta ska fungera.

Standardvärde: None
environment_variables

En ordlista med miljövariablers namn och värden. Dessa miljövariabler anges i processen där användarskript körs.

Standardvärde: None
environment
Obligatorisk

Miljödefinitionen som konfigurerar Python-miljön. Den kan konfigureras för att använda en befintlig Python-miljö eller för att konfigurera en temporär miljö för experimentet. Miljödefinitionen ansvarar för att definiera de programberoenden som krävs, till exempel conda- eller pip-paket.

entry_script
Obligatorisk
str

Användarskript som ska köras parallellt på flera noder. Detta anges som en lokal filsökväg. Om source_directory anges är en entry_script relativ sökväg i katalogen. Annars kan det vara vilken sökväg som helst som är tillgänglig på datorn. Entry_script ska innehålla två funktioner: init(): den här funktionen ska användas för eventuella kostsamma eller vanliga förberedelser för efterföljande slutsatsdragningar, t.ex. deserialisering och inläsning av modellen i ett globalt objekt. run(mini_batch): Den metod som ska parallelliseras. Varje anrop har en mini-batch. "mini_batch": Batch-slutsatsdragning anropar körningsmetoden och skickar antingen en lista eller en Pandas DataFrame som argument till metoden. Varje post i min_batch blir en filsökväg om indata är en FileDataset, en Pandas DataFrame om indata är en TabularDataset. run()-metoden ska returnera en Pandas DataFrame eller en matris. För append_row output_action läggs dessa returnerade element till i den gemensamma utdatafilen. För summary_only ignoreras innehållet i elementen. För alla utdataåtgärder anger varje returnerat utdataelement en lyckad slutsatsdragning av indataelementet i mini-batchen för indata. Varje parallell arbetsprocess anropar init en gång och loopar sedan över körningsfunktionen tills alla mini-batchar bearbetas.

error_threshold
Obligatorisk
int

Antalet postfel för TabularDataset och filfel för FileDataset som ska ignoreras under bearbetningen. Om felantalet överskrider det här värdet avbryts jobbet. Feltröskeln är för hela indata och inte för enskilda mini-batchar som skickas till run()-metoden. Intervallet är [-1, int.max]. -1 anger ignorera alla fel under bearbetningen.

output_action
Obligatorisk
str

Hur utdata ska ordnas. Aktuella värden som stöds är "append_row" och "summary_only".

  1. "append_row" – Alla värden som skickas via run() metodanrop aggregeras till en unik fil med namnet parallel_run_step.txt som skapas på utdataplatsen.
  2. "summary_only" – Användarskriptet förväntas lagra själva utdata. En utdatarad förväntas fortfarande för varje bearbetat indataobjekt. Systemet använder endast dessa utdata för feltröskelberäkning (ignorerar det faktiska värdet för raden).
compute_target
Obligatorisk
AmlCompute eller str

Beräkningsmål som ska användas för ParallelRunStep-körning. Den här parametern kan anges som ett beräkningsmålobjekt eller namnet på ett beräkningsmål på arbetsytan.

node_count
Obligatorisk
int

Antal noder i beräkningsmålet som används för att köra ParallelRunStep.

process_count_per_node
Obligatorisk
int

Antalet arbetsprocesser per nod för att köra postskriptet parallellt. För en GPU-dator är standardvärdet 1. För en CPU-dator är standardvärdet antalet kärnor. En arbetsprocess anropar run() upprepade gånger genom att skicka den mini-batch som den får. Det totala antalet arbetsprocesser i jobbet är process_count_per_node * node_count, som bestämmer det maximala antalet run() som ska köras parallellt.

mini_batch_size
Obligatorisk
str eller int

För FileDataset-indata är det här fältet antalet filer som ett användarskript kan bearbeta i ett run()-anrop. För TabularDataset-indata är det här fältet den ungefärliga storleken på data som användarskriptet kan bearbeta i ett run()-anrop. Exempelvärden är 1024, 1024 KB, 10 MB och 1 GB. (valfritt är standardvärdet 10 filer för FileDataset och 1MB för TabularDataset.)

source_directory
Obligatorisk
str

Sökväg till mappen som innehåller och stödfilerna entry_script som används för att köra på beräkningsmålet.

description
Obligatorisk
str

En beskrivning för att ge batchtjänsten som används för visning.

logging_level
Obligatorisk
str

En sträng med namnet på loggningsnivån, som definieras i loggning. Möjliga värden är "WARNING", "INFO" och "DEBUG". (valfritt, standardvärdet är "INFO".)

run_invocation_timeout
Obligatorisk
int

Tidsgräns i sekunder för varje anrop av metoden run(). (valfritt, standardvärdet är 60.)

run_max_try
Obligatorisk
int

Antalet maximala försök för en minibatch med misslyckad eller tidsgräns. Intervallet är [1, int.max]. Standardvärdet är 3. En mini-batch med dequeueantal som är större än detta bearbetas inte igen och tas bort direkt.

append_row_file_name
Obligatorisk
str

Namnet på utdatafilen om output_action är "append_row". (valfritt, standardvärdet är "parallel_run_step.txt")

allowed_failed_count
Obligatorisk
int

Antalet misslyckade minibatchar som ska ignoreras under bearbetningen. Om det misslyckade antalet överskrider det här värdet avbryts jobbet. Det här tröskelvärdet gäller för hela indata i stället för den enskilda mini-batch som skickas till run()-metoden. Intervallet är [-1, int.max]. -1 anger ignorera alla fel under bearbetningen. En minibatch kan misslyckas första gången den bearbetas och lyckas sedan på det andra försöket. Kontrollen mellan första och andra gången räknar den som misslyckad. Kontroll efter andra gången räknas inte som misslyckad. Argumentet – error_threshold, – allowed_failed_count och – allowed_failed_percent kan fungera tillsammans. Om fler än en har angetts avbryts jobbet om det överskrider någon av dem.

allowed_failed_percent
Obligatorisk

Procentandelen misslyckade minibatchar som ska ignoreras under bearbetningen. Om den misslyckade procenten överskrider det här värdet avbryts jobbet. Det här tröskelvärdet gäller för hela indata i stället för den enskilda mini-batch som skickas till run()-metoden. Intervallet är [0, 100]. 100 eller 100,0 anger att alla fel ignoreras under bearbetningen. Kontrollen startar när alla minibatchar har schemalagts. Argumentet – error_threshold, – allowed_failed_count och – allowed_failed_percent kan fungera tillsammans. Om fler än en har angetts avbryts jobbet om det överskrider någon av dem.

partition_keys
Obligatorisk

De nycklar som används för att partitionera datauppsättningen i mini-batchar. Om det anges partitioneras data med samma nyckel i samma mini-batch. Om både partition_keys och mini_batch_size anges utlöses felet. Det bör vara en lista över str-element som var och en är en nyckel som används för att partitionering av indatamängden. Men om de befordras till PipelineParameter bör standardvärdena vara json dump str i listan eftersom listtypen inte stöds i PipelineParameter för tillfället. Indata måste vara partitionerade datauppsättningar och partition_keys måste vara en delmängd av nycklarna för varje indatauppsättning för att detta ska fungera.

environment_variables
Obligatorisk

En ordlista med miljövariablers namn och värden. Dessa miljövariabler anges i den process där användarskript körs.

Kommentarer

Klassen ParallelRunConfig används för att tillhandahålla konfiguration för ParallelRunStep klassen. ParallelRunConfig och ParallelRunStep kan användas tillsammans för bearbetning av stora mängder data parallellt. Vanliga användningsfall är att träna en ML-modell eller köra slutsatsdragning offline för att generera förutsägelser i en batch med observationer. ParallelRunStep fungerar på så sätt att dina data delas upp i batchar som bearbetas parallellt. Batchstorleken, antalet noder och andra justerbara parametrar för att påskynda den parallella bearbetningen ParallelRunConfig kan styras med klassen. ParallelRunStep kan fungera med antingen TabularDataset eller FileDataset som indata.

Så här använder du ParallelRunStep och ParallelRunConfig:

  • Skapa ett ParallelRunConfig objekt för att ange hur batchbearbetning utförs, med parametrar för att styra batchstorlek, antal noder per beräkningsmål och en referens till ditt anpassade Python-skript.

  • Skapa ett ParallelRunStep-objekt som använder ParallelRunConfig-objektet, definierar indata och utdata för steget.

  • Använd det konfigurerade ParallelRunStep-objektet på samma Pipeline sätt som med andra pipelinestegstyper.

Exempel på hur du arbetar med klasserna ParallelRunStep och ParallelRunConfig för batchinferens beskrivs i följande artiklar:


   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
   )

Mer information om det här exemplet finns i notebook-filen https://aka.ms/batch-inference-notebooks.

Metoder

load_yaml

Läs in konfigurationsdata för parallell körning från en YAML-fil.

save_to_yaml

Exportera konfigurationsdata för parallell körning till en YAML-fil.

load_yaml

Läs in konfigurationsdata för parallell körning från en YAML-fil.

static load_yaml(workspace, path)

Parametrar

Name Description
workspace
Obligatorisk

Arbetsytan som konfigurationsdata ska läsas från.

path
Obligatorisk
str

Sökvägen som konfigurationen ska läsas in från.

save_to_yaml

Exportera konfigurationsdata för parallell körning till en YAML-fil.

save_to_yaml(path)

Parametrar

Name Description
path
Obligatorisk
str

Sökvägen som filen ska sparas till.