Nye præstationsforbedringer i Amazon SageMaker model parallelbibliotek

Nye præstationsforbedringer i Amazon SageMaker model parallelbibliotek

Kildeknude: 1773720

Fundamentmodeller er store deep learning-modeller, der trænes på en stor mængde data i stor skala. De kan finjusteres yderligere til at udføre en række forskellige downstream-opgaver og udgøre kernen i at aktivere flere AI-applikationer. Den mest fremtrædende kategori er modeller med store sprog (LLM), herunder auto-regressive modeller såsom GPT-varianter, der er trænet til at fuldføre naturlig tekst. LLM'er indeholder typisk milliarder af parametre, hvilket gør, at de sjældent passer på en enkelt accelerator og kræver modelparallelismeteknikker. En anden kategori er især diffusionsmodeller Stabil diffusion, der har skubbet AI-billedgenerering til en hidtil uset milepæl, hvor bemærkelsesværdige billeder kan genereres ud fra en simpel tekstbeskrivelse. Diffusionsmodeller er typisk meget mindre end LLM'er, og distribueret træning spiller stadig en afgørende rolle i at lette udviklingen.

SageMaker model parallel (SMP) bibliotek er en stor model træningsløsning tilgængelig på Amazon SageMaker platform. Den kan integreres med PyTorch-modeller for nemt at anvende en række state-of-the-art distribuerede træningsteknikker med store modeller til at træne i skala. Tidligere i år lancerede SMP sharded data parallelisme, en distribueret træningsteknik drevet af Amazon internt MiCS teknologi under motorhjelmen. Delte data parallelle shards modellerer parametre, gradienter og optimeringstilstande på tværs af dataparallelle arbejdere. MiCS udfører en række optimeringer, herunder skala-bevidst partitionering for at give næsten-lineær skalerbarhed. I Træn gigantiske modeller med nær-lineær skalering ved hjælp af sharded data parallelism, delte vi, at opdelte data parallelt i SMP opnåede en hastighed på 39.7 % sammenlignet med DeepSpeed ​​ZeRO-3 på en 30B parameter GPT-2 model med sekvenslængde 2048.

For at hjælpe vores kunder yderligere med at minimere uddannelsesomkostninger og fremskynde time-to-market, er vi begejstrede for at introducere to nye præstationsforbedringer i SageMaker-modellen parallelt — SMDDP-kollektiver , FlashAttention. SMDDP Collectives er det mest effektive kollektive bibliotek på AWS-infrastruktur til træning af store modeller, der tilbydes af SageMaker distribuerede data parallelbibliotek. FlashAttention introduceres i Dao et al., som genimplementerer opmærksomhedsmekanismen på en IO-bevidst måde, hvilket reducerer hukommelsesbåndbreddekravet og sparer på opmærksomhedshastighed og hukommelsesfodaftryk. Disse to komponenter skubber tilsammen vores sharded data parallel teknik til at være 30.58 % hurtigere, når vi træner en 100B parameter GPT-NeoX model på 32 p4d.24xlarge forekomster. For kunder, der allerede bruger sharded data parallelt på understøttede modeller, er det ikke nødvendigt at ændre kode for at drage fordel af det ydelsesboost, som disse nyeste funktioner tilbyder. Stabilitet AI, opfinderen af Stabil diffusion familie af modeller, der viste enestående billedgenereringsevner, valgte at bruge SMP til at bygge fundamentmodeller. Med SMP opnåede Stability AI 163 TFLOP'er pr. GPU for en 13B-parameter GPT-NeoX på 32 p4d.24xlarge forekomster, en hastighed på 58 % sammenlignet med DeepSpeed. Du kan lære mere om Stability AI's mission og partnerskab med AWS i foredraget om Stability AI CEO på AWS re:Invent 2022 eller i denne blogindlæg.

