Freigeben über


ParallelRunConfig Klasse

Definiert die Konfiguration für ein ParallelRunStep-Objekt.

Ein Beispiel für die Verwendung von ParallelRunStep finden Sie im Notebook https://aka.ms/batch-inference-notebooks.

Einen Leitfaden zur Problembehandlung finden Sie unter https://aka.ms/prstsg. Weitere Referenzen finden Sie hier.

Initialisieren Sie das Config-Objekt.

Vererbung
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)

Parameter

Name Beschreibung
environment
Erforderlich

Die Umgebungsdefinition, die die Python-Umgebung konfiguriert. Sie kann für die Verwendung einer vorhandenen Python-Umgebung oder zum Einrichten einer temporären Umgebung für das Experiment konfiguriert werden. Die Umgebungsdefinition ist für das Definieren der erforderlichen Anwendungsabhängigkeiten zuständig, z. B. Conda- oder pip-Pakete.

entry_script
Erforderlich
str

Benutzerskript, das parallel auf mehreren Knoten ausgeführt wird. Dies wird als lokaler Dateipfad angegeben. Wenn source_directory angegeben wird, ist entry_script ein relativer Pfad innerhalb des Verzeichnisses. Andernfalls kann es ein beliebiger Pfad sein, auf den auf dem Computer zugegriffen werden kann. Das entry_script sollte zwei Funktionen enthalten. init(): Diese Funktion sollte für jede aufwendige oder allgemeine Vorbereitung für nachfolgende Rückschlüsse verwendet werden, z. B. das Deserialisieren und Laden des Modells in ein globales Objekt. run(mini_batch): Die Methode, die parallelisiert werden soll. Jeder Aufruf hat einen Minibatch. „mini_batch“: Der Batchrückschluss ruft die run-Methode auf und übergibt entweder eine Liste oder einen Pandas-Datenrahmen als Argument an die Methode. Jeder Eintrag in „min_batch“ ist entweder ein Dateipfad (bei Eingaben vom Typ FileDataset) oder ein Pandas-Datenrahmen (bei Eingaben vom Typ TabularDataset). Die run()-Methode muss einen Pandas-Datenrahmen oder ein Array zurückgeben. Bei Verwendung von „append_row output_action“ werden diese zurückgegebenen Elemente am Ende der allgemeinen Ausgabedatei hinzugefügt. Bei Verwendung von „summary_only“ wird der Inhalt der Elemente ignoriert. Bei allen Ausgabeaktionen geben die zurückgegebenen Ausgabeelemente jeweils einen erfolgreichen Rückschluss für ein Eingabeelement aus dem Eingabe-Minibatch an. Jeder parallele Workerprozess ruft init einmal auf und durchläuft dann die run-Funktion in einer Schleife, bis alle Minibatches verarbeitet wurden.

error_threshold
Erforderlich
int

Die Anzahl von Datensatzfehlern für TabularDataset bzw. Dateifehlern für FileDataset, die während der Verarbeitung ignoriert werden sollen. Wenn die Fehleranzahl diesen Wert überschreitet, wird der Auftrag abgebrochen. Der Fehlerschwellenwert gilt für die gesamte Eingabe und nicht für einzelne Minibatches, die an die run()-Methode übermittelt werden. Der Bereich ist [-1, int.max]. -1 gibt an, dass alle Fehler während der Verarbeitung ignoriert werden.

output_action
Erforderlich
str

Gibt an, wie die Ausgabe organisiert werden soll. Derzeit werden die Werte „append_row“ und „summary_only“ unterstützt.

  1. „append_row“: Alle Werte, die von Aufrufen der run()-Methode ausgegeben werden, werden in einer eindeutigen Datei namens „parallel_run_step.txt“ aggregiert, die am Ausgabespeicherort erstellt wird.
  2. „summary_only“: Es wird erwartet, dass das Benutzerskript die Ausgabe selbst speichert. Für jedes erfolgreiche verarbeitete Eingabeelement wird weiterhin eine Ausgabezeile erwartet. Das System verwendet diese Ausgabe nur für die Berechnung des Fehlerschwellenwerts (ohne den tatsächlichen Wert der Zeile).
compute_target
Erforderlich

Computeziel, das für die ParallelRunStep-Ausführung verwendet werden soll. Dieser Parameter kann als Computezielobjekt oder als Name eines Computeziels im Arbeitsbereich angegeben werden.

node_count
Erforderlich
int

Anzahl der Knoten am Computeziel, die zum Ausführen von ParallelRunStep verwendet werden.

process_count_per_node
int

