Führen Sie PyTorch Lightning und natives PyTorch DDP auf Amazon SageMaker Training aus, mit Amazon Search PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Führen Sie PyTorch Lightning und natives PyTorch DDP auf Amazon SageMaker Training mit Amazon Search aus

So viele Daten, so wenig Zeit. Experten für maschinelles Lernen (ML), Datenwissenschaftler, Ingenieure und Enthusiasten sind weltweit auf dieses Problem gestoßen. Von der Verarbeitung natürlicher Sprache bis zur Computer Vision, tabellarisch bis zu Zeitreihen und allem dazwischen hat das uralte Problem der Geschwindigkeitsoptimierung beim Ausführen von Daten mit so vielen GPUs wie möglich unzählige Lösungen inspiriert. Wir freuen uns, heute Funktionen für PyTorch-Entwickler anzukündigen, die native Open-Source-Frameworks verwenden, wie z PyTorch Blitz und PyTorch-DDP, das ihren Weg in die Cloud rationalisiert.

Amazon Sage Maker ist ein vollständig verwalteter Dienst für ML, und das SageMaker-Modelltraining ist eine optimierte Rechenumgebung für Hochleistungstraining in großem Maßstab. Das SageMaker-Modelltraining bietet ein Remote-Trainingserlebnis mit einer nahtlosen Steuerungsebene zum einfachen Trainieren und Reproduzieren von ML-Modellen mit hoher Leistung und niedrigen Kosten. Wir freuen uns, neue Funktionen im SageMaker-Schulungsportfolio ankündigen zu können, die das Ausführen von PyTorch in großem Maßstab noch einfacher und zugänglicher machen:

  1. PyTorch Lightning kann jetzt integriert werden Die parallele Bibliothek für verteilte Daten von SageMaker mit nur einer Codeänderungszeile.
  2. SageMaker-Modellschulung unterstützt jetzt natives PyTorch Distributed Data Parallel mit NCCL-Backend, sodass Entwickler einfacher als je zuvor auf SageMaker migrieren können.

In diesem Beitrag diskutieren wir diese neuen Funktionen und erfahren auch, wie Amazon Search PyTorch Lightning mit dem optimierten verteilten Trainings-Backend in SageMaker ausgeführt hat, um die Modelltrainingszeit zu verkürzen.

Bevor wir in die Fallstudie der Amazon-Suche eintauchen, möchten wir für diejenigen, die nicht damit vertraut sind, einige Hintergrundinformationen geben Die parallele Bibliothek für verteilte Daten von SageMaker. Im Jahr 2020 haben wir eine benutzerdefinierte Cluster-Konfiguration für den verteilten Gradientenabstieg in großem Maßstab entwickelt und auf den Markt gebracht, die die Gesamtclustereffizienz erhöht, die auf Amazon Science as eingeführt wurde Hering. SageMaker Distributed Data Parallel (SMDDP) verwendet das Beste aus Parameterservern und ringbasierten Topologien und ist für die optimiert Amazon Elastic Compute-Cloud (Amazon EC2) Netzwerktopologie, einschließlich EFA. Bei größeren Clustergrößen kann SMDDP im Vergleich zu Horovod (TensorFlow) und PyTorch Distributed Data Parallel 20–40 % Durchsatzverbesserungen liefern. Für kleinere Clustergrößen und unterstützte Modelle empfehlen wir die SageMaker-Schulungscompiler, wodurch die Gesamtarbeitszeit um bis zu 50 % verkürzt werden kann.

Kunden im Rampenlicht: PyTorch Lightning auf dem optimierten Backend von SageMaker mit Amazon Search

Amazon Search ist für das Such- und Entdeckungserlebnis auf verantwortlich Amazon.com. Es unterstützt das Sucherlebnis für Kunden, die nach Produkten suchen, die sie bei Amazon kaufen können. Auf hoher Ebene erstellt Amazon Search einen Index für alle Produkte, die auf Amazon.com verkauft werden. Wenn ein Kunde eine Suchanfrage eingibt, verwendet Amazon Search eine Vielzahl von ML-Techniken, einschließlich Deep-Learning-Modellen, um relevante und interessante Produkte mit der Kundenanfrage abzugleichen. Dann ordnet es die Produkte, bevor es dem Kunden die Ergebnisse zeigt.

