Koolitame pidevalt oma töö jaoks keelemudeleid. Meie meeskond kasutab kümneid erinevaid videokaarte, mis on valitud erinevate ülesannete jaoks: kuskil vajame võimsat DGX-jaama ja kuskil piisab vanast mängukaardist nagu RTX 2080Ti. Mudelitreeningu optimaalse GPU valimine võib oluliselt mõjutada nii protsessi kiirust kui ka kuluefektiivsust.
Huvitav on see, et Internetis on üsna palju artikleid, mis sisaldavad masinõppe GPU võrdlust, kuid väga vähesed keskenduvad keelemudeli koolituse kiirusele. Enamasti leitakse ainult järeldusteste. Uue H100 kiibi väljalaskmisel oli NVidia raportis kirjas, et see oli treeningutel kuni üheksa korda kiirem kui A100, kuid meie ülesannete puhul oli uus kaart vaid 90% kiirem kui vana. Võrdluseks, meie pilveteenuse pakkujatel oli nende GPU-de vahel 2-kordne hinnavahe, seega polnud raha säästmiseks mõtet uuele H100-le üle minna.
Lisaks sellele võtsime testimiseks DGX jaama, mis koosneb 8 A100 80 GB graafikakaardist ja maksab 10 tuhat dollarit kuus. Pärast testi sai selgeks, et selle jaama hinna/jõudluse suhe ei sobi meile üldse ja selle raha eest saame võtta 66 x RTX 3090, mis kokku tuleb palju kasulikum.
Meie tõlkekeele mudelitel on kuni 500 miljonit parameetrit (keskmiselt 100-300 miljonit). Võimalik, et kui suurendame parameetrite arvu oluliselt, on DGX-i hinna/jõudluse suhe parem. Praegu me ei koolita suuri keelemudeleid, mis suudavad tõlkida kõigi keelte vahel kõikides variatsioonides korraga, vaid kasutame iga keelepaari jaoks eraldi keelemudeleid, nt. Inglise-saksa. Iga selline mudel võtab 120 kuni 300 Mb.
Väärib märkimist, et erinevates keeltes on Internetis erinev andmemaht ja samas. Näiteks hispaania keele puhul leiate tõlgetega 500 miljonit lauset, kuid haruldasemate keelte, näiteks tiibeti keele mudelite treenimisel peate olemasolevate andmete põhjal valima masinõppe ülesannete jaoks konkreetse GPU. Tõlkemudeli loomiseks inglise keelest hispaania keelde kasutame 4 x RTX 4500 ja 256 GB muutmäluga serverit. Samal ajal saab tiibeti keelt treenida RTX 2080 Ti 16 GB RAM-iga, kuna pole mõtet suurendada närvivõrgu keerukust ja sellest tulenevalt võtta võimsam server väikese andmemahuga.
Graafikaprotsessorite ja teoreetiliste kujundite valimine
Keelemudeli koolitus toimus meie sisemisel Data Studio platvormil OpenNMT-tf raamistiku abil. See etapp hõlmas andmete ettevalmistamist, mudelikoolitust ja mudelite võrdlemist viitetõlkega. FP16 kasutamine FP32 asemel koolituse ajal võimaldas meil oluliselt lühendada keelemudelite koolitusaega ilma tõlkekvaliteeti halvendamata, kuid mitte kõik meie GPU-d ei toetanud seda.
Graafikaprotsessori valimisel on standardne võtta arvesse selliseid mõõdikuid nagu töötlemisvõimsus (TFLOPS), videomälu (VRAM), GPU etalontulemused, teegi ja raamistiku tugi, eelarve ja muud tegurid (graafikakaardi suurus ja vormitegur, võimsusnõuded, jahutus ja ühilduvus teie süsteemiga). Tekstide genereerimise mudelite koolitamisel tuleks silmas pidada ka seda, et erinevad keeled tarbivad erineval hulgal ressursse. Näiteks kasutatakse 1 baiti ühe märgi kodeerimiseks ladina keelte jaoks, 2 baiti kirillitsa keelte jaoks ja 3 baiti hieroglüüfe sisaldavate keelte jaoks. Teie graafikakaardi omaduste mõistmine mõjutab oluliselt õppeprotsessi kiirust.
Mudelite treenimisel kasutatud GPU-de osas jagati videokaardid kasutusperioodi järgi kahte gruppi: varased videokaardid, mille abil tehti esimesed õppimiskiiruse mõõtmised ning hetkel kasutusel olevad kaardid. Nende graafikakaartide põhiomadused leiate vastavalt tabelist 1 ja tabelist 2.
Tabel 1 - Varem kasutatud graafikaprotsessorid ja nende tehnilised parameetrid
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 |
Märkused
1. Kui CUDA on suurem kui 7,0, annab FP16 kasutamine treeningkiiruse tõusu, olenevalt CUDA versioonist ja graafikakaardi enda omadustest.
2. Kui graafikakaardi spetsifikatsioon näitab, et FP16 ja FP32 jõudluse suhe on suurem kui 1:1, siis segatäpsuse kasutamisel on garanteeritud treeningkiiruse suurendamine spetsifikatsioonis määratud summa võrra. Näiteks Quadro RTX 6000 puhul kiirendab FP16 TFLOPS väärtus 32,62 (2:1) treeningut vähemalt kaks korda (praktikas 2,4 korda)
Tabel 2 - Praegu kasutatavad GPU mudelid ja nende peamised omadused
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 |
* - FP16, TFLOPS ja FP32, TFLOPS väärtused on võetud spetsifikatsioonidest GPU kohta
GPU koolitus- ja testimisprotsess
Mudeleid treeniti 18 GPU komplekti abil. Närvivõrgu treenimise protsessis kasutasime arvukalt keelepaare (üle saja keele). GPU testid on aidanud tuvastada, milline riistvara konkreetsete ülesannete jaoks kõige paremini toimib. Meie keelepaaride treeningul võeti aluseks järgmised närvivõrgu parameetrid:
- vocabi suurus = 30 000
- numunits = 768
- kihid = 6
- pead = 16
- sisemõõde = 4 096
Esiteks iseloomustame tabelist 1 lähtudes esimesse rühma kuulunud GPU-sid. Näitajate võrdlemisel võetakse aluseks aeg minutites ja sekundites, mis kulub mudeli treenimiseks ligikaudu kiirusega 1000 sammu ja partii suurusega 100 000 ühikut.
Rõhutame, et esimese rühma puhul viidi kiiruse mõõtmised läbi kasutades joondamine mehhanism ja ainult kasutades FP32(. Ilma seda mehhanismi kasutamata võib mõne serveri õppimiskiirus olla palju kiirem.
Joondusmehhanism võimaldab sobitada alus- ja tõlgitud teksti alamstringe. Vormindatud teksti, näiteks veebilehtede tõlkimiseks on vaja, kui lause alamstring võib olla esile tõstetud teises kirjas ja see tuleks tõlkida koos esiletõstmisega.
Võttes arvesse ülalmainitud närvivõrgu parameetreid, näitas parimat aega esimesest tabelist GPU Nvidia H100 õppimisajaga 22 minutit, ja vaheaega näitas sama kaubamärgi GeForce RTX 4060 Ti GPU õppeajaga 72 minutit ja viimase koha võttis GPU Tesla V100-SXM 2 õppeajaga 140 minutit.
GPU testis oli ka kaheksa Nvidia A10 kaarti õppimiskõveraga 20 minutit ja 28 sekundit, kaks Nvidia A40 kaarti ajaga 56 minutit ja kaks Tesla V100-SXM kaarti, mille taktsagedus oli 86 minutit. Sama seeria GPU mitme kaardi samaaegne rakendamine võib kiirendada mudelite treeningprotsessi ja näidata peaaegu sama aega suurema võimsusega GPU-dega, kuid selline tehnika ei pruugi olla rahaliselt ja protseduuriliselt piisavalt ratsionaalne. Õppimiskiiruse mõõtmiste tulemusi saab jälgida tabelis number 3.
Tabel 3 - Treeningaja mõõtmised varem kasutatud graafilistel kaartidel
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 |
Järgnevalt viime läbi hetkel kasutusel olevate graafika gaasipedaalide võrdleva analüüsi (tabel 2). Selle graafikaprotsessorite rühma jaoks viidi kiiruse mõõtmised läbi, kasutades joondamine mehhanism, samuti FP16 ja FP32 kasutamine. Kiiruse mõõtmised, sealhulgas see mehhanism ja segatäpsus, esitatakse allpool vastavalt tabelites 4 ja 5.
Niisiis, olles sellest tabelist mõõtnud GPU-de kiirust, võime öelda, et esikoha võttis RTX A4500 seeria GPU treeningajaga 31 minutit, kuid tuleb rõhutada, et selline treeningmudelite kiirus saadi kasutades kasutatud GPU ühikute arvu suurendamisega kuni 4-ni. Seda asjaolu arvestamata saab eelmainitud GPU treeningkiirus olema palju suurem, mis asetab selle lõpptabelis eelviimasele kohale.
Teisel kohal on Quadro RTX 6000 seeria GPU õppeajaga 47 minutit. Tuleb märkida, et selline treeningkiirus on pöördvõrdeline kasutatud protsessori ühikute arvuga, mis on võrdne neljaga. Ainult ühe sellise GPU kasutamine annaks kiirusekao umbes 3,2 korda ja sellest tulenevalt ligikaudu 153 minutit ning asetaks selle viimasele kohale.
Kolmanda rea võttis TITAN RTX seeria GPU ajaga 75 minutit ja 85 sekundit. See õppimiskiiruse skoor on tingitud 2 protsessori kasutamisest, mis vähendas mudeli treeningaega.
Treeningkiiruse poolest ühe ühiku arvus vaieldamatuks liidriks saab kindlasti GeForce RTX 3090 seeria GPU ajaga 78 minutit ja 26 sekundit. Selle GPU ühikute arvu suurendamine kiirendab mudeli treeningkiirust, mis möödub selgelt kõigist ülalmainitud GPU mudelitest. Mudeltreeningu ajamõõtmiste andmed on näha tabelis 4.
Tabel 4 - Keelemudeli treeningkiiruse võrdlev analüüs varem kasutatud GPU-del
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 |
Järgmised treeningkiiruse mõõtmised viidi läbi FP16 abil. Võrreldes FP32-ga võimaldab pooltäpsus vähendada mudelitreeningu ajal tarbitava mälu hulka ja kiirendada arvutamist GPU-s. Esituse täpsus on väiksem kui FP32 kasutamisel.
Mõõtes eelmisest tabelist FP32 kasutavate mudelite treeningaega, võib öelda, et närvivõrgu treeningaega vähendati ligi kaks korda. Tulemuslikkuse mõõtmise tulemuste põhjal võime tabelis 4 toodud masinõppe GPU võrdlusalustest täheldada, et GPU-de positsioonid jäid suures osas muutumatuks. Quadro RTX 6000 seeria kaart tõusis viiendalt positsioonilt kuuendale, edestades GeForce RTX 3090 GPU-d 96 sekundiga. Lõplikud numbrid on toodud tabelis 5.
Tabel 5 - Keelemudeli treeningkiiruse võrdlev analüüs varem kasutatud GPU-del
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 |