Hvordan Latent Space brukte Amazon SageMaker-modellens parallellbibliotek for å skyve grensene til store transformatorer

Kilde node: 1204406

Denne bloggen er medforfatter av Sarah Jane Hong CSO, Darryl Barnhart CTO og Ian Thompson administrerende direktør i Latent Space og Prem Ranga i AWS.

Latent space er en skjult fremstilling av abstrakte ideer som maskinlæring (ML) modeller lærer. For eksempel er "hund", "blomst" eller "dør" konsepter eller steder i latent rom. På Latent plass, vi jobber med en motor som lar deg manipulere og utforske dette rommet med både språk og visuelle instruksjoner. Latent Space-teamet kommer fra to felt som lenge har hatt liten overlapping: grafikk og naturlig språkbehandling (NLP). Tradisjonelt har modalitetene til bilder og tekst blitt håndtert hver for seg, hver med sin egen historie med kompleks, kostbar og skjør funksjonsteknikk. NLP-oppgaver som dokumentforståelse eller svar på spørsmål har vanligvis hatt lite til felles med visjonsoppgaver som sceneforståelse eller gjengivelse, og vanligvis bruker vi veldig forskjellige tilnærminger og modeller for hver oppgave. Men dette endrer seg raskt.

Denne sammenslåingen av modaliteter i et enkelt delt latent rom låser opp en ny generasjon kreative og kommersielle applikasjoner, fra spill til dokumentforståelse. Men å låse opp disse nye applikasjonene i en enkelt modell åpner for nye skaleringsutfordringer, som fremhevet i "The Bitter Lesson" av Richard Sutton, og det spennende arbeidet de siste årene med å skalere lover. For å gjøre dette mulig jobber Latent Space med banebrytende forskning for å smelte disse modalitetene i en enkelt modell, men også for å skalere og gjøre det effektivt. Det er her modellparallellisme kommer inn.

Amazon SageMakersin unike automatiserte modellpartisjonering og effektive tilnærming til rørledninger muliggjorde vår bruk av modellparallellisme med liten teknisk innsats, og vi skalerte opplæringen av modeller utover 1 milliard parametere (vi bruker p4d.24xlarge A100-forekomster), som er et viktig krav for oss. Videre observerte vi at når vi trente med 16 noder, åtte GPU-treningsoppsett med SageMaker-modellens parallellbibliotek, registrerte vi en forbedring på 38% i effektivitet sammenlignet med våre tidligere treningsløp.

Utfordringer med å trene store transformatorer

På Latent Space smelter vi sammen språk og visjon i transformatormodeller med milliarder parametere for å støtte "ut av distribusjon" brukstilfeller fra brukerens fantasi, eller som ville oppstå i den virkelige verden, men ikke i treningsdataene våre. Vi håndterer utfordringene som ligger i å skalere til milliarder parametere og utover på to forskjellige måter:

Teknikker for henting av informasjon har lenge vært en nøkkelkomponent i søkemotorer og QA-oppgaver. Nylig har det blitt gjort spennende fremskritt som kombinerer klassiske IR-teknikker med moderne transformatorer, spesielt for spørsmålsbesvarende oppgaver der en modell blir trent sammen med en nevral retriever som lærer å hente relevante dokumenter for å svare på spørsmål. For en oversikt, se det siste arbeidet fra FAIR i Retrieval Augmented Generation: Effektivisering av etableringen av intelligente naturlige språkbehandlingsmodeller og Fusion-in-dekoder, Google Brains EKTEog Nvidia Nevral Retriever for svar på spørsmål.

Mens teknikker for gjenfinning forbedrer kostnader og effektivitet, klarer vi fortsatt ikke å montere modellen på en enkelt GPU for vår største modell. Dette betyr at vi må bruke modellparallellisme for å trene den. På grunn av arten av vår gjenvinningsarkitektur var det imidlertid utfordrende å utforme modelloppdelingen på grunn av gjensidig avhengighet mellom hentede sammenhenger på tvers av treningsinnganger. Videre, selv om vi bestemmer hvordan vi deler modellen vår, var det å introdusere modellparallellitet en viktig ingeniøroppgave for oss å gjøre manuelt på tvers av vår forsknings- og utviklingssyklus.