Wissenschaftler von Amazon Search haben PyTorch Lightning als eines der wichtigsten Frameworks verwendet, um die Deep-Learning-Modelle zu trainieren, die das Suchranking aufgrund seiner zusätzlichen Benutzerfreundlichkeitsfunktionen über PyTorch antreiben. SMDDP wurde für in PyTorch Lightning geschriebene Deep-Learning-Modelle vor dieser neuen Einführung von SageMaker nicht unterstützt. Dies hinderte Wissenschaftler von Amazon Search, die PyTorch Lightning bevorzugen, daran, ihr Modelltraining mit datenparallelen Techniken zu skalieren, was ihre Trainingszeit erheblich verlangsamte und sie daran hinderte, neue Experimente zu testen, die ein skalierbareres Training erfordern.

Die ersten Benchmarking-Ergebnisse des Teams zeigen eine 7.3-mal schnellere Trainingszeit für ein Beispielmodell, wenn es auf acht Knoten trainiert wird, im Vergleich zu einer Trainingsbasislinie mit einem Knoten. Das bei diesen Benchmarks verwendete Basismodell ist ein mehrschichtiges neuronales Perzeptron-Netzwerk mit sieben dichten, vollständig verbundenen Schichten und über 200 Parametern. Die folgende Tabelle fasst das Benchmarking-Ergebnis für ml.p3.16xlarge SageMaker-Trainingsinstanzen zusammen.

Anzahl der Instanzen Trainingszeit (Minuten) Verbesserung
1 99 Baseline
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Als nächstes tauchen wir in die Details der neuen Produkteinführungen ein. Wenn Sie möchten, können Sie unsere Korrespondenz durchgehen Beispiel Notizbuch.

Führen Sie PyTorch Lightning mit der verteilten Schulungsbibliothek von SageMaker aus

Wir freuen uns, Ihnen mitteilen zu können, dass sich SageMaker Data Parallel jetzt nahtlos in PyTorch Lightning in das SageMaker-Training integrieren lässt.

PyTorch Lightning ist ein Open-Source-Framework, das das Schreiben benutzerdefinierter Modelle in PyTorch vereinfacht. In gewisser Weise ähnlich wie Keras für TensorFlow oder sogar Hugging Face, bietet PyTorch Lightning eine API auf hoher Ebene mit Abstraktionen für einen Großteil der Funktionalität auf niedrigerer Ebene von PyTorch selbst. Dazu gehören das Definieren des Modells, Profilerstellung, Bewertung, Pruning, Modellparallelität, Hyperparameterkonfigurationen, Transferlernen und mehr.

Zuvor waren PyTorch Lightning-Entwickler unsicher, wie sie ihren Trainingscode nahtlos auf leistungsstarke SageMaker-GPU-Cluster migrieren können. Darüber hinaus gab es für sie keine Möglichkeit, die durch SageMaker Data Parallel eingeführten Effizienzgewinne zu nutzen.

Für PyTorch Lightning sollte es im Allgemeinen wenig bis gar keine Codeänderungen geben, um diese APIs einfach auf SageMaker Training auszuführen. In den Beispiel-Notebooks verwenden wir die DDPStrategie und DDPPlugin Methoden.

