Ние постојано ги обучуваме јазичните модели за нашата работа. Нашиот тим користи десетици различни видео картички избрани за различни задачи: некаде ни треба моќна DGX станица, а некаде стара картичка за игри како RTX 2080Ti е доволно. Изборот на оптимален графички процесор за обука на модели може значително да влијае и на брзината и на исплатливоста на процесот.
Она што е интересно е дека има неколку статии на интернет со споредба на графичкиот процесор за машинско учење, но многу малку се фокусираат на брзината за обука за јазични модели. Најчесто се наоѓаат само тестови за заклучување. Кога беше објавен новиот чип H100, во извештајот на NVidia беше наведено дека е до девет пати побрз од A100 на тренинг, но за нашите задачи, новата картичка беше само 90% побрза од старата. За споредба, нашите провајдери на облак имаа разлика во цената од 2x помеѓу овие графички процесори, така што немаше смисла да се префрлите на новиот H100 за да заштедите пари.
Покрај тоа, направивме тест на DGX станица, која се состои од 8 A100 80GB графички картички и чини 10 илјади долари месечно. По тестот, стана јасно дека односот цена/перформанси на оваа станица воопшто не ни одговара и за овие пари можеме да земеме 66 x RTX 3090, што вкупно ќе биде многу покорисно.
Нашите преведувачки јазични модели имаат до 500 милиони параметри (100 до 300 милиони во просек). Можно е ако значително го зголемиме бројот на параметри, односот цена/перформанси на DGX ќе биде подобар. Во моментов, ние не тренираме големи јазични модели кои можат да преведуваат помеѓу сите јазици во сите варијации одеднаш, туку користиме посебни јазични модели за секој јазичен пар, на пример. Англиско-германски. Секој од таквите модели трае од 120 до 300 Mb.
Вреди да се напомене дека различни јазици имаат различни количини на податоци на Интернет, и додека. На пример, за шпански, можете да најдете 500 милиони реченици со преводи, но кога тренирате модели за поретки јазици како тибетскиот, треба да изберете специфичен графички процесор за задачи за машинско учење врз основа на достапните податоци. За да креираме модел на превод од англиски на шпански, користиме сервер со 4 x RTX 4500 и 256GB RAM. Во исто време, тибетскиот јазик може да се обучи на RTX 2080 Ti со 16GB RAM меморија, бидејќи нема смисла да се зголеми сложеноста на невронската мрежа и, како резултат на тоа, да се земе помоќен сервер со мала количина на податоци.
Избор на графички процесори и теоретски бројки
Обуката за јазични модели се одржа на нашата внатрешна платформа Data Studio користејќи ја рамката OpenNMT-tf. Оваа фаза вклучуваше подготовка на податоци, обука за модели и споредба на модели со референтен превод. Користењето на FP16 наместо FP32 за време на обуката ни овозможи значително да го намалиме времето на обука на јазичните модели без да го деградираме квалитетот на преводот, но не сите наши графички процесори го поддржаа тоа.
При изборот на графички процесор, стандардно е да се земат предвид метриките како што се процесорската моќ (TFLOPS), видео меморијата (VRAM), резултатите од реперот на графичкиот процесор, поддршката за библиотеката и рамката, буџетот и други фактори (големина на графичката картичка и фактор на форма, барања за моќност, ладење и компатибилност со вашиот систем). Кога тренирате модели за генерирање текст, исто така треба да имате на ум дека различни јазици ќе трошат различни количини на ресурси. На пример, 1 бајт се користи за кодирање на еден знак за латински јазици, 2 бајти за кирилични јазици и 3 бајти за јазици што содржат хиероглифи. Разбирањето кои карактеристики ќе ги има вашата графичка картичка има значително влијание врз брзината на процесот на учење.
При обуката на моделите во однос на користените графички процесори, видео картичките беа поделени во две групи според периодот на употреба: рани видео картички, кои се користеа за да се направат првите мерења на брзината на учење и картички кои моментално се користат. Главните карактеристики на овие графички картички може да се најдат во Табела 1 и Табела 2, соодветно.
Табела 1 - Претходно користени графички процесори и нивните технички параметри
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 |
Белешки
1. Со CUDA поголема од 7,0, користењето на FP16 ќе даде зголемување на брзината на обуката, во зависност од верзијата CUDA и карактеристиките на самата графичка картичка.
2. Ако спецификацијата на графичката картичка покажува дека односот на перформансите FP16 и FP32 е поголем од 1 спрема 1, тогаш користењето мешана прецизност ќе биде загарантирано да ја зголеми брзината на обуката за износот наведен во спецификацијата. На пример, за Quadro RTX 6000 вредноста на FP16 TFLOPS од 32,62 (2:1) ќе го забрза тренингот за најмалку два пати (2,4 пати во пракса)
Табела 2 - Во моментов се користат модели на графички процесор и нивните главни карактеристики
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 и FP32, TFLOPS се земени од спецификациите по графички процесор
Процес на обука и тестирање на графичкиот процесор
Моделите беа обучени со помош на сет од 18 графички процесори. Во процесот на обука за невронски мрежи, користевме бројни јазични парови (повеќе од сто јазици). Тестовите на графичкиот процесор помогнаа да се идентификува кој хардвер најдобро функционира за одредени задачи. За време на обуката на нашите јазични парови, како основа беа земени следните параметри на невронската мрежа:
- големина на вокаб = 30 000
- броеви = 768
- слоеви = 6
- глави = 16
- внатрешна димензија = 4 096
Прво, ајде да ги карактеризираме графичките процесори кои припаѓаа на првата група врз основа на Табела 1. Времето во минути и секунди поминато за обука на моделот со приближна брзина од 1.000 чекори и сериска големина повеќекратна од 100.000 единици ќе се земе како основа за споредување на индикаторите.
Нагласуваме дека за првата група, мерењата на брзината беа извршени со употреба на усогласување механизам и само користење FP32. Без користење на овој механизам, брзината на учење на некои сервери може да биде многу поголема.
Механизмот за порамнување овозможува усогласување на поднизите во основата и преведениот текст. Потребно е да се преведе форматиран текст, како што се веб-страниците, кога поднизата во реченицата може да биде означена со различен фонт и треба да се преведе со истакнување.
Земајќи ги предвид горенаведените параметри на невронската мрежа, најдоброто време од првата табела го покажа графичкиот процесор Nvidia H100 со време на учење од 22 минути а средното време го покажа графичкиот процесор на истиот бренд GeForce RTX 4060 Ti со време на учење од 72 минути, а последното место го зазеде графичкиот процесор Tesla V100-SXM 2 со време на учење од 140 минути.
Имаше и осум Nvidia A10 картички на тестот за графички процесор со крива на учење од 20 минути и 28 секунди, две Nvidia A40 картички со време од 56 минути и две Tesla V100-SXM картички кои дојдоа за 86 минути. Истовремената примена на повеќе картички од иста серија на графички процесор може да го забрза процесот на обука на моделите и да покаже речиси исто време со графичките процесори кои имаат повисоки капацитети, но таквата техника можеби не е доволно финансиски и процедурално рационална. Резултатите од мерењата на брзината на учење може да се набљудуваат во Табела број 3.
Табела 3 - Мерења на времето за обука на претходно користените графички карти
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 |
Следно, ајде да спроведеме компаративна анализа на графичките педали за гас што моментално се користат (Табела 2). За оваа група графички процесори, мерењата на брзината беа извршени со помош на усогласување механизам, како и користење на FP16 и FP32. Мерењата на брзината, вклучувајќи го овој механизам и мешаната прецизност, ќе бидат претставени подолу во табелите 4 и 5 соодветно.
Значи, откако ја измеривме брзината на графичките процесори од оваа табела, можеме да кажеме дека првото место го зазеде графичкиот процесор од серијата RTX A4500 со време на обука од 31 минута, но треба да се нагласи дека таквата брзина на моделите за обука е добиена со зголемување на бројот на единици на користениот графички процесор до 4. Занемарувајќи го овој факт, брзината на тренирање на гореспоменатиот графички процесор ќе биде многу поголема, што ќе го стави на претпоследното место во финалната табела.
На второто место е графичкиот процесор од серијата Quadro RTX 6000 со време на учење од 47 минути. Треба да се напомене дека таквата брзина на обука е обратно условена од бројот на единици на користениот процесор, што е еднакво на четири. Користењето само на еден таков графички процесор би дало губење на брзината од околу 3,2 пати и, следствено, би било приближно 153 минути и би го поставило на последното место.
Третата линија ја презеде графичкиот процесор од серијата TITAN RTX со време од 75 минути и 85 секунди. Овој резултат за брзина на учење се должи на употребата на 2 процесори, што го намали времето за обука на моделот.
Несомнениот лидер во однос на брзината на обуката по број на една единица дефинитивно ќе биде графичкиот процесор од серијата GeForce RTX 3090 со време од 78 минути и 26 секунди. Зголемувањето на бројот на единици на овој графички процесор ќе ја забрза брзината на обука на моделот, што јасно ќе ги надмине сите горенаведени модели на графички процесор. Податоците за мерењата на времето за обука на моделот може да се видат во Табела 4.
Табела 4 - Компаративна анализа на брзината на обука на јазичен модел на претходно користени графички процесори
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 |
Следниве мерења на брзината на обуката беа извршени со помош на FP16. Во споредба со FP32, полупрецизноста овозможува намалување на количината на меморија што се троши за време на обуката на моделот и забрзување на пресметувањето на графичкиот процесор. Точноста на претставата ќе биде помала отколку со употребата на FP32.
Мерејќи го времето за обука на моделите кои користат FP32 од претходната табела, можеме да кажеме дека времето за обука на невронската мрежа е намалено за речиси два пати. Врз основа на резултатите од мерењето на перформансите, можеме да забележиме од одредниците на графичкиот процесор за машинско учење во Табела 4 дека позициите на графичките процесори останале главно непроменети. Картичката од серијата Quadro RTX 6000 се искачи од петтата позиција на шестата, победувајќи го графичкиот процесор GeForce RTX 3090 за 96 секунди. Конечните броеви се прикажани во Табела 5.
Табела 5 - Компаративна анализа на брзината на обука на јазичен модел на претходно користени графички процесори
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 |