Die Anzahl der Workerprozesse pro Knoten zum parallelen Ausführen des Eingabeskripts. Für einen GPU-Computer ist der Standardwert 1. Für einen CPU-Computer ist der Standardwert die Anzahl der Kerne. Ein Workerprozess ruft run() wiederholt auf, indem er den von ihm abgerufenen Minibatch übergibt. Die Gesamtanzahl der Workerprozesse in Ihrem Auftrag ist process_count_per_node * node_count, wodurch die maximale Anzahl von run() für die parallele Ausführung bestimmt wird.

Standardwert: None
mini_batch_size

Bei der FileDataset-Eingabe ist dieses Feld die Anzahl der Dateien, die ein Benutzerskript in einem run()-Aufruf verarbeiten kann. Bei einer TabularDataset-Eingabe ist dieses Feld die ungefähre Größe der Daten, die ein Benutzerskript in einem run()-Aufruf verarbeiten kann. Beispielwerte sind 1.024, 1.024 KB, 10 MB und 1 GB. (optional, der Standardwert ist 10 Dateien für FileDataset und 1 MB für TabularDataset.)

Standardwert: None
source_directory
str

Pfad zum Ordner, der das entry_script und die unterstützenden Dateien enthält, die für die Ausführung am Computeziel verwendet werden.

Standardwert: None
description
str

Eine Beschreibung mit dem Batchdienst, die zu Anzeigezwecken verwendet wird.

Standardwert: None
logging_level
str

Eine Zeichenfolge mit dem Namen des Protokolliergrads, der in „logging“ definiert ist. Mögliche Werte sind „WARNING“, „INFO“ und „DEBUG“. (Optional, der Standardwert ist „INFO“.)

Standardwert: INFO
run_invocation_timeout
int

Timeout in Sekunden für jeden Aufruf der run()-Methode. (optional, der Standardwert lautet 60)

Standardwert: 60
run_max_try
int

Die maximale Anzahl von Versuchen für einen fehlerhaften oder zeitlich begrenzten Minibatch. Der Bereich ist [1, int.max]. Der Standardwert ist 3. Wenn bei einem Minibatch eine größere Anzahl aus der Queue entfernt wird, wird er nicht erneut verarbeitet, sondern direkt gelöscht.

Standardwert: 3
append_row_file_name
str

Der Name der Ausgabedatei, wenn output_action den Wert „append_row“ hat. (optional, der Standardwert ist „parallel_run_step.txt“)

Standardwert: None
allowed_failed_count
int

Die Anzahl fehlerhafter Minibatches, die während der Verarbeitung ignoriert werden sollen. Wenn die Fehleranzahl diesen Wert überschreitet, wird der Auftrag abgebrochen. Dieser Schwellenwert gilt für die gesamte Eingabe und nicht nur für den einzelnen Minibatch, der an die run()-Methode übermittelt wird. Der Bereich ist [-1, int.max]. -1 gibt an, dass alle Fehler während der Verarbeitung ignoriert werden. Ein Minibatch kann bei der ersten Verarbeitung zu einem Fehler führen und dann beim zweiten Versuch erfolgreich ausgeführt werden. Bei der Überprüfung zwischen dem ersten und zweiten Versuch wird dies als Fehler gezählt. Bei der Überprüfung nach dem zweiten Versuch wird dies als Fehler gezählt. Die Argumente –error_threshold, –allowed_failed_count und –allowed_failed_percent können zusammen verwendet werden. Wenn mehrere angegeben sind, wird der Auftrag abgebrochen, wenn er einen der Werte überschreitet.

Standardwert: None
allowed_failed_percent

Der Prozentsatz fehlerhafter Minibatches, die während der Verarbeitung ignoriert werden sollen. Wenn der Fehlerprozentsatz diesen Wert überschreitet, wird der Auftrag abgebrochen. Dieser Schwellenwert gilt für die gesamte Eingabe und nicht nur für den einzelnen Minibatch, der an die run()-Methode übermittelt wird. Der Bereich ist [0, 100]. 100 oder 100,0 gibt an, dass alle Fehler während der Verarbeitung ignoriert werden. Die Überprüfung wird gestartet, nachdem alle Minibatches geplant wurden. Die Argumente –error_threshold, –allowed_failed_count und –allowed_failed_percent können zusammen verwendet werden. Wenn mehrere angegeben sind, wird der Auftrag abgebrochen, wenn er einen der Werte überschreitet.

Standardwert: None
partition_keys

