Nenehno usposabljamo jezikovne modele za naše delo. Naša ekipa uporablja na desetine različnih video kartic, izbranih za različne naloge: nekje potrebujemo zmogljivo postajo DGX, nekje pa je dovolj stara igralna kartica, kot je RTX 2080Ti. Izbira optimalnega GPU za usposabljanje modela lahko pomembno vpliva tako na hitrost kot na stroškovno učinkovitost procesa.
Zanimivo je, da je na internetu kar nekaj člankov s primerjavo grafičnih procesorjev za strojno učenje, zelo malo pa se jih osredotoča na hitrost usposabljanja jezikovnih modelov. Najdemo večinoma samo teste sklepanja. Ob izidu novega čipa H100 je bilo v NVidijinem poročilu zapisano, da je bil na treningu do devetkrat hitrejši od A100, za naše naloge pa je bila nova kartica le 90% hitrejša od stare. Za primerjavo, naši ponudniki v oblaku so imeli 2x razliko v ceni med temi grafičnimi procesorji, zato ni bilo smisla preklopiti na novi H100, da bi prihranili denar.
Poleg tega smo za test vzeli postajo DGX, ki je sestavljena iz 8 grafičnih kartic A100 80GB in stane 10 tisoč dolarjev na mesec. Po testu je postalo jasno, da nam razmerje cena/zmogljivost te postaje sploh ne ustreza in za ta denar lahko vzamemo 66 x RTX 3090, kar bo skupaj veliko bolj uporabno.
Naši jezikovni modeli prevajanja imajo do 500 milijonov parametrov (povprečno od 100 do 300 milijonov). Možno je, da bo razmerje med ceno in zmogljivostjo DGX boljše, če znatno povečamo število parametrov. Trenutno ne usposabljamo velikih jezikovnih modelov, ki lahko prevajajo med vsemi jeziki v vseh različicah hkrati, ampak uporabljamo ločene jezikovne modele za vsak jezikovni par, npr. Angleško-nemški. Vsak od takih modelov traja od 120 do 300 Mb.
Omeniti velja, da imajo različni jeziki različne količine podatkov na internetu in medtem ko. Na primer, za španščino lahko najdete 500 milijonov stavkov s prevodi, vendar morate pri usposabljanju modelov za redkejše jezike, kot je tibetanščina, izbrati določen grafični procesor za naloge strojnega učenja na podlagi razpoložljivih podatkov. Za izdelavo prevajalskega modela iz angleščine v španščino uporabljamo strežnik s 4 x RTX 4500 in 256GB RAM-a. Hkrati se lahko tibetanski jezik trenira na RTX 2080 Ti s 16GB RAM-a, saj nima smisla povečevati kompleksnosti nevronske mreže in posledično vzeti zmogljivejši strežnik z majhno količino podatkov.
Izbira grafičnih procesorjev in teoretičnih figur
Usposabljanje jezikovnega modela je potekalo na naši interni platformi Data Studio z uporabo ogrodja OpenNMT-tf. Ta faza je vključevala pripravo podatkov, usposabljanje modela in primerjavo modela z referenčnim prevodom. Uporaba FP16 namesto FP32 med usposabljanjem nam je omogočila znatno skrajšanje časa usposabljanja jezikovnih modelov brez poslabšanja kakovosti prevoda, vendar tega niso podpirali vsi naši grafični procesorji.
Pri izbiri grafičnega procesorja je standardno upoštevati meritve, kot so procesorska moč (TFLOPS), video pomnilnik (VRAM), primerjalni rezultati GPU, podpora za knjižnico in ogrodje, proračun in drugi dejavniki (velikost in faktor oblike grafične kartice, moč zahteve, hlajenje in združljivost z vašim sistemom). Pri usposabljanju modelov za ustvarjanje besedila morate upoštevati tudi, da bodo različni jeziki porabili različne količine virov. Na primer, 1 bajt se uporablja za kodiranje enega znaka za latinske jezike, 2 bajta za cirilične jezike in 3 bajte za jezike, ki vsebujejo hieroglife. Razumevanje, katere značilnosti bo imela vaša grafična kartica, pomembno vpliva na hitrost učnega procesa.
Pri usposabljanju modelov glede na uporabljene grafične procesorje so bile video kartice razdeljene v dve skupini glede na obdobje uporabe: zgodnje video kartice, ki so bile uporabljene za prve meritve hitrosti učenja, in kartice, ki so trenutno v uporabi. Glavne značilnosti teh grafičnih kartic najdete v tabeli 1 oziroma tabeli 2.
Tabela 1 - Prej uporabljeni grafični procesorji in njihovi tehnični parametri
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 |
Opombe
1. S CUDA, večjim od 7,0, bo uporaba FP16 povečala hitrost treninga, odvisno od različice CUDA in značilnosti same grafične kartice.
2. Če specifikacija grafične kartice kaže, da je razmerje zmogljivosti med FP16 in FP32 večje od 1 proti 1, bo z uporabo mešane natančnosti zagotovljeno povečanje hitrosti usposabljanja za znesek, določen v specifikaciji. Na primer, za Quadro RTX 6000 bo vrednost FP16 TFLOPS 32,62 (2:1) pospešila vadbo vsaj dvakrat (2,4-krat v praksi)
Tabela 2 - Trenutno uporabljeni modeli GPU in njihove glavne značilnosti
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 |
* - vrednosti za FP16, TFLOPS in FP32, TFLOPS so vzete iz specifikacij na GPE
Postopek usposabljanja in testiranja GPU
Modeli so bili usposobljeni z uporabo kompleta 18 grafičnih procesorjev. V procesu treninga nevronskih mrež smo uporabili številne jezikovne pare (več kot sto jezikov). Preizkusi GPE so pomagali ugotoviti, katera strojna oprema se najbolje obnese pri določenih nalogah. Med usposabljanjem naših jezikovnih parov so bili kot osnova vzeti naslednji parametri nevronske mreže:
- velikost vocaba = 30 000
- numunits = 768
- plasti = 6
- glave = 16
- notranja dimenzija = 4 096
Najprej opišimo grafične procesorje, ki so pripadali prvi skupini, na podlagi tabele 1. Kot osnova za primerjavo indikatorjev bo vzet čas v minutah in sekundah, porabljen za usposabljanje modela s približno hitrostjo 1.000 korakov in večkratnikom velikosti serije 100.000 enot.
Poudarjamo, da so bile za prvo skupino meritve hitrosti izvedene z uporabo poravnava mehanizem in samo z uporabo FP32. Brez uporabe tega mehanizma je lahko hitrost učenja na nekaterih strežnikih veliko hitrejša.
Mehanizem poravnave omogoča ujemanje podnizov v osnovnem in prevedenem besedilu. Potrebno je prevesti oblikovano besedilo, kot so spletne strani, ko je podniz v stavku lahko označen z drugo pisavo in ga je treba prevesti s poudarjanjem.
Ob upoštevanju zgoraj navedenih parametrov nevronske mreže je najboljši čas iz prve tabele prikazal GPU Nvidia H100 s časom učenja 22 minut, in vmesni čas je prikazal GPU iste znamke GeForce RTX 4060 Ti s časom učenja 72 minut, zadnje mesto pa je zasedel GPU Tesla V100-SXM 2 s časom učenja 140 minut.
V testu GPU je bilo tudi osem kartic Nvidia A10 s krivuljo učenja 20 minut in 28 sekund, dve kartici Nvidia A40 s časom 56 minut in dve kartici Tesla V100-SXM, ki sta dosegli 86 minut. Hkratna uporaba več kartic iste serije GPU lahko pospeši proces usposabljanja modelov in pokaže skoraj enak čas z GPU, ki imajo večje zmogljivosti, vendar takšna tehnika morda ni dovolj finančno in postopkovno racionalna. Rezultate meritev hitrosti učenja lahko opazujemo v tabeli številka 3.
Tabela 3 - Meritve časa usposabljanja na prej uporabljenih grafičnih kartah
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 |
Nato izvedimo primerjalno analizo grafičnih pedalov za plin, ki so trenutno v uporabi (tabela 2). Za to skupino grafičnih procesorjev so bile meritve hitrosti izvedene z uporabo poravnava mehanizem, kot tudi uporaba FP16 in FP32. Meritve hitrosti, vključno s tem mehanizmom in mešano natančnostjo, bodo predstavljene spodaj v tabelah 4 oziroma 5.
Torej, ko smo izmerili hitrost grafičnih procesorjev iz te tabele, lahko rečemo, da je prvo mesto zasedla grafična procesorska enota serije RTX A4500 s časom vadbe 31 minut, vendar je treba poudariti, da je bila taka hitrost vadbenih modelov pridobljena s povečanjem števila enot uporabljene grafične procesorske enote do 4. Ne glede na to dejstvo bo hitrost treninga omenjenega GPU veliko večja, kar ga bo uvrstilo na predzadnje mesto v finalni mizi.
Na drugem mestu je grafični procesor serije Quadro RTX 6000 s časom učenja 47 minut. Opozoriti je treba, da je takšna hitrost usposabljanja obratno pogojena s številom enot uporabljenega procesorja, ki je enako štirim. Uporaba samo enega takega grafičnega procesorja bi povzročila izgubo hitrosti približno 3,2-krat in posledično približno 153 minut ter jo postavila na zadnje mesto.
Tretjo linijo je posnel GPU serije TITAN RTX s časom 75 minut in 85 sekund. Ta rezultat hitrosti učenja je posledica uporabe 2 procesorjev, kar je skrajšalo čas usposabljanja modela.
Nedvomno vodilni po hitrosti treninga v številu ene enote bo zagotovo GeForce RTX 3090 serija GPU s časom 78 minut in 26 sekund. Povečanje števila enot tega GPU bo pospešilo hitrost usposabljanja modela, ki bo očitno prehitela vse zgoraj omenjene modele GPU. Podatki o meritvah časa usposabljanja modela so razvidni iz tabele 4.
Tabela 4 - Primerjalna analiza hitrosti usposabljanja jezikovnega modela na predhodno uporabljenih grafičnih procesorjih
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 |
Naslednje meritve hitrosti treninga so bile izvedene z uporabo FP16. V primerjavi s FP32 polovična natančnost omogoča zmanjšanje količine pomnilnika, porabljenega med usposabljanjem modela, in pospešitev izračuna na GPE. Natančnost predstavitve bo manjša kot pri uporabi FP32.
Merjenje časa vadbe modelov z uporabo FP32 iz prejšnje tabele lahko rečemo, da se je čas vadbe nevronske mreže zmanjšal za skoraj dvakrat. Na podlagi rezultatov merjenja zmogljivosti lahko iz meril uspešnosti GPU strojnega učenja v tabeli 4 opazimo, da so položaji GPE ostali večinoma nespremenjeni. Kartica serije Quadro RTX 6000 se je s petega mesta povzpela na šesto in za 96 sekund premagala grafični procesor GeForce RTX 3090. Končne številke so prikazane v tabeli 5.
Tabela 5 - Primerjalna analiza hitrosti usposabljanja jezikovnega modela na predhodno uporabljenih grafičnih procesorjih
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 |