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.
Themen
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.
Themen
Lebenszyklus von Warm Pool
-
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. -
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 angegebenenKeepAlivePeriodInSeconds
Bereichs liegt, ist der Warm-Pool-StatusAvailable
. -
Der warme Pool bleibt so lange bestehen
Available
bis entweder ein passender Trainingsauftrag zur Wiederverwendung gefunden wird oder er die vorgegebeneKeepAlivePeriodInSeconds
Zeit überschreitet und abgebrochen wird. Die maximal zulässige Zeitspanne für dasKeepAlivePeriodInSeconds
beträ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 PoolAvailable
für die im zweiten Trainingsauftrag angegebeneKeepAlivePeriodInSeconds
Dauer 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 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 aufTrue
in den Trainingsjobs eingegeben habenSessionChainingConfig
, muss auch ein passender SchulungsjobEnableSessionTagChaining
auf festgelegt seinTrue
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.
-
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
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.