Die Schlüssel, die zum Partitionieren von Datasets in Minibatches verwendet werden. Bei einer Angabe werden die Daten mit demselben Schlüssel in den gleichen Minibatch partitioniert. Wenn sowohl partition_keys als auch mini_batch_size angegeben werden, wird ein Fehler ausgelöst. Es sollte eine Liste mit str-Elementen sein, die jeweils ein Schlüssel sind, der zum Partitionieren des Eingabedatasets verwendet wird. Wenn sie jedoch zum PipelineParameter heraufgestuft werden, sollten die Standardwerte der JSON-Speicherabbild-Zeichenfolgen dieser Liste sein, da der Listentyp in PipelineParameter derzeit nicht unterstützt wird. Damit dies funktioniert, müssen die Eingaben partitionierte Datasets sein, und die partition_keys müssen eine Teilmenge der Schlüssel jedes Eingabedatasets sein.

Standardwert: None
environment_variables

Ein Wörterbuch mit Umgebungsvariablennamen und Werten. Diese Umgebungsvariablen werden für den Prozess festgelegt, in dem das Benutzerskript ausgeführt wird.

Standardwert: None
environment
Erforderlich

Die Umgebungsdefinition, die die Python-Umgebung konfiguriert. Sie kann für die Verwendung einer vorhandenen Python-Umgebung oder zum Einrichten einer temporären Umgebung für das Experiment konfiguriert werden. Die Umgebungsdefinition ist für das Definieren der erforderlichen Anwendungsabhängigkeiten zuständig, z. B. Conda- oder pip-Pakete.

entry_script
Erforderlich
str

Benutzerskript, das parallel auf mehreren Knoten ausgeführt wird. Dies wird als lokaler Dateipfad angegeben. Wenn source_directory angegeben wird, ist entry_script ein relativer Pfad innerhalb des Verzeichnisses. Andernfalls kann es ein beliebiger Pfad sein, auf den auf dem Computer zugegriffen werden kann. Das entry_script sollte zwei Funktionen enthalten. init(): Diese Funktion sollte für jede aufwendige oder allgemeine Vorbereitung für nachfolgende Rückschlüsse verwendet werden, z. B. das Deserialisieren und Laden des Modells in ein globales Objekt. run(mini_batch): Die Methode, die parallelisiert werden soll. Jeder Aufruf hat einen Minibatch. „mini_batch“: Der Batchrückschluss ruft die run-Methode auf und übergibt entweder eine Liste oder einen Pandas-Datenrahmen als Argument an die Methode. Jeder Eintrag in „min_batch“ ist entweder ein Dateipfad (bei Eingaben vom Typ FileDataset) oder ein Pandas-Datenrahmen (bei Eingaben vom Typ TabularDataset). Die run()-Methode muss einen Pandas-Datenrahmen oder ein Array zurückgeben. Bei Verwendung von „append_row output_action“ werden diese zurückgegebenen Elemente am Ende der allgemeinen Ausgabedatei hinzugefügt. Bei Verwendung von „summary_only“ wird der Inhalt der Elemente ignoriert. Bei allen Ausgabeaktionen geben die zurückgegebenen Ausgabeelemente jeweils einen erfolgreichen Rückschluss für ein Eingabeelement aus dem Eingabe-Minibatch an. Jeder parallele Workerprozess ruft init einmal auf und durchläuft dann die run-Funktion in einer Schleife, bis alle Minibatches verarbeitet wurden.

error_threshold
Erforderlich
int

Die Anzahl von Datensatzfehlern für TabularDataset bzw. Dateifehlern für FileDataset, die während der Verarbeitung ignoriert werden sollen. Wenn die Fehleranzahl diesen Wert überschreitet, wird der Auftrag abgebrochen. Der Fehlerschwellenwert gilt für die gesamte Eingabe und nicht für einzelne Minibatches, die an die run()-Methode übermittelt werden. Der Bereich ist [-1, int.max]. -1 gibt an, dass alle Fehler während der Verarbeitung ignoriert werden.

output_action
Erforderlich
str

Gibt an, wie die Ausgabe organisiert werden soll. Derzeit werden die Werte „append_row“ und „summary_only“ unterstützt.

  1. „append_row“: Alle Werte, die von Aufrufen der run()-Methode ausgegeben werden, werden in einer eindeutigen Datei namens „parallel_run_step.txt“ aggregiert, die am Ausgabespeicherort erstellt wird.
  2. „summary_only“: Es wird erwartet, dass das Benutzerskript die Ausgabe selbst speichert. Für jedes erfolgreiche verarbeitete Eingabeelement wird weiterhin eine Ausgabezeile erwartet. Das System verwendet diese Ausgabe nur für die Berechnung des Fehlerschwellenwerts (ohne den tatsächlichen Wert der Zeile).
