

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.

# HyperPod verwaltetes mehrstufiges Checkpointing
<a name="managed-tier-checkpointing"></a>

In diesem Abschnitt wird erklärt, wie verwaltetes mehrstufiges Checkpointing funktioniert und welche Vorteile es für groß angelegte Modellschulungen bietet.

Mit Amazon SageMaker HyperPod Managed Tiered Checkpointing können Sie umfangreiche generative KI-Modelle effizienter trainieren. Es verwendet mehrere Speicherebenen, einschließlich des CPU-Speichers Ihres Clusters. Dieser Ansatz reduziert Ihre Erholungszeit und minimiert den Verlust an Trainingsfortschritten. Außerdem werden nicht ausgelastete Speicherressourcen in Ihrer Trainingsinfrastruktur genutzt.

Das verwaltete mehrstufige Checkpointing ermöglicht das Speichern von Checkpoints mit einer höheren Frequenz im Speicher. Sie werden in regelmäßigen Abständen dauerhaft gespeichert. Dadurch bleiben sowohl die Leistung als auch die Zuverlässigkeit während Ihres Trainingsprozesses erhalten.

In diesem Handbuch wird beschrieben, wie Sie verwaltetes mehrstufiges Checkpointing mit PyTorch Frameworks auf Amazon HyperPod EKS-Clustern einrichten, konfigurieren und verwenden.

## So funktioniert verwaltetes mehrstufiges Checkpointing
<a name="managed-tier-checkpointing-works"></a>

Beim verwalteten mehrstufigen Checkpointing wird ein mehrstufiger Speicheransatz verwendet. Der CPU-Speicher dient als primäre Ebene zum Speichern von Modell-Checkpoints. Sekundäre Stufen umfassen persistente Speicheroptionen wie Amazon S3.

Wenn Sie einen Checkpoint speichern, speichert das System ihn im zugewiesenen Speicherplatz auf Ihren Clusterknoten. Er repliziert automatisch Daten zwischen benachbarten Rechenknoten, um die Zuverlässigkeit zu erhöhen. Diese Replikationsstrategie schützt vor Ausfällen einzelner oder mehrerer Knoten und bietet gleichzeitig schnellen Zugriff für Wiederherstellungsvorgänge.

Das System speichert außerdem regelmäßig Checkpoints entsprechend Ihrer Konfiguration im persistenten Speicher. Dies gewährleistet eine langfristige Haltbarkeit Ihres Trainingsfortschritts.

Zu den wichtigsten Komponenten gehören:
+ **Speicherverwaltungssystem**: Ein Speicherverwaltungs-Daemon, der disaggregierten Speicher als Service für Checkpoint-Speicher bereitstellt
+ **HyperPod Python-Bibliothek**: Stellt eine Schnittstelle zum disaggregierten Speicher her APIs und bietet Dienstprogramme zum Speichern, Laden und Verwalten von Checkpoints über Stufen hinweg
+ **Checkpoint-Replikation**: Aus Gründen der Fehlertoleranz werden Checkpoints automatisch über mehrere Knoten hinweg repliziert

Das System lässt sich über einfache API-Aufrufe nahtlos in PyTorch Trainingsschleifen integrieren. Es erfordert nur minimale Änderungen an Ihrem vorhandenen Code.

## Vorteile
<a name="managed-tier-checkpointing-benefits"></a>

Das verwaltete mehrstufige Checkpointing bietet mehrere Vorteile für das Training umfangreicher Modelle:
+ **Verbesserte Benutzerfreundlichkeit**: Verwaltet die Speicherung, Replikation, Persistenz und Wiederherstellung von Checkpoints
+ **Schnellere Checkpoint-Operationen**: Speicherbasierter Speicher bietet schnellere Speicher- und Ladezeiten als festplattenbasiertes Checkpointing, was zu einer schnelleren Wiederherstellung führt
+ **Fehlertoleranz**: Die automatische knotenübergreifende Checkpoint-Replikation schützt vor Ausfällen von Hardwareknoten
+ **Minimale Codeänderungen**: Die einfache API-Integration erfordert nur geringfügige Änderungen an vorhandenen Trainingsskripten
+ **Verbesserter Trainingsdurchsatz**: Der geringere Aufwand an Checkpoints bedeutet, dass mehr Zeit für das eigentliche Training aufgewendet wird

