Maksimer ydeevnen og reducer dine omkostninger til dyb læring med AWS Trainium og Amazon SageMaker

Maksimer ydeevnen og reducer dine omkostninger til dyb læring med AWS Trainium og Amazon SageMaker

Kildeknude: 2010875

I dag bygger, træner og implementerer titusindvis af kunder modeller for maskinlæring (ML). Amazon SageMaker til at drive applikationer, der har potentialet til at genopfinde deres virksomheder og kundeoplevelser. Disse ML-modeller er steget i størrelse og kompleksitet i løbet af de sidste par år, hvilket har ført til avanceret nøjagtighed på tværs af en række opgaver og også skubbet tiden til at træne fra dage til uger. Som følge heraf skal kunderne skalere deres modeller på tværs af hundreder til tusindvis af acceleratorer, hvilket gør dem dyrere at træne.

SageMaker er en fuldt administreret ML-tjeneste, der hjælper udviklere og dataforskere med nemt at bygge, træne og implementere ML-modeller. SageMaker leverer allerede det bredeste og dybeste udvalg af computertilbud med hardwareacceleratorer til ML-træning, herunder G5 (Nvidia A10G) tilfælde og P4d (Nvidia A100) forekomster.

Voksende beregningskrav kræver hurtigere og mere omkostningseffektiv processorkraft. For yderligere at reducere modeltræningstider og gøre det muligt for ML-udøvere at iterere hurtigere, har AWS fornyet sig på tværs af chips, servere og datacenterforbindelser. De nye Trn1-instanser drevet af AWS Trainium chips tilbyder den bedste pris-ydelse og den hurtigste ML-modeltræning på AWS, hvilket giver op til 50 % lavere omkostninger til at træne deep learning-modeller i forhold til sammenlignelige GPU-baserede instanser uden noget fald i nøjagtigheden.

I dette indlæg viser vi, hvordan du kan maksimere din ydeevne og reducere omkostningerne ved at bruge Trn1-instanser med SageMaker.

Løsningsoversigt

SageMaker træningsjob understøtter ml.trn1-instanser, drevet af Trainium-chips, som er specialbygget til højtydende ML-træningsapplikationer i skyen. Du kan bruge ml.trn1-forekomster på SageMaker til at træne naturlig sprogbehandling (NLP), computersyn og anbefalingsmodeller på tværs af en bredt sæt af applikationer, såsom talegenkendelse, anbefaling, registrering af svindel, billed- og videoklassificering og prognoser. ml.trn1-instanserne har op til 16 Trainium-chips, som er en andengenerations ML-chip bygget af AWS efter AWS-inferens. ml.trn1-forekomster er de første Amazon Elastic Compute Cloud (Amazon EC2) forekomster med op til 800 Gbps Elastic Fabric Adapter (EFA) netværksbåndbredde. For effektiv data- og modelparallelisme har hver ml.trn1.32xl-instans 512 GB hukommelse med høj båndbredde, leverer op til 3.4 petaflops FP16/BF16-computerkraft og har NeuronLink, en intra-instans, højbåndsbredde, ikke-blokerende sammenkobling .

Trainium er tilgængelig i to konfigurationer og kan bruges i USA øst (N. Virginia) og USA vest (Oregon) regioner.

Følgende tabel opsummerer funktionerne i Trn1-forekomsterne.

Forekomststørrelse Trainium
Acceleratorer
Accelerator
Hukommelse
(DK)
vCPU'er Instans
Hukommelse
(GiB)
Netværk
båndbredde
(Gbps)
EFA og
RDMA
Support
trn1.2xlarge 1 32 8 32 Op til 12.5 Ingen
trn1.32xlarge 16 512 128 512 800 Ja
trn1n.32xlarge (kommer snart) 16 512 128 512 1600 Ja

Lad os forstå, hvordan man bruger Trainium med SageMaker med et simpelt eksempel. Vi træner en tekstklassificeringsmodel med SageMaker-træning og PyTorch ved hjælp af Hugging Face Transformers Library.

Vi bruger Amazon Reviews-datasættet, som består af anmeldelser fra amazon.com. Dataene strækker sig over en periode på 18 år og omfatter cirka 35 millioner anmeldelser frem til marts 2013. Anmeldelser omfatter produkt- og brugeroplysninger, vurderinger og en anmeldelse i almindelig tekst. Følgende kode er et eksempel fra AmazonPolarity test sæt:

{
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
}

