Verwenden Sie die SMDDP Bibliothek in Ihrem PyTorch Lightning-Schulungsskript - 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.

Verwenden Sie die SMDDP Bibliothek in Ihrem PyTorch Lightning-Schulungsskript

Wenn Sie Ihr PyTorchLightning-Trainingsskript verwenden und einen parallel Trainingsjob mit verteilten Daten ausführen möchten SageMaker, können Sie den Trainingsjob mit minimalen Änderungen an 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 Trainings-Toolkit voreingestellten SageMaker Umgebungsvariablen akzeptieren, und aktivieren Sie die SMDDP Bibliothek, indem Sie das Prozessgruppen-Backend auf einstellen. "smddp" 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 Data Parallel Library 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. For PyTorch DDP — Erzeugt ein Objekt der DDPStrategyKlasse mit "smddp" for process_group_backend und "gpu" for und accelerator übergibt 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 FSDPStrategyKlasse (mit der gewünschten Wrapping-Richtlinie) mit "smddp" for process_group_backend und "gpu" for 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 verteilter Trainingsjobs SMDDP mit SageMaker Python SDK fort.

Anmerkung

Wenn Sie einen SageMaker PyTorch Kalkulator erstellen und eine Trainingsanfrage einreichenStarten verteilter Trainingsjobs SMDDP mit SageMaker Python SDK, müssen Sie die Installation pytorch-lightning und lightning-bolts im SageMaker PyTorch Schulungscontainer angebenrequirements.txt.

# requirements.txt pytorch-lightning lightning-bolts

Weitere Informationen zur Angabe des Quellverzeichnisses, in dem die requirements.txt Datei zusammen mit Ihrem Schulungsskript und einem eingereichten Job abgelegt werden soll, finden Sie in der Amazon SageMaker SDK Python-Dokumentation unter Bibliotheken von Drittanbietern verwenden.