Ми стално обучавамо језичке моделе за наш рад. Наш тим користи десетине различитих видео картица изабраних за различите задатке: негде нам је потребна моћна ДГКС станица, а негде је довољна стара играчка картица као што је РТКС 2080Ти. Избор оптималног ГПУ-а за обуку модела може значајно утицати и на брзину и на економичност процеса.
Оно што је интересантно је да постоји доста чланака на интернету са ГПУ поређењем за машинско учење, али врло мало се фокусира на брзину за обуку језичких модела. Углавном се налазе само референтни тестови. Када је објављен нови Х100 чип, НВидијин извештај је навео да је на тренингу био и до девет пута бржи од А100, али за наше задатке нова картица је била само 90% бржа од старе. Поређења ради, наши провајдери у облаку су имали разлику у цени од 2к између ових ГПУ-а, тако да није било смисла прећи на нови Х100 да би уштедели новац.
Поред тога, узели смо за тест ДГКС станицу, која се састоји од 8 А100 80ГБ графичких картица и кошта 10 хиљада долара месечно. Након теста, постало је јасно да однос цена/перформансе ове станице нам уопште не одговара и за тај новац можемо узети 66 к РТКС 3090, што ће укупно бити много корисније.
Наши модели преводилачких језика имају до 500 милиона параметара (у просеку 100 до 300 милиона). Могуће је да ако значајно повећамо број параметара, однос цена/перформансе ДГКС-а ће бити бољи. Тренутно не обучавамо велике језичке моделе који могу да преводе између свих језика у свим варијацијама одједном, већ користимо одвојене језичке моделе за сваки језички пар, нпр. Енглеско-немачки. Сваки од таквих модела траје од 120 до 300 Мб.
Важно је напоменути да различити језици имају различите количине података на Интернету, и док. На пример, за шпански, можете пронаћи 500 милиона реченица са преводима, али када се обучавају модели за ређе језике као што су тибетански, морате да изаберете одређени ГПУ за задатке машинског учења на основу доступних података. Да бисмо креирали модел превођења са енглеског на шпански, користимо сервер са 4 к РТКС 4500 и 256ГБ РАМ-а. Истовремено, тибетански језик се може обучити на РТКС 2080 Ти са 16ГБ РАМ-а, јер нема смисла повећавати сложеност неуронске мреже и, као резултат тога, узети моћнији сервер са малом количином података.
Избор графичких процесора и теоријских фигура
Обука језичког модела одржана је на нашој интерној платформи Дата Студио користећи ОпенНМТ-тф оквир. Ова фаза је укључивала припрему података, обуку модела и поређење модела са референтним преводом. Коришћење ФП16 уместо ФП32 током обуке омогућило нам је да значајно смањимо време обуке језичких модела без деградирања квалитета превођења, али то нису подржали сви наши ГПУ-ови.
Приликом избора графичког процесора, стандардно је узети у обзир такве метрике као што су снага обраде (ТФЛОПС), видео меморија (ВРАМ), ГПУ бенцхмарк резултати, подршка за библиотеку и оквир, буџет и други фактори (величина графичке картице и фактор форме, захтеви за снагом, хлађење и компатибилност са вашим системом). Приликом обуке модела генерисања текста, такође треба имати на уму да ће различити језици трошити различите количине ресурса. На пример, 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. Са ЦУДА већи од 7.0, користећи ФП16 ће дати подстицај у брзини тренинга, у зависности од ЦУДА верзије и карактеристика саме графичке картице.
2. Ако спецификација графичке картице указује да је однос ФП16 и ФП32 перформанси већи од 1 до 1, онда ће се употребом мешовите прецизности гарантовати повећање брзине тренинга за износ наведен у спецификацији. На пример, за Куадро РТКС 6000 вредност ФП16 ТФЛОПС од 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 |
* - вредности за ФП16, ТФЛОПС и ФП32, ТФЛОПС се узимају из спецификација по ГПУ
ГПУ процес обуке и тестирања
Модели су обучени помоћу сета од 18 ГПУ-а. У процесу обуке неуронских мрежа користили смо бројне језичке парове (више од стотину језика). ГПУ тестови су помогли да се утврди који хардвер најбоље функционише за одређене задатке. Током обуке наших језичких парова, као основа су узети следећи параметри неуронске мреже:
- величина воцаб = 30 000
- нумунитс = 768
- слојеви = 6
- главе = 16
- унутрашња димензија = 4 096
Прво, хајде да карактеришемо ГПУ-ове који су припадали првој групи заснованој на Табели 1. Време у минутима и секундама проведено на обуци модела при приближној брзини од 1.000 корака и величина серије више од 100.000 јединица биће узета као основа за упоређивање индикатора.
Наглашавамо да су за прву групу извршена мерења брзине уз употребу поравнање механизам и само коришћење ФП32. Без коришћења овог механизма брзина учења на неким серверима може бити много бржа.
Механизам поравнања омогућава подударање подниски у основи и преведеном тексту. Потребно је превести форматирани текст, као што су веб странице, када се подстринг у реченици може истакнути у другом фонту и треба га превести са истицањем.
Узимајући у обзир горе наведене параметре неуронске мреже, најбоље време из прве табеле показала је ГПУ Нвидиа Х100 са временом учења од 22 минута а средње време је показао ГПУ истог бренда ГеФорце РТКС 4060 Ти са временом учења од 72 минута, а последње место је заузео ГПУ Тесла В100-СКСМ 2 са временом учења од 140 минута.
Такође је било осам Нвидиа А10 картица у ГПУ тесту са кривом учења од 20 минута и 28 секунди, две Нвидиа А40 картице са временом од 56 минута и две Тесла В100-СКСМ картице које су трајале 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). За ову групу графичких процесора, мерења брзине су извршена помоћу поравнање механизам, као и коришћење ФП16 и ФП32. Мерења брзине, укључујући овај механизам и мешовиту прецизност, биће приказана испод у табелама 4 и 5 респективно.
Дакле, пошто смо измерили брзину ГПУ-а из ове табеле, можемо рећи да је прво место заузео ГПУ серије РТКС А4500 са временом тренинга од 31 минут, али треба нагласити да је таква брзина модела обуке добијена повећањем броја јединица коришћеног ГПУ-а до 4. Не обазирући се на ову чињеницу, брзина тренинга поменуте ГПУ ће бити много већа, што ће га ставити на претпоследње место у завршној табели.
Куадро РТКС 6000 серија ГПУ са временом учења од 47 минута је на другом месту. Треба напоменути да је таква брзина тренинга обрнуто условљена бројем јединица коришћеног процесора, што је једнако четири. Коришћење само једног таквог ГПУ-а би дало губитак брзине од око 3,2 пута и последично би било отприлике 153 минута и ставило га на последње место.
Трећу линију је заузела ТИТАН РТКС серија ГПУ са временом од 75 минута и 85 секунди. Ова брзина учења резултат је због употребе 2 процесора, што је смањило време тренинга модела.
Несумњиви лидер у погледу брзине тренинга у броју једне јединице дефинитивно ће бити ГеФорце РТКС 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 |
Следећа мерења брзине тренинга извршена су помоћу ФП16. У поређењу са ФП32, полупрецизност омогућава смањење количине меморије потрошене током тренинга модела и убрзавање израчунавања на ГПУ-у. Тачност репрезентације ће бити нижа него код употребе ФП32.
Мерење времена тренинга модела који користе ФП32 из претходне табеле може се рећи да је време тренинга неуронске мреже смањено за скоро два пута. На основу резултата мерења перформанси, можемо посматрати из ГПУ бенчмаркова за машинско учење у Табели 4 да су позиције ГПУ-а остале углавном непромењене. Картица серије Куадро РТКС 6000 померила се са пете позиције на шесту, победивши ГеФорце РТКС 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 |