SageMaker-modellens parallellbibliotek

Modellparallellisme er prosessen med å dele en modell opp mellom flere enheter eller noder (for eksempel GPU-utstyrte forekomster) og skape en effektiv rørledning for å trene modellen på tvers av disse enhetene for å maksimere GPU-utnyttelse. De modell parallellisme bibliotek i SageMaker gjør modellparallellisme mer tilgjengelig ved å tilby automatisk modelloppdeling, også referert til som automatisert modellpartisjonering og sofistikert planlegging av rørkjøring. Modelldelingsalgoritmene kan optimalisere for hastighet eller minneforbruk. Biblioteket bruker en partisjonsalgoritme som balanserer minne, minimerer kommunikasjon mellom enheter og optimaliserer ytelsen.

Automatisert modellpartisjonering

For vårt PyTorch-brukstilfelle kjører modellparallellbiblioteket internt et sporingstrinn (i det første opplæringstrinnet) som konstruerer modellgrafen og bestemmer tensor- og parameterformene. Deretter konstruerer det et tre som består av det nestede nn.Module objekter i modellen, samt tilleggsdata samlet fra sporing, for eksempel mengden lagret nn.Parameters, og kjøretid for hver nn.Module.

Biblioteket krysser deretter dette treet fra roten og kjører en partisjonsalgoritme som balanserer beregningsbelastning og minnebruk, og minimerer kommunikasjonen mellom forekomster. Hvis flere nn-moduler deler det samme nn-parameteren, plasseres disse modulene på samme enhet for å unngå å opprettholde flere versjoner av den samme parameteren. Etter at partisjoneringsbeslutningen er tatt, blir de tildelte modulene og vektene lastet til enhetene.

Planlegging av rørkjøring

En annen kjernefunksjon i SageMaker distribuerte modell parallellbibliotek er rørledninger, som bestemmer rekkefølgen beregninger blir gjort og data blir behandlet på tvers av enheter under modellopplæring. Rørledning er basert på å dele en minibatch i mikrobatcher, som mates inn i opplæringsrørledningen en etter en og følger en kjøreplan definert av bibliotekets kjøretid.

Microbatch-rørledningen sørger for at alle GPUene blir utnyttet fullt ut, noe som vi må bygge selv, men med parallellbiblioteket for modell skjer dette pent bak kulissene. Til slutt kan vi bruke Amazon FSx, som er viktig for å sikre at lesehastighetene våre er raske gitt antall filer som blir lest under opplæringen av en multimodal modell med gjenfinning.

Treningsarkitektur

Følgende diagram representerer hvordan vi setter opp treningsarkitekturen vår. Våre primære mål var å forbedre treningshastigheten og redusere kostnadene. Bildetransformatorene vi trener er svært komplekse, med et betydelig stort antall lag og vekter inne, og løper til milliarder parametere, som alle gjør at de ikke kan passe i minnet til en enkelt node. Hver node bærer en delmengde av modellen, gjennom hvilken datastrømmene og transformasjonene deles og kompileres. Vi setter opp 16 p4d.24xlarge forekomster hver med åtte GPUer ved hjelp av følgende arkitekturrepresentasjon:

Når vi skalerer opp modellene våre, er en vanlig trend å ha alt lagret i nettets vekter. For praktiske formål ønsker vi imidlertid å utvide modellene våre for å lære å lete etter relevante sammenhenger for å hjelpe til med gjengivelsesoppgaven. Dette gjør at vi kan holde serveringskostnadene nede uten å gå på kompromiss med bildekvaliteten. Vi bruker en stor transformatorbasert NLP-modell, og som nevnt tidligere observerte vi en økning på 38% i treningseffektivitet med SageMaker-modellens parallellbibliotek, som vist av følgende:

  • Vi trenger en allreduksjon for hver beregning i tilfelle parallellitet på tensornivå. Dette tar O (log_2 n) parallelle trinn. Det vil si n maskiner som tar O (n) trinn, for O (n log_2 n) totale operasjoner.
  • For parallellisering av rørledninger krever vi O (1) parallelle trinn for å føre data nedover rørledningen
  • Gitt 16 maskiner med åtte GPUer, har vi O (1) kostnad for rørledning parallell, og O (log_2 (8)) = O (3) kostnad for dybdevis modell parallell.
  • I dette tilfellet ser vi at nettverkskostnaden reduseres til 1/3 ved å bytte til rørledning parallell som det vi bruker med SageMaker-modell parallellisme, og den totale treningskostnaden reduseres til 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 av den opprinnelige kostnaden som fører til en tilsvarende effektivitetsforbedring.

