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

environment
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
str
Erforderlich

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
int
Erforderlich

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
str
Erforderlich

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
AmlCompute oder str
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
int
Erforderlich

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

process_count_per_node
int
Standardwert: None

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.

mini_batch_size
Union[str, int]
Standardwert: None

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
str
Standardwert: None

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
str
Standardwert: None

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

logging_level
str
Standardwert: INFO

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
int
Standardwert: 60

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

run_max_try
int
Standardwert: 3

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
str
Standardwert: None

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

allowed_failed_count
int
Standardwert: None

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
float
Standardwert: None

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
List[str]
Standardwert: None

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
Dict[str, str]
Standardwert: None

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

environment
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
str
Erforderlich

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
int
Erforderlich

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
str
Erforderlich

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
AmlCompute oder str
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
int
Erforderlich

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

process_count_per_node
int
Erforderlich

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.

mini_batch_size
str oder int
Erforderlich

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
str
Erforderlich

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
str
Erforderlich

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

logging_level
str
Erforderlich

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
int
Erforderlich

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

run_max_try
int
Erforderlich

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
str
Erforderlich

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

allowed_failed_count
int
Erforderlich

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
float
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
List[str]
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
Dict[str, str]
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

workspace
Workspace
Erforderlich

Der Arbeitsbereich, aus dem die Konfigurationsdaten gelesen werden.

path
str
Erforderlich

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

path
str
Erforderlich

Der Pfad zum Speichern der Datei.