"Vores mission hos Stability AI er at bygge fundamentet for at aktivere menneskehedens potentiale gennem AI. For at nå denne mission er vi nødt til effektivt at træne open source-fundamentmodeller på hundredvis af accelererede computerforekomster. Vi er afhængige af SageMaker og dets distribuerede træningsbiblioteker til at optimere ydeevnen og implementere state-of-the-art strategier til at sønderdele modeller og data på tværs af vores træningsklynge. Disse optimeringer reducerer vores uddannelsesomkostninger, hjælper os med at opfylde kundernes behov hurtigere og fremskynder udviklingen af ​​nye modeller."

— Emad Mostaque, grundlægger og administrerende direktør for Stability AI.

I dette blogindlæg vil vi først præsentere vores seneste præstationsforbedringer i SageMaker-modellens parallelle bibliotek. Derefter vil vi gense, hvordan man træner grundlæggende modeller ved hjælp af sharded data parallelt. Til sidst vil vi benchmarke ydeevnen for 13B, 50B og 100B parameter autoregressive modeller og afslutte med fremtidigt arbejde.

Nye præstationsforbedringer i SageMaker model parallelbibliotek

Startende fra AWS Deep Learning-containere (DLC) PyTorch 1.12.1, SageMaker model parallel bibliotek v1.13 kommer med følgende to nye komponenter, der er afgørende for at forbedre træningspræstation. De er i øjeblikket tilgængelige på ml.p4d.24xlarge instans med Elastisk stofadapter (EFA) aktiveret:

1. AWS-optimeret AllGather fra SMDDP Collectives

I sharded data parallel, da kun et shard af modeltilstanden er til stede på en GPU, er et AllGather-kollektiv nødvendigt for at samle det fulde sæt af parametre på tværs af alle GPU'er i sharding-gruppen under fremadgående eller bagudgående pass-beregninger. I de tidligere versioner af SageMaker model parallel brugte vi NVIDIA Collective Communications Library (NCCL) til disse kollektiver. NCCL er dog et kollektivt kommunikationsbibliotek til generelle formål, der ikke er designet til AWS-infrastruktur, hvilket fører til suboptimal ydeevne selv med EFA aktiveret.

Tidligere havde vi udviklet SMDDP-kollektiver bibliotek, der leverede en AWS-optimeret implementering af All-Reduce-kollektivet for at fremskynde ydeevnen af ​​ren dataparalleltræning. For at forbedre ydeevnen af ​​træning af store modeller med sharded data parallelism, udvidede vi SMDDP Collectives-biblioteket til at omfatte en optimeret implementering af AllGather-kollektivet. Den vigtigste fordel ved SMDDP Collectives AllGather er, at den anvender et alt-til-alle-kommunikationsmønster for inter-node-kommunikation, hvilket gør det muligt for vores kollektiv at have høj gennemstrømning og være mindre latensfølsom. Derudover aflaster vores AllGather-kollektiv den kommunikationsrelaterede behandling til CPU'en, hvorved der frigøres værdifulde GPU-cyklusser til gradientberegning, hvilket fører til en væsentlig forbedring af ydeevnen, især på store modeller.

2. FlashAttention

I moderne transformatorarkitektur er en af ​​de største kilder til hukommelsesforbrug aktiveringsfodaftrykket i selvopmærksomhedslaget. Dette skyldes, at hvert opmærksomhedshoved beregner en SxS opmærksomhedsmatrix for hvert input, hvor S er sekvenslængden, og denne matrix gennemgår flere operationer, såsom dropout, softmax og matrixmultiplikation, hvor hver mellemudgang kræver hukommelsesplads til brug i tilbage-udbredelse.