Generelt, når behovet garanterer distribuert opplæring (problemer med skaleringsmodellstørrelse eller treningsdata), kan vi følge et sett med beste praksis for å avgjøre hvilken tilnærming som fungerer best.

Beste praksis for distribuert opplæring

Basert på vår erfaring, foreslår vi å starte med en distribuert dataparallell tilnærming. Distribuert dataparallellisme som SageMaker distribuerte dataparallellbibliotek løser de fleste av nettverksproblemene med modellreplikater, så du bør passe modeller i det minste antall noder, og deretter replikere for å skalere batchstørrelse etter behov.

Hvis du går tom for minne under trening, som vi gjorde i dette scenariet, vil du kanskje bytte til en modell parallell tilnærming. Vurder imidlertid disse alternativene før du prøver modellopplæring:

  • Bruk NVIDIA Tensor Core-utstyrt maskinvare blandet presisjonstrening for å skape hastighet og redusere minneforbruket.
  • Reduser batchstørrelsen (eller reduser bildeoppløsningen eller NLP-sekvenslengden, hvis mulig).

I tillegg foretrekker vi modelldesign som ikke har batchnormalisering som beskrevet i Høy ytelse storskala bildegjenkjenning uten normalisering. Hvis det ikke kan unngås, må du sørge for at batchnormalisering er synkronisert på tvers av enheter. Når du bruker distribuert opplæring, deles batchen din over GPUer, så nøyaktig batchstatistikk krever synkronisering på tvers av alle enhetene. Uten dette vil normaliseringen ha økt feil og derved svekke konvergens.

Start med modell parallell trening når du har følgende begrensninger:

  • Modellen din passer ikke på en enkelt enhet
  • På grunn av modellstørrelsen din, står du overfor begrensninger i å velge større batchstørrelser, for eksempel hvis modellvektene tar opp det meste av GPU-minnet ditt, og du blir tvunget til å velge en mindre, suboptimal batchstørrelse

Når du optimaliserer for ytelse, gjør du følgende:

  • Bruk rørledning for kommunikasjon mellom noder for å minimere ventetid og øke gjennomstrømningen
  • Hold rørledninger så korte som mulig for å minimere eventuelle bobler. Antall mikrobatcher bør innstilles for å balansere beregningseffektivitet med boblestørrelse, og være minst rørledningslengden. Om nødvendig kan du danne mikrobatcher på tokenivået som beskrevet i TeraPipe: Token Level Pipeline Parallelism for trening av store språkmodeller

Når du optimaliserer for kostnadene, bruker du SageMaker administrerte Spot Instances for opplæring. Dette kan optimalisere kostnadene for opplæringsmodeller opptil 90% i forhold til On-Demand-forekomster. SageMaker administrerer Spot-avbruddene på dine vegne.

Andre faktorer å vurdere:

  • Innenfor en node når det er en rask samtrafikk, er den mer nyansert. Hvis det er rikelig med nettverkskapasitet innen noder, kan det hende at det er fordeler å omstille data for mer optimal beregning.
  • Hvis aktiveringer er mye større enn vektstensorer, kan en skjæret optimaliseringsenhet også hjelpe. Vennligst se Null for mer informasjon.

Følgende tabell inneholder noen vanlige scenarier for opplæringsskalaer og hvordan du kan konfigurere dem på AWS.

