Koulutamme jatkuvasti kielimalleja työhömme. Tiimimme käyttää kymmeniä erilaisia videokortteja, jotka on valittu eri tehtäviin: jossain tarvitsemme tehokkaan DGX-aseman, ja jossain riittää vanha pelikortti, kuten RTX 2080Ti. Optimaalisen GPU:n valinta mallikoulutukseen voi vaikuttaa merkittävästi sekä prosessin nopeuteen että kustannustehokkuuteen.
Mielenkiintoista on, että Internetissä on melko vähän artikkeleita GPU-vertailulla koneoppimiseen, mutta hyvin harvat keskittyvät kielimallikoulutuksen nopeuteen. Enimmäkseen löytyy vain päättelytestejä. Kun uusi H100-siru julkaistiin, NVidian raportissa todettiin, että se oli jopa yhdeksän kertaa nopeampi kuin A100 harjoituksissa, mutta tehtävissämme uusi kortti oli vain 90% nopeampi kuin vanha. Vertailun vuoksi pilvipalveluntarjoajillamme oli 2 x hintaero näiden GPU: iden välillä, joten ei ollut mitään järkeä vaihtaa uuteen H100: een säästääkseen rahaa.
Sen lisäksi otimme testiin DGX-aseman, joka koostuu 8 A100 80 Gt: n näytönohjaimesta ja maksaa 10 tuhatta dollaria kuukaudessa. Testin jälkeen kävi selväksi, että tämän aseman hinta/suorituskykysuhde ei sovi meille lainkaan ja tästä rahasta voimme ottaa 66 x RTX 3090, mikä on yhteensä paljon hyödyllisempää.
Käännöskielimalleissamme on jopa 500 miljoonaa parametria (keskimäärin 100-300 miljoonaa). On mahdollista, että jos lisäämme parametrien määrää merkittävästi, DGX: n hinta/suorituskykysuhde on parempi. Tällä hetkellä emme kouluta suuria kielimalleja, jotka voivat kääntää kaikkien kielten välillä kaikissa variaatioissa kerralla, vaan käytämme kullekin kieliparille erillisiä kielimalleja esim. Englanti-saksa. Jokainen tällaisista malleista kestää 120-300 Mb.
On syytä huomata, että eri kielillä on erilaisia määriä tietoja Internetissä, ja vaikka. Esimerkiksi espanjan osalta käännöksillä voi löytää 500 miljoonaa lausetta, mutta tiibetin kaltaisten harvinaisempien kielten malleja koulutettaessa on valittava koneoppimistehtäviin tietty GPU käytettävissä olevien tietojen perusteella. Luodaksemme käännösmallin englannista espanjaksi, käytämme palvelinta, jossa on 4 x RTX 4500 ja 256 Gt RAM. Samalla tiibetin kieltä voidaan kouluttaa RTX 2080 Ti:llä 16 Gt:n RAM-muistilla, koska ei ole mitään järkeä lisätä hermoverkon monimutkaisuutta ja sen seurauksena ottaa tehokkaampi palvelin pienellä määrällä dataa.
Grafiikkaprosessorien ja teoreettisten lukujen valitseminen
Kielimallikoulutus tapahtui sisäisellä Data Studio -alustallamme OpenNMT-tf-kehyksen avulla. Tämä vaihe sisälsi tiedon valmistelun, mallikoulutuksen ja mallivertailun referenssikäännöksellä. FP16:n käyttäminen FP32:n sijaan koulutuksen aikana antoi meille mahdollisuuden lyhentää merkittävästi kielimallien koulutusaikaa heikentämättä käännösten laatua, mutta kaikki GPU:mme eivät tukeneet sitä.
Kun valitset näytönohjaimen, on vakiona ottaa huomioon sellaiset mittarit kuin prosessointiteho (TFLOPS), videomuisti (VRAM), GPU-vertailutulokset, kirjaston ja kehyksen tuki, budjetti ja muut tekijät (grafiikkakortin koko ja lomakekerroin, tehovaatimukset, jäähdytys ja yhteensopivuus järjestelmäsi kanssa). Kun koulutat tekstinluontimalleja, sinun tulee myös pitää mielessä, että eri kielet kuluttavat eri määriä resursseja. Esimerkiksi 1 tavua käytetään koodaamaan yksi merkki latinalaisille kielille, 2 tavua kyrillisille kielille ja 3 tavua kielille, jotka sisältävät hieroglyfejä. Ymmärtää, mitä ominaisuuksia näytönohjaimellasi on, on merkittävä vaikutus oppimisprosessin nopeuteen.
Kun malleja koulutettiin käytettyjen GPU: iden osalta, näytönohjaimet jaettiin käyttöajan mukaan kahteen ryhmään: varhaisiin videokortteihin, joilla tehtiin ensimmäiset oppimisnopeuden mittaukset, ja tällä hetkellä käytössä oleviin kortteihin. Näiden näytönohjainten pääominaisuudet löytyvät vastaavasti taulukosta 1 ja taulukosta 2.
Taulukko 1 - Aiemmin käytetyt grafiikkaprosessorit ja niiden tekniset parametrit
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 |
Huomautuksia
1. CUDA:n ollessa yli 7,0, FP16:n käyttö antaa vauhtia harjoitusnopeudelle riippuen CUDA-versiosta ja itse näytönohjaimen ominaisuuksista.
2. Jos näytönohjaimen spesifikaatio osoittaa, että FP16:n ja FP32:n suorituskykysuhde on suurempi kuin 1:1, niin sekatarkkuuden käyttö taataan harjoitusnopeuden lisäämiseksi spesifikaatiossa määritellyllä määrällä. Esimerkiksi Quadro RTX 6000:lle FP16 TFLOPS -arvo 32,62 (2:1) nopeuttaa treeniä vähintään kaksi kertaa (käytännössä 2,4 kertaa)
Taulukko 2 - Tällä hetkellä käytetyt GPU-mallit ja niiden pääominaisuudet
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:n, TFLOPS:n ja FP32:n TFLOPS:n arvot on otettu GPU:n spesifikaatioista
GPU-koulutus ja testausprosessi
Mallit koulutettiin 18 GPU:n sarjalla. Neuraaliverkkokoulutuksen prosessissa käytimme lukuisia kielipareja (yli sata kieltä). GPU-testit ovat auttaneet tunnistamaan, mikä laitteisto toimii parhaiten tietyissä tehtävissä. Kielipariemme koulutuksen aikana perustana otettiin seuraavat hermoverkkoparametrit:
- vocab koko = 30 000
- numunits = 768
- kerrokset = 6
- päät = 16
- sisämitta = 4 096
Ensinnäkin karakterisoidaan ensimmäiseen ryhmään kuuluneet GPU:t taulukon 1 perusteella. Indikaattorien vertailun perustaksi otetaan aika minuutteina ja sekunteina, joka kuluu mallin kouluttamiseen likimääräisellä 1 000 vaiheen nopeudella ja 100 000 yksikön eräkoon kerrannaisella.
Korostamme, että ensimmäiselle ryhmälle nopeusmittaukset suoritettiin käyttämällä kohdistus mekanismi ja vain käyttö FP32. Ilman tätä mekanismia oppimisnopeus joillakin palvelimilla voi olla paljon nopeampi.
Kohdistamismekanismi mahdollistaa alamerkkijonojen sovittamisen perus- ja käännettyyn tekstiin. Sitä tarvitaan muotoillun tekstin, kuten verkkosivujen, kääntämiseen, kun lauseen alimerkkijono voidaan korostaa eri fontilla ja se tulee kääntää korostuksella.
Ottaen huomioon edellä mainitut hermoverkon parametrit, parhaan ajan ensimmäisestä taulukosta osoitti GPU Nvidia H100 oppimisajalla 22 minuuttia, ja väliajan osoitti saman brändin GeForce RTX 4060 Ti GPU 72 minuutin oppimisajalla ja viimeisen paikan otti GPU Tesla V100-SXM 2 140 minuutin oppimisajalla.
GPU-testissä oli myös kahdeksan Nvidia A10 - korttia, joiden oppimiskäyrä oli 20 minuuttia ja 28 sekuntia, kaksi Nvidia A40 - korttia, joiden aika oli 56 minuuttia, ja kaksi Tesla V100-SXM - korttia, jotka olivat 86 minuutin kohdalla. Saman GPU-sarjan useiden korttien samanaikainen käyttö voi nopeuttaa mallien koulutusprosessia ja näyttää lähes saman ajan GPU:illa, joilla on suurempi kapasiteetti, mutta tällainen tekniikka ei välttämättä ole taloudellisesti ja menettelyllisesti riittävän rationaalinen. Oppimisnopeusmittausten tulokset ovat havaittavissa taulukossa 3.
Taulukko 3 - Harjoitusaikamittaukset aiemmin käytetyistä graafisista kartoista
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 |
Suoritetaan seuraavaksi tällä hetkellä käytössä olevien grafiikkakaasupolkimien vertaileva analyysi (Taulukko 2). Tälle grafiikkaprosessoriryhmälle suoritettiin nopeusmittaukset käyttämällä kohdistus mekanismi sekä FP16:n ja FP32:n käyttö. Nopeusmittaukset, mukaan lukien tämä mekanismi ja sekoitettu tarkkuus, esitetään alla taulukoissa 4 ja 5.
Joten mitattuamme GPU:iden nopeuden tästä taulukosta voidaan sanoa, että ensimmäisen sijan otti RTX A4500 -sarjan GPU 31 minuutin harjoitusajalla, mutta on korostettava, että tällainen harjoitusmallien nopeus saatiin lisäämällä käytetyn GPU:n yksiköiden määrä jopa 4. Tästä tosiasiasta piittaamatta edellä mainitun GPU:n harjoitusnopeus on paljon korkeampi, mikä asettaa sen toiseksi viimeiselle sijalle finaalipöydässä.
Quadro RTX 6000 -sarjan GPU, jonka oppimisaika on 47 minuuttia, on toisella sijalla. On huomattava, että tällainen harjoitusnopeus riippuu käänteisesti käytetyn prosessorin yksiköiden lukumäärästä, joka on yhtä suuri kuin neljä. Vain yhden tällaisen GPU:n käyttö aiheuttaisi noin 3,2-kertaisen nopeushäviön ja siten noin 153 minuuttia ja asettaisi sen viimeiselle sijalle.
Kolmannen rivin otti TITAN RTX -sarjan GPU ajalla 75 minuuttia ja 85 sekuntia. Tämä oppimisnopeuspistemäärä johtuu 2 prosessorin käytöstä, mikä lyhensi mallin harjoitusaikaa.
Kiistaton johtaja harjoitusnopeudessa yhden yksikön määrässä on varmasti GeForce RTX 3090 -sarjan GPU ajalla 78 minuuttia ja 26 sekuntia. Tämän GPU:n yksiköiden määrän lisääminen nopeuttaa mallin harjoitusnopeutta, joka ohittaa selvästi kaikki edellä mainitut GPU-mallit. Mallikoulutuksen aikamittausten tiedot ovat nähtävissä taulukossa 4.
Taulukko 4 - Kielimallin harjoitusnopeuden vertaileva analyysi aiemmin käytetyistä GPU:ista
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 |
Seuraavat harjoitusnopeusmittaukset suoritettiin FP16:lla. Verrattuna FP32:een puolitarkkuus mahdollistaa malliharjoittelun aikana kulutetun muistin määrän vähentämisen ja nopeuttaa GPU:n laskentaa. Esityksen tarkkuus on pienempi kuin FP32:n käytössä.
Mittaamalla edellisen taulukon FP32: ta käyttävien mallien treeniaikaa voidaan sanoa, että hermoverkon treeniaika lyheni lähes kaksi kertaa. Suorituskyvyn mittaustulosten perusteella voimme havaita taulukon 4 koneoppimisen GPU-vertailuarvoista, että GPU:iden sijainnit pysyivät suurelta osin ennallaan. Quadro RTX 6000 -sarjan kortti nousi viidenneltä sijalta kuudenneksi voittaen GeForce RTX 3090 GPU:n 96 sekunnilla. Lopulliset luvut on esitetty taulukossa 5.
Taulukko 5 - Kielimallin harjoitusnopeuden vertaileva analyysi aiemmin käytetyistä GPU:ista
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 |