Ons oefen voortdurend taalmodelle vir ons werk. Ons span gebruik dosyne verskillende videokaarte wat vir verskillende take gekies is: iewers het ons 'n kragtige DGX-stasie nodig, en iewers is 'n ou speletjieskaart soos RTX 2080Ti genoeg. Die keuse van die optimale GPU vir modelopleiding kan beide die spoed en kostedoeltreffendheid van die proses aansienlik beïnvloed.
Wat interessant is, is dat daar 'n hele paar artikels op die internet is met GPU-vergelyking vir masjienleer, maar baie min fokus op spoed vir taalmodelopleiding. Meestal word slegs afleidingstoetse gevind. Toe die nuwe H100-skyfie vrygestel is, het NVidia se verslag gesê dat dit tot nege keer vinniger as A100 in opleiding was, maar vir ons take was die nuwe kaart net 90% vinniger as die ou een. Ter vergelyking het ons wolkverskaffers 'n prysverskil van 2x tussen hierdie GPU's gehad, so dit was geen sin om na die nuwe H100 oor te skakel om geld te spaar nie.
Daarbenewens het ons vir 'n toets 'n DGX-stasie geneem, wat bestaan uit 8 A100 80GB-grafiese kaarte en kos 10 duisend dollar per maand. Na die toets het dit duidelik geword dat die prys/prestasie-verhouding van hierdie stasie glad nie by ons pas nie en vir hierdie geld kan ons 66 x RTX 3090 neem, wat in totaal baie nuttiger sal wees.
Ons vertaaltaalmodelle het tot 500 miljoen parameters (gemiddeld 100 miljoen tot 300 miljoen). Dit is moontlik dat as ons die aantal parameters aansienlik verhoog, die prys/prestasieverhouding van DGX beter sal wees. Tans lei ons nie groot taalmodelle op wat gelyktydig tussen alle tale in alle variasies kan vertaal nie, maar gebruik aparte taalmodelle vir elke taalpaar, bv. Engels-Duits. Elkeen van sulke modelle neem van 120 tot 300 Mb.
Dit is opmerklik dat verskillende tale verskillende hoeveelhede data op die internet het, en terwyl. Byvoorbeeld, vir Spaans kan jy 500 miljoen sinne met vertalings vind, maar wanneer jy modelle vir skaarser tale soos Tibetaans oefen, moet jy 'n spesifieke GPU kies vir masjienleertake gebaseer op die beskikbare data. Om 'n vertaalmodel van Engels na Spaans te skep, gebruik ons 'n bediener met 4 x RTX 4500 en 256GB RAM. Terselfdertyd kan die Tibetaanse taal opgelei word op RTX 2080 Ti met 16GB RAM, aangesien dit geen sin maak om die kompleksiteit van die neurale netwerk te verhoog nie en gevolglik 'n kragtiger bediener met 'n klein hoeveelheid data te neem.
Kies grafiese verwerkers en teoretiese figure
Taalmodelopleiding het op ons interne Data Studio-platform plaasgevind deur die OpenNMT-tf-raamwerk te gebruik. Hierdie fase het datavoorbereiding, modelopleiding en modelvergelyking met 'n verwysingsvertaling ingesluit. Die gebruik van FP16 in plaas van FP32 tydens opleiding het ons in staat gestel om die opleidingstyd van taalmodelle aansienlik te verminder sonder om vertaalkwaliteit te verneder, maar nie al ons GPU's het dit ondersteun nie.
By die keuse van 'n grafiese verwerker, is dit standaard om maatstawwe soos verwerkingskrag (TFLOPS), videogeheue (VRAM), GPU-maatstafresultate, biblioteek- en raamwerkondersteuning, begroting en ander faktore te oorweeg (grafiese kaartgrootte en vormfaktor, kragvereistes, verkoeling en versoenbaarheid met jou stelsel). Wanneer teksgenereringsmodelle opgelei word, moet jy ook in gedagte hou dat verskillende tale verskillende hoeveelhede hulpbronne sal verbruik. Byvoorbeeld, 1 grepe word gebruik om een karakter vir Latynse tale te enkodeer, 2 grepe vir Cyrilliese tale en 3 grepe vir tale wat hiërogliewe bevat. Om te verstaan watter eienskappe jou grafiese kaart sal hê, het 'n beduidende impak op die spoed van die leerproses.
By die opleiding van die modelle in terme van die GPU's wat gebruik is, is die videokaarte volgens die gebruikstydperk in twee groepe verdeel: vroeë videokaarte, wat gebruik is om die eerste metings van leerspoed te maak, en kaarte wat tans gebruik word. Die hoofkenmerke van hierdie grafiese kaarte kan onderskeidelik in Tabel 1 en Tabel 2 gevind word.
Tabel 1 - Voorheen gebruik grafiese verwerkers en hul tegniese parameters
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 |
Notas
1. Met CUDA groter as 7.0, sal die gebruik van FP16 'n hupstoot gee in opleidingspoed, afhangende van die CUDA-weergawe en die kenmerke van die grafiese kaart self.
2. As die spesifikasie van die grafiese kaart aandui dat die FP16 tot FP32 prestasieverhouding groter as 1 tot 1 is, sal die gebruik van gemengde presisie gewaarborg word om die opleidingspoed te verhoog met die hoeveelheid gespesifiseer in die spesifikasie. Byvoorbeeld, vir Quadro RTX 6000 sal die FP16 TFLOPS waarde van 32.62 (2:1) die oefensessie met minstens twee keer versnel (2.4 keer in die praktyk)
Tabel 2 - Tans gebruik GPU modelle en hul belangrikste eienskappe
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 |
* - waardes vir FP16, TFLOPS en FP32, TFLOPS is geneem uit spesifikasies per GPU
GPU opleiding en toets proses
Die modelle is opgelei met behulp van 'n stel van 18 GPU's. In die proses van neurale netwerkopleiding het ons talle taalpare (meer as honderd tale) gebruik. Die GPU-toetse het gehelp om te identifiseer watter hardeware die beste presteer vir spesifieke take. Tydens die opleiding van ons taalpare is die volgende neurale netwerkparameters as basis geneem:
- woordeskatgrootte = 30 000
- numunits = 768
- lae = 6
- koppe = 16
- innerlike dimensie = 4 096
Eerstens, kom ons karakteriseer die GPU's wat aan die eerste groep behoort het, gebaseer op Tabel 1. Die tyd in minute en sekondes wat spandeer word aan die opleiding van die model teen 'n benaderde spoed van 1 000 treë en 'n bondelgrootte veelvoud van 100 000 eenhede sal geneem word as die basis vir die vergelyking van die aanwysers.
Ons beklemtoon dat vir die eerste groep die spoedmetings uitgevoer is met die gebruik van die belyning meganisme en slegs gebruik FP32. Sonder om hierdie meganisme te gebruik, kan die leerspoed op sommige bedieners baie vinniger wees.
Die belyningsmeganisme laat bypassende substringe in die basis en vertaalde teks toe. Dit is nodig om geformateerde teks, soos webblaaie, te vertaal wanneer 'n substring in 'n sin in 'n ander lettertipe uitgelig kan word en met die uitlig vertaal moet word.
Met inagneming van die bogenoemde parameters van die neurale netwerk, is die beste tyd vanaf die eerste tabel deur die GPU Nvidia H100 met 'n leertyd van 22 minute getoon en die intermediêre tyd is getoon deur die GPU van dieselfde handelsmerk GeForce RTX 4060 Ti met 'n leertyd van 72 minute en die laaste plek is geneem deur die GPU Tesla V100-SXM 2 met 'n leertyd van 140 minute.
Daar was ook agt Nvidia A10-kaarte in die GPU-toets met 'n leerkurwe van 20 minute en 28 sekondes, twee Nvidia A40-kaarte met 'n tyd van 56 minute, en twee Tesla V100-SXM-kaarte wat op 86 minute ingeklok het. Gelyktydige toepassing van veelvuldige kaarte van dieselfde reeks GPU kan die opleidingsproses van die modelle bespoedig en byna dieselfde tyd wys met GPU's wat hoër kapasiteit het, maar so 'n tegniek is dalk nie finansieel en prosedureel rasioneel genoeg nie. Die resultate van leerspoedmetings kan in Tabel nommer 3 waargeneem word.
Tabel 3 - Opleidingstydmetings op die voorheen gebruikte grafiese kaarte
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 |
Kom ons voer dan 'n vergelykende ontleding uit van grafiese gaspedale wat tans gebruik word (Tabel 2). Vir hierdie groep grafiese verwerkers is spoedmetings uitgevoer met behulp van die belyning meganisme, sowel as die gebruik van FP16 en FP32. Spoedmetings, insluitend hierdie meganisme en gemengde akkuraatheid, sal hieronder in Tafels 4 en 5 onderskeidelik aangebied word.
Dus, nadat ons die spoed van GPU's vanaf hierdie tabel gemeet het, kan ons sê dat die eerste plek deur die RTX A4500-reeks GPU ingeneem is met 'n opleidingstyd van 31 minute, maar dit moet beklemtoon word dat so 'n spoed van opleidingsmodelle verkry is deur die aantal eenhede van die gebruikte GPU tot 4 te verhoog. Met die verontagsaming van hierdie feit, sal die opleidingspoed van die voorgenoemde GPU baie hoër wees, wat dit in die voorlaaste plek in die finale tabel sal plaas.
Die Quadro RTX 6000-reeks GPU met 'n leertyd van 47 minute is in die tweede plek. Daar moet op gelet word dat so 'n opleidingspoed omgekeerd gekondisioneer word deur die aantal eenhede van die gebruikte verwerker, wat gelyk is aan vier. Die gebruik van slegs een so 'n GPU sal 'n spoedverlies van ongeveer 3,2 keer gee en sal gevolglik ongeveer 153 minute wees en dit in die laaste plek plaas.
Die derde lyn is geneem deur die TITAN RTX-reeks GPU met 'n tyd van 75 minute en 85 sekondes. Hierdie leerspoedtelling is te wyte aan die gebruik van 2 verwerkers, wat die opleidingstyd van die model verminder het.
Die onbetwisbare leier in terme van oefenspoed in die nommer van een eenheid sal beslis die GeForce RTX 3090-reeks GPU wees met 'n tyd van 78 minute en 26 sekondes. Die verhoging van die aantal eenhede van hierdie GPU sal die modelopleidingspoed versnel, wat duidelik al die bogenoemde GPU-modelle sal verbysteek. Die data oor modelopleidingstydmetings kan in Tabel 4 gesien word.
Tabel 4 - Vergelykende analise van taalmodel opleidingspoed op voorheen gebruikte GPU's
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 |
Die volgende opleidingspoedmetings is met behulp van FP16 uitgevoer. In vergelyking met FP32, laat halfpresisie toe om die hoeveelheid geheue wat tydens modelopleiding verbruik word te verminder en die berekening op die GPU te versnel. Die akkuraatheid van die voorstelling sal laer wees as met die gebruik van FP32.
Deur die opleidingstyd van modelle wat FP32 van die vorige tabel gebruik, te meet, kan ons sê dat die opleidingstyd van die neurale netwerk met byna twee keer verminder is. Gebaseer op die prestasiemetingsresultate, kan ons vanuit die masjienleer GPU-maatstawwe in Tabel 4 waarneem dat die posisies van GPU's grootliks onveranderd gebly het. Die Quadro RTX 6000-reekskaart het van die vyfde posisie na die sesde een opgeskuif en die GeForce RTX 3090 GPU met 96 sekondes geklop. Die finale nommers word in Tabel 5 getoon.
Tabel 5 - Vergelykende analise van taalmodel opleidingspoed op voorheen gebruikte GPU's
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 |