Aktivierungs-Entladung - 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.

Aktivierungs-Entladung

Wenn Aktivierungs-Prüfpunkte und Pipeline-Parallelität aktiviert sind und die Anzahl der Mikro-Batches größer als eins ist, ist das Aktivierungs-Entladen eine zusätzliche Funktion, mit der die Speichernutzung weiter reduziert werden kann. Beim Aktivierungs-Offloading werden die Checkpoint-Aktivierungen asynchron verschoben, die ihren Mikrobatches entsprechen, die derzeit nicht in der ausgeführt werden. CPU Kurz bevor die Aktivierungen für den Rückwärtspass des Mikrobatches GPU benötigt werden, ruft diese Funktion die ausgelagerten Aktivierungen vorab aus dem ab. CPU

Anmerkung

Diese Funktion ist PyTorch in der Modellparallelismus-Bibliothek v1.6.0 und höher verfügbar. SageMaker

So wird die Aktivierungs-Entladung verwendet

Verwenden Sie das Aktivierungs-Entladen, um die Speichernutzung zu reduzieren, wenn die Anzahl der Mikro-Batches größer als 1 ist und die Aktivierungs-Prüfpunkte aktiviert sind (siehe Aktivierungs-Prüfpunkte). Wenn keine Aktivierungs-Prüfpunkte verwendet werden, hat das Aktivierungs-Entladen keine Wirkung. Wenn es mit nur einem Mikro-Batch verwendet wird, spart es keinen Speicherplatz.

Um Aktivierungs-Entladen zu verwenden, legen Sie "offload_activations": True in der modelparallel Konfiguration fest.

Beim Offloading der Aktivierung werden die Checkpoint-Aktivierungen in Modulen auf asynchron umgestellt. nn.Sequential CPU Die Datenübertragung über die PCIe Verbindung überschneidet sich mit der Berechnung. GPU Das Entladen erfolgt sofort, sobald der Vorwärtsdurchgang für eine bestimmte Prüfpunkt-Layer berechnet wurde. Die Aktivierungen werden auf die Daten zurückgeladen, GPU kurz bevor sie für den Rücklauf eines bestimmten Mikrobatches benötigt werden. Die GPU Übertragung von CPU - überschneidet sich in ähnlicher Weise mit der Berechnung.

Um einzustellen, wie früh die Aktivierungen wieder in den geladen werdenGPU, können Sie den Konfigurationsparameter verwenden "activation_loading_horizon" (der Standardwert ist auf 4 gesetzt, muss int größer als 0 sein). Ein größerer Ladehorizont für die Aktivierung würde dazu führen, dass die Aktivierungen wieder auf die GPU frühere Version geladen werden. Wenn der Horizont zu groß ist, kann sich die speichersparende Wirkung des Aktivierungs-Entladens verringern. Wenn der Horizont zu klein ist, können die Aktivierungen ggf. nicht rechtzeitig zurückgeladen werden. Dadurch wird der Umfang der Überschneidung verringert und die Leistung beeinträchtigt.

Tipp

Das Aktivierungs-Entladen kann für große Modelle mit über hundert Milliarden Parametern nützlich sein.

Konfigurieren Sie einen SageMaker PyTorch Schätzer

mpi_options = { "enabled" : True, "processes_per_host" : 8, # 8 processes "custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none " } smp_options = { "enabled":True, "parameters": { "microbatches": 4, "pipeline_parallel_degree": 2, # alias for "partitions" "placement_strategy": "cluster", "tensor_parallel_degree": 2, # tp over 2 devices "ddp": True, "offload_activations": True, "activation_loading_horizon": 4 # optional. default is 4. } }