

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.

# Aktivierung, Entladung
<a name="model-parallel-core-features-v2-pytorch-activation-offloading"></a>

**Wichtig**  
In SMP v2.2.0 funktioniert die Funktion zum Auslagern von Aktivierungen der SMP-Bibliothek nicht. Verwenden Sie stattdessen das native PyTorch Aktivierungs-Offloading.

In der Regel werden beim Vorwärtsdurchlauf Aktivierungen auf jeder Ebene berechnet und im GPU-Speicher belassen, bis der Rückwärtsdurchlauf für die entsprechende Ebene abgeschlossen ist. Wenn Sie diese Tensoren nach dem Forward-Durchlauf in den CPU-Speicher auslagern und sie bei Bedarf wieder auf die GPU abrufen, kann der GPU-Speicherverbrauch erheblich gesenkt werden. PyTorch unterstützt das Auslagern von Aktivierungen, aber die Implementierung führt dazu, dass GPUs sie inaktiv sind, während Aktivierungen während des Rückwärtsdurchlaufs von der CPU abgerufen werden. Dies führt zu erheblichen Leistungseinbußen, wenn das Auslagern von Aktivierungen verwendet wird.

SMP v2 verbessert die Aktivierungsauslagerung. Es ruft Aktivierungen im Voraus ab, bevor sie benötigt werden, damit die GPU mit dem Rückwärtsdurchlauf dieser Aktivierungen beginnen kann. Mit der Funktion zum Vorabrufen können Trainingsfortschritte effizienter und ohne Leerlauf ausgeführt werden. GPUs Dies führt dazu, dass die Vorteile einer geringeren Speichernutzung ohne Leistungseinbußen genutzt werden können.

Sie können die systemeigenen PyTorch Module zum Auslagern von Aktivierungen in Ihrem Trainingsskript behalten. Im Folgenden finden Sie eine Beispielstruktur für die Anwendung der Funktion zum Auslagern der SMP-Aktivierung in Ihrem Skript. Beachten Sie, dass das Auslagern von Aktivierungen *nur* in Kombination mit [Checkpointing bei der Aktivierung](model-parallel-core-features-v2-pytorch-activation-checkpointing.md) verwendet wird. Weitere Informationen zu den systemeigenen PyTorch Checkpoint-Tools für das Offloading von Aktivierungen finden Sie unter:
+ [checkpoint\$1wrapper.py](https://github.com/pytorch/pytorch/blob/v2.0.1/torch/distributed/algorithms/_checkpoint/checkpoint_wrapper.py#L171) *im Repository PyTorch GitHub*
+ [Checkpointing zur Aktivierung](https://pytorch.org/blog/scaling-multimodal-foundation-models-in-torchmultimodal-with-pytorch-distributed/#activation-checkpointing) im PyTorch Blog *Scaling Multimodal Foundation Models in TorchMultimodal with PyTorch Distributed*.

[Sie können die SMP-Aktivierungsauslagerungsfunktion beim Aktivierungs-Checkpointing anwenden. PyTorch ](https://pytorch.org/blog/scaling-multimodal-foundation-models-in-torchmultimodal-with-pytorch-distributed/#activation-checkpointing) Dazu werden die Parameter `activation_loading_horizon` und `sm_activation_offloading` während [Schritt 2: Starten eines Trainingsjobs](model-parallel-use-api-v2.md#model-parallel-launch-a-training-job-v2) dem SMP-Konfigurationswörterbuch hinzugefügt. 

Die folgenden Codefragmente zeigen, wie Sie das SMP-Initialisierungsmodul `torch.sagemaker.init()` zu Ihrem Trainingsskript hinzufügen und das SMP-Konfigurationswörterbuch im JSON-Format für den Trainingsjob-Launcher einrichten. Dabei folgen Sie dem in [Verwenden Sie die SageMaker Modellparallelitätsbibliothek v2](model-parallel-use-api-v2.md) beschriebenen zweistufigen Prozess. [Sie müssen keine Änderungen an Ihrem PyTorch Modell oder PyTorch Ihrer FSDP-Konfiguration vornehmen.](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp) Weitere Hinweise zu den Parametern `sm_activation_offloading` und `activation_loading_horizon` finden Sie unter [Konfigurationsparameter für die Kernfunktionen von SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

**SMP-Konfiguration**

```
{
    "activation_loading_horizon": 2,
    "sm_activation_offloading": True
}
```

**Im Trainingsskript**

**Anmerkung**  
Achten Sie bei der Aktivierung der SMP-Aktivierungs-Offloading-Funktion darauf, dass Sie die PyTorch `offload_wrapper` Funktion auch verwenden und sie auf das Root-Modul anwenden. Die SMP-Funktion zur Aktivierungsauslagerung verwendet das Root-Modul, um zu bestimmen, wann ein Vorwärtsdurchlauf durchgeführt wird, um mit dem Vorabruf zu beginnen.

```
import torch.sagemaker as tsm
tsm.init()

# Native PyTorch module for activation offloading
from torch.distributed.algorithms._checkpoint.checkpoint_wrapper import (
    apply_activation_checkpointing, 
    offload_wrapper,
)

model = FSDP(...)

# Activation offloading requires activation checkpointing.
apply_activation_checkpointing(
    model,
    check_fn=checkpoint_transformer_layers_policy,
)

model = offload_wrapper(model)
```