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._ParallelRunConfigBaseParallelRunConfig
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
|
Benutzerskript, das parallel auf mehreren Knoten ausgeführt wird. Dies wird als lokaler Dateipfad angegeben. Wenn |
error_threshold
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
Erforderlich
|
Gibt an, wie die Ausgabe organisiert werden soll. Derzeit werden die Werte „append_row“ und „summary_only“ unterstützt.
|
compute_target
Erforderlich
|
AmlCompute oder
str
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
|
Anzahl der Knoten am Computeziel, die zum Ausführen von ParallelRunStep verwendet werden. |
process_count_per_node
|
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 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
|
Pfad zum Ordner, der das Standardwert: None
|
description
|
Eine Beschreibung mit dem Batchdienst, die zu Anzeigezwecken verwendet wird. Standardwert: None
|
logging_level
|
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
|
Timeout in Sekunden für jeden Aufruf der run()-Methode. (optional, der Standardwert lautet 60) Standardwert: 60
|
run_max_try
|
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
|
Der Name der Ausgabedatei, wenn Standardwert: None
|
allowed_failed_count
|
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
|
Benutzerskript, das parallel auf mehreren Knoten ausgeführt wird. Dies wird als lokaler Dateipfad angegeben. Wenn |
error_threshold
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
Erforderlich
|
Gibt an, wie die Ausgabe organisiert werden soll. Derzeit werden die Werte „append_row“ und „summary_only“ unterstützt.
|
compute_target
Erforderlich
|
AmlCompute oder
str
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
|
Anzahl der Knoten am Computeziel, die zum Ausführen von ParallelRunStep verwendet werden. |
process_count_per_node
Erforderlich
|
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 |
mini_batch_size
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
Erforderlich
|
Pfad zum Ordner, der das |
description
Erforderlich
|
Eine Beschreibung mit dem Batchdienst, die zu Anzeigezwecken verwendet wird. |
logging_level
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
Erforderlich
|
Timeout in Sekunden für jeden Aufruf der run()-Methode. (optional, der Standardwert lautet 60) |
run_max_try
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
Erforderlich
|
Der Name der Ausgabedatei, wenn |
allowed_failed_count
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
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:
Tutorial: Erstellen einer Azure Machine Learning-Pipeline für die Batchbewertung In diesem Artikel wird veranschaulicht, wie Sie diese beiden Klassen für die asynchrone Batchbewertung in einer Pipeline verwenden und für einen REST-Endpunkt die Ausführung der Pipeline ermöglichen.
Ausführen von Batchrückschlüssen für große Datenmengen mithilfe von Azure Machine Learning In diesem Artikel wird veranschaulicht, wie Sie große Datenmengen asynchron und parallel mit einem benutzerdefinierten Rückschlussskript und einem vortrainierten Bildklassifizierungsmodell auf Basis einer MNIST-Datenbank verarbeiten.
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
|
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
|
Der Pfad zum Speichern der Datei. |