Es gibt drei Schritte, um PyTorch Lightning mit SageMaker Data Parallel als optimiertes Backend zu verwenden:

  1. Verwenden Sie eine unterstützte AWS Deep Learning-Container (DLC) als Ihr Basis-Image oder erstellen Sie optional Ihren eigenen Container und Installieren Sie das SageMaker Data Parallel-Backend selbst. Stellen Sie sicher, dass PyTorch Lightning in Ihren erforderlichen Paketen enthalten ist, z. B. mit a requirements.txt Datei.
  2. Nehmen Sie einige geringfügige Codeänderungen an Ihrem Trainingsskript vor, die das optimierte Back-End aktivieren. Diese beinhalten:
    1. Importieren Sie die SM DDP-Bibliothek:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. Richten Sie die PyTorch Lightning-Umgebung für SageMaker ein:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. Wenn Sie eine ältere Version von PyTorch Lightning als 1.5.10 verwenden, müssen Sie einige weitere Schritte hinzufügen.
      1. Fügen Sie zuerst die Umgebungsvariable hinzu:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. Zweitens stellen Sie sicher, dass Sie verwenden DDPPlugin, Anstatt DDPStrategy. Wenn Sie eine neuere Version verwenden, können Sie dies einfach einstellen, indem Sie die requirements.txt der source_dir für Ihren Job, dann ist dies nicht notwendig. Siehe folgenden Code:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Definieren Sie optional Ihr Prozessgruppen-Backend als "smddp" der DDPSTrategy Objekt. Wenn Sie jedoch PyTorch Lightning mit dem ebenfalls unterstützten PyTorch DDP-Backend verwenden, entfernen Sie einfach dieses `process_group_backend`-Parameter. Siehe folgenden Code:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Stellen Sie sicher, dass Sie im Kalkulator eine Verteilungsmethode angegeben haben, z distribution={"smdistributed":{"dataparallel":{"enabled":True} wenn Sie das Herring-Backend verwenden, oder distribution={"pytorchddp":{"enabled":True}.
  • Eine vollständige Auflistung geeigneter Parameter finden Sie in der distribution Parameter finden Sie in unserer Dokumentation hier.

Jetzt können Sie Ihren SageMaker-Schulungsjob starten! Sie können Ihren Trainingsjob über das Python SDK, Boto3, die SageMaker-Konsole, die AWS-Befehlszeilenschnittstelle (AWS CLI) und unzählige andere Methoden. Aus AWS-Sicht ist dies der Fall ein einzelner API-Befehl: create-training-job. Unabhängig davon, ob Sie diesen Befehl von Ihrem lokalen Terminal aus starten, an AWS Lambda Funktion, ein Amazon SageMaker-Studio Notebook, eine KubeFlow-Pipeline oder eine andere Rechenumgebung liegt ganz bei Ihnen.

Bitte beachten Sie, dass die Integration zwischen PyTorch Lightning und SageMaker Data Parallel derzeit nur für neuere Versionen von PyTorch ab 1.11 unterstützt wird. Darüber hinaus ist diese Version nur in den AWS-DLCs für SageMaker ab PyTorch 1.12 verfügbar. Stellen Sie sicher, dass Sie auf dieses Bild als Basis zeigen. Im us-east-1, diese Adresse lautet wie folgt:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

Dann können Sie Ihren Docker-Container erweitern, indem Sie dies als Ihr Basis-Image verwenden, oder Sie können dies als Variable an die übergeben image_uri Argument der SageMaker Trainingsschätzer.

Als Ergebnis können Sie Ihren PyTorch Lightning-Code auf den optimierten GPUs von SageMaker Training mit der besten auf AWS verfügbaren Leistung ausführen.

Führen Sie PyTorch Distributed Data parallel auf SageMaker aus

Das größte Problem PyTorch Distributed Data Parallel (DDP) löst ist täuschend einfach: Geschwindigkeit. Ein gutes verteiltes Trainingsframework sollte Stabilität, Zuverlässigkeit und vor allem eine hervorragende Leistung im großen Maßstab bieten. PyTorch DDP erfüllt dies, indem es Fackelentwicklern APIs zur Verfügung stellt, um ihre Modelle über mehrere GPU-Geräte hinweg zu replizieren, sowohl in Einzelknoten- als auch in Mehrknoteneinstellungen. Das Framework verwaltet dann das Sharding verschiedener Objekte aus dem Trainingsdatensatz für jede Modellkopie, wobei die Gradienten für jede der Modellkopien gemittelt werden, um sie bei jedem Schritt zu synchronisieren. Dies erzeugt ein Modell nach vollständiger Beendigung des vollständigen Trainingslaufs. Das folgende Diagramm veranschaulicht diesen Vorgang.

PyTorch DDP ist in Projekten üblich, die große Datasets verwenden. Die genaue Größe jedes Datasets wird stark variieren, aber eine allgemeine Richtlinie ist, Datasets, Berechnungsgrößen und Modellgrößen in ähnlichen Verhältnissen zu skalieren. Auch genannt Skalierungsgesetze, die optimale Kombination dieser drei ist sehr umstritten und wird je nach Anwendung variieren. Basierend auf der Zusammenarbeit mit mehreren Kunden können wir bei AWS deutlich die Vorteile von Datenparallelstrategien erkennen, wenn eine Gesamtdatensatzgröße mindestens einige zehn GB beträgt. Wenn die Datensätze noch größer werden, ist die Implementierung einer Art Datenparallelstrategie eine entscheidende Technik, um das Gesamtexperiment zu beschleunigen und die Time-to-Value zu verkürzen.

Zuvor fehlte Kunden, die PyTorch DDP für verteiltes Training vor Ort oder in anderen Computerumgebungen verwendeten, ein Framework, um ihre Projekte einfach auf SageMaker Training zu migrieren, um die Vorteile von Hochleistungs-GPUs mit einer nahtlosen Steuerungsebene zu nutzen. Insbesondere mussten sie entweder ihr paralleles Datenframework zu SMDDP migrieren oder die Fähigkeiten von PyTorch DDP auf SageMaker Training manuell entwickeln und testen. Heute freut sich SageMaker Training, Kunden ein nahtloses Erlebnis beim Onboarding ihres PyTorch-DDP-Codes zu bieten.

Um dies effektiv zu nutzen, müssen Sie keine Änderungen an Ihren Trainingsskripten vornehmen.

Sie können diesen neuen Parameter im folgenden Code sehen. In dem distribution Parameter, einfach hinzufügen pytorchddp und set aktiviert als true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

Diese neue Konfiguration beginnt mit den SageMaker Python SDK-Versionen 2.102.0 und PyTorch DLCs 1.11.

Für PyTorch DDP-Entwickler, die mit den beliebten Fackellauf Framework ist es hilfreich zu wissen, dass dies in der SageMaker-Trainingsumgebung nicht erforderlich ist, die bereits eine robuste Fehlertoleranz bietet. Um jedoch das Umschreiben von Code zu minimieren, können Sie ein anderes Launcher-Skript verwenden, das diesen Befehl als Einstiegspunkt ausführt.

Jetzt können PyTorch-Entwickler ihre Skripte einfach auf SageMaker verschieben und sicherstellen, dass ihre Skripte und Container nahtlos in mehreren Rechenumgebungen ausgeführt werden können.

Dies bereitet sie darauf vor, in Zukunft davon zu profitieren Die verteilten Schulungsbibliotheken von SageMaker die AWS-optimierte Trainingstopologien bereitstellen, um eine Beschleunigung von bis zu 40 % zu erzielen. Für PyTorch-Entwickler ist dies eine einzige Codezeile! Für PyTorch DDP-Code können Sie das Backend einfach auf einstellen smddp bei der Initialisierung (vgl Ändern Sie ein PyTorch-Trainingsskript), wie im folgenden Code gezeigt:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

Wie wir oben gesehen haben, können Sie auch das Backend von einstellen DDPStrategy zu smddp bei der Verwendung von Lightning. Dies kann zu bis zu führen 40 % Gesamtbeschleunigung für große Cluster! Weitere Informationen zum verteilten Training auf SageMaker finden Sie unter unser On-Demand-Webinar, unterstützend Laptops, relevant Dokumentation und Papiere.

Zusammenfassung

In diesem Beitrag haben wir zwei neue Funktionen innerhalb der SageMaker-Schulungsfamilie vorgestellt. Diese machen es PyTorch-Entwicklern viel einfacher, ihren vorhandenen Code in SageMaker zu verwenden, sowohl in PyTorch DDP als auch in PyTorch Lightning.

Wir haben auch gezeigt, wie Amazon Search SageMaker Training zum Trainieren seiner Deep-Learning-Modelle verwendet, insbesondere PyTorch Lightning mit der optimierten Kollektivbibliothek SageMaker Data Parallel als Backend. Die Umstellung auf verteiltes Training hat Amazon Search insgesamt geholfen, 7.3-mal schnellere Zugzeiten zu erreichen.


Über die Autoren

Führen Sie PyTorch Lightning und natives PyTorch DDP auf Amazon SageMaker Training aus, mit Amazon Search PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Emily Weber trat AWS kurz nach dem Start von SageMaker bei und versucht seitdem, der Welt davon zu erzählen! Abgesehen davon, dass sie neue ML-Erfahrungen für Kunden entwickelt, meditiert Emily gerne und studiert den tibetischen Buddhismus.

Führen Sie PyTorch Lightning und natives PyTorch DDP auf Amazon SageMaker Training aus, mit Amazon Search PlatoBlockchain Data Intelligence. Vertikale Suche. Ai. Karan Diman ist Softwareentwicklungsingenieur bei AWS mit Sitz in Toronto, Kanada. Er ist sehr leidenschaftlich im Bereich des maschinellen Lernens und der Entwicklung von Lösungen zur Beschleunigung verteilter Rechenlasten.

Führen Sie PyTorch Lightning und natives PyTorch DDP auf Amazon SageMaker Training aus, mit Amazon Search PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Vishwa Karia ist Softwareentwicklungsingenieur bei AWS Deep Engine. Ihre Interessen liegen an der Schnittstelle von maschinellem Lernen und verteilten Systemen und sie engagiert sich auch leidenschaftlich für die Stärkung von Frauen in Technologie und KI.

Führen Sie PyTorch Lightning und natives PyTorch DDP auf Amazon SageMaker Training aus, mit Amazon Search PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Eiman Elnahrawy ist Principal Software Engineer bei Amazon Search und leitet die Bemühungen zur Beschleunigung, Skalierung und Automatisierung des maschinellen Lernens. Ihre Expertise umfasst mehrere Bereiche, darunter maschinelles Lernen, verteilte Systeme und Personalisierung.

Zeitstempel:

Mehr von AWS Maschinelles Lernen