Vi træner hele tiden sprogmodeller til vores arbejde. Vores team bruger snesevis af forskellige videokort, der er valgt til forskellige opgaver: et eller andet sted har vi brug for en kraftfuld DGX-station, og et eller andet sted er et gammelt spillekort som RTX 2080Ti nok. At vælge den optimale GPU til modeltræning kan påvirke både processens hastighed og omkostningseffektivitet markant.
Det interessante er, at der er en del artikler på internettet med GPU-sammenligning til maskinlæring, men meget få fokuserer på hastighed til sprogmodeltræning. For det meste findes kun inferenstest. Da den nye H100-chip blev frigivet, oplyste NVidias rapport, at den var op til ni gange hurtigere end A100 under træning, men til vores opgaver var det nye kort kun 90% hurtigere end det gamle. Til sammenligning havde vores cloud-udbydere en 2x prisforskel mellem disse GPU'er, så der var ingen mening i at skifte til den nye H100 for at spare penge.
Ud over det tog vi til en test en DGX-station, som består af 8 A100 80GB grafikkort og koster 10 tusind dollars om måneden. Efter testen blev det klart, at pris/ydelsesforholdet på denne station slet ikke passer os, og for disse penge kan vi tage 66 x RTX 3090, hvilket i alt vil være meget mere nyttigt.
Vores oversættelsessprogmodeller har op til 500 millioner parametre (100 millioner til 300 millioner i gennemsnit). Det er muligt, at hvis vi øger antallet af parametre betydeligt, vil pris/ydelsesforholdet for DGX være bedre. I øjeblikket træner vi ikke store sprogmodeller, der kan oversætte mellem alle sprog i alle variationer på én gang, men bruger separate sprogmodeller for hvert sprogpar, f.eks. Engelsk-tysk. Hver af sådanne modeller tager fra 120 til 300 Mb.
Det er værd at bemærke, at forskellige sprog har forskellige mængder data på internettet, og mens. For eksempel kan du for spansk finde 500 millioner sætninger med oversættelser, men når du træner modeller til sjældnere sprog som tibetansk, skal du vælge en specifik GPU til maskinlæringsopgaver baseret på de tilgængelige data. For at lave en oversættelsesmodel fra engelsk til spansk bruger vi en server med 4 x RTX 4500 og 256GB RAM. Samtidig kan det tibetanske sprog trænes på RTX 2080 Ti med 16GB RAM, da det ikke giver nogen mening at øge kompleksiteten af det neurale netværk og som følge heraf at tage en mere kraftfuld server med en lille mængde data.
Valg af grafikprocessorer og teoretiske tal
Sprogmodeltræning fandt sted på vores interne Data Studio-platform ved hjælp af OpenNMT-tf-rammen. Denne fase omfattede dataforberedelse, modeltræning og modelsammenligning med en referenceoversættelse. Brug af FP16 i stedet for FP32 under træning gjorde det muligt for os at reducere træningstiden for sprogmodeller betydeligt uden at forringe oversættelseskvaliteten, men ikke alle vores GPU'er understøttede det.
Når du vælger en grafikprocessor, er det standard at overveje sådanne målinger som processorkraft (TFLOPS), videohukommelse (VRAM), GPU-benchmarkresultater, biblioteks- og rammesupport, budget og andre faktorer (grafikkortstørrelse og formfaktor, strømkrav, køling og kompatibilitet med dit system). Når du træner tekstgenereringsmodeller, bør du også huske på, at forskellige sprog vil forbruge forskellige mængder ressourcer. For eksempel bruges 1 byte til at kode et tegn for latinske sprog, 2 bytes for kyrilliske sprog og 3 bytes for sprog, der indeholder hieroglyffer. At forstå, hvilke egenskaber dit grafikkort vil have, har en betydelig indflydelse på hastigheden af læringsprocessen.
Ved træning af modellerne i forhold til de anvendte GPU'er blev videokortene opdelt i to grupper efter brugsperioden: tidlige videokort, som blev brugt til at foretage de første målinger af indlæringshastighed, og kort, der i øjeblikket er i brug. Hovedkarakteristikaene for disse grafikkort kan findes i henholdsvis tabel 1 og tabel 2.
Tabel 1 - Tidligere anvendte grafikprocessorer og deres tekniske parametre
Number of GPUs | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Tesla V100-SXM2 | HBM2, 16 | 7.0 | 31.33 | 16.31 |
2 | Tesla V100-SXM2 | HBM2, 32 | 7.0 | 31.33 | 15.67 |
1 | RTX 4060 Ti | GDDR6, 8 | 8.9 | 22.06 | 22.06 |
1 | Nvidia A40 | GDDR6, 48 | 8.6 | 37.42 | 37.42 |
2 | Nvidia A40 | GDDR6, 96 | 8.6 | 37.42 | 37.42 |
1 | Nvidia A100 | HBM2, 40 | 8.0 | 77.97 | 19.49 |
1 | Nvidia A100 | HBM2, 80 | 8.0 | 77.97 | 19.49 |
1 | Nvidia RTX A6000 | GDDR6, 48 | 8.6 | 38.71 | 38.71 |
1 | Nvidia A10 | GDDR6, 24 | 8.6 | 31.24 | 31.24 |
8 | Nvidia A10 | GDDR6, 192 | 8.6 | 31.24 | 31.24 |
1 | Nvidia H100 | HBM3, 80 | 9.0 | 204.9 | 51.22 |
Notes
1. Med CUDA større end 7,0 vil brug af FP16 give et løft i træningshastigheden, afhængigt af CUDA-versionen og selve grafikkortets egenskaber.
2. Hvis specifikationen af grafikkortet indikerer, at FP16 til FP32 ydeevneforholdet er større end 1 til 1, så vil brug af blandet præcision være garanteret at øge træningshastigheden med den mængde, der er specificeret i specifikationen. For Quadro RTX 6000 vil FP16 TFLOPS-værdien på 32,62 (2:1) f.eks. fremskynde træningen med mindst to gange (2,4 gange i praksis)
Tabel 2 - Aktuelt anvendte GPU-modeller og deres hovedkarakteristika
Number of GPUs in use | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Quadro RTX 6000 | GDDR6, 24 | 7.5 | 32.62 | 16.31 |
2 | Quadro RTX 6000 | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Quadro RTX 6000 | GDDR6, 96 | 7.5 | 32.62 | 16.31 |
2 | Nvidia TITAN RTX | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Nvidia RTX A4500 | GDDR6, 96 | 8.6 | 23.65 | 23.65 |
1 | Nvidia GeForce RTX 3090 | GDDR6X, 24 | 8.6 | 35.58 | 35.58 |
1 | Nvidia GeForce RTX 3070 | GDDR6, 8 | 8.6 | 20.31 | 20.31 |
* - værdier for FP16,TFLOPS og FP32,TFLOPS er taget fra specifikationer pr. GPU
GPU-træning og testproces
Modellerne blev trænet ved hjælp af et sæt på 18 GPU'er. I processen med neural netværkstræning brugte vi adskillige sprogpar (mere end hundrede sprog). GPU-testene har hjulpet med at identificere, hvilken hardware der klarer sig bedst til specifikke opgaver. Under træningen af vores sprogpar blev følgende neurale netværksparametre lagt til grund:
- vocab størrelse = 30 000
- numunits = 768
- lag = 6
- hoveder = 16
- indre dimension = 4 096
Lad os for det første karakterisere de GPU'er, der tilhørte den første gruppe baseret på tabel 1. Tiden i minutter og sekunder brugt på at træne modellen med en omtrentlig hastighed på 1.000 trin og et batchstørrelsesmultipel på 100.000 enheder vil blive taget som grundlag for sammenligning af indikatorerne.
Vi understreger, at for den første gruppe blev hastighedsmålingerne udført ved brug af alignment mekanisme og kun ved hjælp af FP32. Uden at bruge denne mekanisme kan indlæringshastigheden på nogle servere være meget hurtigere.
Justeringsmekanismen tillader matchende understrenge i basen og oversat tekst. Det er nødvendigt at oversætte formateret tekst, såsom websider, når en understreng i en sætning kan fremhæves med en anden skrifttype og bør oversættes med fremhævningen.
Under hensyntagen til de ovennævnte parametre for det neurale netværk blev den bedste tid fra den første tabel vist af GPU Nvidia H100 med en indlæringstid på 22 minutter, og mellemtiden blev vist af GPU'en af samme mærke GeForce RTX 4060 Ti med en indlæringstid på 72 minutter, og sidstepladsen blev taget af GPU'en Tesla V100-SXM 2 med en indlæringstid på 140 minutter.
Der var også otte Nvidia A10-kort i GPU-testen med en indlæringskurve på 20 minutter og 28 sekunder, to Nvidia A40-kort med en tid på 56 minutter og to Tesla V100-SXM-kort, der klokkede ind på 86 minutter. Samtidig anvendelse af flere kort af samme serie af GPU kan fremskynde træningsprocessen af modellerne og vise næsten samme tid med GPU'er, der har højere kapaciteter, men en sådan teknik er måske ikke økonomisk og proceduremæssigt rationel nok. Resultaterne af indlæringshastighedsmålinger kan observeres i tabel nummer 3.
Tabel 3 - Træningstidsmålinger på de tidligere anvendte grafiske kort
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
8 | Nvidia A10 | 20,28 | 6 250 |
1 | Nvidia H100 | 22 | 25 000 |
1 | A100 (80 Gb) | 40 | 25 000 |
1 | A100 (40 Gb) | 56 | 15 000 |
2 | Nvidia A40 | 56 | 12 500 |
1 | RTX A6000 | 68,25 | 12 500 |
1 | GeForce RTX 4060 Ti | 72 | 4 167 |
1 | Nvidia A40 | 82,08 | 12 500 |
2 | Tesla V100-SXM | 86 | 4 167 |
1 | Nvidia A10 | 104,50 | 5 000 |
1 | Tesla V100-SXM2 | 140 | 4 167 |
Lad os derefter udføre en sammenlignende analyse af grafiske gaspedaler, der i øjeblikket er i brug (tabel 2). For denne gruppe af grafikprocessorer blev hastighedsmålinger udført ved hjælp af alignment mekanisme, samt brug af FP16 og FP32. Hastighedsmålinger inklusive denne mekanisme og blandet præcision vil blive præsenteret nedenfor i henholdsvis tabel 4 og 5.
Så efter at have målt hastigheden af GPU'er fra denne tabel, kan vi sige, at førstepladsen blev taget af RTX A4500-seriens GPU med en træningstid på 31 minutter, men det skal understreges, at en sådan hastighed af træningsmodeller blev opnået ved at øge antallet af enheder af den brugte GPU op til 4. Ser man bort fra dette faktum, vil træningshastigheden for førnævnte GPU være meget højere, hvilket vil placere den på næstsidstepladsen i finalebordet.
Quadro RTX 6000-seriens GPU med en indlæringstid på 47 minutter er på andenpladsen. Det skal bemærkes, at en sådan træningshastighed er omvendt betinget af antallet af enheder af den brugte processor, som er lig med fire. Brug af kun én sådan GPU ville give et hastighedstab på omkring 3,2 gange og ville derfor være cirka 153 minutter og placere den på sidstepladsen.
Den tredje linje blev taget af TITAN RTX-seriens GPU med en tid på 75 minutter og 85 sekunder. Denne læringshastighedsscore skyldes brugen af 2 processorer, hvilket reducerede modellens træningstid.
Den ubestridelige leder med hensyn til træningshastighed i antallet af én enhed vil helt sikkert være GeForce RTX 3090-seriens GPU med en tid på 78 minutter og 26 sekunder. Forøgelse af antallet af enheder i denne GPU vil accelerere modeltræningshastigheden, som klart vil overhale alle de ovennævnte GPU-modeller. Dataene om modeltræningstidsmålinger kan ses i tabel 4.
Tabel 4 - Sammenlignende analyse af sprogmodellens træningshastighed på tidligere anvendte GPU'er
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 31 | 5 000 |
4 | Quadro RTX 6000 | 47 | 6 250 |
2 | Nvidia TITAN RTX | 75,85 | 6 250 |
1 | GeForce RTX 3090 | 78,26 | 6 250 |
2 | Quadro RTX 6000 | 88 | 6 250 |
1 | GeForce RTX 3070 | 104,17 | 2 000 |
1 | Quadro RTX 6000 | 153 | 6 250 |
Følgende træningshastighedsmålinger blev udført ved hjælp af FP16. Sammenlignet med FP32 tillader halvpræcision at reducere mængden af hukommelse, der forbruges under modeltræning, og accelerere beregningen på GPU'en. Nøjagtigheden af repræsentationen vil være lavere end ved brug af FP32.
Ved at måle træningstiden for modeller, der bruger FP32 fra den forrige tabel, kan vi sige, at træningstiden for det neurale netværk blev reduceret med næsten to gange. Baseret på præstationsmålingsresultaterne kan vi observere fra maskinlærings-GPU-benchmarks i tabel 4, at positionerne for GPU'er forblev stort set uændrede. Quadro RTX 6000-seriens kort rykkede op fra den femte position til den sjette og slog GeForce RTX 3090 GPU med 96 sekunder. De endelige tal er vist i tabel 5.
Tabel 5 - Sammenlignende analyse af sprogmodellens træningshastighed på tidligere anvendte GPU'er
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 15,81 | 10 000 |
4 | Quadro RTX 6000 | 20,34 | 12 500 |
2 | Nvidia TITAN RTX | 32,68 | 6 250 |
2 | Quadro RTX 6000 | 37,93 | 10 000 |
1 | GeForce RTX 3090 | 38,89 | 10 000 |
1 | GeForce RTX 3070 | 48,51 | 2 500 |
1 | Quadro RTX 6000 | 52,56 | 10 000 |