NVIDIA H100 көмегімен Llama 2 70B қуаттандыру
Жеделдетілген LLM инференциясының сапары

Perplexity жауап беру қозғалтқышында өнімділікке ұмтылу бізді NVIDIA және AWS ұсынатын ең соңғы технологияларды қолдануға итермелейді. Бұл блогта біз соңғы тәжірибелеріміздің нәтижелерін бөлісуге қуаныштымыз: әртүрлі аппараттық және бағдарламалық параметрлер бойынша Llama 2 70B инференциясын салыстыру.
Біздің LLM инференция платформамыз pplx-api ашық бастапқы кодты кітапханалармен жұмыс істейтін заманауи стекке негізделген. Қазан айында pplx-api жалпыға қолжетімді бета-версиясы басталғаннан бері біз ауқымдылық мәселелерін шешіп, мазмұнды масштабқа қол жеткізу үшін конфигурацияны қалай оңтайландыру керектігін үйрендік. Бұл бізге келесі жетекші сұрақтармен тәжірибе жүргізуге түрткі болды:
Барлық басқа параметрлер өзгеріссіз қалғанда, GPU-ларды NVIDIA A100-ден NVIDIA H100-ге ауыстырудан қандай таза өнімділік өсімі алынады?
H100 қолдау қосатын 8 биттік жылжымалы нүкте (fp8) кванттауының тиімділік өсімі қандай? Бұл кванттаудың дәлдік шығыны қандай?
Тензорлық параллелизм мен топтама өлшемі кідіріс пен токен өткізу қабілетіне қалай әсер етеді?
Жоғарыда айтылғандарды ескере отырып, қай конфигурация өнімділік пен шығын тиімділігінің ең ауқымды тепе-теңдігін қамтамасыз етеді?
Тәжірибелік қондырғы
Желілік кідірісті болдырмау үшін біз келесі тәжірибені жергілікті көрсеткіштер сериясы ретінде орындадық.
Негізгі көрсеткіштер:
Кідіріс: Инференция серверінің толық жауапты жасауға кеткен жалпы уақыты.
Өткізу қабілеті: Инференция сервері барлық пайдаланушылар мен сұраулар бойынша секундына, әр GPU үшін шығара алатын шығыс токендерінің саны.
Тұрақтылар:
Келесі факторлар негізгі көрсеткіштерге әсер етеді, сондықтан біз оларды тәжірибенің әртүрлі сынақтарында тұрақты ұстадық.
ЖИ моделі
Өнімділік LLM өлшеміне қарай масштабталады. Көбірек параметрлер баяу инференцияға әкелетін көбірек есептеулерді талап етеді. Мысалы, басқа параметрлер тең болғанда, Llama 2 13B Llama 2 70B қарағанда жылдамырақ. Біз бұл тәжірибеде Llama 2 70B моделінде қаламыз, себебі біз ең қабілетті ашық бастапқы кодты модельдерге қызмет көрсетуді оңтайландырғымыз келеді.
Кіріс/шығыс токендер жиынтығы
Әрбір үлгі сұрау/жауап жұбындағы кіріс және шығыс токендерінің саны өнімділік өлшемдеріне әсер етуі мүмкін. Жалпы алғанда, шығыс токендерін генерациялау жалпы жауап уақытына басымдық береді. Деректерді таңдау тек LLM-нен «иә/жоқ» жауаптарын тудырғанда, жауап LLM-ге эссе жазуды сұрайтын үлгілермен салыстырғанда жылдамырақ болады. Біздің деректер жиынтығымыз 512 шығыс токенін тудыратын 1024 кіріс токені бар синтетикалық сұраулардан тұрады. Бұл тараполыстық Llama 2 70B публиктік орналастыруындағы трафиктің бақыланатын таралуына сәйкес келу үшін таңдалды.
Бағдарламалық құрал нұсқасы
NVIDIA TensorRT-LLM (v0.5.0 шығарылымы) — бұл LLM инференциясын оңтайландыруға арналған ашық бастапқы кодты кітапхана. 2023 жылдың соңында шығарылған ол NVIDIA-ның көптеген инференциялық оңтайландыруларын біріктіреді және осы тәжірибенің негізгі параметрлері үшін икемді теңшеу қабатын қамтамасыз етеді: топтама өлшемі, кванттау және тензорлық параллелизм.
Айнымалылар
Біз конфигурацияның 4 осі бойынша тәжірибе жасадық: тензорлық параллелизм, GPU архитектурасы, кванттау және максималды топтама өлшемі. Бұл осьтер бір-бірімен өзара байланысты, өйткені олардың әрқайсысы GPU жадының маңызды шектеулі ресурсқа қатысты ымыраны білдіреді.
GPU архитектурасы
Тоғызыншы буындағы Hopper (H100-HBM3-80GB / p5.48xlarge) GPU архитектурасы өз ізашары Ampere (A100-SXM4-80GB / p4de.24xlarge) салыстырғанда үлкен тізімді қамтиды, соның ішінде 2x-6x есептеу жылдамдығын және шамамен 2x GPU жады өткізу қабілетін қамтиды. GPU жадының өткізу қабілеті инференция үшін маңызды көрсеткіш болып табылады, өйткені инференцияның матрицалық көбейтулерінің негізгі кідіріс кедергісі GPU жадынан модель деректерінің гигабайттарын есептеу тіркелімдеріне жүктеуден келеді. Осы статистикаға сүйене отырып, біз NVIDIA H100 және A100 бірдей салыстыруы кідіріс пен өткізу қабілетінде 2 есе жақсаруды көрсетеді деп болжадық.
NVIDIA H100 мен A100 арасындағы тағы бір маңызды айырмашылық - H100 тензорлық ядросы төменде сипатталған қосымша оңтайландыруларға жол ашатын 8 биттік жылжымалы нүкте (fp8) нұсқауларына қолдауды жергілікті түрде қосады. Сондықтан біз H100 үшін fp8 және fp16 қолданамыз.
Бұл тәжірибеде әр GPU үшін жадыны тұрақты ұстау мақсатында біз NVIDIA A100 және H100 үшін 8x80GB GPU жады бар түйіндерді қолдандық. Үлкенірек топтама өлшемдерін қосумен қатар, GPU жады маңызды, өйткені жылдам қол жеткізу үшін серверді іске қосу кезінде модельдің параметрлері GPU жадына жүктеледі. Мысалы, егер біздің модельдегі 70 миллиард параметрдің әрқайсысы 16 биттік жылжымалы нүкте саны болса, онда модельдің көлемі шамамен 140 ГБ құрайды, бұл бір GPU-ға сыймайды. Демек, төменде түсіндіретін тензорлық параллелизм қажеттілігі туындайды.
Тензорлық параллелизм
Тензорлық параллелизм инференция серверін іске қосу үшін тұтынылатын GPU құрылғыларының санын білдіреді. Біз бірқатар GPU-ларды бөлінген кезде, TensorRT-LLM Llama 2 70B жұмыс істеуі үшін қажетті ең аз жады бюджетіне жетуге көмектесу үшін олардың ресурстарын біріктіреді. Біздің болжамымыз бойынша, жоғары тензорлық параллелизммен салыстырғанда, төменірек тензорлық параллелизм жоғары кідіріске (әр топтаманы қанағаттандыру үшін аз ресурстардың тұтынылуына байланысты), бірақ жақсы пайдалануға байланысты GPU үшін жоғары өткізу қабілетіне әкеледі.
Кванттау
Кванттау — нейрондық желілер пайдаланатын салмақтар мен белсендірулердегі дәлдікті азайту. Біз бұл әдісті fp16-дан fp8-ге ауысқан кезде GPU жадының тұтынылуын екі есе азайту үшін қолданамыз. Бұл бірдей модельді төменгі жалпы GPU жады көлемімен іске қосуға мүмкіндік береді, бұл өткізу қабілетін арттыратын төменгі тензорлық параллелизмді қамтамасыз етеді.
Кванттауды жүзеге асыру дәлдікті төмендету мүмкіндігіне ие. Осылайша, біз WikiText корпусында LLM әр келесі токенді сөйлемде қаншалықты жақсы болжайтынын өлшейтін перплексия статистикасын салыстыру арқылы әртүрлі дәлдіктер үшін дәлдікті бағаладық. 8 биттік жылжымалы нүкте және 8 биттік салмақ пен 8 биттік белсендіру және SmoothQuant (w8a8 SQ) үшін WikiText-тегі fp16-мен салыстырғанда перплексияда айтарлықтай өзгеріс (< 1%) болған жоқ, сондықтан біз жалғастыруға сенімді болдық. Дегенмен, w4a16 тіпті төменірек дәлдікке және int4 пен fp16 арасындағы қажетті динамикалық түрлендірулерге байланысты перплексияда айтарлықтай 7% өзгерісті көрсетті.
Топтама өлшемі
Топтамалау арқылы параллелизм — ресурс шектеулі жүйеден өнімділікті сығып алудың классикалық стратегиясы. Нейрондық желі арқылы әрбір тура өту кезінде бірнеше сұрауларды өңдеу арқылы топтамалау кейбір кідіріс есебінен өткізу қабілетін арттыратыны белгілі. Сондай-ақ топтамалау назар аудару механизмін басқаратын KV кешінің өлшемі топтама өлшемімен сызықты түрде өсетіндіктен, жоғары GPU жадының тұтынылуын тудырады.
Llama 2 70B (80 қабаты бар) жағдайында, 4096 контекст өлшемі үшін 32 топтама өлшемі бар fp16, KV кешінің өлшемі айтарлықтай 40 ГБ болып шығады. Бұл тек салмақтарының өзі 140 ГБ алатын Llama 2 70B fp16 моделінің 2 тензорлық параллелизмде (TP-2) қолжетімді 160 ГБ GPU жадына ыңғайлы сыюына жол бермейді.
Нәтижелер
Біз тәжірибенің 4 айнымалысының үйлесімді комбинацияларын шолып шықтық және ең маңызды тенденцияларды төменде ұсынамыз.
Кванттаудың кідірісті жақсартуы H100 fp16 → fp8 және A100 fp16 → SmoothQuant бар w8a8 салыстырғанда шамамен 10% құрайды. Дегенмен, аралас дәлдікті w4a16 шын мәнінде төмен топтама өлшемдерінде жақсырақ және fp16-мен салыстырғанда жоғары топтама өлшемдерінде нашар жұмыс істейді. Бұл бірқатар факторларға, соның ішінде аз оңтайландырылған есептеу ядроларына, int4 пен fp16 арасындағы кастинг уақытына және w4a16 әлі де белсендірулер үшін 16 биттік жылжымалы нүктелерді пайдаланатынына байланысты болуы мүмкін, бұл KV кешінің өлшемдерінде үнемдеуге әкелмейді. w4a16 сонымен қатар төменірек дәлдікті көрсеткендіктен, біз A100 үшін w8a8 SQ және H100 үшін fp8 сақтауымыз керек деген қорытындыға келеміз.
Біздің алғашқы екі суретімізде біз тек TP-8 конфигурацияларын ұсынамыз. Екеуі де fp16 / BS-128 / TP-8 пайдаланған кезде H100 A100-бен салыстырғанда 54% кідіріске және 184% өткізу қабілетіне қол жеткізеді, бұл H100-де fp8 пайдаланған кезде 49% кідіріске және 202% өткізу қабілетіне дейін жақсарады. Өнімділіктің бұл жақсаруын H100 мен A100 арасындағы есептеу қуаты мен жады өткізу қабілетінің артуымен байланыстыруға болады. Атап айтқанда, айырмашылық пайдалану аз болуы мүмкін төменірек топтама өлшемдерінде соншалықты байқалмайды.
Платформамызды құрған кезде біз өткізу қабілетін барынша арттыра отырып, пайдаланушыларымыз үшін белгілі бір кідіріс талаптарын орындағымыз келеді. Осылайша, A100 пен H100-ді бірдей топтама өлшемінде салыстырудың орнына, олардың өткізу қабілетін тек кідіріс талабын қанағаттандыратын конфигурациялар бойынша салыстыру әлдеқайда орынды. Біз 512 шығыс токенін аяқтау үшін 25600 мс кідіріс шегін белгіледік және H100 / TP-8 / fp8 / BS-128 A100 / TP-8 / fp16 / BS-64-пен салыстырғанда 251% өткізу қабілетін беретінін анықтадық, өйткені ол төменірек кідіріспен екі есе топтама өлшемін өңдей алады. Кванттау GPU жадын үнемдеуді қамтамасыз ететіндіктен, енді біз тензорлық параллелизм келесі оңтайландыру қабатын қалай қоса алатынын бағалауымыз керек.
Кванттау мен архитектураға келсек, нақты жеңімпаздар бар: H100 A100-ді басып озады және төмендетілген дәлдіктегі кванттау жадыны пайдалануды, кідірісті және өткізу қабілетін жақсартады. Дегенмен, топтама өлшемі мен тензорлық параллелизм біздің негізгі көрсеткіштерімізде ымыраны ұсынады. Үлкенірек топтама өлшемі кідірістің және жадыны тұтынудың өсуі есебінен өткізу қабілетін оңтайландырады. Екінші жағынан, жоғарырақ тензорлық параллелизм қолжетімді жадының жалпы көлемін арттырады және кідірісті оңтайландырады, бірақ бөлінген матрицалық көбейтудің синхрондау шығындарына байланысты және көбірек GPU ресурстарын бұғаттау арқылы өткізу қабілетімен ымыраға келеді.
Біздің тәжірибеміздегі өткізу қабілетін барынша арттыратын конфигурация — әр GPU үшін секундына 767 шығыс токені бар H100 / fp8 / TP-2 / BS-128. Бұл A100 / fp16 / TP-8 / BS-64-пен салыстырғанда 460% жақсару. Дегенмен, бұл екі еселенген кідіріс есебінен келеді — 512 шығыс токені үшін 42000 мс-қа жақынырақ, сондықтан ол өндірістік конфигурация ретінде жарамсыз болуы мүмкін. TP-4 BS-128 нәтижелері (26188 мс жауап беру уақытында 626 токен/сек/gpu) және TP-2 BS-32 (18821 мс жауап беру уақытында 435 токен/сек/gpu) біздің негізгі көрсеткіштерімізде жақсырақ ымыраларды ұсынуы мүмкін.
Қорытынды
Біздің нәтижелеріміз мынаны көрсетеді:
Біз бірдей конфигурацияны ескере отырып, A100-бен салыстырғанда H100 көмегімен 54% кідіріске және 184% өткізу қабілетіне жетеміз, бұл H100 fp8 үшін өзгермеген қолдауын пайдаланған кезде сәйкесінше 49% және 202% дейін жақсарады.
Кідіріс шектеуіне бағынысты өткізу қабілетін барынша арттырған кезде, H100 / fp8 / TP-8 / BS-128 A100 / fp16 / TP-8 / BS-64-пен салыстырғанда 251% өткізу қабілетін береді, өйткені ол топтаманы жылдамырақ жылдамдықпен екі есе өңдей алады.
fp8 бар TP-2 көмегінен H100 пайдалана отырып, біз кідірістің 10%-дан аз өсуімен A100 / fp16 / TP-8 / BS-128 өткізу қабілетінің 373% қол жеткізе аламыз.
Топтама өлшемі мен тензорлық параллелизм LLM инференция жүйесінің операторына өткізу қабілеті мен кідіріс арасындағы ымыраны ұсынады.
Бұл нәтижелер бізге бұрын A100 қуатымен жұмыс істейтін аппараттық стегіміздегі H100 GPU-ларына толық көшу туралы сенімділік береді. Біз NVIDIA жарнамалаған өнімділік өсімін растай алатынымызға қуаныштымыз және олардың жеделдетілген аппараттық құралдардағы келесі жетістіктерін асыға күтеміз.
Келесі не?
Біздің оңтайландыру бойынша келесі шекарамыз Llama 2 70B GPU жадының көлемін айтарлықтай азайтатын және кідірісте 2 есеге дейін жақсартуды қамтамасыз ететін құрылымдық сиректіктің және int4 дәлдігінің дәлдігі мен өнімділік әсерін зерттеу болып табылады. Біз өте жылдам инференция сапарын жалғастыруға қуаныштымыз және пайдаланушыларымызға платформамыздың үстіне қуатты қосымшалар құруға мүмкіндік береміз деп үміттенеміз.
Жақын арада pplx-api лимиттерді алып тастайды және көбірек реттелетін Perplexity LLM модельдерін, соның ішінде фактілерді негіздеу мүмкіндігі бар интернетке қосылған LLM ұсынады.
Perplexity Pro қызметіне perplexity.ai/pro сайтында жазылыңыз. Заманауи pplx-api қолжетімділігін алыңыз және жобаларыңызда осы жетілдірилген мүмкіндіктерді пайдаланыңыз. pplx-api туралы көбірек блогтан біліңіз.
ЖИ болашағын қалыптастыруға мүдделісіз бе? Біз жұмысқа қабылдаймыз! Ауқымды, генеративті LLM инфраструктурасын қамтамасыз ететін топтың мүшесі болыңыз. Perplexity Careers сайтындағы мүмкіндіктерді зерттеңіз.
Авторлар:
Аараш Хейдари, Григорий Алексеев, Кевин Ху, Денис Яратс