Von SageMaker AI verwaltete Warmpools
Mit den von SageMaker AI verwalteten Warm-Pools können Sie die bereitgestellte Infrastruktur nach Abschluss eines Trainingsjobs beibehalten und wiederverwenden, um die Latenzzeit für sich wiederholende Workloads zu reduzieren, z. B. für iterative Experimente oder die Ausführung vieler Aufträge nacheinander. 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
Von SageMaker AI verwaltete Warmpools sind eine abrechenbare Ressource. Weitere Informationen finden Sie unter Fakturierung.
Themen
Funktionsweise
Um von SageMaker AI verwaltete Warmpools zu verwenden und die Latenz zwischen ähnlichen aufeinanderfolgenden Trainingsjobs zu verringern, erstellen Sie einen Trainingsjob, der einen KeepAlivePeriodInSeconds Wert in seinem ResourceConfig angibt. 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.
Themen
Lebenszyklus von Warm Pool
-
Erstellen Sie einen ersten Trainingsauftrag mit einem
KeepAlivePeriodInSecondsWert größer als 0. Wenn Sie diesen ersten Trainingsauftrag ausführen, führt dies zu einem "Kaltstart" eines Clusters mit typischen Startzeiten. -
Wenn der erste Trainingsauftrag abgeschlossen ist, werden die bereitgestellten Ressourcen in einem Warm-Pool für den im
KeepAlivePeriodInSecondsWert angegebenen Zeitraum aufrechterhalten. Solange der Cluster fehlerfrei ist und der Warm-Pool innerhalb des angegebenenKeepAlivePeriodInSecondsBereichs liegt, ist der Warm-Pool-StatusAvailable. -
Der warme Pool bleibt so lange bestehen
Availablebis entweder ein passender Trainingsauftrag zur Wiederverwendung gefunden wird oder er die vorgegebeneKeepAlivePeriodInSecondsZeit überschreitet und abgebrochen wird. Die maximal zulässige Zeitspanne für dasKeepAlivePeriodInSecondsbeträgt 3600 Sekunden (60 Minuten). Wenn der Status des warmen Pools istTerminated, ist dies das Ende des Lebenszyklus des warmen Pools. -
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. -
Der Status des zweiten Trainingsjobs, bei dem der warme Pool wiederverwendet wurde, wird
InUse. Nach Abschluss des zweiten Trainingsauftrags wird der warme PoolAvailablefür die im zweiten Trainingsauftrag angegebeneKeepAlivePeriodInSecondsDauer genutzt. Ein warmer Pool kann für maximal 28 Tage weiter zu den jeweils passenden Weiterbildungsaufträgen umgestellt werden. -
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 festgelegtenKeepAlivePeriodInSeconds.
Weitere Informationen zu den Optionen für den Warm-Pool-Status finden Sie unter WarmPoolStatus in der Amazon-SageMaker-API-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 -
ResourceConfigWerte:-
InstanceCount -
InstanceType -
VolumeKmsKeyId -
VolumeSizeInGB
-
-
VpcConfigWerte:-
SecurityGroupIds -
Subnets
-
-
EnableInterContainerTrafficEncryption -
EnableNetworkIsolation -
Wenn Sie Sitzungs-Tags für Ihren Trainingsjob mit der
EnableSessionTagChaining-Einstellung aufTruein derSessionChainingConfigdes Trainingsjobs übergeben haben, muss ein passender Trainingsjob mit derEnableSessionTagChaining-Einstellung aufTrueund identischen Sitzungsschlüsseln vorhanden sein. Weitere Informationen finden Sie unter Verwenden der attributbasierten Zugriffskontrolle (ABAC) für das Multi-Tenancy-Training.
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 Warmpool erstellen, hängt SageMaker AI ein spezielles Verzeichnis auf dem Volume ein, das während des gesamten Lebenszyklus des Warmpools bestehen 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.
-
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 UmgebungsparametersPIP_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
Von SageMaker AI verwaltete Warmpools sind eine abrechenbare 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 Konsole von Amazon SageMaker AI oder direkt über den API-Befehl DescribeTrainingJob überprüfen. Weitere Informationen finden Sie unter WarmPoolStatus in der Amazon-SageMaker-API-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 die folgenden Punkte, wenn Sie von SageMaker AI verwaltete Warmpools verwenden.
-
Von SageMaker AI verwaltete Warmpools können nicht mit heterogenen Clustern verwendet werden.
-
Von SageMaker AI verwaltete Warmpools können nicht mit Spot Instances verwendet werden.
-
Die von SageMaker AI verwalteten Warmpools sind auf einen
KeepAlivePeriodInSeconds-Wert von 3 600 Sekunden (60 Minuten) begrenzt. -
Wenn ein warmer Pool weiterhin erfolgreich Trainingsjobs innerhalb des angegebenen
KeepAlivePeriodInSecondsWerts abgleicht, kann der Cluster nur für maximal 28 Tage weiterlaufen.