De laatste jaren hebben de ontwikkelingen op het gebied van natuurlijke taalverwerking (NLP) een snelle ontwikkeling doorgemaakt. Hoewel de hardware is verbeterd, zoals met de nieuwste generatie accelerators van NVIDIA en Amazon, komen geavanceerde machine learning (ML)-beoefenaars nog regelmatig tegen problemen aan bij het schalen van hun grote taalmodellen over meerdere GPU's.
In deze blogpost vatten we de opkomst van grootschalige en kleinschalige NLP-modellen kort samen, voornamelijk door de abstractie van Hugging Face en met de modulaire backend van Amazon SageMaker. In het bijzonder benadrukken we de lancering van vier extra functies binnen de parallelle bibliotheek van het SageMaker-model die 175 miljard parameter NLP-modelvooropleiding en fijnafstemming voor klanten ontsluiten.
We gebruikten deze bibliotheek op het SageMaker-trainingsplatform en bereikten een doorvoer van 32 monsters per seconde op 120 ml.p4d.24xgrote instanties en 175 miljard parameters. We verwachten dat als we dit zouden verhogen tot 240 exemplaren, het volledige model 25 dagen nodig zou hebben om te trainen.
Voor meer informatie over modelparallellisme, zie de paper Amazon SageMaker-modelparallellisme: een algemeen en flexibel kader voor training van grote modellen.
U kunt de GPT2-notebook die we hebben gebruikt om deze prestatiecijfers te genereren ook zien op onze GitHub-repository.
Raadpleeg voor meer informatie over het gebruik van de nieuwe functies binnen het SageMaker-model parallel: Uitgebreide functies van de SageMaker Model Parallel Library voor PyTorch en Gebruik met de SageMaker Python SDK.
NLP op Amazon SageMaker - knuffelend gezicht en modelparallellisme
Als Hugging Face en NLP nieuw voor je zijn, is het belangrijkste dat je moet weten dat toepassingen die natuurlijke taalverwerking (NLP) gebruiken, prestaties op menselijk niveau beginnen te bereiken. Dit wordt grotendeels aangedreven door een leermechanisme, genaamd aandacht, die aanleiding gaf tot een diep leermodel, genaamd de transformator, dat is veel schaalbaarder dan eerdere sequentiรซle methoden voor deep learning. De inmiddels beroemde BERT-model is ontwikkeld om te profiteren van de transformator en heeft onderweg verschillende nuttige NLP-tactieken ontwikkeld. Transformers en de reeks modellen, zowel binnen als buiten NLP, die allemaal zijn geรฏnspireerd door BERT, zijn de primaire motor achter uw Google-zoekresultaten, in uw Google vertaal resultaten en een groot aantal nieuwe startups.
SageMaker en Hugging Face werken samen om dit voor klanten gemakkelijker te maken dan ooit tevoren. We hebben Hugging Face deep learning containers (DLC's) gelanceerd waarmee je vooraf getrainde modellen rechtstreeks vanuit Hugging Face's kunt trainen en hosten opslagplaats van meer dan 26,000 modellen. We zijn gelanceerd de SageMaker-trainingscompiler zodat u de looptijd van uw Hugging Face-trainingslussen tot 50% kunt versnellen. We hebben ook geรฏntegreerd het Hugging Face vlaggenschip Transformers SDK Met onze gedistribueerde trainingsbibliotheken om het uitschalen van uw NLP-modellen eenvoudiger dan ooit te maken.
Voor meer informatie over Hugging Face Transformer-modellen op Amazon SageMaker, zie: Ondersteuning voor Hugging Face Transformer-modellen.
Nieuwe functies voor grootschalige NLP-modeltraining met de parallelle bibliotheek van SageMaker-modellen
Op AWS re:Invent 2020 lanceerde SageMaker gedistribueerde bibliotheken die de beste prestaties in de cloud bieden voor het trainen van computervisiemodellen zoals Masker-RCNN en NLP-modellen zoals T5-3B. Dit is mogelijk door verbeterde communicatieprimitieven die 20-40% sneller zijn dan NCCL op AWS, en modeldistributietechnieken waarmee extreem grote taalmodellen kunnen worden geschaald over tientallen tot honderden tot duizenden GPU's.
De parallelle bibliotheek van het SageMaker-model (SMP) heeft u altijd de mogelijkheid gegeven om uw vooraf gedefinieerde NLP-model in PyTorch te nemen, of dat nu via Hugging Face of elders is, en dat model te partitioneren op meerdere GPU's in uw cluster. Anders gezegd, SMP verdeelt uw model in kleinere stukken, zodat u geen fouten in het geheugen (OOM) ervaart. We zijn verheugd om extra geheugenbesparende technieken toe te voegen die essentieel zijn voor grootschalige modellen, namelijk:
- tensor parallellisme
- Optimizer staat sharding
- Activering checkpointing
- Activering ontladen
U kunt deze vier functies combineren om het geheugen efficiรซnter te gebruiken en de volgende generatie NLP-modellen op extreme schaal te trainen.
Gedistribueerde training en tensorparallellisme
Om tensorparallellisme te begrijpen, is het handig om te weten dat er veel soorten gedistribueerde training of parallellisme zijn. U bent waarschijnlijk al bekend met het meest voorkomende type, parallellisme van gegevens. De kern van gegevensparallellisme werkt als volgt: u voegt een extra knooppunt toe aan uw cluster, bijvoorbeeld van รฉรฉn naar twee ml.EC2-instanties in uw SageMaker-schatter. Vervolgens gebruikt u een parallel framework voor gegevens zoals Horovod, PyTorch Distributed Data Parallel of SageMaker Distributed. Dit creรซert replica's van uw model, รฉรฉn per versneller, en zorgt voor het sharden van de gegevens naar elk knooppunt, samen met het samenbrengen van alle resultaten tijdens de back-propagatiestap van uw neurale netwerk. Denk aan gedistribueerde gradiรซntafdaling. Gegevensparallellisme is ook populair binnen servers; u versnippert gegevens naar alle GPU's, en soms CPU's, op al uw knooppunten. Het volgende diagram illustreert gegevensparallellisme.
Model parallellisme is een beetje anders. In plaats van kopieรซn van hetzelfde model te maken, splitsen we uw model in stukken. Vervolgens beheren we de uitvoering ervan, zodat uw gegevens wiskundig nog steeds op precies dezelfde manier door uw neurale netwerk stromen, maar verschillende delen van uw model zitten op verschillende GPU's. Als je een ml.p3.8xlarge gebruikt, heb je vier NVIDIA V100's, dus je zou je model waarschijnlijk in 4 stukken willen splitsen, รฉรฉn stuk per GPU. Als je tot twee ml.p4d.24xlarge's springt, is dat 16 A100's in totaal in je cluster, dus je zou je model in 16 stukken kunnen breken. Dit wordt ook wel eens genoemd parallellisme van pijpleidingen. Dat komt omdat de set lagen in het netwerk is verdeeld over GPU's en in een pijplijn wordt uitgevoerd om het GPU-gebruik te maximaliseren. Het volgende diagram illustreert modelparallellisme.
Om modelparallellisme op schaal te laten plaatsvinden, hebben we een derde type distributie nodig: tensor parallellisme. Tensor-parallellisme past dezelfde concepten een stap verder toe: we breken de grootste lagen van je neurale netwerk uit elkaar en plaatsen delen van de lagen zelf op verschillende apparaten. Dit is relevant als je met 175 miljard parameters of meer werkt, en zelfs maar een paar records in RAM probeert te passen, samen met delen van je model, om die transformator te trainen. Het volgende diagram illustreert tensorparallellisme.
Inschakelen tensor parallellisme, zet het binnen de smp opties je gaat door naar je schatter.
In de voorgaande code, pipeline_parallel_degree
beschrijft in hoeveel segmenten uw model moet worden geshard, op basis van het parallellisme van de pijplijn die we hierboven hebben besproken. Een ander woord hiervoor is scores.
Om tensorparallellisme in te schakelen, stelt u in: tensor_parallel_degree
tot uw gewenste niveau. Zorg ervoor dat u een getal kiest dat gelijk is aan of kleiner is dan het aantal GPU's per instantie, dus niet groter dan 8 voor de ml.p4d.24xlarge-machines. Voor aanvullende scriptwijzigingen, zie: Voer een parallelle trainingstaak met gedistribueerd model van SageMaker uit met Tensor-parallellisme.
De parameter ddp verwijst naar parallel gedistribueerde gegevens. U schakelt dit doorgaans in als u gegevensparallellisme of tensorparallellisme gebruikt, omdat de modelparallelismebibliotheek voor deze functies afhankelijk is van DDP.
Optimizer state sharding, activatie offloading en checkpoints
Als je een extreem groot model hebt, heb je ook een extreem grote optimalisatiestatus nodig. Het voorbereiden van uw optimalisatieprogramma voor SMP is eenvoudig: pak het gewoon van de schijf in uw script en laad het in de smp.DistributedOptimizer()
voorwerp.
Zorg ervoor dat u dit inschakelt bij de schatter door in te stellen shard_optimizer_state
naar True in the smp_options
u gebruikt om SMP te configureren:
Net als tensor- en pijplijnparallellisme, profileert SMP uw model en uw wereldomvang (het totale aantal GPU's in al uw trainingsknooppunten), om de beste plaatsingsstrategieรซn te vinden.
Bij deep learning worden de outputs van de tussenlaag ook activeringen genoemd, en deze moeten worden opgeslagen tijdens de forward pass. Dit komt omdat ze moeten worden gebruikt voor gradiรซntberekening in de achterwaartse pas. In een groot model kan het gelijktijdig opslaan van al deze activeringen in het geheugen aanzienlijke geheugenknelpunten veroorzaken. Om dit knelpunt aan te pakken, kunt u gebruik maken van activering checkpointing, de derde nieuwe functie in de parallellismebibliotheek van SageMaker. Activering checkpointing, of gradiรซnt checkpointing, is een techniek om het geheugengebruik te verminderen door activeringen van bepaalde lagen te wissen en ze opnieuw te berekenen tijdens een achterwaartse passage. Dit ruilt effectief extra rekentijd in voor minder geheugengebruik.
Tenslotte activering ontladen maakt direct gebruik van activeringscontrolepunten. Het is een strategie om tijdens de modeltraining slechts enkele tensoractiveringen op het GPU-RAM te houden. In het bijzonder verplaatsen we de activeringen met controlepunten naar het CPU-geheugen tijdens de voorwaartse doorgang en laden ze terug naar de GPU voor de achterwaartse doorgang van een specifieke microbatch.
Microbatches en plaatsingsstrategieรซn
Andere onderwerpen die soms voor verwarring bij klanten zorgen, zijn microbatches en plaatsingsstrategieรซn. Beide zijn hyperparameters die u kunt leveren aan de parallelle bibliotheek van het SageMaker-model. Met name microbatches zijn relevant bij het implementeren van modellen die afhankelijk zijn van parallellisme in pijplijnen, zoals die van ten minste 30 miljard parameters of meer.
Microbatches zijn subsets van minibatches. Wanneer uw model zich in de trainingslus bevindt, definieert u een bepaald aantal records om op te pikken en vooruit en achteruit door de lagen te gaan - dit wordt een mini-batch, of soms gewoon een partij. Een volledige doorgang door uw dataset wordt een . genoemd tijdperk. Om voorwaartse en achterwaartse passen uit te voeren met parallellisme van de pijplijn, shardt de parallelle bibliotheek van het SageMaker-model de batches in kleinere subsets, microbatches genaamd, die รฉรฉn voor รฉรฉn worden uitgevoerd om het GPU-gebruik te maximaliseren. De resulterende, veel kleinere reeks voorbeelden per GPU wordt een microbatch genoemd. In ons GPT-2-voorbeeld, we hebben een standaardwaarde van 1 microbatch rechtstreeks aan het trainingsscript toegevoegd.
Naarmate u uw trainingsconfiguratie opschaalt, het wordt ten zeerste aanbevolen om uw batchgrootte en microbatchgrootte dienovereenkomstig te wijzigen. Dit is de enige manier om goede prestaties te garanderen: u moet rekening houden met batchgrootte en microbatchgroottes als een functie van uw totale wereldomvang wanneer u vertrouwt op parallellisme van pijplijnen.
Plaatsingsstrategieรซn zijn hoe u SageMaker fysiek kunt vertellen waar uw modelpartities moeten worden geplaatst. Als u zowel model-parallel als data-parallel gebruikt, stelt instelling placement_strategy
naar โclusterโ
plaatst modelreplica's in apparaat-ID's (GPU's) die fysiek dicht bij elkaar staan. Als u echter echt meer voorschrijvend wilt zijn over uw parallellismestrategie, kunt u deze opsplitsen in een enkele reeks met verschillende combinaties van drie letters: D voor gegevensparallellisme, P
geeft pijplijn parallellisme aan, en T
voor tensorparallellisme. We raden over het algemeen aan om de standaardplaatsing van: "cluster"
, omdat dit het meest geschikt is voor grootschalige modeltraining. De plaatsing "cluster" komt overeen met "DPT
'.
Voor meer informatie over plaatsingsstrategieรซn, zie Plaatsingsstrategie met Tensor-parallellisme.
Voorbeeld use case
Stel je voor dat je รฉรฉn ml.p3.16xlarge in je trainingsbaan hebt. Dat geeft je 8 NVIDIA V100's per node. Onthoud dat elke keer dat u een extra instantie toevoegt, u extra bandbreedte-overhead ervaart, dus het is altijd beter om meer GP'U's op een enkel knooppunt te hebben. In dit geval ben je beter af met รฉรฉn ml.p3.16xlarge dan bijvoorbeeld twee ml.p3.8xlarges. Hoewel het aantal GPU's hetzelfde is, vertraagt โโde extra bandbreedte-overhead van het extra knooppunt uw doorvoer.
Het volgende diagram illustreert vierwegmodelparallellisme, gecombineerd met tweewegsgegevensparallellisme. Dit betekent dat je eigenlijk twee replica's van je model hebt (denk aan data parallel), met elk gepartitioneerd over vier GPU's (model parallel).
Als een van die modelpartities te groot is om op een enkele GPU te passen, kunt u een extra type distributie - tensorparallellisme - toevoegen om het te spugen en beide apparaten te gebruiken.
Conclusie
In deze blogpost bespraken we SageMaker gedistribueerde trainingsbibliotheken, met speciale aandacht voor modelparallellisme. We hebben prestatiebenchmarks van onze laatste test gedeeld, met 32 โโsamples per seconde voor 120 ml.p4d.24xlarge instances en 175B parameters op Amazon SageMaker. We verwachten dat als we dit zouden verhogen tot 240 p4-instanties, we een 175B-parametermodel in 25 dagen zouden kunnen trainen.
We hebben ook de nieuwste functies besproken die grootschalige training mogelijk maken, namelijk tensorparallellisme, sharding van de optimalisatiestatus, activeringscontrole en activeringsoffloading. We hebben enkele tips en trucs gedeeld om dit mogelijk te maken door middel van training op Amazon SageMaker.
Probeer het zelf uit dezelfde notebook gebruiken die onze nummers heeft gegenereerd, die hier beschikbaar is op GitHub. U kunt ook meer GPU's voor uw AWS-account aanvragen via hier een goedkeuring voor een servicelimiet aanvragen.
Over de auteurs
Emily Webber kwam bij AWS net na de lancering van SageMaker en probeert sindsdien de wereld erover te vertellen! Naast het bouwen van nieuwe ML-ervaringen voor klanten, mediteert Emily graag en bestudeert ze het Tibetaans boeddhisme.
Aditya Bindal is een Senior Product Manager voor AWS Deep Learning. Hij werkt aan producten die het voor klanten gemakkelijker maken om deep learning-modellen op AWS te trainen. In zijn vrije tijd brengt hij graag tijd door met zijn dochter, tennissen, historische fictie lezen en reizen.
louis quintela is de Software Developer Manager voor de parallelle bibliotheek van het AWS SageMaker-model. In zijn vrije tijd is hij te vinden op zijn Harley in de SF Bay Area.
- Coinsmart. Europa's beste Bitcoin- en crypto-uitwisseling.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. GRATIS TOEGANG.
- CryptoHawk. Altcoin-radar. Gratis proefversie.
- Bron: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- Over
- versneller
- Account
- bereikt
- over
- Extra
- adres
- vergevorderd
- Alles
- al
- Amazone
- Nog een
- toepassingen
- GEBIED
- Beschikbaar
- AWS
- Baai
- BEST
- Grootste
- Miljard
- Blog
- Gebouw
- Veroorzaken
- verandering
- Cloud
- code
- combinaties
- Gemeen
- Communicatie
- Configuratie
- verwarring
- containers
- Kern
- kon
- Klanten
- gegevens
- ontwikkelde
- Ontwikkelaar
- Ontwikkeling
- apparaat
- systemen
- anders
- verdeeld
- distributie
- beneden
- gedreven
- waardoor
- vooral
- voorbeeld
- ervaring
- Ervaringen
- extreem
- Gezicht
- sneller
- Kenmerk
- Voordelen
- Fictie
- geschikt
- volgend
- Naar voren
- gevonden
- Achtergrond
- vol
- functie
- Algemeen
- voortbrengen
- GitHub
- gaan
- goed
- Kopen Google Reviews
- Google Search
- GPU
- Hardware
- nuttig
- Markeer
- historisch
- Hoe
- How To
- HTTPS
- Honderden
- meer
- informatie
- geinspireerd
- geรฏntegreerde
- problemen
- IT
- Jobomschrijving:
- toegetreden
- springen
- houden
- taal
- Groot
- laatste
- lancering
- LEARN
- leren
- Niveau
- Bibliotheek
- laden
- machine
- machine learning
- Machines
- maken
- manager
- Geheugen
- ML
- model
- modellen
- modulaire
- meest
- beweging
- namelijk
- Naturel
- netwerk
- Nieuwe mogelijkheden
- knooppunten
- notitieboekje
- nummers
- Overige
- Papier
- partnered
- prestatie
- stuk
- platform
- Populair
- mogelijk
- primair
- Product
- Producten
- Profielen
- zorgen voor
- RAM
- RE
- lezing
- adviseren
- archief
- verminderen
- Resultaten
- lopen
- lopend
- Zei
- schaalbare
- Scale
- scaling
- sdk
- Ontdek
- service
- reeks
- het instellen van
- sharding
- gedeeld
- aanzienlijke
- Maat
- So
- Software
- specifiek
- snelheid
- Uitgaven
- spleet
- Land
- strategieรซn
- Strategie
- leveren
- tactiek
- technieken
- proef
- de wereld
- duizenden kosten
- Door
- niet de tijd of
- tips
- tips en trucs
- samen
- onderwerpen
- trades
- Trainingen
- begrijpen
- .
- gebruik maken van
- visie
- binnen
- werkzaam
- Bedrijven
- wereld
- jaar