**Topics**
+ [So funktioniert verwaltetes mehrstufiges Checkpointing](#managed-tier-checkpointing-works)
+ [Vorteile](#managed-tier-checkpointing-benefits)
+ [Richten Sie verwaltetes mehrstufiges Checkpointing ein](managed-tier-checkpointing-setup.md)
+ [Verwaltetes mehrstufiges Checkpointing wird entfernt](managed-tier-checkpointing-remove.md)
+ [Sicherheitsüberlegungen für verwaltetes mehrstufiges Checkpointing](managed-tier-security-considerations.md)

# Richten Sie verwaltetes mehrstufiges Checkpointing ein
<a name="managed-tier-checkpointing-setup"></a>

Dieser Abschnitt enthält den Einrichtungsprozess für verwaltetes mehrstufiges Checkpointing für Amazon. SageMaker HyperPod Sie erfahren, wie Sie die Funktion in Ihrem Cluster aktivieren und Checkpointing in Ihrem Trainingscode implementieren.

**Topics**
+ [Voraussetzungen](#managed-tier-checkpointing-setup-prerequisites)
+ [Schritt 1: Aktivieren Sie verwaltetes mehrstufiges Checkpointing für Ihren Cluster](#managed-tier-checkpointing-setup-step-enable-for-cluster)
+ [Schritt 2: Python-Bibliothek in Ihrem Trainings-Image installieren](#managed-tier-checkpointing-setup-step-install-library)
+ [Schritt 3: Speichern Sie Checkpoints in Ihrer Trainingsschleife](#managed-tier-checkpointing-setup-step-save-checkpoint-in-loop)
+ [Schritt 4: Checkpoints für die Wiederherstellung laden](#managed-tier-checkpointing-setup-step-load-checkpoint)
+ [Bestätigen Sie Ihre verwalteten mehrstufigen Checkpoint-Operationen](#managed-tier-checkpointing-setup-validation)

## Voraussetzungen
<a name="managed-tier-checkpointing-setup-prerequisites"></a>

Bevor Sie verwaltetes mehrstufiges Checkpointing einrichten, stellen Sie sicher, dass Sie über Folgendes verfügen:
+ Ein Amazon HyperPod EKS-Cluster mit ausreichend verfügbarem CPU-Speicher für die Checkpoint-Zuweisung
+ PyTorch Trainingsworkloads und DCP-Jobs (beide werden unterstützt)
+ Geeignete IAM-Berechtigungen für die Clusterverwaltung, einschließlich:
  + Amazon CloudWatch - und Amazon S3 S3-Schreibberechtigungen für den Trainings-Pod zum Lesen/Schreiben von Checkpoints und Push-Metriken
  + Diese Berechtigungen können über die [EKS-OIDC-Einrichtung](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) konfiguriert werden.

## Schritt 1: Aktivieren Sie verwaltetes mehrstufiges Checkpointing für Ihren Cluster
<a name="managed-tier-checkpointing-setup-step-enable-for-cluster"></a>

**Wichtig**  
Sie müssen sich für die Verwendung von verwaltetem mehrstufigem Checkpointing anmelden.

Aktivieren Sie verwaltetes mehrstufiges Checkpointing über, HyperPod APIs wenn Sie Ihren Cluster erstellen oder aktualisieren. Der Service installiert das Speicherverwaltungssystem automatisch, wenn Sie den `TieredStorageConfig`-Parameter angeben.

Für neue Cluster können Sie verwenden. [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) AWS CLI

```
aws sagemaker create-cluster \
    --cluster-name cluster-name \
    --orchestrator "Eks={ClusterArn=eks-cluster-arn}" \
    --instance-groups '{
        "InstanceGroupName": "instance-group-name",
        "InstanceType": "instance-type",
        "InstanceCount": instance-count,
        "LifeCycleConfig": {
            "SourceS3Uri": "s3-path-to-lifecycle-scripts",
            "OnCreate": "lifecycle-script-name"
        },
        "ExecutionRole": "instance-group-iam-role",
        "ThreadsPerCore": threads-per-core,
        "InstanceStorageConfigs": [
            { "EbsVolumeConfig": {"VolumeSizeInGB": volume-size} }
        ]
    }' \
    --vpc-config '{
        "SecurityGroupIds": ["security-group-ids"],
        "Subnets": ["subnets"]
    }' \
    --tiered-storage-config '{
        "Mode": "Enable"
    }'
```

Der `InstanceMemoryAllocationPercentage`-Parameter gibt die `percentage` (int) des Cluster-Speichers an, der für Checkpointing zugewiesen werden soll. Der Bereich liegt zwischen 20 und 100.

## Schritt 2: Python-Bibliothek in Ihrem Trainings-Image installieren
<a name="managed-tier-checkpointing-setup-step-install-library"></a>

Installieren Sie die [Amazon SageMaker Checkpointing-Bibliothek](https://pypi.org/project/amzn-sagemaker-checkpointing/) und ihre Abhängigkeiten in Ihrem Trainings-Image, indem Sie sie zu Ihrem Dockerfile hinzufügen:

```
# Add this line to your training image Dockerfile
RUN pip install amzn-sagemaker-checkpointing s3torchconnector tenacity torch boto3 s3torchconnector
```

## Schritt 3: Speichern Sie Checkpoints in Ihrer Trainingsschleife
<a name="managed-tier-checkpointing-setup-step-save-checkpoint-in-loop"></a>

In deiner Trainingsschleife kannst du Checkpoints mithilfe von DCP asynchron speichern. PyTorch Im Folgenden finden Sie ein Beispiel dafür.

```
import torch
import torch.distributed as dist
from torch.distributed.checkpoint import async_save, load
from amzn_sagemaker_checkpointing.checkpointing.filesystem.filesystem import (
    SageMakerTieredStorageWriter,
    SageMakerTieredStorageReader
)

# Initialize distributed training
dist.init_process_group(backend="nccl")

# Configure checkpointing
checkpoint_config = SageMakerCheckpointConfig(
    # Unique ID for your training job 
    # Allowed characters in ID include: alphanumeric, hyphens, and underscores
    namespace=os.environ.get('TRAINING_JOB_NAME', f'job-{int(time.time())}'),

    # Number of distributed processes/available GPUs
    world_size=dist.get_world_size(),

    # S3 storage location, required for SageMakerTieredStorageReader for read fallbacks
    # Required for SageMakerTieredStorageWriter when save_to_s3 is True
    s3_tier_base_path="s3://my-bucket/checkpoints"
)

# Your model and optimizer
model = MyModel()
optimizer = torch.optim.AdamW(model.parameters())

# Training loop
future = None
in_memory_ckpt_freq = 10
s3_ckpt_freq = 50

for training_step in range(1000):
    # ... training code ...
    
    # Save checkpoint
    if (training_step % in_memory_ckpt_freq == 0 or 
        training_step % s3_ckpt_freq == 0):
        # Create state dictionary
        state_dict = {
            "model": model.state_dict(),
            "optimizer": optimizer.state_dict(),
            "step": training_step,
            "epoch": epoch
        }
        
        # Create storage writer for current step
        checkpoint_config.save_to_s3 = training_step % s3_ckpt_freq == 0
        storage_writer = SageMakerTieredStorageWriter(
            checkpoint_config=checkpoint_config,
            step=training_step
        )

        # wait for previous checkpoint to get completed
        if future is not None:
            exc = future.exception()
            if exc:
                print(f"Failure in saving previous checkpoint:{str(exc)}")
                # Handle failures as required
            else:
                result = future.result()
                # Process results from save, if required
        
        # Async save checkpoint using PyTorch DCP
        future = async_save(state_dict=state_dict, storage_writer=storage_writer)
        
        # Continue training while checkpoint saves in background
```

## Schritt 4: Checkpoints für die Wiederherstellung laden
<a name="managed-tier-checkpointing-setup-step-load-checkpoint"></a>

Das Folgende ist ein Beispiel für das Laden eines Checkpoints.

```
# Create state dictionary template
state_dict = {
    "model": model.state_dict(),
    "optimizer": optimizer.state_dict(),
    "step": 0,
    "epoch": 0
}

# Load latest checkpoint
storage_reader = SageMakerTieredStorageReader(checkpoint_config=checkpoint_config)
load(state_dict, storage_reader=storage_reader)

# Load specific checkpoint step
storage_reader = SageMakerTieredStorageReader(
    checkpoint_config=checkpoint_config, 
    step=500 # Or don't pass step if you have to load the latest available step.
)
try:
    load(state_dict, storage_reader=storage_reader)
except BaseException as e:
    print(f"Checkpoint load failed: {str(e)}")
    # Add additional exception handling
```

## Bestätigen Sie Ihre verwalteten mehrstufigen Checkpoint-Operationen
<a name="managed-tier-checkpointing-setup-validation"></a>

Sie können Ihre verwalteten mehrstufigen Checkpoint-Operationen anhand von Protokollen validieren.

**Benutzerdefinierte Protokollierung (optional)**

Sie können Checkpointing-Protokolle in andere Protokolle integrieren, indem Sie einen benutzerdefinierten Logger an die Bibliothek übergeben. Beispielsweise können Sie Ihrem Trainingscode einen benutzerdefinierten Logger hinzufügen, sodass alle Protokolle aus der Bibliothek auch im Trainings-Logger gesammelt werden.

**Verbesserte Serviceprotokollierung (optional)**

Um das Debugging und die Transparenz der Services zu verbessern, können Sie den Checkpointing-Protokollpfad `/var/log/sagemaker_checkpointing` von Ihrem Pod aus in einen `/var/logs/sagemaker_checkpointing`-Pfad auf Ihrem Host mounten. Dadurch wird sichergestellt, dass nur bibliotheksspezifische Protokolle separat gesammelt werden. So erhält das Serviceteam verbesserte Transparenz hinsichtlich Debugging und Support.

# Verwaltetes mehrstufiges Checkpointing wird entfernt
<a name="managed-tier-checkpointing-remove"></a>

In diesem Abschnitt wird erklärt, wie Sie das verwaltete mehrstufige Checkpointing deaktivieren, wenn Sie es nicht mehr benötigen.

Um das verwaltete mehrstufige Checkpointing zu deaktivieren, verwenden Sie den, um Ihre Clusterkonfiguration [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) AWS CLI zu aktualisieren:

```
aws sagemaker update-cluster \
    --cluster-name cluster-name \
    --tiered-storage-config '{ "Mode": "Disable" }'
```

Dadurch wird der Speicherverwaltungs-Daemon aus Ihrem Cluster entfernt. Der Daemon ist als Standard-Kubernetes implementiert DaemonSet und folgt dem standardmäßigen Kubernetes-Lifecycle-Management.

# Sicherheitsüberlegungen für verwaltetes mehrstufiges Checkpointing
<a name="managed-tier-security-considerations"></a>

In diesem Abschnitt werden wichtige Sicherheitsaspekte bei der Verwendung von verwaltetem mehrstufigem Checkpointing behandelt. Es umfasst die Verwendung von Python Pickle, Amazon-S3-Verschlüsselung und Netzwerk-Endpunktsicherheit.

**Verwendung von Python Pickle**

Managed Tiered Checkpointing verwendet das Pickle-Modul von Python, um in Amazon S3 gespeicherte Checkpoint-Daten zu deserialisieren. Diese Implementierung hat wichtige Auswirkungen auf die Sicherheit:
+ **Erweiterte Vertrauensgrenze**: Wenn Sie Managed Tiered Checkpointing mit Amazon S3 verwenden, wird der Amazon S3 S3-Bucket Teil der Vertrauensgrenze Ihres Clusters.
+ **Risiko bei der Codeausführung**: Das Pickle-Modul von Python kann während der Deserialisierung beliebigen Code ausführen. Wenn sich ein nicht autorisierter Benutzer Schreibzugriff auf Ihren Checkpoint Amazon S3 S3-Bucket verschafft, könnte er potenziell bösartige Pickle-Daten erstellen, die ausgeführt werden, wenn sie durch verwaltetes mehrstufiges Checkpointing geladen werden.

**Bewährte Methoden für Amazon-S3-Speicher**

Wenn Sie verwaltetes mehrstufiges Checkpointing mit Amazon S3 S3-Speicher verwenden:
+ **Beschränken Sie den Zugriff auf den Amazon-S3-Bucket**: Stellen Sie sicher, dass nur autorisierte Benutzer und Rollen, die mit Ihrem Trainings-Cluster verbunden sind, Zugriff auf den Amazon-S3-Bucket haben, der für Checkpointing verwendet wird.
+ **Implementieren Sie Bucket-Richtlinien**: Konfigurieren Sie geeignete Bucket-Richtlinien, um unbefugten Zugriff oder nicht autorisierte Änderungen zu verhindern.
+ **Zugriffsmuster überprüfen**: Implementieren Sie die Protokollierung zur Validierung von Zugriffsmustern auf Ihre Checkpoint Amazon S3 S3-Buckets.
+ **Validieren Sie die Bucket-Namen**: Wählen Sie den Bucket-Namen mit Bedacht, um ein mögliches Bucket-Hijacking zu vermeiden.

**Netzwerk-Endpunkte**

Managed Tiered Checkpointing ermöglicht Netzwerkendpunkte auf jedem Ihrer Rechenknoten an den folgenden Ports: 9200/TCP, 9209/UDP, 9210/UDP, 9219/UDP, 9220/UDP, 9229/UDP, 9230/UDP, 9239/UDP, 9240/UDP. Diese Ports sind für die Funktion des Checkpointing-Services und die Aufrechterhaltung der Datensynchronisation erforderlich.

Standardmäßig SageMaker schränkt die Netzwerkkonfiguration den Zugriff auf diese Endpunkte aus Sicherheitsgründen ein. Wir empfehlen Ihnen, diese Standardeinschränkungen beizubehalten.

Beachten Sie bei der Konfiguration Ihrer Netzwerkeinstellungen für Ihre Knoten und VPC die AWS bewährten Methoden für VPCs, Sicherheitsgruppen und ACLs. Weitere Informationen finden Sie hier:
+ [ SageMaker HyperPod Voraussetzungen für Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-prerequisites.html#sagemaker-hyperpod-prerequisites-optional-vpcCluster)
+ [Bewährte VPC-Sicherheitsmethoden](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-best-practices.html)