Үлкен тілдік модель (LLM) қорытындысына шолу, оның маңыздылығы, қиындықтары және негізгі мәселе тұжырымдары.
Үлкен тілдік модельдер (LLM) чат-боттар мен AI агенттерінен бастап код пен мазмұнды құруға дейін кең ауқымды қолданбаларды қосу арқылы табиғи тілді өңдеу (NLP) саласында төңкеріс жасады. Дегенмен, LLM-ді нақты әлемдегі сценарийлерде қолдану кешіктіруге, ресурстарды тұтынуға және масштабтауға байланысты қиындықтарға жиі кездеседі.
Блог жазбаларының осы сериясында біз LLM тұжырымы үшін әртүрлі оңтайландыру әдістерін зерттейміз. Біз кэштеу механизмдерінен аппараттық жеделдетулерге және модельді кванттауға дейін кідіріс, жад ізі және есептеу құнын азайту стратегияларына енетін боламыз.
Бұл постта біз LLM қорытындысына, оның маңыздылығына және онымен байланысты қиындықтарға қысқаша шолу жасаймыз. Біз сондай-ақ оңтайландыру әдістерін зерттеуге бағыттайтын негізгі мәселе тұжырымдарын сипаттаймыз.
Модельдік қорытынды болжау жасау немесе жаңа кіріс деректеріне негізделген нәтижелерді жасау үшін оқытылған машиналық оқыту моделін пайдалану процесін білдіреді. LLM контекстінде қорытынды мәтін енгізуді өңдеуді және когерентті және мәтінмәндік сәйкес мәтін шығысын жасауды қамтиды.
Модель тек бір рет немесе кезеңді түрде оқытылады, ал қорытынды өндіріс ортасында секундына мыңдаған рет жиі орын алады.
Түпнұсқаларды оңтайландыру LLM-ді нақты әлемдегі қолданбаларда тиімді орналастыруды қамтамасыз ету үшін маңызды. Мақсат – кідірісті азайту (жауапты құруға кететін уақыт), ресурстарды тұтынуды азайту (CPU, GPU, жад) және масштабтауды жақсарту (өсетін жүктемелерді өңдеу мүмкіндігі).
Мысалы, GPT-3 (175 миллиард параметрі бар) қорытынды жасау үшін айтарлықтай есептеу ресурстарын қажет етеді. Оңтайландырулар жауап беру уақытын 1–2 секундтан миллисекундқа дейін қысқартып, LLM-ді интерактивті қолданбалар үшін практикалық етеді.
Назар аудару механизмдерін пайдаланатын трансформатордың архитектурасы көптеген заманауи LLM үшін негіз болды. Бұл архитектура позициялық кодтауды, көп басты өзіндік назар аударуды, алға бағытталған нейрондық желілерді және деңгейді қалыпқа келтіруді қамтиды. Трансформаторлар негізінен үш негізгі түрге жіктеледі:
Кодер-декодер үлгілері (мысалы, T5) «Назар аударсаңыз, сізге қажет» мақалада ұсынылған түпнұсқа архитектура болды. Бұл үлгілер аудару және қорытындылау сияқты түсінуді де, қалыптастыруды да қажет ететін тапсырмаларға арналған. Олар кодтауышпен кіріс ретін өңдейді, содан кейін декодермен шығыс ретін жасайды.
Тек декодерлерге арналған үлгілер авторегрессивті тапсырмалар үшін ең көп тараған LLM архитектурасы болғандықтан, бұл серия арнайы үлгінің осы түріне арналған оңтайландыру әдістеріне назар аударады.
Назар аудару механизмі трансформатор архитектурасының негізгі құрамдас бөлігі болып табылады, ол модельге шығысты генерациялау кезінде кіріс ретінің әртүрлі бөліктеріне назар аударуға мүмкіндік береді. Ол кіріс көрсетілімдерінің өлшенген сомасын есептейді, мұнда салмақтар әрбір кіріс таңбалауышының жасалып жатқан ағымдағы шығыс таңбалауышына қатыстылығымен анықталады. Бұл механизм модельге олардың енгізу ретіндегі қашықтығына қарамастан, таңбалауыштар арасындағы тәуелділіктерді түсіруге мүмкіндік береді.
Назар аудару механизмі есептеу үшін қымбат болуы мүмкін, әсіресе ұзақ енгізу тізбегі үшін, өйткені ол барлық таңбалауыштар арасындағы жұптық өзара әрекеттесулерді есептеуді қажет етеді ( O(n^2)
күрделілігі). Оны егжей-тегжейлі қарастырайық:
Енгізу көрінісі : Енгізу тізбегіндегі әрбір таңбалауыш әдетте ендірулерді пайдалана отырып, вектор ретінде көрсетіледі.
Сұрау, кілт, мән векторлары : Әрбір таңбалауыш үшін үш вектор есептеледі: сұрау векторы ( Q_i
), кілт векторы ( K_i
) және мән векторы ( V_i
). Бұл векторлар үйренген сызықтық түрлендірулерді пайдаланып кіріс көріністерінен алынады.
Назар аудару ұпайлары : Назар аудару ұпайлары енгізу ретіндегі барлық алдыңғы таңбалауыштардың негізгі векторларымен ағымдағы таңбалауыштың сұрау векторының нүктелік көбейтіндісін алу арқылы есептеледі. Бұл әрбір белгіге қаншалықты назар аудару керектігін көрсететін ұпайға әкеледі.
Softmax Нормализациясы : Сосын зейін көрсеткіштері 1-ге тең болатын зейін салмақтарын алу үшін softmax функциясы арқылы қалыпқа келтіріледі.
Салмақталған қосынды : Соңында, ағымдағы таңбалауыштың шығыс көрінісі назар салмақтарын пайдаланып мән векторларының өлшенген сомасы ретінде есептеледі.
Көп басты зейін - бұл модельге әртүрлі позициялардағы әртүрлі бейнелеу ішкі кеңістіктеріндегі ақпаратқа бірлесіп қатысуға мүмкіндік беретін зейін механизмінің кеңейтімі. Зейін салмақтарының бір жинағына ие болудың орнына, көп басты назар зейіннің бірнеше ұпайларын параллельді есептейді, олардың әрқайсысында өзінің үйренген сызықтық түрлендірулері бар.
Осы назар аудару бастарының шығыстары соңғы шығыс көрінісін жасау үшін біріктіріледі және сызықтық түрлендіріледі.
Бұл механизм модельдің кіріс деректеріндегі әртүрлі қарым-қатынастар мен тәуелділіктерді түсіру мүмкіндігін жақсартады, бұл әртүрлі NLP тапсырмаларында өнімділікті жақсартуға әкеледі.
LLM және трансформатор архитектурасын түсіне отырып, қорытындыны есептеу процесін сипаттайық. Қорытынды берілген енгізу реті үшін келесі $n$ таңбалауыштарын жасайды және оны екі кезеңге бөлуге болады:
Алдын ала толтыру кезеңі : Бұл кезеңде енгізу реті үшін үлгі арқылы алға өту орындалады және әрбір таңбалауыш үшін кілт пен мәнді көрсетулер есептеледі. Бұл көріністер КВ кэшінде декодтау сатысында кейінірек пайдалану үшін сақталады. Әрбір қабаттағы барлық белгілердің көріністері параллельді түрде есептеледі.
Декодтау кезеңі : Бұл кезеңде модель автоматты регрессивті түрде шығыс таңбалауыштарын бір уақытта жасайды. Әрбір таңбалауыш үшін үлгі алдын ала толтыру кезеңінде сақталған KV кэшінен кілт пен мән көріністерін, сонымен қатар келесі таңбалауышты реттілікпен есептеу үшін ағымдағы енгізу таңбалауышы сұрауының көрінісін алады.
Бұл процесс тоқтату шарты орындалғанға дейін жалғасады (мысалы, максималды ұзындыққа жету немесе тізбектің соңы белгісін жасау). Жаңа кілт пен мән көріністері кейінгі таңбалауыштар үшін KV кэшінде сақталады. Бұл кезеңде генерацияланатын келесі таңбалауышты анықтау үшін таңбалауышты іріктеу стратегиясы да қолданылады (мысалы, ашкөз іздеу, сәулелік іздеу, топ-k таңдау).
Ұзындығы L префиксі, ендіру өлшемі d және h басы мен n қабаты бар үлгі үшін қорытындыны есептеудің күрделілігін келесідей талдауға болады:
Алдын ала толтыру кезеңі : Алдын ала толтыру кезеңінде біз кірістегі барлық таңбалауыштар үшін бастапқы көріністі есептейміз. Мұндағы күрделілік:
Мұнда:
O(Ln .d^2)
: Әр таңбалауышты қабаттар бойынша тәуелсіз өңдейтін алға жіберу есептеуін білдіреді. Бұл L реттілік ұзындығымен және n қабаттар санымен сызықтық масштабталады.
Екінші мүше O(L^2. nh d)
: назар аудару механизмінің құнын білдіреді. Мұнда әрбір таңбалауыш әрбір басқа таңбалауышпен әрекеттеседі, нәтижесінде әр қабатқа назар аударуды есептеу үшін L^2
күрделілігі туындайды. Күрделілік дәйектілік ұзындығына қарай квадраттық түрде өседі, бұл ұзақ тізбектер үшін үлкен кедергі болуы мүмкін.
Декодтау кезеңі : декодтау кезеңі авторегрессивті бөлік, күрделілігі:
Мұнда:
Алға жіберуді есептеу : Әрбір жасалған таңбалауыш үшін біз әр қабатта алға жіберу әрекеттерін орындаймыз. Ол бір уақытта бір таңбалауыш үшін жасалғандықтан (барлық реттілік емес), әр таңбалауыштың күрделілігі: O(nd^2)
.
Кэштеу арқылы назар аударуды есептеу : Әрбір жаңа таңбалауыш бұрын есептелген кілт-мән жұптарын пайдаланып, назар аудару арқылы бар реттілікпен әрекеттеседі. Жасалған әрбір таңбалауыш үшін бұл назарды есептеу L реттілік ұзындығына пропорционал болып, келесіні береді: O(Lnd .h)
Көріп отырғанымыздай, қорытындыны есептеудің күрделілігіне енгізу ретінің ұзындығы ( L ), қабаттар саны ( n ), назар аударатын бастардың саны ( h ) және ендіру өлшемі ( d ) әсер етеді. Бұл күрделілік нақты уақыттағы қолданбаларда, әсіресе ұзақ енгізу тізбегі және/немесе үлкен үлгілермен жұмыс істегенде, кедергі болуы мүмкін.
КВ кэштеу - бұл әсіресе декодтау сатысында, LLM қорытындысы үшін маңызды оңтайландыру әдісі. Алдын ала толтыру кезеңінде есептелген кілт пен мән көріністерін сақтау арқылы модель бұрын өңделген таңбалауыштар үшін артық есептеулерді болдырмайды.
Бұл қорытынды шығару кезіндегі есептеу құнын және кідіріс уақытын айтарлықтай төмендетеді, өйткені модельге енгізу ретіндегі барлық таңбалауыштар үшін кілт пен мән көріністерін қайта есептеудің орнына, жасалатын жаңа таңбалауыш үшін назар аудару ұпайларын есептеу қажет.
Бұл кіріс ұзындығына қатысты квадраттық емес, жасалған таңбалауыштардың санына қатысты шығындарды сызықты етеді.
Дегенмен, КВ кэштеу ресурс шектеулі орталарда айырбас болуы мүмкін кілт пен мән көріністерін сақтау үшін қосымша жадты қажет етеді.
LLaMA 7B үлгісі үшін жад талаптарын есептейік.
d_model
): 4096d_head
): 32d_head
): 128 (4096/32) Әрбір таңбалауыш кілт өлшемі = d_head × num_heads
= 128 × 32 = 4096 элемент
Әрбір таңбалауыштың мән өлшемі = d_head × num_heads
= 128 × 32 = 4096 элемент
Әр қабаттағы таңбалауыштың жалпы элементтері = 4096 + 4096 = 8192 элемент
Әр қабаттағы элементтер = L × 8192 = 2048 × 8192 = 16 777 216 элемент
Әр қабаттағы жад (байтпен) = 16,777,216 × 2 = 33,554,432 байт = 33,55 МБ
Осылайша, жалпы жад талабы: 14 ГБ (үлгі салмағы) + 1-2 ГБ (үстеме) + 1073,6 МБ (КВ кэш) = 15-16 ГБ . Бұл есептеу қорытынды жасау кезінде LLaMA 7B моделі үшін жад талаптарының бағасын береді. LLaMA 7B GPT-3 (175 миллиард параметр) сияқты үлгілермен салыстырғанда салыстырмалы түрде кішкентай, бұл модель салмақтары үшін де, KV кэші үшін де айтарлықтай көбірек жадты қажет етеді.
Сондай-ақ, $m$ бір мезгілде пайдаланушыларға масштабталғанда, ресурс талаптары $m$ есе жоғары болады. Осылайша, ресурстар шектеулі орталарда үлкен үлгілерді қолдану үшін оңтайландыру әдістері өте маңызды.
Қорытындыларды оңтайландыру әдістерінің тиімділігін бағалау кезінде бірнеше көрсеткіштерді қарастыруға болады:
Алдын ала толтыру кідірісі : қорытындының алдын ала толтыру кезеңін орындауға кететін уақыт, ол бірінші токенге дейінгі кідіріс (TTFT) деп те аталады. Бұл көрсеткіш пайдаланушылар жылдам жауап күтетін интерактивті қолданбалар үшін өте маңызды. Үлгі өлшемі, кіріс ұзындығы және аппараттық құрал мүмкіндіктері сияқты факторлар бұл көрсеткішке әсер етуі мүмкін.
Декодтау кідірісі : алдын ала толтыру кезеңінен кейін әрбір келесі таңбалауышты генерациялауға кететін уақыт, сонымен қатар Inter-Token Latency (ITL) деп аталады. Бұл көрсеткіш мәтінді құру кезінде үлгінің жауап беру қабілетін өлшеу үшін маңызды. Чат-боттар сияқты қолданбалар үшін төмен ITL жақсы, бірақ жылдамырақ әрқашан жақсы емес, өйткені секундына 6-8 таңбалауыш адамның өзара әрекеттесуі үшін жиі жеткілікті. Әсер ететін факторларға КВ кэш өлшемі, іріктеу стратегиясы және аппараттық құрал жатады.
End-to-End кідіріс : кірісті қабылдаудан соңғы нәтижені жасауға дейінгі жалпы уақыт. Бұл көрсеткіш қорытынды процесінің жалпы өнімділігін түсіну үшін маңызды және алдын ала толтыру, декодтау және басқа құрамдас кешігулер (мысалы, JSON талдауы) әсер етеді. Әсер ететін факторларға үлгі өлшемі, кіріс ұзындығы және аппараттық құрал, сондай-ақ бүкіл құбырдың тиімділігі жатады.
Максималды сұрау жылдамдығы, aka QPS (секундтағы сұраулар) : секундына өңдеуге болатын қорытынды сұрауларының саны. Бұл көрсеткіш үлгінің өндіріс орталарында масштабталатындығын бағалау үшін өте маңызды. Үлгі өлшемі, аппараттық құрал және оңтайландыру әдістері сияқты факторлар QPS-ке әсер етуі мүмкін. Мысалы, 1 GPU арқылы P90 кідірісі үшін 15 QPS берілсе, 300 QPS қызмет көрсету үшін 20 GPU қажет болады. Әсер ететін факторларға аппараттық ресурстар, жүктемені теңестіру және оңтайландыру әдістері жатады.
FLOPS (секундтағы өзгермелі нүкте операциялары) : модель бір секундта орындай алатын қалқымалы нүкте әрекеттерінің саны. Бұл көрсеткіш қорытындының есептеу құнын түсіну үшін пайдалы және әртүрлі үлгілер мен оңтайландыру әдістерінің тиімділігін салыстыру үшін пайдаланылуы мүмкін. Әсер ететін факторларға үлгі архитектурасы, аппараттық құрал және оңтайландыру әдістері жатады.
Біз осы оңтайландырудың барлығын серияның келесі постында қарастырамыз.
Жүйені оңтайландыру : арнайы аппараттық құралдарды (мысалы, TPU, GPU) пайдалану немесе бағдарламалық құрал сағын оңтайландыру (мысалы, тиімді кітапханалар мен жақтауларды пайдалану) сияқты негізгі аппараттық және бағдарламалық құрал инфрақұрылымын оңтайландыру. Оны мыналарға бөлуге болады:
Жадты басқару : үстеме шығындарды азайту және өнімділікті жақсарту үшін жадты пайдалануды тиімді басқару.
Тиімді есептеу : кідірісті азайту үшін параллелизмді қолдану және есептеуді оңтайландыру.
Топтама : Өткізу қабілетін жақсарту үшін бірнеше сұрауларды бір уақытта өңдеу.
Жоспарлау : ресурстарды пайдалануды барынша арттыру үшін тапсырмаларды тиімді жоспарлау.
Модельді қысу : кванттау, кесу және айдау сияқты әдістерді өнімділікті айтарлықтай жоғалтпастан модель өлшемін азайту және шығару жылдамдығын жақсарту үшін пайдалануға болады.
Алгоритмді оңтайландыру : тиімдірек таңдау стратегияларын пайдалану немесе назар аудару механизмін оңтайландыру сияқты қорытынды жасау үшін пайдаланылатын алгоритмдерді жақсарту. Мысалы, модельге параллельді түрде бірнеше таңбалауыштарды жасауға мүмкіндік беретін алыпсатарлық декодтау декодтау кідірісін айтарлықтай азайтады.
Бұл постта біз LLM тұжырымына, оның маңыздылығына және онымен байланысты қиындықтарға шолу жасадық. Біз сондай-ақ келесі мақалаларда оңтайландыру әдістерін зерттеуге бағыттайтын негізгі мәселе тұжырымдарын атап өттік.
LLM тұжырымының қыр-сырын және оның өнімділігіне әсер ететін факторларды түсіну арқылы біз нақты әлем қолданбалары үшін LLM-ді практикалық етуде оңтайландыру әдістерінің маңыздылығын жақсырақ бағалай аламыз. Келесі мақалада біз модель өнімділігін сақтай отырып, кідіріс пен ресурсты тұтынуды азайтуға назар аудара отырып, нақты оңтайландыру әдістерін және оларды енгізуді тереңірек қарастырамыз.