Folyamatosan képezzük a nyelvi modelleket a munkánkhoz. Csapatunk több tucat különböző videokártyát használ, amelyeket különböző feladatokhoz választottak: valahol szükségünk van egy erős DGX állomásra, és valahol elég egy régi játékkártya, például az RTX 2080Ti. Az optimális GPU kiválasztása a modellképzéshez jelentősen befolyásolhatja a folyamat sebességét és költséghatékonyságát.
Az érdekes az, hogy jó néhány cikk található az interneten GPU-összehasonlítással a gépi tanuláshoz, de nagyon kevés a sebességre összpontosít a nyelvi modellképzéshez. Többnyire csak következtetési tesztek találhatók. Amikor megjelent az új H100 chip, az NVidia jelentése szerint akár kilencszer gyorsabb volt az A100-nál az edzéseken, de a mi feladatainkhoz az új kártya csak 90%-kal volt gyorsabb a réginél. Összehasonlításképpen, felhőszolgáltatóink 2x árkülönbséggel rendelkeztek ezen GPU-k között, így nem volt értelme az új H100-ra váltani, hogy pénzt takarítsunk meg.
Ezen kívül teszteltünk egy DGX állomást, amely 8 db A100 80GB-os grafikus kártyából áll, és havi 10 ezer dollárba kerül. A teszt után kiderült, hogy ennek az állomásnak az ár/teljesítmény aránya egyáltalán nem felel meg nekünk és ezért a pénzért 66 x RTX 3090-et vehetünk fel, ami összességében sokkal hasznosabb lesz.
Fordítási nyelvi modelljeink akár 500 millió paraméterrel rendelkeznek (átlagosan 100-300 millió). Elképzelhető, hogy ha jelentősen növeljük a paraméterek számát, akkor a DGX ár/teljesítmény aránya jobb lesz. Jelenleg nem olyan nagy nyelvi modelleket képezünk, amelyek képesek egyszerre minden nyelv között minden variációban fordítani, hanem minden nyelvpárhoz külön nyelvi modelleket használunk pl. Angol-német. Mindegyik ilyen modell 120-300 Mb-ot vesz igénybe.
Érdemes megjegyezni, hogy a különböző nyelvek különböző mennyiségű adatot tartalmaznak az interneten, és miközben. Például a spanyol esetében 500 millió mondatot találhat fordításokkal, de a ritkább nyelvekre, például a tibetire vonatkozó modellek betanításakor a rendelkezésre álló adatok alapján ki kell választania egy adott GPU-t a gépi tanulási feladatokhoz. Angolról spanyolra fordítási modell létrehozásához 4 x RTX 4500 és 256GB RAM-mal rendelkező szervert használunk. Ugyanakkor a tibeti nyelvet RTX 2080 Ti-n lehet betanítani 16GB RAM-mal, mivel nincs értelme növelni a neurális hálózat komplexitását, és ennek eredményeként egy erősebb szervert venni kis mennyiségű adattal.

