Maximaliseer de prestaties en verlaag uw trainingskosten voor diep leren met AWS Trainium en Amazon SageMaker

Maximaliseer de prestaties en verlaag uw trainingskosten voor diep leren met AWS Trainium en Amazon SageMaker

Bronknooppunt: 2010875

Tegenwoordig bouwen, trainen en implementeren tienduizenden klanten modellen voor machine learning (ML). Amazon Sage Maker om toepassingen aan te drijven die het potentieel hebben om hun bedrijven en klantervaringen opnieuw uit te vinden. Deze ML-modellen zijn de afgelopen jaren steeds groter en complexer geworden, wat heeft geleid tot ultramoderne nauwkeurigheid voor een reeks taken en ook de tijd om te trainen van dagen naar weken heeft verschoven. Als gevolg hiervan moeten klanten hun modellen schalen over honderden tot duizenden versnellers, waardoor ze duurder worden om te trainen.

SageMaker is een volledig beheerde ML-service waarmee ontwikkelaars en datawetenschappers eenvoudig ML-modellen kunnen bouwen, trainen en implementeren. SageMaker biedt al de breedste en diepste keuze aan computeraanbiedingen met hardwareversnellers voor ML-training, waaronder G5 (Nvidia A10G) instanties en P4d (Nvidia A100) instanties.

Groeiende computervereisten vragen om snellere en meer kosteneffectieve verwerkingskracht. Om de trainingstijd van modellen verder te verkorten en ML-beoefenaars in staat te stellen sneller te itereren, heeft AWS geรฏnnoveerd op het gebied van chips, servers en datacenterconnectiviteit. De nieuwe Trn1-instanties mogelijk gemaakt door AWS Trainium chips bieden de beste prijs-prestatieverhouding en de snelste ML-modeltraining op AWS, waardoor tot 50% lagere kosten worden geboden om deep learning-modellen te trainen ten opzichte van vergelijkbare GPU-gebaseerde instanties zonder enige afname in nauwkeurigheid.

In dit bericht laten we zien hoe u uw prestaties kunt maximaliseren en kosten kunt verlagen met Trn1-instanties met SageMaker.

Overzicht oplossingen

SageMaker-trainingstaken ondersteunen ml.trn1-instanties, mogelijk gemaakt door Trainium-chips, die speciaal zijn gebouwd voor krachtige ML-trainingstoepassingen in de cloud. U kunt ml.trn1-instanties op SageMaker gebruiken om natuurlijke taalverwerking (NLP), computervisie en aanbevelingsmodellen te trainen in een breed scala aan toepassingen, zoals spraakherkenning, aanbeveling, fraudedetectie, beeld- en videoclassificatie en prognoses. De ml.trn1-instanties bevatten maximaal 16 Trainium-chips, een tweede generatie ML-chip gebouwd door AWS na AWS Inferentie. ml.trn1 instanties zijn de eerste Amazon Elastic Compute-cloud (Amazon EC2) instances met tot 800 Gbps Elastic Fabric Adapter (EFA) netwerkbandbreedte. Voor efficiรซnte parallelliteit van gegevens en modellen heeft elke ml.trn1.32xl-instantie 512 GB geheugen met hoge bandbreedte, levert tot 3.4 petaflops aan FP16/BF16-rekenkracht en beschikt over NeuronLink, een intra-instantie, hoge bandbreedte, niet-blokkerende interconnect .

Trainium is verkrijgbaar in twee configuraties en kan worden gebruikt in de regio's US East (N. Virginia) en US West (Oregon).

De volgende tabel geeft een overzicht van de functies van de Trn1-instanties.

Instantiegrootte trainium
Versnellers
Versneller
Geheugen
(NL)
vCPU's Aanleg
Geheugen
(Gib)
Netwerk
bandbreedte
(Gbps)
EFA en
RDMA
Support
trn1.2xgroot 1 32 8 32 Tot 12.5 Nee
trn1.32xgroot 16 512 128 512 800 Ja
trn1n.32xlarge (binnenkort beschikbaar) 16 512 128 512 1600 Ja

Laten we begrijpen hoe Trainium met SageMaker te gebruiken met een eenvoudig voorbeeld. We zullen een tekstclassificatiemodel trainen met SageMaker-training en PyTorch met behulp van de Hugging Face Transformers Library.

We gebruiken de dataset Amazon Reviews, die bestaat uit reviews van amazon.com. De gegevens bestrijken een periode van 18 jaar, bestaande uit ongeveer 35 miljoen recensies tot maart 2013. Recensies bevatten product- en gebruikersinformatie, beoordelingen en een recensie in platte tekst. De volgende code is een voorbeeld uit het AmazonPolarity testset:

