SageMaker Verwaltete warme Pools - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

SageMaker Verwaltete warme Pools

SageMaker Mit verwalteten Warmpools können Sie die bereitgestellte Infrastruktur nach Abschluss eines Schulungsauftrags beibehalten und wiederverwenden, um die Latenz bei sich wiederholenden Workloads zu reduzieren, z. B. bei iterativen Experimenten oder der Ausführung vieler Jobs hintereinander. Nachfolgende Trainingsaufträge, die den angegebenen Parametern entsprechen, werden auf der beibehaltenen Warm-Pool-Infrastruktur ausgeführt, was die Startzeiten verkürzt, da weniger Zeit für die Bereitstellung von Ressourcen benötigt wird.

Wichtig

SageMaker verwaltete Warmpools sind eine kostenpflichtige Ressource. Weitere Informationen finden Sie unter Fakturierung.

Funktionsweise

Um SageMaker verwaltete warme Pools zu verwenden und die Latenz zwischen ähnlichen aufeinanderfolgenden Trainingsaufträgen zu reduzieren, erstellen Sie einen Trainingsjob, in dem ein KeepAlivePeriodInSeconds Wert angegeben istResourceConfig. Dieser Wert gibt die Zeitspanne in Sekunden an, die konfigurierte Ressourcen in einem warmen Pool für nachfolgende Trainingsaufträge aufbewahrt werden. Wenn Sie mehrere Trainingsaufträge mit ähnlichen Konfigurationen ausführen müssen, können Sie die Latenzzeit und die abrechenbare Zeit weiter reduzieren, indem Sie ein spezielles, dauerhaftes Cache-Verzeichnis verwenden, um Ihre Informationen zu speichern und in einem anderen Auftrag wiederzuverwenden.

Lebenszyklus von Warm Pool

  1. Erstellen Sie einen ersten Trainingsauftrag mit einem KeepAlivePeriodInSeconds Wert größer als 0. Wenn Sie diesen ersten Trainingsauftrag ausführen, führt dies zu einem "Kaltstart" eines Clusters mit typischen Startzeiten.

  2. Wenn der erste Trainingsauftrag abgeschlossen ist, werden die bereitgestellten Ressourcen in einem Warm-Pool für den im KeepAlivePeriodInSeconds Wert angegebenen Zeitraum aufrechterhalten. Solange der Cluster fehlerfrei ist und der Warm-Pool innerhalb des angegebenen KeepAlivePeriodInSeconds Bereichs liegt, ist der Warm-Pool-Status Available.

  3. Der warme Pool bleibt so lange bestehen Available bis entweder ein passender Trainingsauftrag zur Wiederverwendung gefunden wird oder er die vorgegebene KeepAlivePeriodInSeconds Zeit überschreitet und abgebrochen wird. Die maximal zulässige Zeitspanne für das KeepAlivePeriodInSeconds beträgt 3600 Sekunden (60 Minuten). Wenn der Status des warmen Pools ist Terminated, ist dies das Ende des Lebenszyklus des warmen Pools.

  4. Wenn der Warm-Pool einen zweiten Trainingsauftrag mit übereinstimmenden Spezifikationen wie Instance-Anzahl oder Instance-Typ identifiziert, wechselt der Warm-Pool vom ersten Trainingsauftrag zum zweiten Trainingsauftrag zur Wiederverwendung. Der Status des ersten Trainingsjobs Warmpool wird zum Reused. Dies ist das Ende des Lebenszyklus des warmen Pools für den ersten Ausbildungsjob.

  5. Der Status des zweiten Trainingsjobs, bei dem der warme Pool wiederverwendet wurde, wird InUse. Nach Abschluss des zweiten Trainingsauftrags wird der warme Pool Available für die im zweiten Trainingsauftrag angegebene KeepAlivePeriodInSeconds Dauer genutzt. Ein warmer Pool kann für maximal 28 Tage weiter zu den jeweils passenden Weiterbildungsaufträgen umgestellt werden.

  6. Wenn der warme Pool nicht mehr wiederverwendet werden kann, lautet der Status des warmen Pools Terminated. Warme Pools sind nicht mehr verfügbar, wenn sie von einem Benutzer, für eine Patch-Aktualisierung oder wegen Überschreitung der festgelegten KeepAlivePeriodInSeconds.

Weitere Informationen zu den Statusoptionen für warme Pools finden Sie WarmPoolStatusin der SageMaker APIAmazon-Referenz.

Erstellung eines Warm-Pools