FlashAttention (Dao et al.) er en nylig innovation fra HazyResearch i Stanford, der genimplementerer selvopmærksomhedsmekanismen på en I/O-bevidst måde. Hovedindsigten bag FlashAttention er, at selvopmærksomhedsmekanismen er flaskehalsede af hukommelsesbåndbredde til og fra GPU high bandwidth memory (HBM). Dette betyder, at selvopmærksomhedslaget kan beregnes i bidder på tværs af sekvensdimensionen, hvor hver chunk går gennem hele selvopmærksomhedspipelinen ad gangen. De mellemliggende resultater for en chunk gemmes ved SRAM med høj båndbredde, hvilket undgår den dyre rundtur til HBM for hver iteration. Selvom en naiv implementering ville løbe ind i spørgsmålet om cross-chunk-afhængighed på softmax-laget, introducerer FlashAttention en smart implementering, der omgår denne afhængighed. Kombineret med genberegning i baglæns pass, resulterer FlashAttention i betydelige hukommelsesbesparelser og præstationsforbedring (25 % hurtigere træning for GPT-NeoX 13B over 16 p4d-noder), på grund af undgåelse af HBM-rundturen og lagring af SxS-matricer. Du kan finde billeder og flere forklaringer i HazyResearch's FlashAttention-depot.

Træn fundamentmodeller i skala med SageMaker model parallelt

For at træne fundamentmodeller med SMP drevet af SMDDP Collectives, er der ingen yderligere ændringer påkrævet i dine sharded data parallelle træningsjob. Hvis du er ny til at bruge sharded data parallel, skal du følge dette komplet tutorial notesbog , blogindlæg som vil lede dig gennem hele processen, fra databehandling, definering og indsendelse af træningsjob til overvågning af træningslogfiler. Et klar til brug træningsscript til GPT-2-modellen kan findes på train_gpt_simple.py. For at træne en anden modeltype kan du følge API-dokument for at lære om, hvordan man anvender SMP API'er.

Vi fremhæver de vigtigste hyperparametre i PyTorch Estimator af et sharded data parallel træningsjob som nedenfor. Hyperparameteren ddp_dist_backend in smp_options har nu en ny mulighed, "auto" , som standardværdi. Med "auto", SMP vil bruge AWS-optimeret AllGather til sharded data parallelism job og falde tilbage til NCCL ellers. Du kan henvise til dette dokument for understøttede konfigurationer. Hvis du ønsker at køre sharded data parallelt i SMP specifikt med NCCL som den foretrukne kommunikationsbackend, kan du indstille "ddp_dist_backend" til "nccl" in smp_options.

