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.
Bewährte Methoden zur Parallelität verteilter Modelle von SageMaker
Beachten Sie die folgenden Richtlinien, wenn Sie einen verteilten Trainingsjob mit der SageMaker-Modellparallelbibliothek v2 (SMP v2) ausführen.
Einrichtung der richtigen Konfiguration für verteiltes Training
Sehen Sie sich die folgende Liste an, um den besten Ausgangspunkt für die Anwendung verteilter Trainingstechniken, die SMP v2 bietet, abzuschätzen und zu finden. In jedem Listenelement werden die Vorteile der Verwendung von Kernfunktionen der SageMaker Modellparallelitätsbibliothek v2 sowie mögliche Kompromisse erörtert.
Konfigurationstipps
Dieser Abschnitt enthält Richtlinien zur Auswahl der besten Modellkonfigurationen für einen optimalen Durchsatz bei globalen Anforderungen an die Batchgröße.
Zunächst empfehlen wir unabhängig von der Größe Ihres Modells die folgenden Konfigurationen.
-
Verwenden Sie den leistungsstärksten Instance-Typ, den Sie verwenden können.
-
Lassen Sie die gemischte Genauigkeit durchgehend aktiviert, da dies erhebliche Vorteile in Bezug auf Leistung und Speicherreduzierung bietet. Wir empfehlen Ihnen,
bfloat16zu verwenden, da es genauer alsfloat16ist. -
Aktivieren Sie die SageMaker-Bibliothek für verteilte Datenparallelität (statt NCCL zu verwenden), wann immer dies möglich ist, wie unter Kompatibilität mit der für die Infrastruktur optimierten SMDDP-Bibliothek AWS gezeigt. Eine Ausnahme bilden Anwendungsfälle, in denen ausschließlich Tensorparallelität verwendet wird (
hybrid_shard_degree = 1undtensor_paralle_degree > 1). -
Wenn Ihr Modell mehr als etwa 60 Milliarden Parameter hat, empfehlen wir die Verwendung von Verzögerte Parameterinitialisierung. Sie können auch die verzögerte Parameterinitialisierung verwenden, um die Initialisierung für jedes Modell zu beschleunigen.
-
Wir empfehlen Ihnen, Checkpointing bei der Aktivierung zu aktivieren.
Abhängig von der Größe Ihres Modells empfehlen wir Ihnen, mit den folgenden Anweisungen zu beginnen.
-
Verwenden Sie die Parallelität fragmentierter Daten.
-
Abhängig von der Batchgröße, die Sie in den GPU-Speicher aufnehmen möchten, wählen Sie den entsprechenden Grad der Parallelität fragmentierter Daten aus. Normalerweise sollten Sie mit dem niedrigsten Grad beginnen, damit Ihr Modell in den GPU-Speicher passt, wobei Sie gleichzeitig den durch die Netzwerkkommunikation verursachten Overhead minimieren. Wenn eine Warnung angezeigt wird, die besagt, dass Cache-Löschungen durchgeführt werden, empfehlen wir Ihnen, den Grad der Fragmentierung zu erhöhen.
-
Ermitteln Sie
world_sizeanhand der maximalen lokalen Batchgröße und der erforderlichen globalen Batchgröße, falls vorhanden. -
Sie können mit dem Entladen der Aktivierung experimentieren. Je nach Szenario kann es Ihren Speicherbedarf decken, ohne dass der Fragmentierungsgrad erhöht werden muss, was weniger Kommunikation bedeutet.
-
-
Verwenden Sie die Parallelität fragmentierter Daten von PyTorch FSDP und die Tensorparallelität von SMP v2 gleichzeitig, wie in Tensor-Parallelität dargestellt.
-
Beim Training auf großen Clustern mit FSDP allein kann die globale Batchgröße zu groß werden, was zu Konvergenzproblemen für das Modell führen kann. In der Regel wird bei den meisten Forschungsarbeiten die Batchgröße unter 4 Millionen Token gehalten. In diesem Fall können Sie das Problem lösen, indem Sie PyTorch FSDP mit der Tensorparallelität von SMP v2 erstellen, um die Batchgröße zu reduzieren.
Wenn Sie beispielsweise 256 Knoten und eine Sequenzlänge von 4096 haben, führt selbst eine Batchgröße von 1 pro GPU zu einer globalen Batchgröße von 8 Millionen Token. Wenn Sie jedoch die Tensorparallelität mit Grad 2 und einer Batchgröße von 1 pro Tensorparallelgruppe verwenden, wird daraus 1/2 Batchgröße pro GPU, was 4 Millionen Token entspricht.
-
Beim Training mit langen Kontextlängen wie 8.000 oder 16.000 kann der Aktivierungsspeicher sehr hoch werden. FSDP fragmentiert Aktivierungen nicht und Aktivierungen können dazu führen, dass GPUs nicht mehr genügend Speicher haben. In solchen Szenarien können Sie effizient trainieren, indem Sie PyTorch FSDP mit der Tensorparallelität von SMP v2 erstellen.
-
Referenzkonfigurationen
Das SageMaker-Modellparallelitäts-Trainingsteam stellt die folgenden Referenzpunkte zur Verfügung, die auf Experimenten mit dem Llama-2-Modell basieren, das unter Verwendung von torch.sagemaker.transform und auf ml.p4d.24xlarge-Instance(s) mit einer Sequenzlänge von 4096 und gemischter Genauigkeit (FP16 oder BF16) in das SMP-Transformer-Modell transformiert wurde.
| Modell | Modellgröße (die Anzahl der Modellparameter) | Die Anzahl der -Instances | Parallelitätsgrad der fragmentierten Daten | Tensor-Parallelgrad | Checkpointing bei der Aktivierung | Aktivierung, Entladung | Batch-Größe |
|---|---|---|---|---|---|---|---|
| Llama 2 | 7B | 1 | 8 | 1 | TRUE | FALSE | 4 |
| 70B | 32 | 256 | 1 | TRUE | FALSE | 2 | |
| 175B | 64 | 128 | 4 | TRUE | TRUE | 6 |
Sie können aus den vorherigen Konfigurationen extrapolieren, um die GPU-Speicherauslastung für Ihre Modellkonfiguration zu schätzen. Wenn Sie beispielsweise die Sequenzlänge für ein Modell mit 10 Milliarden Parametern oder die Größe des Modells auf 20 Milliarden erhöhen, möchten Sie möglicherweise zuerst die Batchgröße verringern. Wenn das Modell immer noch nicht passt, versuchen Sie, den Grad der Tensorparallelität zu erhöhen.
Überwachung und Protokollierung eines Trainingsjobs mithilfe der SageMaker-AI-Konsole und Amazon CloudWatch
Verwenden Sie die über die SageMaker-AI-Konsole
-
Wählen Sie im linken Navigationsbereich die Option Training aus.
-
Wählen Sie Training Jobs (Trainingsaufträge) aus.
-
Wählen Sie im Hauptbereich den Namen des Trainingsjobs aus, für den Sie weitere Details anzeigen möchten.
-
Durchsuchen Sie den Hauptbereich und suchen Sie den Abschnitt Monitor, um sich die automatisierte Visualisierung anzusehen.
-
Um die Protokolle der Trainingsjobs einzusehen, wählen Sie im Bereich Monitor die Option Protokolle anzeigen aus. Sie können in CloudWatch auf die verteilten Trainingsjob-Logs des Trainingsjobs zugreifen. Wenn Sie ein verteiltes Training mit mehreren Knoten gestartet haben, sollten Sie mehrere Protokollstreams mit Tags im Format algo-n-1234567890 sehen. Der Algo-1-Protokollstream verfolgt Trainingsprotokolle vom Hauptknoten (0.).
Weitere Informationen finden Sie unter Amazon-CloudWatch-Metriken zur Überwachung und Analyse von Trainingsjobs.
Berechtigungen
Um einen SageMaker-Trainingsjob mit Modellparallelität auszuführen, stellen Sie sicher, dass Sie über die richtigen Berechtigungen in Ihrer IAM-Rolle verfügen, z. B. die folgenden:
-
Um FSx for Lustre
zu verwenden, fügen Sie AmazonFSxFullAccesshinzu. -
Um Amazon S3 als Datenkanal zu verwenden, fügen Sie
AmazonS3FullAccesshinzu. -
Um Docker zu verwenden, erstellen Sie Ihren eigenen Container und übertragen Sie ihn auf Amazon ECR, fügen Sie
AmazonEC2ContainerRegistryFullAccesshinzu. -
Um vollen Zugriff auf die gesamte Suite der SageMaker-AI-Funktionen zu erhalten, fügen Sie
AmazonSageMakerFullAccesshinzu.