{
title':'Great CD', 'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""", 'label':1
}

Voor dit bericht gebruiken we alleen de inhoud- en labelvelden. Het inhoudsveld is een recensie met vrije tekst en het labelveld is een binaire waarde die 1 of 0 bevat voor respectievelijk positieve of negatieve recensies.

Voor ons algoritme gebruiken we BERT, een transformatormodel dat vooraf is getraind op een groot corpus Engelse gegevens op een manier onder zelftoezicht. Dit model is in de eerste plaats bedoeld om te worden afgestemd op taken die de hele zin gebruiken (mogelijk gemaskeerd) om beslissingen te nemen, zoals sequentieclassificatie, tokenclassificatie of het beantwoorden van vragen.

Implementatie details

Laten we beginnen met het nader bekijken van de verschillende componenten die betrokken zijn bij het trainen van het model:

  • AWS Trainium - In de kern, elk Trainium-instantie heeft Trainium-apparaten ingebouwd. Trn1.2xlarge heeft 1 Trainium-apparaat en Trn1.32xlarge heeft 16 Trainium-apparaten. Elk Trainium-apparaat bestaat uit compute (2 NeuronCore-v2), 32 GB HBM-apparaatgeheugen en NeuronLink voor snelle communicatie tussen apparaten. Elk NeuronCore-v2 bestaat uit een volledig onafhankelijke heterogene rekeneenheid met afzonderlijke motoren (Tensor/Vector/Scalar/GPSIMD). GPSIMD zijn volledig programmeerbare processors voor algemeen gebruik die u kunt gebruiken om aangepaste operators te implementeren en deze rechtstreeks op de NeuronCore-engines uit te voeren.
  • Amazon SageMaker-training โ€“ SageMaker biedt een volledig beheerde trainingservaring om eenvoudig modellen te trainen zonder dat u zich zorgen hoeft te maken over de infrastructuur. Wanneer u SageMaker Training gebruikt, voert het alles uit wat nodig is voor een trainingstaak, zoals code, container en gegevens, in een computerinfrastructuur die losstaat van de oproepomgeving. Hierdoor kunnen we experimenten parallel uitvoeren en snel herhalen. SageMaker biedt een Python-SDK om opleidingsbanen te lanceren. Het voorbeeld in dit bericht gebruikt de SageMaker Python SDK om de trainingstaak te activeren met behulp van Trainium.
  • AWS-neuron โ€“ Omdat Trainium NeuronCore zijn eigen rekenmachine heeft, hebben we een mechanisme nodig om onze trainingscode te compileren. De AWS-neuron compiler neemt de code geschreven in Pytorch/XLA en optimaliseert deze om op Neuron-apparaten te draaien. De Neuron-compiler is geรฏntegreerd als onderdeel van de Deep Learning Container die we zullen gebruiken voor het trainen van ons model.
  • PyTorch/XLA - Deze Python-pakket gebruikt de XLA deep learning-compiler om het PyTorch deep learning-framework en cloudversnellers zoals Trainium te verbinden. Het bouwen van een nieuw PyTorch-netwerk of het converteren van een bestaand netwerk om op XLA-apparaten te draaien, vereist slechts een paar regels XLA-specifieke code. We zullen voor onze use case zien welke wijzigingen we moeten aanbrengen.
  • Gedistribueerde training โ€“ Om de training efficiรซnt uit te voeren op meerdere NeuronCores, hebben we een mechanisme nodig om de training te verdelen over beschikbare NeuronCores. SageMaker ondersteunt torchrun met Trainium-instanties, die kunnen worden gebruikt om meerdere processen uit te voeren die gelijk zijn aan het aantal NeuronCores in het cluster. Dit wordt gedaan door de distributieparameter als volgt door te geven aan de SageMaker-schatter, die een gegevensparallel gedistribueerde training start waarbij hetzelfde model wordt geladen in verschillende NeuronCores die afzonderlijke gegevensbatches verwerken:
distribution={"torch_distributed": {"enabled": True}}

Scriptwijzigingen nodig om op Trainium te draaien

Laten we eens kijken naar de codewijzigingen die nodig zijn om een โ€‹โ€‹regulier GPU-gebaseerd PyTorch-script te gebruiken voor uitvoering op Trainium. Op hoog niveau moeten we de volgende wijzigingen aanbrengen:

  1. Vervang GPU-apparaten door Pytorch/XLA-apparaten. Omdat we fakkeldistributie gebruiken, moeten we de training met XLA als het apparaat als volgt initialiseren:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. We gebruiken de PyTorch/XLA gedistribueerde backend om de door PyTorch gedistribueerde API's te overbruggen naar XLA-communicatiesemantiek.
  3. We gebruiken PyTorch/XLA MpDeviceLoader voor de pijplijnen voor gegevensopname. MpDeviceLoader helpt de prestaties te verbeteren door drie stappen te overlappen: tracering, compilatie en gegevensbatchlading naar het apparaat. We moeten de PyTorch-dataloader als volgt omwikkelen met de MpDeviceDataLoader:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. Voer de optimalisatiestap uit met behulp van de door XLA geleverde API, zoals weergegeven in de volgende code. Dit consolideert de gradiรซnten tussen kernen en geeft de stapberekening van het XLA-apparaat uit.
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. Wijs CUDA-API's (indien aanwezig) toe aan generieke PyTorch-API's.
  6. Vervang CUDA gefuseerde optimizers (indien aanwezig) door generieke PyTorch-alternatieven.

Het volledige voorbeeld, dat een tekstclassificatiemodel traint met behulp van SageMaker en Trainium, is hieronder beschikbaar GitHub repo. Het notitieboekbestand Verfijn Transformers voor het bouwen van classificatiemodellen met behulp van SageMaker en Trainium.ipynb is het startpunt en bevat stapsgewijze instructies om de training uit te voeren.

Benchmarktests

In de test hebben we twee trainingstaken uitgevoerd: รฉรฉn op ml.trn1.32xlarge en รฉรฉn op ml.p4d.24xlarge met dezelfde batchgrootte, trainingsgegevens en andere hyperparameters. Tijdens de trainingstaken hebben we de factureerbare tijd van de SageMaker-trainingstaken gemeten en de prijs-prestatieverhouding berekend door de tijd die nodig is om trainingstaken in uren uit te voeren te vermenigvuldigen met de prijs per uur voor het instantietype. We hebben het beste resultaat voor elk instantietype geselecteerd uit meerdere taakuitvoeringen.

De volgende tabel vat onze benchmarkbevindingen samen.

Model Instantietype Prijs (per knooppunt * uur) Doorvoer (iteraties/sec) ValidatieNauwkeurigheid Factureerbare tijd (sec) Trainingskosten in $
BERT-basisclassificatie ml.trn1.32xgroot 24.725 6.64 0.984 6033 41.47
BERT-basisclassificatie ml.p4d.24xgroot 37.69 5.44 0.984 6553 68.6

De resultaten toonden aan dat de Trainium-instantie minder kost dan de P4d-instantie en een vergelijkbare doorvoer en nauwkeurigheid biedt bij het trainen van hetzelfde model met dezelfde invoergegevens en trainingsparameters. Dit betekent dat de Trainium-instantie betere prijs-prestatieverhouding levert dan GPU-gebaseerde P4D-instanties. Met een eenvoudig voorbeeld als dit kunnen we zien dat Trainium ongeveer 22% snellere tijd biedt om te trainen en tot 50% lagere kosten dan P4D-instanties.

Implementeer het getrainde model

Nadat we het model hebben getraind, kunnen we het implementeren in verschillende instantietypen, zoals CPU, GPU of AWS Inferentia. Het belangrijkste om op te merken is dat het getrainde model niet afhankelijk is van gespecialiseerde hardware om te implementeren en conclusies te trekken. SageMaker biedt mechanismen om een โ€‹โ€‹getraind model te implementeren met behulp van zowel real-time als batchmechanismen. Het notebookvoorbeeld in de GitHub-opslagplaats bevat code om het getrainde model te implementeren als een real-time eindpunt met behulp van een ml.c5.xlarge (CPU-gebaseerd) exemplaar.

Conclusie

In dit bericht hebben we gekeken hoe Trainium en SageMaker kunnen worden gebruikt om snel een classificatiemodel op te zetten en te trainen dat tot 50% kostenbesparingen oplevert zonder afbreuk te doen aan de nauwkeurigheid. U kunt Trainium gebruiken voor een breed scala aan gebruiksscenario's waarbij op Transformer gebaseerde modellen vooraf worden getraind of verfijnd. Raadpleeg voor meer informatie over ondersteuning van verschillende modelarchitecturen Richtlijnen voor pasvorm van modelarchitectuur.


Over de auteurs

Arun Kumar Lokanatha is een Senior ML Solutions Architect bij het Amazon SageMaker Service-team. Hij richt zich op het helpen van klanten bij het op grote schaal bouwen, trainen en migreren van ML-productieworkloads naar SageMaker. Hij is gespecialiseerd in Deep Learning, met name op het gebied van NLP en CV. Buiten zijn werk houdt hij van hardlopen en wandelen.

Mark Yu is een software-ingenieur bij AWS SageMaker. Hij richt zich op het bouwen van grootschalige gedistribueerde trainingssystemen, het optimaliseren van trainingsprestaties en het ontwikkelen van hoogwaardige ml-trainingshardware, waaronder SageMaker trainium. Mark heeft ook diepgaande kennis van de optimalisatie van de machine learning-infrastructuur. In zijn vrije tijd houdt hij van wandelen en hardlopen.

Omri Fuchs is Software Development Manager bij AWS SageMaker. Hij is de technische leider die verantwoordelijk is voor het SageMaker-trainingsbaanplatform, waarbij hij zich richt op het optimaliseren van de SageMaker-trainingsprestaties en het verbeteren van de trainingservaring. Hij heeft een passie voor geavanceerde ML- en AI-technologie. In zijn vrije tijd houdt hij van fietsen en wandelen.

Gal Oshri is Senior Product Manager bij het Amazon SageMaker-team. Hij heeft 7 jaar ervaring met het werken aan Machine Learning-tools, frameworks en services.

Tijdstempel:

Meer van AWS-machine learning