Wenn ein anfänglicher Ausbildungsauftrag erfolgreich abgeschlossen wird und einen KeepAlivePeriodInSeconds Wert größer als 0 hat, wird ein warmer Pool angelegt. Wenn Sie einen Trainingsauftrag beenden, nachdem ein Cluster bereits gestartet wurde, bleibt ein warmer Pool erhalten. Wenn der Trainingsauftrag aufgrund eines Algorithmus- oder Client-Fehlers fehlschlägt, bleibt ein warmer Pool erhalten. Wenn der Trainingsauftrag aus einem anderen Grund fehlschlägt, der den Zustand des Clusters gefährden könnte, wird der warme Pool nicht erstellt.

Um zu überprüfen, ob die Erstellung eines Warmpools erfolgreich war, prüfen Sie den Warmpool-Status Ihres Traininsauftrags. Wenn die Bereitstellung eines warmen Pools erfolgreich war, lautet der Status des warmen Pools Available. Wenn die Bereitstellung eines warmen Pools fehlschlägt, lautet der Status des warmen Pools Terminated.

Passende Ausbildungsaufträge

Damit ein warmer Pool bestehen bleibt, muss er innerhalb der im KeepAlivePeriodInSeconds Wert angegebenen Zeit einen passenden Trainingsauftrag finden. Der nächste Ausbildungsauftrag ist eine Übereinstimmung, wenn die folgenden Werte identisch sind:

  • RoleArn

  • ResourceConfig Werte:

    • InstanceCount

    • InstanceType

    • VolumeKmsKeyId

    • VolumeSizeInGB

  • VpcConfig Werte:

    • SecurityGroupIds

    • Subnets

  • EnableInterContainerTrafficEncryption

  • EnableNetworkIsolation

  • Wenn Sie die Sitzungs-Tags für Ihren Trainingsjob mit dem EnableSessionTagChaining Wert auf True in den Trainingsjobs eingegeben habenSessionChainingConfig, muss auch ein passender Schulungsjob EnableSessionTagChaining auf festgelegt sein True und identische Sitzungsschlüssel haben. Weitere Informationen finden Sie unter Verwenden Sie die attributebasierte Zugriffskontrolle (ABAC) für Schulungen mit mehreren Mandanten.

Alle diese Werte müssen identisch sein, damit ein warmer Pool zur Wiederverwendung in einen nachfolgenden Trainingsjob verschoben werden kann.

Maximale Dauer eines Warm-Pools

Die Höchstdauer KeepAlivePeriodInSeconds für einen einzelnen Trainingsjob beträgt 3600 Sekunden (60 Minuten), und die maximale Zeitdauer, während der ein Warmpool-Cluster aufeinanderfolgende Trainingsjobs ausführen kann, beträgt 28 Tage.

Für jeden nachfolgenden Trainingsjob muss ebenfalls ein KeepAlivePeriodInSeconds Wert angegeben werden. Wenn der warme Pool zum nächsten Trainingsjob wechselt, erbt er den neuen KeepAlivePeriodInSeconds Wert, der in dem Trainingsjob angegeben ist ResourceConfig. Auf diese Weise können Sie dafür sorgen, dass ein warmer Pool maximal 28 Tage lang von Trainingsjob zu Ausbildungsjob wechselt.

Wenn kein KeepAlivePeriodInSeconds Wert angegeben ist, wird der warme Pool nach Abschluss der Trainingsaufgabe heruntergefahren.

Persistenter Cache verwenden

Wenn Sie einen warmen Pool erstellen, hängt SageMaker ein spezielles Verzeichnis auf dem Volume ein, das während des gesamten Lebenszyklus des warmen Pools erhalten bleibt. In diesem Verzeichnis können Sie auch Informationen speichern, die Sie in einem anderen Auftrag wiederverwenden möchten.

Die Verwendung von persistentem Cache kann die Latenzzeit und die abrechenbare Zeit im Vergleich zur alleinigen Verwendung von Warm-Pools für Aufträge, die Folgendes erfordern, verringern:

  • mehrere Interaktionen mit ähnlichen Konfigurationen

  • inkrementelle Ausbildungsplätze

  • Hyperparameter-Optimierung

So können Sie beispielsweise vermeiden, dass bei wiederholten Läufen dieselben Python-Abhängigkeiten heruntergeladen werden, indem Sie ein pip-Cache-Verzeichnis innerhalb des persistenten Cache-Verzeichnisses einrichten. Sie sind für die Verwaltung des Inhalts dieses Verzeichnisses voll verantwortlich. Im Folgenden finden Sie Beispiele für Informationen, die Sie in Ihren persistenten Cache aufnehmen können, um die Latenzzeit und die abrechenbare Zeit zu verringern.

  • Von pip verwaltete Abhängigkeiten.

  • Von conda verwaltete Abhängigkeiten.

  • Informationen zum Kontrollpunkt.

  • Alle zusätzlichen Informationen, die während des Trainings generiert werden.