Til dette indlæg bruger vi kun indholds- og etiketfelterne. Indholdsfeltet er en fritekstanmeldelse, og etiketfeltet er en binær værdi, der indeholder 1 eller 0 for henholdsvis positive eller negative anmeldelser.

Til vores algoritme bruger vi BERT, en transformermodel, der er forudtrænet på et stort korpus af engelske data på en selvovervåget måde. Denne model er primært rettet mod at blive finjusteret på opgaver, der bruger hele sætningen (potentielt maskeret) til at træffe beslutninger, såsom sekvensklassificering, token-klassificering eller besvarelse af spørgsmål.

Implementeringsdetaljer

Lad os starte med at se nærmere på de forskellige komponenter, der er involveret i træning af modellen:

  • AWS Trainium – I sin kerne, hver Trainium eksempel har Trainium-enheder indbygget. Trn1.2xlarge har 1 Trainium-enhed, og Trn1.32xlarge har 16 Trainium-enheder. Hver Trainium-enhed består af computer (2 NeuronCore-v2), 32 GB HBM-enhedshukommelse og NeuronLink til hurtig kommunikation mellem enheder. Hver NeuronCore-v2 består af en fuldstændig uafhængig heterogen computerenhed med separate motorer (Tensor/Vector/Scalar/GPSIMD). GPSIMD er fuldt programmerbare processorer til generelle formål, som du kan bruge til at implementere brugerdefinerede operatører og køre dem direkte på NeuronCore-motorerne.
  • Amazon SageMaker træning – SageMaker giver en fuldt administreret træningsoplevelse, så du nemt kan træne modeller uden at skulle bekymre dig om infrastruktur. Når du bruger SageMaker Training, kører den alt, hvad der er nødvendigt til et træningsjob, såsom kode, container og data, i en computerinfrastruktur adskilt fra invokationsmiljøet. Dette giver os mulighed for at køre eksperimenter parallelt og iterere hurtigt. SageMaker giver en Python SDK at starte uddannelsesjob. Eksemplet i dette indlæg bruger SageMaker Python SDK til at udløse træningsjobbet ved hjælp af Trainium.
  • AWS Neuron – Fordi Trainium NeuronCore har sin egen beregningsmotor, har vi brug for en mekanisme til at kompilere vores træningskode. Det AWS Neuron compiler tager koden skrevet i Pytorch/XLA og optimerer den til at køre på Neuron-enheder. Neuron compileren er integreret som en del af Deep Learning Container, vi vil bruge til at træne vores model.
  • PyTorch/XLA - Dette Python-pakke bruger XLA deep learning compileren til at forbinde PyTorch deep learning framework og cloud acceleratorer som Trainium. At bygge et nyt PyTorch-netværk eller konvertere et eksisterende til at køre på XLA-enheder kræver kun et par linjer med XLA-specifik kode. Vi vil til vores brug se, hvilke ændringer vi skal foretage.
  • Distribueret træning – For at køre træningen effektivt på flere NeuronCores har vi brug for en mekanisme til at fordele træningen i tilgængelige NeuronCores. SageMaker understøtter torchrun med Trainium-instanser, som kan bruges til at køre flere processer svarende til antallet af NeuronCores i klyngen. Dette gøres ved at overføre distributionsparameteren til SageMaker-estimatoren som følger, som starter en data parallel distribueret træning, hvor den samme model indlæses i forskellige NeuronCores, der behandler separate databatches:
distribution={"torch_distributed": {"enabled": True}}

Scriptændringer er nødvendige for at køre på Trainium

Lad os se på de nødvendige kodeændringer for at vedtage et almindeligt GPU-baseret PyTorch-script til at køre på Trainium. På et højt niveau skal vi foretage følgende ændringer:

  1. Udskift GPU-enheder med Pytorch/XLA-enheder. Fordi vi bruger lommelygtefordeling, skal vi initialisere træningen med XLA som enheden som følger:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. Vi bruger den distribuerede PyTorch/XLA-backend til at bygge bro mellem PyTorch-distribuerede API'er til XLA-kommunikationssemantik.
  3. Vi bruger PyTorch/XLA MpDeviceLoader til dataindtagelsespipelines. MpDeviceLoader hjælper med at forbedre ydeevnen ved at overlappe tre trin: sporing, kompilering og databatchindlæsning til enheden. Vi skal pakke PyTorch-dataindlæseren med MpDeviceDataLoader som følger:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. Kør optimeringstrinnet ved hjælp af den XLA-leverede API som vist i følgende kode. Dette konsoliderer gradienterne mellem kerner og udsteder XLA-enhedens trinberegning.
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. Kortlæg CUDA API'er (hvis nogen) til generiske PyTorch API'er.
  6. Udskift CUDA fusionerede optimizere (hvis nogen) med generiske PyTorch-alternativer.