Grafikus processzorok és elméleti ábrák kiválasztása
A nyelvi modell képzés belső Data Studio platformunkon zajlott az OpenNMT-tf keretrendszer segítségével. Ez a fázis magában foglalta az adatok előkészítését, a modellképzést és a modellek összehasonlítását referenciafordítással. Az FP16 használata az FP32 helyett a képzés során lehetővé tette számunkra, hogy jelentősen csökkentsük a nyelvi modellek képzési idejét a fordítási minőség romlása nélkül, de ezt nem minden GPU-nk támogatta.
A grafikus processzor kiválasztásakor alapfelszereltség az olyan mérőszámok figyelembevétele, mint a feldolgozási teljesítmény (TFLOPS), a videomemória (VRAM), a GPU benchmark eredményei, a könyvtár- és kerettámogatás, a költségvetés és egyéb tényezők (grafikus kártya mérete és formája, teljesítményigény, hűtés és kompatibilitás a rendszerrel). A szöveggenerálási modellek betanításakor azt is szem előtt kell tartania, hogy a különböző nyelvek különböző mennyiségű erőforrást fogyasztanak. Például 1 bájtot használnak egy karakter kódolására a latin nyelveknél, 2 bájtot a cirill nyelveknél és 3 bájtot a hieroglifákat tartalmazó nyelveknél. Annak megértése, hogy a grafikus kártya milyen tulajdonságokkal fog rendelkezni, jelentős hatással van a tanulási folyamat sebességére.
A modellek használt GPU-kra való betanításakor a videokártyákat a használati időszak szerint két csoportra osztották: a korai videokártyákra, amelyekkel a tanulási sebesség első méréseit végezték, és a jelenleg használt kártyákra. Ezeknek a grafikus kártyáknak a főbb jellemzői az 1., illetve a 2. táblázatban találhatók.
1. táblázat - Korábban használt grafikus processzorok és műszaki paramétereik
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 |
Jegyzetek
1. Ha a CUDA nagyobb, mint 7,0, az FP16 használata növeli az edzés sebességét, a CUDA verziótól és magának a grafikus kártyának a jellemzőitől függően.
2. Ha a grafikus kártya specifikációja azt jelzi, hogy az FP16-FP32 teljesítményarány nagyobb, mint 1:1, akkor a vegyes pontosság garantáltan növeli a betanítási sebességet a specifikációban meghatározott mértékben. Például a Quadro RTX 6000 esetében az FP16 TFLOPS 32,62 (2:1) értéke legalább kétszer felgyorsítja az edzést (a gyakorlatban 2,4-szer)
2. táblázat - Jelenleg használt GPU modellek és főbb jellemzőik
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 |
* - az FP16, TFLOPS és FP32, TFLOPS értékei a GPU-nkénti specifikációkból származnak
GPU képzési és tesztelési folyamat
A modelleket 18 GPU-ból álló készlettel képezték ki. A neurális hálózati képzés folyamatában számos nyelvpárt (több mint száz nyelvet) használtunk. A GPU-tesztek segítettek azonosítani, hogy melyik hardver teljesít a legjobban bizonyos feladatokhoz. Nyelvpárjaink betanítása során a következő neurális hálózati paramétereket vettük alapul:
- vocab mérete = 30 000
- numunits = 768
- = 6 réteg
- fejek = 16
- belső méret = 4 096
Először is jellemezzük az első csoportba tartozó GPU-kat az 1. táblázat alapján. A mutatók összehasonlításának alapjául a modell hozzávetőlegesen 1000 lépéses sebességgel és 100 000 egység kötegméretű többszörösével történő betanítására fordított percekben és másodpercekben kifejezett idő szolgál.
Hangsúlyozzuk, hogy az első csoportnál a sebességméréseket a igazítás mechanizmus és csak használ FP32. Ennek a mechanizmusnak a használata nélkül a tanulási sebesség egyes szervereken sokkal gyorsabb lehet.
Az igazítási mechanizmus lehetővé teszi az alap- és a lefordított szöveg részkarakterláncainak egyeztetését. Formázott szöveg, például weboldalak fordítására van szükség, ha egy mondat részkarakterlánca más betűtípussal is kiemelhető, és a kiemeléssel együtt kell lefordítani.
A neurális hálózat fent említett paramétereit figyelembe véve az első táblázatból a legjobb időt a GPU Nvidia H100 mutatta 22 perces tanulási idővel, a köztes időt pedig az azonos márkájú GeForce RTX 4060 Ti GPU mutatta 72 perces tanulási idővel, az utolsó helyet pedig a GPU Tesla V100-SXM 2 140 perces tanulási idővel.
A GPU-tesztben nyolc Nvidia A10 kártya is szerepelt 20 perc 28 másodperces tanulási görbével, két Nvidia A40 kártya 56 perces idővel és két Tesla V100-SXM kártya, amelyek 86 percesek voltak. Ugyanazon GPU-sorozat több kártyájának egyidejű alkalmazása felgyorsíthatja a modellek betanítási folyamatát, és közel azonos időt mutathat a nagyobb kapacitású GPU-kkal, de egy ilyen technika anyagilag és eljárásilag nem biztos, hogy elég racionális. A tanulási sebességmérések eredményei a 3. számú táblázatban figyelhetők meg.
3. táblázat - Képzési idő mérések a korábban használt grafikus térképeken
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 |
Ezután végezzük el a jelenleg használatban lévő grafikus gázpedálok összehasonlító elemzését (2. táblázat). A grafikus processzorok ezen csoportja esetében a sebességméréseket a igazítás mechanizmus, valamint az FP16 és FP32 használata. A sebességméréseket, beleértve ezt a mechanizmust és a vegyes pontosságot, az alábbi 4. és 5. táblázat mutatja be.
Tehát a GPU-k sebességét ebből a táblázatból mérve azt mondhatjuk, hogy az első helyet az RTX A4500 sorozatú GPU szerezte meg 31 perces edzési idővel, de hangsúlyozni kell, hogy ilyen edzési sebességet a modellek a használt GPU egységeinek számát 4-re növelve. Ezt a tényt figyelmen kívül hagyva a fent említett GPU edzési sebessége sokkal nagyobb lesz, ami a döntő asztal utolsó előtti helyére helyezi.
A második helyen a Quadro RTX 6000 sorozatú GPU áll 47 perces tanulási idővel. Megjegyzendő, hogy egy ilyen betanítási sebességet fordítottan kondicionál a használt processzor egységeinek száma, amely négynek felel meg. Csak egy ilyen GPU használata körülbelül 3,2-szeres sebességveszteséget okozna, következésképpen körülbelül 153 perc lenne, és az utolsó helyre helyezné.
A harmadik sort a TITAN RTX sorozatú GPU vette át 75 perc 85 másodperces idővel. Ez a tanulási sebesség pontszám 2 processzor használatának köszönhető, ami csökkentette a modell betanítási idejét.
Az edzési sebesség tekintetében megkérdőjelezhetetlen vezető egy egység számában mindenképpen a GeForce RTX 3090 sorozatú GPU lesz 78 perc 26 másodperces idővel. Ennek a GPU-nak az egységszámának növelése felgyorsítja a modell betanítási sebességét, amely egyértelműen megelőzi az összes fent említett GPU-modellt. A modell betanítási idő mérésére vonatkozó adatok a 4. táblázatban láthatók.
4. táblázat - A nyelvi modell képzési sebességének összehasonlító elemzése korábban használt GPU-kon
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 |
A következő edzési sebességméréseket végeztük az FP16 segítségével. Az FP32-höz képest a félprecizitás lehetővé teszi a modelloktatás során felhasznált memória mennyiségének csökkentését és a GPU-n történő számítás felgyorsítását. Az ábrázolás pontossága kisebb lesz, mint az FP32 használatával.
Az előző táblázatból FP32-t használó modellek betanítási idejét mérve elmondhatjuk, hogy a neurális hálózat betanítási ideje közel kétszeresére csökkent. A teljesítménymérési eredmények alapján a 4. táblázatban szereplő gépi tanulási GPU benchmarkokból megfigyelhetjük, hogy a GPU-k pozíciói nagyjából változatlanok maradtak. A Quadro RTX 6000 sorozatú kártya az ötödik pozícióból a hatodik helyre lépett feljebb, 96 másodperccel megelőzve a GeForce RTX 3090 GPU-t. A végső számokat az 5. táblázat tartalmazza.
5. táblázat - A nyelvi modell képzési sebességének összehasonlító elemzése korábban használt GPU-kon
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 |