Der Speicherort des persistenten Cache ist /opt/ml/sagemaker/warmpoolcache. Die Umgebungsvariable SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY zeigt auf den Speicherort des persistenten Cache-Verzeichnisses.

Das folgende Codebeispiel zeigt Ihnen, wie Sie einen warmen Pool einrichten und den persistenten Cache verwenden, um Ihre Pip-Abhängigkeiten zur Verwendung in einem nachfolgenden Auftrag zu speichern. Der nachfolgende Auftrag muss innerhalb des durch den Parameter keep_alive_period_in_seconds vorgegebenen Zeitrahmens ausgeführt werden.

import sagemakerfrom sagemaker import get_execution_rolefrom sagemaker.tensorflow import TensorFlow # Creates a SageMaker session and gets execution role session = sagemaker.Session() role = get_execution_role() # Creates an example estimator estimator = TensorFlow( ... entry_point='my-training-script.py', source_dir='code', role=role, model_dir='model_dir', framework_version='2.2', py_version='py37', job_name='my-training-job-1', instance_type='ml.g4dn.xlarge', instance_count=1, volume_size=250, hyperparameters={ "batch-size": 512, "epochs": 1, "learning-rate": 1e-3, "beta_1": 0.9, "beta_2": 0.999, }, keep_alive_period_in_seconds=1800, environment={"PIP_CACHE_DIR": "/opt/ml/sagemaker/warmpoolcache/pip"} )

Im vorigen Codebeispiel wird durch die Verwendung des Umgebungsparameters die Umgebungsvariable PIP_CACHE_DIRECTORY so exportiert, dass sie auf das Verzeichnis /opt/ml/sagemaker/warmpoolcache/pip. Wenn Sie diese Umgebungsvariable exportieren, ändert sich der Speicherort von pip auf den neuen Speicherort. Alle Verzeichnisse, einschließlich verschachtelter Verzeichnisse, die Sie innerhalb des persistenten Cache-Verzeichnisses erstellen, können bei einem späteren Trainingslauf wiederverwendet werden. Im vorherigen Codebeispiel wurde ein Verzeichnis namens pip als Standardspeicherort für das Zwischenspeichern aller mit pip installierten Abhängigkeiten geändert.

Auf den dauerhaften Cache-Speicher kann auch von Ihrem Python-Trainingsskript aus über die Umgebungsvariable zugegriffen werden, wie im folgenden Codebeispiel gezeigt.

import os import shutil if __name__ == '__main__': PERSISTED_DIR = os.environ["SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY"] # create a file to be persisted open(os.path.join(PERSISTED_DIR, "test.txt"), 'a').close() # create a directory to be persisted os.mkdir(os.path.join(PERSISTED_DIR, "test_dir")) # Move a file to be persisted shutil.move("path/of/your/file.txt", PERSISTED_DIR)

Fakturierung

SageMaker verwaltete warme Pools sind eine kostenpflichtige Ressource. Rufen Sie den Warmpool-Status für Ihren Trainingauftrag ab, um die abrechenbare Zeit für Ihre Warmpools zu überprüfen. Sie können den Status des warmen Pools entweder über den Verwenden der SageMaker Amazon-Konsole oder direkt über den DescribeTrainingJobAPIBefehl überprüfen. Weitere Informationen finden Sie WarmPoolStatusin der SageMaker APIAmazon-Referenz.

Anmerkung

Nach Ablauf der durch den Parameter KeepAlivePeriodInSeconds angegebenen Zeit werden sowohl der Warmpool als auch der persistente Cache heruntergefahren und der Inhalt wird gelöscht.

Überlegungen

Beachten Sie bei der Verwendung von SageMaker verwalteten Warmpools die folgenden Punkte.

  • SageMaker verwaltete warme Pools können nicht mit heterogenem Clustertraining verwendet werden.

  • SageMaker verwaltete Warm-Pools können nicht mit Spot-Instances verwendet werden.

  • SageMaker verwaltete Warmpools sind auf einen KeepAlivePeriodInSeconds Wert von 3600 Sekunden (60 Minuten) begrenzt.

  • Wenn ein warmer Pool weiterhin erfolgreich Trainingsjobs innerhalb des angegebenen KeepAlivePeriodInSeconds Werts abgleicht, kann der Cluster nur für maximal 28 Tage weiterlaufen.