Hele eksemplet, som træner en tekstklassificeringsmodel ved hjælp af SageMaker og Trainium, er tilgængeligt i det følgende GitHub repo. Notebook-filen Finjuster transformatorer til at bygge klassifikationsmodeller ved hjælp af SageMaker og Trainium.ipynb er indgangspunktet og indeholder trin-for-trin instruktioner til at køre træningen.

Benchmark test

I testen kørte vi to træningsjob: et på ml.trn1.32xlarge og et på ml.p4d.24xlarge med samme batchstørrelse, træningsdata og andre hyperparametre. I løbet af træningsjobene målte vi den fakturerbare tid for SageMaker-uddannelsesjobene og beregnede pris-ydelsen ved at gange den tid, det tager at køre træningsjob i timer med prisen pr. time for instanstypen. Vi valgte det bedste resultat for hver instanstype ud af flere jobkørsler.

Følgende tabel opsummerer vores benchmark-resultater.

Model Forekomst Type Pris (pr. node * time) Gennemløb (iterationer/sek.) Valideringsnøjagtighed Fakturerbar tid (sek.) Uddannelsesomkostninger i $
BERT-basisklassifikation ml.trn1.32xlarge 24.725 6.64 0.984 6033 41.47
BERT-basisklassifikation ml.p4d.24xlarge 37.69 5.44 0.984 6553 68.6

Resultaterne viste, at Trainium-instansen koster mindre end P4d-instansen, hvilket giver ensartet gennemløb og nøjagtighed, når man træner den samme model med de samme inputdata og træningsparametre. Det betyder, at Trainium-instansen leverer bedre pris-ydelse end GPU-baserede P4D-instanser. Med et simpelt eksempel som dette kan vi se, at Trainium tilbyder omkring 22 % hurtigere tid til at træne og op til 50 % lavere omkostninger i forhold til P4d-forekomster.

Implementer den trænede model

Efter at vi har trænet modellen, kan vi implementere den til forskellige instanstyper såsom CPU, GPU eller AWS Inferentia. Det vigtigste at bemærke er, at den trænede model ikke er afhængig af specialiseret hardware til at implementere og konkludere. SageMaker leverer mekanismer til at implementere en trænet model ved hjælp af både realtids- eller batch-mekanismer. Notebook-eksemplet i GitHub-reposen indeholder kode til at implementere den trænede model som et realtidsslutpunkt ved hjælp af en ml.c5.xlarge (CPU-baseret) instans.

Konklusion

I dette indlæg har vi set på, hvordan man bruger Trainium og SageMaker til hurtigt at opsætte og træne en klassifikationsmodel, der giver op til 50% omkostningsbesparelser uden at gå på kompromis med nøjagtigheden. Du kan bruge Trainium til en lang række brugssager, der involverer fortræning eller finjustering af transformatorbaserede modeller. For mere information om understøttelse af forskellige modelarkitekturer, se Retningslinjer for tilpasning til modelarkitektur.


Om forfatterne

Arun Kumar Lokanatha er senior ML Solutions Architect hos Amazon SageMaker Service-teamet. Han fokuserer på at hjælpe kunder med at opbygge, træne og migrere ML-produktionsarbejdsbelastninger til SageMaker i stor skala. Han har specialiseret sig i Deep Learning især inden for NLP og CV. Uden for arbejdet nyder han at løbe og vandre.

Mark Yu er softwareingeniør i AWS SageMaker. Han fokuserer på at bygge distribuerede træningssystemer i stor skala, optimere træningsydelsen og udvikle højtydende ml træningshardware, herunder SageMaker trainium. Mark har også indgående viden om optimering af maskinlæringsinfrastruktur. I sin fritid nyder han at vandre og løbe.

Omri Fuchs er Software Development Manager hos AWS SageMaker. Han er den tekniske leder med ansvar for SageMaker træningsjobplatform med fokus på at optimere SageMaker træningspræstation og forbedre træningsoplevelsen. Han har en passion for banebrydende ML- og AI-teknologi. I sin fritid kan han godt lide at cykle og vandre.

Gal Oshri er Senior Product Manager på Amazon SageMaker-teamet. Han har 7 års erfaring med at arbejde med maskinlæringsværktøjer, rammer og tjenester.

Tidsstempel:

Mere fra AWS maskinindlæring