Scenario Når gjelder det? Oppløsning
Skalering fra en enkelt GPU til mange GPUer Når mengden treningsdata eller størrelsen på modellen er for stor Bytt til en multi-GPU-forekomst som p3.16xlarge, som har åtte GPUer, med data og behandling delt over de åtte GPUene, og gir en nesten lineær hastighet på tiden det tar å trene modellen din.
Skalering fra en enkelt forekomst til flere forekomster Når skaleringsbehovet strekker seg utover å endre forekomststørrelsen Skaler antall forekomster med SageMaker Python SDKs estimatorfunksjon ved å sette forekomststypen til p3.16xlarge og instance_count til 2. I stedet for de åtte GPU-ene på en enkelt p3.16xlarge har du 16 GPUer over to identiske forekomster. Vurder å bruke SageMaker distribuerte dataparallellbibliotek.
Velge en modell parallell tilnærming for trening Når du støter på hukommelsesfeil under trening Bytt til en modell parallell tilnærming ved hjelp av SageMaker distribuert modell parallelt bibliotek.
Nettverksytelse for kommunikasjon mellom noder For distribuert opplæring med flere forekomster (for eksempel kommunikasjon mellom nodene i klyngen når du utfører en AllReduce-operasjon) Forekomsten din må være i samme region og samme tilgjengelighetssone. Når du bruker SageMaker Python SDK, håndteres dette for deg. Treningsdataene dine bør også være i samme tilgjengelighetssone. Vurder å bruke SageMaker distribuerte dataparallellbibliotek.
Optimalisert GPU, nettverk og lagring For distribuerte opplæringsbehov i stor skala Instansetypen p4d.24xlarge ble designet for rask lokal lagring og et raskt nettverk bakplan med opptil 400 gigabit, og vi anbefaler det på det sterkeste som det mest effektive alternativet for distribuert trening.

konklusjonen

Med modellparallellbiblioteket i SageMaker får vi mange fordeler ut av esken, for eksempel automatisert modellpartisjonering og effektiv rørledning. I dette innlegget delte vi utfordringene våre med ML-brukstilfellet vårt, våre hensyn til forskjellige treningsmetoder og hvordan vi brukte Amazon SageMaker-modellens parallellbibliotek for å øke hastigheten på opplæringen. Best av alt, det kan nå ta bare noen få timer å innføre beste praksis for modellparallellisme og ytelsesforbedringer beskrevet her. Hvis dette innlegget hjelper deg eller inspirerer deg til å løse et problem, vil vi gjerne høre om det! Vennligst del dine kommentarer og tilbakemeldinger.

Referanser

For mer informasjon, se følgende:


Om forfatterne

Prem Ranga er en Enterprise Solutions Architect basert fra Atlanta, GA. Han er en del av Machine Learning Technical Field Community og elsker å jobbe med kunder på deres ML- og AI-reise. Prem er lidenskapelig opptatt av robotteknologi, er forsker i autonome kjøretøyer, og bygde også Alexa-kontrollerte ølheller i Houston og andre steder.

Sarah Jane Hong er medstifter og Chief Science Officer i Latent Space. Hennes bakgrunn ligger i skjæringspunktet mellom menneske-datamaskininteraksjon og maskinlæring. Hun ledet tidligere NLP-forskning ved Sonar (kjøpt av Marchex), som betjener virksomheter i samtalekonferansen. Hun er også en ansett AR / VR-utvikler, etter å ha mottatt priser og stipendier fra Oculus, Mozilla Mixed Reality og Microsoft Hololens.

Darryl Barnhart er medstifter og Chief Technology Officer i Latent Space. Han er en erfaren utvikler med erfaring innen GPU-akselerasjon, datagrafikk, data i stor skala og maskinlæring. Andre lidenskaper inkluderer matematikk, spillutvikling og studium av informasjon.

Ian Thompson er grunnlegger og administrerende direktør i Latent Space. Ian er ingeniør og forsker inspirert av "tilstøtende mulig" - teknologier som snart vil ha stor innvirkning på livene våre. For tiden fokusert på å forenkle og skalere multimodal representasjonslæring for å bidra til å bygge trygg og kreativ AI. Han har tidligere hjulpet med å bygge selskaper innen grafikk / virtual reality (AltspaceVR, ervervet av Microsoft) og utdanning / NLP (HSE).

Kilde: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- skala-transformatorer /

Tidstempel:

Mer fra AWS maskinlæringsblogg