Stalno obučavamo jezične modele za naš rad. Naš tim koristi desetke različitih video kartica odabranih za različite zadatke: negdje trebamo moćnu DGX stanicu, a negdje je dovoljna stara igraća kartica poput RTX 2080Ti. Odabir optimalnog GPU-a za obuku modela može značajno utjecati na brzinu i isplativost procesa.
Ono što je zanimljivo je da postoji dosta članaka na internetu s GPU usporedbom za strojno učenje, ali vrlo malo njih se fokusira na brzinu za obuku jezičnog modela. Uglavnom se nalaze samo testovi zaključivanja. Kada je objavljen novi H100 čip, NVidijino izvješće navodi da je na treningu bio do devet puta brži od A100, ali za naše zadatke nova kartica je bila samo 90% brža od stare. Usporedbe radi, naši pružatelji usluga oblaka imali su 2 x razliku u cijeni između ovih GPU-ova, tako da nije bilo smisla prelaziti na novi H100 radi uštede novca.
Osim toga, uzeli smo na test DGX stanicu, koja se sastoji od 8 A100 80 GB grafičkih kartica i košta 10 tisuća dolara mjesečno. Nakon testa postalo je jasno da nam omjer cijene i performansi ove stanice uopće ne odgovara i za taj novac možemo uzeti 66 x RTX 3090, što će ukupno biti mnogo korisnije.
Naši prevoditeljski jezični modeli imaju do 500 milijuna parametara (u prosjeku 100 do 300 milijuna). Moguće je da će, ako značajno povećamo broj parametara, omjer cijene i učinka DGX-a biti bolji. Trenutno ne treniramo velike jezične modele koji mogu prevoditi između svih jezika u svim varijacijama odjednom, već koristimo zasebne jezične modele za svaki jezični par npr. Englesko-njemački. Svaki od takvih modela traje od 120 do 300 Mb.
Vrijedno je napomenuti da različiti jezici imaju različite količine podataka na internetu, a dok. Na primjer, za španjolski možete pronaći 500 milijuna rečenica s prijevodima, ali kada trenirate modele za rjeđe jezike poput tibetanskog, morate odabrati određeni GPU za zadatke strojnog učenja na temelju dostupnih podataka. Za izradu modela prevođenja s engleskog na španjolski koristimo poslužitelj s 4 x RTX 4500 i 256 GB RAM-a. U isto vrijeme, tibetanski jezik može se uvježbati na RTX 2080 Ti sa 16 GB RAM-a, jer nema smisla povećavati složenost neuronske mreže i, kao rezultat toga, uzeti snažniji poslužitelj s malom količinom podataka.
Odabir grafičkih procesora i teoretskih brojki
Obuka jezičnog modela odvijala se na našoj internoj platformi Data Studio koristeći OpenNMT-tf okvir. Ova faza uključivala je pripremu podataka, obuku modela i usporedbu modela s referentnim prijevodom. Korištenje FP16 umjesto FP32 tijekom obuke omogućilo nam je značajno smanjenje vremena obuke jezičnih modela bez degradacije kvalitete prijevoda, ali nisu svi naši GPU-ovi to podržavali.
Prilikom odabira grafičkog procesora, standardno je uzeti u obzir takve metrike kao što su procesorska snaga (TFLOPS), video memorija (VRAM), GPU referentni rezultati, podrška za biblioteku i okvir, proračun i drugi čimbenici (veličina i oblik grafičke kartice, zahtjevi za napajanjem, hlađenje i kompatibilnost s vašim sustavom). Kada trenirate modele generiranja teksta, također trebate imati na umu da će različiti jezici trošiti različite količine resursa. Na primjer, 1 bajt se koristi za kodiranje jednog znaka za latinske jezike, 2 bajta za ćirilične jezike i 3 bajta za jezike koji sadrže hijeroglife. Razumijevanje koje će karakteristike imati vaša grafička kartica ima značajan utjecaj na brzinu procesa učenja.
Prilikom obuke modela u smislu korištenih GPU-ova, video kartice su podijeljene u dvije skupine prema razdoblju korištenja: rane video kartice, koje su korištene za prva mjerenja brzine učenja, i kartice koje su trenutno u upotrebi. Glavne karakteristike ovih grafičkih kartica mogu se pronaći u tablici 1, odnosno tablici 2.
Tablica 1 - Prethodno korišteni grafički procesori i njihovi tehnički 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 |
Bilješke
1. S CUDA-om većom od 7,0, korištenje FP16 će povećati brzinu treninga, ovisno o verziji CUDA-e i karakteristikama same grafičke kartice.
2. Ako specifikacija grafičke kartice pokazuje da je omjer performansi FP16 i FP32 veći od 1 prema 1, tada će korištenje mješovite preciznosti zajamčeno povećati brzinu treninga za iznos naveden u specifikaciji. Na primjer, za Quadro RTX 6000 FP16 TFLOPS vrijednost od 32,62 (2:1) ubrzat će vježbanje najmanje dva puta (2,4 puta u praksi)
Tablica 2 - Trenutno korišteni GPU modeli i njihove glavne karakteristike
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 |
* - vrijednosti za FP16, TFLOPS i FP32, TFLOPS preuzete su iz specifikacija po GPU-u
GPU obuka i proces testiranja
Modeli su obučavani pomoću skupa od 18 GPU-ova. U procesu obuke neuronske mreže koristili smo brojne jezične parove (više od stotinu jezika). GPU testovi pomogli su identificirati koji hardver najbolje radi za određene zadatke. Tijekom obuke naših jezičnih parova kao osnova uzeti su sljedeći parametri neuronske mreže:
- vocab veličina = 30 000
- numunits = 768
- slojevi = 6
- glave = 16
- unutarnja dimenzija = 4 096
Prvo, karakterizirajmo GPU-ove koji su pripadali prvoj skupini na temelju tablice 1. Vrijeme u minutama i sekundama potrošeno na obuku modela pri približnoj brzini od 1000 koraka i višestrukoj veličini serije od 100 000 jedinica uzet će se kao osnova za usporedbu pokazatelja.
Naglašavamo da su za prvu skupinu mjerenja brzine obavljena uz korištenje usklađivanje mehanizam i samo korištenje FP32. Bez korištenja ovog mehanizma brzina učenja na nekim poslužiteljima može biti puno brža.
Mehanizam poravnanja omogućuje podudaranje podnizova u bazi i prevedenom tekstu. Potrebno je prevesti formatirani tekst, kao što su web stranice, kada podniz u rečenici može biti istaknut drugim fontom i treba ga prevesti s označavanjem.
Uzimajući u obzir gore navedene parametre neuronske mreže, najbolje vrijeme iz prve tablice pokazao je GPU Nvidia H100 s vremenom učenja od 22 minute, a međuvrijeme je pokazao GPU iste marke GeForce RTX 4060 Ti s vremenom učenja od 72 minute, a posljednje mjesto zauzeo je GPU Tesla V100-SXM 2 s vremenom učenja od 140 minuta.
Također je bilo osam Nvidia A10 kartica u GPU testu s krivuljom učenja od 20 minuta i 28 sekundi, dvije Nvidia A40 kartice s vremenom od 56 minuta i dvije Tesla V100-SXM kartice koje su trajale 86 minuta. Istodobna primjena više kartica iste serije GPU-a može ubrzati proces obuke modela i pokazati gotovo isto vrijeme s GPU-ima koji imaju veće kapacitete, ali takva tehnika možda nije dovoljno financijski i proceduralno racionalna. Rezultati mjerenja brzine učenja mogu se vidjeti u tablici broj 3.
Tablica 3 - Mjerenja vremena obuke na prethodno korištenim grafičkim kartama
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 |
Zatim, provedimo komparativnu analizu grafičkih papučica gasa koje se trenutno koriste (Tablica 2). Za ovu skupinu grafičkih procesora mjerenja brzine provedena su pomoću usklađivanje mehanizam, kao i korištenje FP16 i FP32. Mjerenja brzine uključujući ovaj mehanizam i mješovitu preciznost bit će prikazana u nastavku u tablicama 4 i 5.
Dakle, izmjerivši brzinu GPU-ova iz ove tablice, možemo reći da je prvo mjesto zauzeo GPU serije RTX A4500 s vremenom treninga od 31 minute, ali treba naglasiti da je takva brzina modela treninga dobivena povećanjem broja jedinica korištenog GPU-a do 4. Zanemarujući tu činjenicu, brzina treninga spomenutog GPU-a bit će puno veća, što će ga smjestiti na pretposljednje mjesto finalne tablice.
Na drugom mjestu je GPU serije Quadro RTX 6000 s vremenom učenja od 47 minuta. Treba napomenuti da je takva brzina treninga obrnuto uvjetovana brojem jedinica korištenog procesora, koji je jednak četiri. Korištenje samo jednog takvog GPU-a dovelo bi do gubitka brzine od oko 3,2 puta i posljedično bi iznosilo približno 153 minute i postavilo bi ga na posljednje mjesto.
Treću liniju preuzeo je GPU serije TITAN RTX s vremenom od 75 minuta i 85 sekundi. Ovaj rezultat brzine učenja rezultat je korištenja 2 procesora, što je smanjilo vrijeme obuke modela.
Neupitni lider po brzini treninga u broju jedne jedinice svakako će biti GPU serije GeForce RTX 3090 s vremenom od 78 minuta i 26 sekundi. Povećanje broja jedinica ovog GPU-a ubrzat će brzinu obuke modela, koja će jasno prestići sve gore navedene GPU modele. Podaci o mjerenjima vremena obuke modela mogu se vidjeti u tablici 4.
Tablica 4 - Usporedna analiza brzine treninga jezičnog modela na prethodno korištenim GPU-ovima
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 |
Sljedeća mjerenja brzine treninga provedena su pomoću FP16. U usporedbi s FP32, polupreciznost omogućuje smanjenje količine memorije potrošene tijekom obuke modela i ubrzavanje izračuna na GPU-u. Točnost prikaza bit će niža nego kod upotrebe FP32.
Mjerenje vremena obuke modela pomoću FP32 iz prethodne tablice, možemo reći da je vrijeme obuke neuronske mreže smanjeno gotovo dva puta. Na temelju rezultata mjerenja učinka, možemo primijetiti iz mjerila GPU-a strojnog učenja u tablici 4 da su položaji GPU-a ostali uglavnom nepromijenjeni. Kartica serije Quadro RTX 6000 pomaknula se s pete pozicije na šestu, pobijedivši GeForce RTX 3090 GPU za 96 sekundi. Konačni brojevi prikazani su u tablici 5.
Tablica 5 - Usporedna analiza brzine treninga jezičnog modela na prethodno korištenim GPU-ovima
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 |