compute_target
Erforderlich

Computeziel, das für die ParallelRunStep-Ausführung verwendet werden soll. Dieser Parameter kann als Computezielobjekt oder als Name eines Computeziels im Arbeitsbereich angegeben werden.

node_count
Erforderlich
int

Anzahl der Knoten am Computeziel, die zum Ausführen von ParallelRunStep verwendet werden.

process_count_per_node
Erforderlich
int

Die Anzahl der Workerprozesse pro Knoten zum parallelen Ausführen des Eingabeskripts. Für einen GPU-Computer ist der Standardwert 1. Bei einem CPU-Computer ist der Standardwert die Anzahl der Kerne. Ein Workerprozess ruft run() wiederholt auf, indem er den von ihm abgerufenen Minibatch übergibt. Die Gesamtanzahl der Workerprozesse in Ihrem Auftrag ist process_count_per_node * node_count, wodurch die maximale Anzahl von run() für die parallele Ausführung bestimmt wird.

mini_batch_size
Erforderlich
str oder int

Bei der FileDataset-Eingabe ist dieses Feld die Anzahl der Dateien, die ein Benutzerskript in einem run()-Aufruf verarbeiten kann. Bei einer TabularDataset-Eingabe ist dieses Feld die ungefähre Größe der Daten, die ein Benutzerskript in einem run()-Aufruf verarbeiten kann. Beispielwerte sind 1.024, 1.024 KB, 10 MB und 1 GB. (optional, der Standardwert ist 10 Dateien für FileDataset und 1 MB für TabularDataset.)

source_directory
Erforderlich
str

Pfad zum Ordner, der das entry_script und die unterstützenden Dateien enthält, die für die Ausführung am Computeziel verwendet werden.

description
Erforderlich
str

Eine Beschreibung mit dem Batchdienst, die zu Anzeigezwecken verwendet wird.

logging_level
Erforderlich
str

Eine Zeichenfolge mit dem Namen des Protokolliergrads, der in „logging“ definiert ist. Mögliche Werte sind „WARNING“, „INFO“ und „DEBUG“. (Optional, der Standardwert ist „INFO“.)

run_invocation_timeout
Erforderlich
int

Timeout in Sekunden für jeden Aufruf der run()-Methode. (optional, der Standardwert lautet 60)

run_max_try
Erforderlich
int

Die maximale Anzahl von Versuchen für einen fehlerhaften oder zeitlich begrenzten Minibatch. Der Bereich ist [1, int.max]. Der Standardwert ist 3. Wenn bei einem Minibatch eine größere Anzahl aus der Queue entfernt wird, wird er nicht erneut verarbeitet, sondern direkt gelöscht.

append_row_file_name
Erforderlich
str

Der Name der Ausgabedatei, wenn output_action den Wert „append_row“ hat. (optional, der Standardwert ist „parallel_run_step.txt“)

allowed_failed_count
Erforderlich
int

Die Anzahl fehlerhafter Minibatches, die während der Verarbeitung ignoriert werden sollen. Wenn die Fehleranzahl diesen Wert überschreitet, wird der Auftrag abgebrochen. Dieser Schwellenwert gilt für die gesamte Eingabe und nicht nur für den einzelnen Minibatch, der an die run()-Methode übermittelt wird. Der Bereich ist [-1, int.max]. -1 gibt an, dass alle Fehler während der Verarbeitung ignoriert werden. Ein Minibatch kann bei der ersten Verarbeitung zu einem Fehler führen und dann beim zweiten Versuch erfolgreich ausgeführt werden. Bei der Überprüfung zwischen dem ersten und zweiten Versuch wird dies als Fehler gezählt. Bei der Überprüfung nach dem zweiten Versuch wird dies als Fehler gezählt. Die Argumente –error_threshold, –allowed_failed_count und –allowed_failed_percent können zusammen verwendet werden. Wenn mehrere angegeben sind, wird der Auftrag abgebrochen, wenn er einen der Werte überschreitet.

allowed_failed_percent
Erforderlich