import sagemaker
from sagemaker.pytorch import PyTorch smp_options = { "enabled": True, "parameters": { "ddp": True, "ddp_dist_backend": "auto", #OR "nccl" to disable SMDDP Collectives # To enable sharded data parallelism. # Here we shard model states across 128 GPUs. "sharded_data_parallel_degree": 128, }
} smp_estimator = PyTorch( entry_point="train_gpt_simple.py", role=sagemaker.get_execution_role(), instance_type='ml.p4d.24xlarge', instance_count=32, distribution={ "smdistributed": {"modelparallel": smp_options}, ... }, ...
) smp_estimator.fit(inputs=data_channels)

Med den seneste SMPv1.13-udgivelse understøtter den sønderdelte data parallel træningsteknik FlashAttention for populære modeller, herunder BERT, RoBERTa, GPT-2, GPT-J, GPT-Neo og GPT-NeoX klar. Dette er aktiveret ved at bestå tensor_parallelism=True i løbet af skabelse af model uden indstilling tensor_parallel_degree. Du kan finde et eksempel i det samme træningsscript train_gpt_simple.py .

Benchmarking ydeevne

Vi benchmarkerede sharded data-parallelisme i SageMaker-modelparallelbiblioteket på tre forskellige skalaer af modeller for at forstå, hvordan de to nye funktioner, FlashAttention og AWS-optimerede AllGather, bidrager til forbedring af ydeevnen. Placeringsgruppen er ikke forpligtet til at gengive disse benchmarks på SageMaker.

13B parameter GPT-NeoX

I denne indstilling fokuserer vi på at forstå ydeevnegevinsten, som FlashAttention bidrager med, og vi forlader AWS-optimerede AllGather ude af billedet. Brug af flash-opmærksomhed sparer betydelig GPU-hukommelse, hvilket hjælper os med at øge batchstørrelsen eller reducere skæringsgraden og derved forbedre ydeevnen. Som nedenstående resultater viser, observerede vi et gennemsnit på omkring 20.4% fremskyndelse i SMP med flash opmærksomhed for 13B parameter GPT-NeoX model på forskellige konfigurationer på tværs af 16-64 p4d noder. Hukommelsesbrug under standard opmærksomhedsberegning skaleres på en kvadratisk måde med en stigning i sekvenslængde, men FlashAttention har hukommelsesbrug lineær i sekvenslængde. Derfor er FlashAttention endnu mere nyttigt, når sekvenslængden øges og gør det muligt at bruge større sekvenslængder. Da FlashAttention er hukommelseseffektiv uden at give afkald på modelkvalitet, har FlashAttention hurtigt vundet indpas i det store modeltræningsfællesskab i de seneste måneder, herunder integration med Krammede ansigtsspredere , Mosaik ML.

Konfiguration Performance (Præstation)
Model/Uddannelse Cluster SMP Uden FlashAttention
(TFLOP'er/GPU)
 Med FlashAttention
(TFLOP'er/GPU)
% Speedup
13B GPT-NeoX
Sekv. længde: 2048
Global batchstørrelse: 1024
FP16
16 p4d.24xstore noder Aktivering checkpointing
sharded_data_parallel_degree:64
gradient_akkumulation: 1
130 159 22.31
13B GPT-NeoX
Sekv. længde: 2048
Global batchstørrelse: 2048
FP16
32 p4d.24xstore noder Aktivering checkpointing
sharded_data_parallel_degree:64
gradient_akkumulation: 1
131 157 19.85
13B GPT-NeoX
Sekv. længde: 2048
Global batchstørrelse: 4096
FP16
64 p4d.24xstore noder Aktivering checkpointing
sharded_data_parallel_degree:64
gradient_akkumulation: 1
131 156 19.08

50B parameter Bloom

Nu ser vi på, hvordan AWS-optimerede AllGather fra SMDDP Collectives fremskynder træning af store modeller med SMP. Vi benchmarker en Bloom-model med 50B-parametre og sammenligner ydeevnen med og uden AWS-optimeret AllGather-kollektiv. Vi observerer, at SMDDP-kollektiver fremskynder modeltræning med op til 40 % på tværs af 32 noder til 64 noder træningsjob. SMDDP-kollektiver hjælper med at opnå bedre ydeevne på grund af bedre udnyttelse af 400 Gbps netværksbåndbredden, der er tilgængelig med p4d.24xlarge forekomster. Dette kombineret med designvalget om at overlade kommunikationsrelateret behandling til CPU'en, hjælper med at opnå et godt compute-to-network overlap, hvilket fører til optimeret ydeevne. Compute-to-network overlapning bliver især vigtigt i store modeller, da størrelsen af ​​data, der kommunikeres på tværs af noder, skaleres lineært med en stigning i modelstørrelsen.

Konfiguration Performance (Præstation)
Model/Uddannelse Cluster SMP Uden AWS-optimeret AllGather
(TFLOP'er/GPU)
 Med AWS-optimeret AllGather
(TFLOP'er/GPU)
% Speedup
50B Bloom
Sekv. længde: 2048
Global batchstørrelse: 2048
BF16
32 p4d.24xstore noder Aktivering checkpointing
sharded_data_parallel_degree:128
gradient_akkumulation: 1
102 143 40.20
50B Bloom
Sekv. længde: 2048
Global batchstørrelse: 4096
BF16
64 p4d.24xstore noder Aktivering checkpointing
sharded_data_parallel_degree:128
gradient_akkumulation: 1
101 140 38.61

100B parameter GPT-NeoX

Endelig benchmarker vi SMP med begge de nyeste funktioner aktiveret. Det viser, at denne nye udgivelse af SMP v1.13 er 30 % hurtigere end den tidligere version på en 100B-parameter GPT-NeoX-model.

Konfiguration Performance (Præstation)
Model/Uddannelse Cluster SMP Uden FlashAttention og uden AWS-optimeret AllGather
(TFLOP'er/GPU)
Med FlashAttention + AWS-optimeret AllGather
(TFLOP'er/GPU)
% Speedup
100B GPT-NeoX
Sekv. længde: 2048
Global batchstørrelse: 2048
FP16
32 p4d.24xstore noder Aktivering checkpointing
sharded_data_parallel_degree:256
offload_activations

  • Uden FlashAttention: batchstørrelsen er 4 med gradientakkumulering på 2 trin.
  • Med FlashAttention: batchstørrelsen er 8 uden gradientakkumulering
121 158 30.58
100B GPT-NeoX
Sekv. længde: 2048
Global batchstørrelse: 4096
FP16
64 p4d.24xstore noder Aktivering checkpointing
sharded_data_parallel_degree:256
offload_activations

  • Uden FlashAttention: batchstørrelsen er 4 med gradientakkumulering på 2 trin.
  • Med FlashAttention: batchstørrelsen er 8 uden gradientakkumulering
122 158 29.51

Til fremtidigt arbejde vil vi arbejde på at understøtte en AWS-optimeret Reduce-Scatter i SMDDP-kollektiver. Reduce-Scatter-kollektivet er afgørende for gennemsnits- og sharding-gradienter, der beregnes i baglænspasningen. Vi forventer, at dette vil fremskynde SMP-biblioteket yderligere i fremtidige udgivelser.

Konklusion

I dette indlæg diskuterer vi de to seneste præstationsforbedringer for sharded data parallel teknik i SageMaker model parallel bibliotek. LLM'er viser stort løfte om at forbedre kvaliteten og genanvendeligheden af ​​ML-modeller. AWS-teams arbejder tæt sammen med kunderne for at blive ved med at reducere deres uddannelsesomkostninger og time-to-market. Du kan finde flere SageMaker model parallelle eksempler i Amazon SageMaker Eksempler GitHub repo eller overvær vores næste uddelte træningsværksteder. Hvis du er interesseret i at fremskynde træning af store modeller, så tjek disse funktioner ud og lad os vide, hvad du bygger!


Om forfatterne

Arjun Balasubramanian er en senior softwareingeniør hos AWS med fokus på at bygge højtydende, hardwareaccelererede kollektive kommunikationsalgoritmer til distribueret dyb læring. Han er bredt interesseret i systemer til maskinlæring og netværk i stor skala. Uden for arbejdet nyder han at rejse og dyrke forskellige sportsgrene.

Zhaoqi Zhu er softwareudviklingsingeniør hos AWS, med speciale i distribuerede deep learning-systemer og arbejder på SageMaker Distributed Data Parallel-biblioteket. Uden for arbejdet er Zhaoqi passioneret omkring fodbold og håber ikke at modtage noget rødt kort i den kommende sæson.

Kan Karakus er Senior Applied Scientist hos AWS, der optimerer distribueret dyb læring i stor skala på AWS. Hans forskningsinteresser dækker over deep learning, distribueret optimering, distribuerede systemer og informationsteori. Uden for arbejdet nyder han at cykle, rejse, læse og lære.

Rahul Huilgol er senior softwareingeniør hos AWS. Han arbejder på distribuerede deep learning-systemer, for at gøre det nemt og effektivt at træne store deep learning-modeller i skyen. I sin fritid nyder han fotografering, cykling og havearbejde.

Suhit Kodgule er en softwareudviklingsingeniør med AWS Artificial Intelligence-gruppe, der arbejder med deep learning-rammer. I sin fritid nyder han at vandre, rejse og lave mad.

Fei Wu er softwareingeniør hos AWS. Han arbejder på distribueret træning til storstilede deep learning-modeller på cloud. Uden for arbejdet nyder han basketball, spil og madlavning.

Tidsstempel:

Mere fra AWS maskinindlæring