Die SMDDP-Bibliothek in Ihrem PyTorch-Lightning-Trainingsskript verwenden - Amazon SageMaker KI

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.

Die SMDDP-Bibliothek in Ihrem PyTorch-Lightning-Trainingsskript verwenden

Wenn Sie Ihr PyTorch Lightning-Trainingsskript verwenden und einen Trainingsjob mit parallel verteilten Daten in SageMaker AI ausführen möchten, können Sie den Trainingsjob mit minimalen Änderungen in Ihrem Trainingsskript ausführen. Zu den erforderlichen Änderungen gehören die folgenden: Importieren Sie die PyTorch-Module der smdistributed.dataparallel-Bibliothek, richten Sie die Umgebungsvariablen für PyTorch Lightning so ein, dass sie die vom SageMaker-AI-Trainingstoolkit voreingestellten SageMaker-Umgebungsvariablen akzeptieren, und aktivieren Sie die SMDDP-Bibliothek, indem Sie das Prozessgruppen-Backend auf "smddp" setzen. Um mehr zu erfahren, gehen Sie die folgenden Anweisungen durch, die die Schritte anhand von Codebeispielen aufschlüsseln.

Anmerkung

Die PyTorch Lightning-Unterstützung ist in der SageMaker-AI-Datenparallelbibliothek v1.5.0 und höher verfügbar.

  1. Importieren Sie die pytorch_lightning Bibliothek und die smdistributed.dataparallel.torch Module.

    import lightning as pl import smdistributed.dataparallel.torch.torch_smddp
  2. Instanziieren Sie die LightningEnvironment.

    from lightning.fabric.plugins.environments.lightning import LightningEnvironment env = LightningEnvironment() env.world_size = lambda: int(os.environ["WORLD_SIZE"]) env.global_rank = lambda: int(os.environ["RANK"])
  3. Für PyTorch DDP – Erstellen Sie ein Objekt der Klasse DDPStrategy mit "smddp" für process_group_backend und "gpu" für accelerator und übergeben Sie es an die Trainer-Klasse.

    import lightning as pl from lightning.pytorch.strategies import DDPStrategy ddp = DDPStrategy( cluster_environment=env, process_group_backend="smddp", accelerator="gpu" ) trainer = pl.Trainer( max_epochs=200, strategy=ddp, devices=num_gpus, num_nodes=num_nodes )

    Für PyTorch FSDP – Erstellen Sie ein Objekt der Klasse FSDPStrategy (mit der gewünschten Wrapping-Richtlinie) mit "smddp" für process_group_backend und "gpu" für accelerator und übergeben Sie es an die Trainer-Klasse.

    import lightning as pl from lightning.pytorch.strategies import FSDPStrategy from functools import partial from torch.distributed.fsdp.wrap import size_based_auto_wrap_policy policy = partial( size_based_auto_wrap_policy, min_num_params=10000 ) fsdp = FSDPStrategy( auto_wrap_policy=policy, process_group_backend="smddp", cluster_environment=env ) trainer = pl.Trainer( max_epochs=200, strategy=fsdp, devices=num_gpus, num_nodes=num_nodes )

Nachdem Sie die Anpassung Ihres Trainingsskripts abgeschlossen haben, fahren Sie mit Starten von verteilten Trainingsjobs mit dem SageMaker Python SDK fort.

Anmerkung

Wenn Sie einen PyTorch-Schätzer von SageMaker AI konstruieren und in Starten von verteilten Trainingsjobs mit dem SageMaker Python SDK einen Trainingsjob einreichen, müssen Sie requirements.txt angeben, um pytorch-lightning und lightning-bolts im SageMaker-PyTorch-Trainingscontainer zu installieren.

# requirements.txt pytorch-lightning lightning-bolts

Weitere Informationen zur Angabe des Quellverzeichnisses, in dem die requirements.txt Datei zusammen mit Ihrem Trainingsskript und einer Auftragsübermittlung abgelegt werden soll, finden Sie unter Verwenden von Bibliotheken von Drittanbietern in der Dokumentation zum Amazon SageMaker AI Python SDK.