Der Prozentsatz fehlerhafter Minibatches, die während der Verarbeitung ignoriert werden sollen. Wenn der Fehlerprozentsatz diesen Wert überschreitet, wird der Auftrag abgebrochen. Dieser Schwellenwert gilt für die gesamte Eingabe und nicht nur für den einzelnen Minibatch, der an die run()-Methode übermittelt wird. Der Bereich ist [0, 100]. 100 oder 100,0 gibt an, dass alle Fehler während der Verarbeitung ignoriert werden. Die Überprüfung wird gestartet, nachdem alle Minibatches geplant wurden. Die Argumente –error_threshold, –allowed_failed_count und –allowed_failed_percent können zusammen verwendet werden. Wenn mehrere angegeben sind, wird der Auftrag abgebrochen, wenn er einen der Werte überschreitet.

partition_keys
Erforderlich

Die Schlüssel, die zum Partitionieren von Datasets in Minibatches verwendet werden. Bei einer Angabe werden die Daten mit demselben Schlüssel in den gleichen Minibatch partitioniert. Wenn sowohl partition_keys als auch mini_batch_size angegeben werden, wird ein Fehler ausgelöst. Es sollte eine Liste mit str-Elementen sein, die jeweils ein Schlüssel sind, der zum Partitionieren des Eingabedatasets verwendet wird. Wenn sie jedoch zum PipelineParameter heraufgestuft werden, sollten die Standardwerte der JSON-Speicherabbild-Zeichenfolgen dieser Liste sein, da der Listentyp in PipelineParameter derzeit nicht unterstützt wird. Damit dies funktioniert, müssen die Eingaben partitionierte Datasets sein, und die partition_keys müssen eine Teilmenge der Schlüssel jedes Eingabedatasets sein.

environment_variables
Erforderlich

Ein Wörterbuch mit Umgebungsvariablennamen und Werten. Diese Umgebungsvariablen werden für den Prozess festgelegt, in dem das Benutzerskript ausgeführt wird.

Hinweise

Die ParallelRunConfig-Klasse wird verwendet, um die Konfiguration für die ParallelRunStep-Klasse bereitzustellen. ParallelRunConfig und ParallelRunStep können gemeinsam für die parallele Verarbeitung großer Datenmengen verwendet werden. Häufige Anwendungsfälle sind das Trainieren eines ML-Modells oder das Ausführen von Offline-Rückschlussvorgängen, um Vorhersagen für eine Gruppe von Beobachtungen zu generieren. Bei „ParallelRunStep“ werden Ihre Daten in Gruppen (Batches) unterteilt, die parallel verarbeitet werden. Die Batchgröße, die Knotenanzahl und andere optimierbare Parameter für die Beschleunigung der Parallelverarbeitung können mit der ParallelRunConfig-Klasse gesteuert werden. Für „ParallelRunStep“ kann entweder TabularDataset oder FileDataset als Eingabe genutzt werden.

So verwenden Sie ParallelRunStep und ParallelRunConfig:

  • Erstellen Sie ein ParallelRunConfig-Objekt, um anzugeben, wie die Batchverarbeitung durchgeführt wird. Verwenden Sie die Parameter zum Steuern der Batchgröße und der Anzahl von Knoten pro Computeziel und einen Verweis auf Ihr benutzerdefiniertes Python-Skript.

  • Erstellen Sie ein ParallelRunStep-Objekt, das das ParallelRunConfig-Objekt verwendet, und definieren Sie Ein- und Ausgaben für den Schritt.

  • Verwenden Sie das konfigurierte „ParallelRunStep“-Objekt in einer Pipeline, wie Sie dies auch bei anderen Pipelineschritttypen durchführen.

Beispiele für die Arbeit mit den Klassen ParallelRunStep und ParallelRunConfig für Batchrückschlüsse werden in den folgenden Artikeln erläutert:


   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
   )

Weitere Informationen zu diesem Beispiel finden Sie im Notebook https://aka.ms/batch-inference-notebooks.

Methoden

load_yaml

Dient zum Laden von Konfigurationsdaten für parallele Ausführungen aus einer YAML-Datei.

save_to_yaml

Exportiert Konfigurationsdaten für parallele Ausführungen in eine YAML-Datei.

load_yaml

Dient zum Laden von Konfigurationsdaten für parallele Ausführungen aus einer YAML-Datei.

static load_yaml(workspace, path)

Parameter

Name Beschreibung
workspace
Erforderlich

Der Arbeitsbereich, aus dem die Konfigurationsdaten gelesen werden.

path
Erforderlich
str

Der Arbeitsbereich, aus dem die Konfiguration geladen wird.

save_to_yaml

Exportiert Konfigurationsdaten für parallele Ausführungen in eine YAML-Datei.

save_to_yaml(path)

Parameter

Name Beschreibung
path
Erforderlich
str

Der Pfad zum Speichern der Datei.