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.

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 nödvändiga programberoenden, 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 det entry_script en 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. deserialisera och läsa in 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 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 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 minibatchen 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 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 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 matas ut 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
int

Antalet arbetsprocesser per nod för att köra postskriptet parallellt. För GPU-dator är standardvärdet 1. För CPU-dator ä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, som bestämmer 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 1024, 1024 KB, 10 MB och 1 GB. (valfritt är standardvärdet 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 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 i visningssyfte.

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

Timeout 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 dequeueantal 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 minibatch 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 vid det andra försöket. Kontrollen mellan första och andra gången räknar den som misslyckad. Kontrollen efter den andra gången räknar 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 minibatch 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 ignorera alla fel under bearbetningen. Kontrollen startar när alla minibatch 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

De nycklar som används för att partitionera datauppsättningen i minibatch. 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 indatauppsättningen. Men om de höjs upp 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.

Standardvärde: None
environment_variables

En ordlista med miljövariablers namn och värden. Dessa miljövariabler anges i den process 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 nödvändiga programberoenden, 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 det entry_script en 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. deserialisera och läsa in 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 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 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 minibatchen 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 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 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 matas ut 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 minibatch 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 1 MB för TabularDataset.)

source_directory
Obligatorisk
str

Sökväg till mappen som innehåller de entry_script och stödfiler 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 i visningssyfte.

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

Timeout 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 minibatch med dequeueantal 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 minibatch 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 vid det andra försöket. Kontrollen mellan första och andra gången räknar den som misslyckad. Kontrollen efter den andra gången räknar 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.

allowed_failed_percent
Obligatorisk

Procentandelen misslyckade minibatch 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 ignorera alla fel under bearbetningen. Kontrollen startar när alla minibatch 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 minibatch. 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 indatauppsättningen. Men om de höjs upp 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 parametrar som kan ändras 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 i ett Pipeline precis som med andra pipelinestegtyper.

Exempel på hur du arbetar med ParallelRunStep- och ParallelRunConfig-klasser 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 du vill läsa konfigurationsdata från.

path
Obligatorisk
str

Sökvägen för att läsa in konfigurationen 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.