Maak snellere training mogelijk met de parallelle gegevensbibliotheek van Amazon SageMaker | Amazon-webservices

Maak snellere training mogelijk met de parallelle gegevensbibliotheek van Amazon SageMaker | Amazon-webservices

Training in grote taalmodellen (LLM) is het afgelopen jaar steeds populairder geworden met de release van verschillende publiekelijk beschikbare modellen zoals Llama2, Falcon en StarCoder. Klanten trainen nu LLM's van ongekende omvang, variรซrend van 1 miljard tot meer dan 175 miljard parameters. Het trainen van deze LLM's vereist aanzienlijke computerbronnen en tijd, aangezien honderden tot duizenden grafische verwerkingseenheden (GPU's) moeten worden gebruikt om de enorme trainingsdatasets en modelgroottes van vandaag te verwerken. Een knelpunt bij gedistribueerde training kan de GPU-communicatie zijn die wordt afgehandeld door de NVIDIA Collective Communication Library (NCCL). Bij sommige grootschalige trainingstaken kan er meer tijd worden besteed aan inter-GPU-communicatie dan aan daadwerkelijke GPU-berekeningen. Om het knelpunt in de GPU-communicatie te verlichten en snellere training mogelijk te maken, Amazon Sage Maker is verheugd een geoptimaliseerde collectieve AllGather-operatie aan te kondigen als onderdeel van de SageMaker gedistribueerde data parallelle bibliotheek (SMDDP). AllGather is de meest gebruikte collectieve bewerking in populaire geheugenefficiรซnte oplossingen voor gegevensparallellisme, zoals DeepSpeed โ€‹โ€‹Zero Redundantie Optimizer (ZeRO) en Volledig gedeeld dataparallellisme (FSDP), en het levert de grootste bijdrage aan de GPU-communicatieoverhead. In dit bericht laten we een overzicht op hoog niveau zien van hoe SMDDP werkt, hoe u SMDDP kunt inschakelen in uw Amazon SageMaker-trainingsscripts en de prestatieverbeteringen die u kunt verwachten.

Overzicht oplossingen

traditioneel gegevens parallelle training omvat het repliceren van een volledig model over meerdere GPU's, waarbij elk model traint op verschillende gegevensfragmenten uit de dataset. Tijdens de achterwaartse doorgang worden de gradiรซnten gemiddeld onder GPU-werknemers, zodat elke modelreplica wordt bijgewerkt met dezelfde gradiรซntwaarden, ondanks dat ze zijn getraind met verschillende gegevensscherven. Deze techniek maakt een veel snellere training op grote datasets mogelijk door het verbruik van trainingsgegevens te parallelliseren. Sommige van de hedendaagse grote modellen (bijvoorbeeld de Llama2 70B) zijn echter veel te groot om volledig in het GPU-geheugen te passen, waardoor traditioneel gegevensparallellisme onbruikbaar wordt. Om de voordelen van data-parallellisme te blijven benutten en tegelijkertijd het beperkte GPU-geheugen te overwinnen, zijn data-parallelle oplossingen zoals DeepSpeed โ€‹โ€‹ZeRO, PyTorch FSDP en Amazon gesplitst. SageMaker-modelparallelismebibliotheek zijn in populariteit gegroeid.

Bij parallellisme van gesharde gegevens worden de modelparameters, gradiรซnten en optimalisatiestatussen opgesplitst en gedistribueerd (dat wil zeggen, geshard) over GPU's in de trainingstaak, in plaats van het hele model op GPU-werkrollen te repliceren. Om voorwaartse en achterwaartse berekeningen uit te voeren, worden parameters verzameld uit shards op andere GPU-werknemers om een โ€‹โ€‹of meer modellagen te vormen. Nadat de berekening is uitgevoerd, worden deze lagen vervolgens uit het geheugen bevrijd, zodat de volgende set lagen kan worden verzameld. Houd er rekening mee dat er varianten zijn van parallellisme van gesharde gegevens waarbij alleen de statussen en gradiรซnten van de optimalisatie worden geshard, maar niet de modelparameters. AllGather wordt nog steeds gebruikt in dit soort sharded data-parallellisme, maar alleen voorafgaand aan de forward pass-berekening om modelparameters te verzamelen die zijn bijgewerkt door verschillende gradiรซnt- of optimizer-statusscherven van andere GPU-werknemers. Raadpleeg de verschillende DeepSpeed โ€‹โ€‹ZeRO-trappen en SHARD_GRAD_OP FSDP-shardingstrategie voor meer details.

Elke keer dat parameters niet meer worden gedeeld, wordt er een collectieve AllGather-bewerking uitgevoerd. NCCL biedt de standaard open-sourceimplementatie van deze routine. Zoals u hieronder kunt zien, begint elke GPU-werker die betrokken is bij de AllGather met een invoerbuffer en eindigt met alle invoerbuffers van andere werkers aaneengeschakeld. Wanneer AllGather wordt gebruikt bij parallellisme van gesharde gegevens, bevatten de invoerbuffers de shards van modelparameters en bevatten de grote uitvoerbuffers een of meer modellagen die zijn gematerialiseerd uit de andere shards.

Voor en na AllGather-werking op 4 GPU's

Hoewel NCCL doorgaans wordt gebruikt voor AllGather in gedistribueerde trainingen, is de onderliggende implementatie op laag niveau niet afgestemd op de netwerkinfrastructuur van Amazon Elastic Compute Cloud (Amazon EC2) gevallen, en dus kunnen de prestaties de end-to-end training vertragen. De SMDDP-bibliotheek is een collectieve communicatiebibliotheek voor NVIDIA GPU's die dient als drop-in vervanging voor NCCL en betere prestaties biedt voor gedistribueerde trainingstaken met PyTorch. Concreet biedt SMDDP een geoptimaliseerde implementatie van AllGather voor p4d/p4de-instantietypen.

Omdat collectieve operaties zoals AllGather voorwaartse en achterwaartse passberekeningen blokkeren, vertaalt een snellere uitvoering van deze operaties zich direct in een kortere end-to-end trainingstijd zonder bijwerkingen op de convergentie. Andere collectieve bewerkingen die minder vaak worden gebruikt bij parallelle training met gesharde gegevens, worden afgehandeld door terug te vallen op NCCL.

walkthrough

AWS-geoptimaliseerde AllGather

Het voor AWS geoptimaliseerde AllGather gebruikt de volgende technieken om betere prestaties op de AWS-infrastructuur te bereiken in vergelijking met NCCL:

  1. We verplaatsen gegevens tussen instanties via Elastische stofadapter (EFA) netwerk met een allesomvattend communicatiepatroon. EFA is de netwerkoplossing met lage latentie en hoge doorvoer van AWS, en een alles-op-alles patroon voor netwerkcommunicatie tussen knooppunten is meer afgestemd op de kenmerken van de netwerkinfrastructuur van EFA en AWS, doordat er minder pakkethops nodig zijn in vergelijking met de ring- of netwerkinfrastructuur van NCCL. communicatiepatroon van de boom.
  2. DDRKopie om lokaal NVLink- en EFA-netwerkverkeer te coรถrdineren. GDRCopy is een bibliotheek die communicatie met lage latentie biedt tussen CPU-processen en GPU CUDA-kernels. Met deze technologie zijn we in staat de databeweging binnen en tussen knooppunten te pijplijnen.
  3. Verminderd gebruik van GPU-streaming-multiprocessors om meer rekenkracht terug te geven aan modelkernels. AWS P4d/P4de-instances zijn uitgerust met NVIDIA A100 GPU's, die elk 108 streaming multiprocessors hebben. Terwijl NCCL tot 24 streaming multiprocessors nodig heeft om collectieven uit te voeren, gebruikt SMDDP Collectives slechts maximaal negen streaming multiprocessors. De opgeslagen streaming-multiprocessors kunnen worden opgepikt door modelcomputerkernels voor een snellere uitvoering.

Gebruik

SMDDP-collectieven integreren native met PyTorch via de proces groep abstractie in de torch.distributed module. Een procesgroep definieert de interfaces voor algemene collectieve bewerkingen zoals AllGather, ReduceScatter, AllReduce, enz. Gebruikers kunnen generieke gedistribueerde code schrijven en vervolgens de onderliggende code kiezen. backend, dat de implementatie voor deze bewerkingen levert op basis van het gebruikte computerapparaat. CPU-trainingstaken maken vaak gebruik van de gloo or mpi backend terwijl NVIDIA GPU's de nccl achterkant.

De SMDDP-bibliotheek komt in beeld door zichzelf te registreren als een aangepaste backend in de procesgroepabstractie. Dit wordt gedaan door de importinstructie, die wordt weergegeven in de volgende codefragmenten. Wanneer u vervolgens de backend voor uw GPU-gebaseerde gedistribueerde trainingstaak selecteert, hoeft u deze alleen maar te vervangen nccl Met smddp. De smddp backend houdt zich aan dezelfde semantiek als de nccl backend en ondersteunt dezelfde trainingsscenario's.

diepe snelheid

import smdistributed.dataparallel.torch.torch_smddp
deepspeed.init_distributed(dist_backend="smddp") # replacing "nccl"

FSDP

import smdistributed.dataparallel.torch.torch_smddp
dist.init_process_group(backend="smddp")  # replacing "nccl"

benchmarks

We hebben standalone AllGather-prestaties gebenchmarkt waarbij de collectieve operatie geรฏsoleerd wordt uitgevoerd zonder enige modeltraining. Hieronder ziet u een voorbeeldresultaat van 32 p4d-instanties waarin NCCL en SMDDP AllGather worden vergeleken. De X-as vertegenwoordigt de uitvoergrootte van AllGather, en de Y-as vertegenwoordigt de netwerkgebruiksgraad van het 4 Gbps EFA-netwerk van p400d. De vier subgrafieken vertegenwoordigen de algemene communicatiegroeppatronen waarbij we respectievelijk 4, 1, 2 en 4 rangen per p8d-instantie hebben die deelnemen aan de AllGather-operatie.

Netwerkgebruik van SMDDP en NCCL AllGather op 32 knooppunten

Deze microbenchmarks laten zien dat SMDDP beter presteert dan NCCL met twee belangrijke kenmerken:

  1. De piekprestaties van SMDDP (ongeveer 90% bandbreedtegebruik) zijn in alle configuraties hoger dan die van NCCL (ongeveer 80% bandbreedtegebruik).
  2. SMDDP bereikt de topprestaties bij veel kleinere buffergroottes dan NCCL. Dit verbetert met name de trainingssnelheden voor kleinere modellen of wanneer de gebruiker een kleine AllGather-buffergrootte in DeepSpeed โ€‹โ€‹instelt (waarbij de AllGather-grootte niet gelijk hoeft te zijn aan de laaggrootte).

Benchmarks voor modeltraining

Bij grootschalige trainingstaken waar GPU-communicatie een aanzienlijk knelpunt is, kan SMDDP de trainingssnelheden aanzienlijk verbeteren, zoals gemeten door model TFLOPS/GPU.

Configuratie Performance
Model/opleiding TROS Oplossing voor gedeeld data-parallellisme ModelTFLOPS/GPU met NCCL ModelTFLOPS/GPU met SMDDP % versnellen
13B Lama2
Seq lengte: 4096
Globale batchgrootte: 4 miljoen tokens
64 p4d.24xlarge knooppunten (512 NVIDIA A100 GPU's) PyTorch FSDP 97.89 121.85 24.40%
65B GPT NeoX
Seq lengte: 2048
Globale batchgrootte: 4 miljoen tokens
64 p4d.24xlarge knooppunten (512 NVIDIA A100 GPU's) DeepSpeed โ€‹โ€‹ZeRO Fase 3* 99.23 108.66 9.50%

*EleutherAI's Megatron-DeepSpeed opslagplaats werd gebruikt. Tensor-parallellisme werd ook mogelijk gemaakt met een tensor-parallelle graad van acht.

Opmerking: Model TFLOPS/GPU is gebaseerd op de Model FLOPS-gebruiksberekening zoals gedefinieerd in het artikel hier en benchmarkcijfers elders kunnen hardware TFLOPS/GPU als prestatiemaatstaf noemen. Hardware TFLOPS/GPU kan worden benaderd als 4/3 x model TFLOPS/GPU.

Conclusie

In dit bericht hebben we je laten zien hoe je parallelle trainingstaken met gesharde gegevens op Amazon SageMaker aanzienlijk kunt versnellen met slechts twee regels codewijziging. Grootschalige gedistribueerde training wordt steeds alomtegenwoordiger met de opkomst van LLM's, maar deze schaal brengt hoge kosten met zich mee. Door het communicatieknelpunt tussen GPU's te verminderen, helpt SMDDP u sneller op schaal te trainen en te besparen op computerbronnen. Meer SMDDP-voorbeelden met parallelle training met sharded data vindt u in de Amazon SageMaker-voorbeelden GitHub-repository.


Over de auteurs

Maak snellere training mogelijk met de parallelle gegevensbibliotheek van Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Apoorv Gupta is een Software Development Engineer bij AWS, gericht op het bouwen van optimale deep learning-systemen voor AWS-infrastructuur en hardware. Hij is geรฏnteresseerd in gedistribueerd computergebruik, deep learning-systemen en ML-versnellers. Buiten het werk houdt Apoorv van reizen, wandelen en videogames.

Maak snellere training mogelijk met de parallelle gegevensbibliotheek van Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Karan Dhiman is een Software Development Engineer bij AWS, gevestigd in Toronto, Canada. Hij heeft een grote passie voor machine learning en het bouwen van oplossingen voor het versnellen van gedistribueerde computerworkloads.

Maak snellere training mogelijk met de parallelle gegevensbibliotheek van Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Ruhan Prasad is een Software Development Engineer bij AWS die eraan werkt om gedistribueerde deep learning-trainingen sneller, goedkoper en gemakkelijker te gebruiken op SageMaker. Buiten zijn werk houdt Ruhan van tennis, reizen en koken.

Maak snellere training mogelijk met de parallelle gegevensbibliotheek van Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Zhaoqi Zhu is een Senior Software Development Engineer bij AWS, gepassioneerd door gedistribueerde systemen en optimalisaties op laag niveau. Hij kijkt graag naar voetbalwedstrijden terwijl hij (niet-light) frisdrank drinkt.

Tijdstempel:

Meer van AWS-machine learning