Працавае выкананне LLM ад початку да канца: прыпраўленне дадзенняяў, дэкадаванне, кэш KV і выбіранне прыкладоў.
Экскурсія па токенайзеры ў фармаце, прыдатным для белай дошкі, па працэсу стрымінгу — чаму прыпраўленне дадзенняяў залежыць ад вычысленняў, дэкадаванне — ад пропускной здатнасі, і як GQA, пейджаванне і спекуляцыяі зменяюць эконаміку працэсу.
Крыніцы: How LLMs Actually Generate Text: The Full Inference Pipeline, Explained Question by Question
З адзінаго нажатыя клавішы да стрымуемага токена
У гэтым кяліка показана вся дорага обрабаткі — токенізацыя, імбеддынг, атэнцыя, кеш KV, выбір прыкладоў, спекулятывная дэкодаванне — і даўацься адказы на складныя запытанні на кожным этапе. Мета — стварыць ментальную мадэль, якая можна будзе адразу застаўіць на дошцы, а не просто праспект вярхніка.
Частка 1 — Две навантажэння, а не адна
Запытанне 1. Што адбываецца між нажатыем клавішы Enter і першым словам?
Чыстая адпраўна-канцэльнайя траса:
- Вхідны даны. Прыходзіць строка UTF-8, напрыклад
"Што такое гравітация?". Сістэма обслужвання зазвычай загортае яе ў шаблон чату з спецыяльнымі токенамі для ролей сістэмы, карыстальніка і асістэнта. - Токенізацыя. Тэкст раздзеляецца на часткі і прысвоюецца ім цэлычныя ID. Што стосуецца гэтага крока, то ён являе сабою чыстую обработку страк — нейронныя сеткі ў гэты момент не вжываюцца.
E ∈ ℝ^(V × d_model), чыяе рэзультатам яўляецца тэнзор (seq_len, d_model). Позыцыйны сігнал дадаецца тут або пазней у механізме адзірвання (RoPE).Час да першага токену практычна завжды ўключае этап падзаполнення. Усё, што следуе, — цэ гэта дэкодаванне.
Q2. Чаму інферэнс называюць двума разнымі задачамі?
Падзаполненне і дэкодаванне знаходзяцца на працоўных сторонах модэлю roofline.
| Падзаполненне | Дэкодаванне | |
|---|---|---|
| Форма на крок | (batch, prompt_len, d) | (batch, 1, d) |
| Домінантная операцыя | Матрыца × матрыца (GEMM) | Матрыца × вектар (GEMV) |
У рэжыме прадзялу вы завантажваеце вагі адно раз і прыменяеце іх да тысяч вектараў токенаў. У рэжыме дэкодавання вы знову завантажваеце тыя ж вагі для адного вектара — гігабайты даных перамешчаюцца за мільйоны FLOPs. GPU чакае на даны з HBM.
Практычна кожны спосаб працы з данымі — групавая обработка, кэш KV, квантызацыя, спекулятывная дэкодаванне, FlashDecoding, розпадзеныя прадзейнаванне/дэкодаванне — існуюць для задоволення патрэбаў гэтага «галадзячага» вычынны раз'ёма.
Q3. Калія метрыкі затрымкі маю значэнне, і якія параметры ўплываюць на яны?
- TTFT — галоўная частка — прадзейнаванне дадзенняў; зрастае з дужынай запіту (і становіцца ўсё гorsам, калі домінуе механізм увагі). Дапамагае кэш прыфіксаў, частковая прадзейнавання дадзенняў, шырэйшая магчымасць увагі, корачэйшыя запіты.
- TPOT / ITL — галоўная частка — дэкодаванне; апрыксімаваеся як
bytes_per_step / bandwidth. Дапамагае квантызацыя, GQA/MQA, спекулятывная дэкодаванне, меньшыя мадэлі. - End-to-end ≈ TTFT + TPOT × колькасць токенав выходу.
- Пропускная здатнасць (токены/секунда/GPU) — метрыка для цэлага кластара; большыя групавыя пакеты яе паднімаюць, але зазвычай пагаршуюць TPOT на адного корыстніка.
Пропускная здатнасць і час адказу суперынуют адзін з другім. Палітыка аддачы — гэта выбор точкі на гэтай крывой.
Q4. Чаму дэкадаванне не можа быць паралельным, як прадзейнаванне?
Генераванне ўражае автарэгрэсіўным спосабам: кожны новы токен залежыць ад усіх паканальных. Прадзейнаванне ужо знае весь запіт, таму позыціі можна вылічыць разам пад каузальным маскаваннем. У дэкадаванні «будучыня» яшчэ не існуе.
Спекулятывнае дэкадаванне — гэта альтэрнатыва: ствараюцься дэшавыя прыбліжэння, а пасля яны пераканальваюцца ў аднам паралельным працэсе — так ператвараецца последовальная залежнасць у паралельную пераканальванню (Частка 8).
Частка 2 — Этапы першы і другі: запуск тэксту
Q5. Што такое токен — і чаму цэлыя слова або сырые сімвалы ўжо не ёсць правільнымі крайнімі варыянтамі
Токен — гэта атом падслова ў фіксаванай лексыкарыі. Чыстыя крайнія варыянты не падходзяць:
- Словяны не маюць меры; памылкі напісання і рэдкія імена стаюць
<UNK>і разрушаюць інфармацыю, адночасна расшырваючы табліцу укладання. - Характэрныя словяны запобегаюць выклікам, адночасна удовжваючы последоўнасці на 4–5 разоў, што пагрожае квадратным способам атэнцыі і змушвае раннія шары занова адкрываць морфалогію.
Падсловы знаходзяць сярэдні шлях: распашчастыя слова застаюць цэлымі; рэдкія формы распадаюцца на значамыя фрагменты; нічога сапраўды не ёсць выклікам.
Q6. Як трэнуецца BPE?
Byte-Pair Encoding пачынаецца з характэроў (або байтов) і паступова з’едынае найчастэйшыя суседзькі пары, пакуль не будзе досягнута заданая велічына словяна. З’едыненняя зберагаюцца у відсортаваным спіску. Пад час інферэнціі тыя ж з’едыненняя прыкладзаюцца ад левага да правага. Трэніраванне базуецца на статыстыкі, а не на градыентнай спуску — але рэзультатныя сегментацыі вплываюць на усё, што выконваецца пасля.
Q7. BPE vs WordPiece vs Unigram / SentencePiece
- BPE — адзіненне па частоце; дэкодаванне ўзначальваецца на адной зместоўкі, якая задана таблой адзінення.
- WordPiece (эпа BERT) — падобнае адзіненне, але оцэнюецца па верыгоднасці; часта выкарыстоўваецца знакі прыкладзення
##. - Unigram / SentencePiece — выканаецца з большога набора кандыдатаў і выкарыстоўваецца уніграмны LM для скасавання непатрэбных элементаў; можа ствараць розныя варыянты сегментацыі і чыста обрабляе необработаныя байты/Unicode без патрэбы ў мовных прэтокенізаторах.
Сучасныя LLM-ы для практычнага выкарыстоўвання часта выбіраюць варыянты BPE або SentencePiece на рэвэле байтаў.
Q8. Чаму BPE на рэвэле байтаў?
Работа з необработанымі байтамі гарантуе, што кожны строк будзе можна закодаваць — без непазбурных проблем з Unicode. Словнар сягледвае заўсёды распашчаныя багатабайтовыя фрагменты, таму англійская мова застаецца эфектываю, а рэдкія шрыфты граматычна пераходзяць на байтовыя альтэрнатывы.
Q9. Чаму модэлі паспяхваюць пад лічыннею літэр у слове “strawberry”?
Таму што модэль ніколі не бачыць сімвалоў; яна бачыць ID-ы токэнаў. Калі "strawberry" складаецца з аднаго чы ў два токэна, запатранне “працаваць з літэрамі ‘r’” адносіцца да структуры, якая была адкінута ўжо на першым слое. Задачы на рэгламентны адзінак трэбуюць альбо токанайзера, які зберагае сімвалы, альбо зовнішняго інструмента.
Q10. Чы ID-ы токэнаў маюць якісь значэнне самыя по сабе?
Няма. ID — гэта проста індэкс у таблі эмбеджынгу данай модэлі. ID 100 у аднам токанайзеры не мае нічога спакульна з ID 100 у іншам. Ніколы не сумешвайце токанайзеры разных модэляў.
Q11. Проблемы, якія можуць выйсці з токанайзерам у працэсе вырабоцтва
- Шаблоны чату і спецыяльныя токэны павінны адпаваляць трэнінгу.
- Прачыны ў пачатку строкі часта становяцца самымі токэнамі —
" Hello"≠"Hello".
Q12. Компрэсія і розмер слоўніку
Большы V скрацвае последованасці і спрыяе падтрымцы мультыязычнасці, але збільшае параметры embedding і LM-head (V × d_model кожны) асобна і косты дэкадавання за дапамой softmax. Тыповыя сучасныя значэння належаць да дыяпазону 32K–150K; па захадзе з гэтага розміру трэба плаціць за памяць і пропускную здатнасць, а рэзультаты становяцца все менш эфектывнымі.
Q6. Як на самай працы трэнуецца BPE
Кодаванне па парах байтов — гэта спосаб кампрэсіі, які выкарыстоўваецца для навучэння слоўніку:
- Спачатку заполняецца слоўнік базовымі сімваламі (для BPE на рэвэле байтов: усіма 256 байтамі).
- Корпус выражаецца як последованасці гэтых сімвалоў.
- Лічыцца колькасць суседзячых пар; выбіраецца найчастэйшая.
Рэзультаты: карта сімбал→ID і аранжаваны спіс з’еднанняў. Кодаванне пад час аналізу даных здзейснюецца шляхом жаданага з’еднання элементаў у гэтым парадку — дэтэрміністычна, без пошуку найкорачэйых сегментаў у цэлым.
Тонкасць: з’еднанняі оптымізуюць частоту вікорыстання, а не лінгвістычныя аспекты. ing стае токенам, таму што ён часта з’являецца. Морфалогічная гарнасць ў такім разе ёсць второсным фактам.
Q7. BPE vs WordPiece vs Unigram / SentencePiece
- BPE (GPT-line, Llama): з’еднанняі на адвесе частоты; дэтэрміністычнае кодаванне.
Q8. BPE на рэвэлі байтоў мае значэнне таму, што…
Для праграматы знакоў Unicode патрэбна апошней 150 тысяч сімваў-засновак, і нават тады ўжо трэба вікорыстоўваць <UNK>. Вывод з байтав UTF-8 означае, што кожны рэчып — эмодзі, кірыліцу, нештатныя байты — можа быць закодаваны. Не існуе прыгоў за межы дыяпазону.
Косць: эмодзі можа займаць кальколькі токенаў; нелатынскія алфавіты часта коштаюць у 2–4 разы больш, чым англійскі для таго ж значэння, таму корыстувальнікі, якія не вжываюць англійскую мову, раней сталквальцяцца з лімітамі колькасці запытаў і обмежэннямі кантэксту. Большыя словнікі (зрост з 32 тысяч да 128 тысяч сімваў) існуюць часткова для зменшэння гэтай розніцы ў справядлівасці.
Q9. Чаму запыт «Скількі літэр “r” у слове strawberry?» не работае
Сетка ніколі не бачыць літэр; яна бачыць ID-ы. Калі strawberry складаецца з калькольных слов, падрахунак сімвалаў вымагае вярнага адналёгчэння напісу на адпаведныя эмбедынгі і ўзаемнага агрэгавання — не існуе вбудованай операцыі “праходзьце па сімвалах”. Тая ж проблема выступае з анаграмамі, паліндромамі, перастановкамі і простай арыфмэтыкай, калі групаванне цыфраў ў разных чыслах не адпаведае. Сучасныя токенізаторы іноды прыводзяць у вынік разлучэнне цыфраў спецыяльна для таго, каб арыфмэтыка стала можлівай.
Q10. ID-ы токэнаў у ізоляцыі
ID — гэта індэкс у табелях таго модэля. Спраўа ў розных токенізаторах не мае сэнсу. Нават “спецыяльныя” ID-ы разніцацца ў розных сем’ях модэляў.
Q11. Проблемы, якія з’яўляюцца пад час працы
Неабяжна ўзмоўка пад трэнінговы шаблон чату і набор спецыяльных токэнаў. Перадзіяныя праспекты часта ёсць справжнімі токэнаў. Працыўленьне з ліквамі сімвалаў, калі API вырахоўвае токэны, тылуць інструкцыі. Мультымадальныя сэнтынел-токэны зменяюцы спосаб пакавання. Ключы кэшу должны абавязкова мяць інформацыю пра версію токенайзера. Неправільнае апрацаваньне BOS/EOS нарабляе праблемы з умовамі завершэння і аўдытам значэння logprob.
Q12. Компрасы ў вялічыне слоўніка
Большая вялічына V скрацвае последованасці і спрыяе мультыязычнаму пакаванню, але збільшае параметры embedding + LM-head і функцыю decode softmax. Пасля ~100K–200K зазвычай патрэбна додатковая памяць/пропускная здатнасьць за мінімальныя падышкі ў якасці, чым толькі калі цэлака выказваецца мультыязычны характар задачы.
Частка 3 — Эмбедынгі
Q13. Эмбедынг: gather чы matmul
Пошук у радку адпавядае наумнікаванню вектара one-hot з E. Функцыя Kernels выкарыстоўвае метод gather; матэматычныя расчыткі застаюцца лінейнымі.
Q14. Кантэкстуальны чы не?
Радкі вхідных дадзеных ёсць без кантэксту. Кантэкст ствараецца за дапамою атэнзіі між шарамі. Эмбедынгі, якія вікорыстоўваюцца для адзыскання, зазвычай являюць сабо глыбэйшыя станы, а не радкі вхіднай табліцы.
Q15. З’ўязкі ваг
Ўзкаецца спяльнае значэнне ваг эмбедынга з галоўкай LM (пертранспонаванне) для захавання параметраў — гэта распашчастае ў меньшых мадэлях. Большыя LM часта не з’ўязваюць вагі для падтрымкі якосці. З’ўязаныя галоўкі не ёсць дадатковай незалежнай матрыцы d × V.
Q16. Інфармацыя пра пазіцыю
Абсалютныя эмбедынгі дадаюць вектары па кожным індэксу. RoPE роціруе Q/K, так што абсалютныя зместы праказуюцца ў рэйтынгах і спавяраюцца з кешаваннем KV. Альтэрнатывамі ёсць схемы абсалютных зместоў; RoPE домінуе ў новых LLM-мадэлях.
Q17. RoPE і розглед дзяўнаога кантэксту
Стосовная геаметрыя RoPE дае лепшыя рэзультаты па вылічэннях, чым простыя абсалютныя табліцы. Розшырэнняя (інтэраполяцыя пазычэй, масштабаванне з узьлам НТК, YaRN і т. д.) перамасштабаваюць частоты роціявання, таму дліжэйшыя кантэксты застаюцца стабільнымі без патрэбы ў трэнаванні з нуля.
Q18. Каляр √d_model
Калі вектары токэнаў і пазычэй дадаюцца разам, масштабы можу стварыць суперскуплення; умножэнне эмбедынгаў на √d_model дапамагае ўзравняць іх. У структурах RoPE, якія апырываюцца на роціяванні, часта прыменяецца толькі роціяванне, без гэтага умножэння.
Частка 4 — Блок трансфармера
Q19–Q23. Механізмы атэнцыі (пашырэнне)
x → MultiHeadSelfAttention → Add & Norm → FFN → Add & Norm → out
Attention(Q, K, V) = softmax(QKᵀ / √d_k) V
Запыткі шукаюць, ключы адказваюць, значэнні дастаюць. Функцыя Softmax над масштабаванымі значэннямі дае вагі для сумешчання. Дзеліце на √d_k, ўбліжкі, каб яны не ставалі максімальнымі з ростам шырыні. Часом галавы вікорыстоўваюцься для дыверсіфікацыі падпростораў. Прычынны маскі запішуць −∞ у забраныя будучыя станы, тады сума значэнняў Softmax будзе роўна нулю — прычаму нулі ў масцы все равно могу прасачвацца. Пад час чыстага дэкадавання з кэшам набор ключоў не мае будучых позыцый, таму маска ёсць неявной; прэфіллы таксама патрабуюць маскавання (או прычыннага ядра).
Q24–Q26. Формы, косць, залішкі
Кожныя праектыяванні маюць размах ~d × d (змененыя пад час GQA). FFN-ы домінуюць у параметрах з падыходам прыблізна у 4 разы. Кост атэнцыі вырастае прыблізна за формулай O(n² d); для FFN — O(n d²). Кораткія запросы: лімітаваны вагамі/FFN-амі. Дзялёныя кантэксты: домінуюць атэнцыя і KV-памяць. Рэзыдуалы дапамагаюць трэнаваць глыбокія стакі, ствараючы «шосе градыента» і дадаючы можлівасць аддытываўных дапрацоўках.
Q27–Q30. Нормы, шырыня FFN, актывацыі, MoE
RMSNorm не выкарыстоўвае центруванне па сярэдзіне і ёсць дышэўней за LayerNorm. Прыёмная норма стабілізуе адзінакова глыбокія сеткі паўступкі з класычным паслявыкальным падходам. Шырокія FFN-ы (~4 разы) паўтараюць магчымасці працы з токенамі между атэнцыйнымі міксерамі. Нелінейнасці не дазволяюць стакаваным лінейным элементам злучвацца; SwiGLU выграў у багацькох абляцыйных тэстах LLM. MoE направляе токены да калькольнікаў-экспертаў, таму параметры растуць быстрэй за FLOPs на токен — многа памяці, мало вычыслаў.
Q31–Q32. Глыбіна/шырыня і варыанты атэнцыі
Глыбіна павтараець працэс сумешчання; шырыня адгуклівае элементы. Лабараторыяў выбіраюць падачу даных і ліміты кластэраў. MHA храніць K/V для кожнага элемента; MQA дзеліць адны K/V между рознымі запытамі; GQA дзеліць іх па групам; MLA далей стыскае KV-элементы. Косцт выдавання даных падштовхнула промысел да такога парадку дзеяння.
Частка 5 — Кэш KV
Q33. Што такое кэш KV, і чаму толькі K і V?
У кроке дэкодавання t прыходзіць адзін новы токен. Яго запыт q_t павінен выкарыстоўваць ключы і значэнні для пазіцый 1..t. Ключы і значэнні для 1..t−1 залежаць толькі ад паканальных токенав і фіксаваных ваг. Прычыннасць гарантуюе, што адключэнне токена t не можа перапісаць тыя паканальныя K/V-тэнзоры — яны ёсць незменнымі — таму яны вычысляюцца адной раз і зберагаюцца.
Запіты разныя: для тэкушчага крока вам патрабуецца толькі q_t. Болейшыя запіты ужо даўалі болейшыя выходныя даныя і ніколі больш не будуць чытаны, таму кэшаванне Q — гэта марнае відвойваўанне памяці.
Без кэша выдача токена t будзе змушваць перайсці па ўсім прыфіксу — праца, якая стрэлкообразна зрастае з дужынай. З кэшам увага на кожны крок ёсць лінейной у залежнасці ад тэкушчай дужыны, а FFN фактычна выконвае сталявую колькасць працы за кожны новы токен. Гэнераванне стае лінейным у залежнасці ад колькасці крокаў дэкодавання, а не квадратным у залежнасці ад колькасці пасоў.
Q34. Аднаковаць размер кэша KV за дапамойю рэальнага чысла
KV bytes = 2 (K and V)
× n_layers
× n_kv_heads × d_head
× seq_len
× batch_size
× bytes_per_element
Узяце падаўжэнне GQA класу Llama-3–70B: вясцьмадзесят слоёў, восем галавак ключ/значэнне, сто дваццаць вясем размераў за галавку, якія зберагаюцца ў двухбайтовых флотах.
Умножыце этыя фактары: два тэнзора (K і V) × 80 × 8 × 1/28 × 2 байты даюць прыблізна 320 КБ на кожны токен кожнай жывой парады.
Калі распрацаваць дыялог з 8 тысяч токенав, то для адного корыстніка будзе 2,6 ГБ. Як толькі кантэкст вырастае да 128 тысяч токенав, тая ж формула паказвае дзесяткі ГБ — столькі, што адна розмова можа зайняць значную частку прыстрою класу H100, яшчэ не врахавляючы самых ваг.
У разліце з GQA (64 KV-галавы): показнік для 8 тысяч токенав падыходзіць да ~21 ГБ на параду. GQA — гэта разліка межа дзесяткамі адночасных корыстнікаў і калькой з іх.
Вагі з’являюцца як фіксаваныя податкі, які плацуюцца адзін раз. KV-каша ўтварае падатак на аднаго корыстувальніка, за кожны токен, без меры. Яна вялічыць максімальны размер пакета, што у свою чаргу вялічыць праўерхнесць апрацоўкі, а гэта зноў вялічыць суму грошаў за мільйон токенав. Самэ гэтая прычына, чаму на дыяграмах яе атрыбутуюць як галоўную перашкоду ў памяці.
Q35. Чаму дэкадаванне залежыць ад памяці — арытметыка
Разглянем мадэль 70B у фармаце fp16, якая пад час адной пакетнай апрацоўкі выдае адзін токен:
- Колькасць байтав, якія перарабатываюцца: ~140 ГБ вагав плюс калькі ГБ KV ≈ 142 ГБ.
- FLOPs: ≈
2 × 70e9 × 1= 140 GFLOPs. - Інтэнсівнасць: ≈ 1 FLOP/байт.
H100 паўсталяе праўерхнесць апрацоўкі HBM ад 3,35 ТБ/с і праўерхнесць апрацоўкі у фармаце fp16 ад ~1000 TFLOPs. Такі момент, калі вычысленні перастаюць адганяць праўерхнесць перэдачы дадзенняў, настае прыбліжна пры 100 FLOPs/байт. Пры інтэнсівнасці 1 FLOP/байт вы выкарыстоўваеце толькі мінімальную частку максімальных вычыслювальных рэсурсаў — GPU пераважна выступае як прыстрой для перадачы дадзенняў памяцю.
Час працы на станцыі ≈ 142 GB / 3,35 TB/s ≈ 42 ms → ~24 tok/s толькі за рахунак пропускной спяглівасці. Рэальныя сістэмы працуюць у межах два разы больш чым гэтыя прагнуткі, што адпаведае таму, насколькі строга ў ўзлагоджэнні правіла пропускной спяглівасці.
Вынік: збільшэнне розмеру пакета для апрацоўкі ваг ў большай меры не карыце, пакуль немае проблем з вычыслювальнымі моцямі. Пераход з пакета 1 на 32 дазволяе вікорыстоўваць одну навантажэння ваг для 32 последоўнасцяў, што можа збільшыць пропускную спяглівасць токенав. Гэта распраўнечанне ёсць центральным эканамічным фактам у апрантаванні LLM.
Q36. Якшто пакетаванне ёсць „бесплатным“, чаму не пакетаваць 512?
Таму што кожная последоўнасць мае свой власны розмер KV, а памяць кэша зростае пры batch × seq_len:
GPU memory = model weights + KV cache + activations + fragmentation overhead
Прыклад: 140 GB ваг на 2×H100 (160 GB) залішае ~20 GB для кэша. Пры 320 KB/token гэта дае ~65K токенав у цэлым пакеце. Шанцзаўсць корыстувачаў у 16 з кантэкстам 4K ужо насыцяюць гэты бюджэт.
Такім чынам, размер KV лімітуе размер пакета, што у свою чаргу лімітуе працэздатнасць. Функцыі GQA, MLA, квантызацыя кэшу, пагінацыя і політыкі вывядзення — гэта працэздатныя характэрыстыкі, якіе выглядаюць як элементы памяці.
Q37. PagedAttention і проблема фрагментацыі
Простыя серверы зарэзервуюць суцэльны блок KV на кожны запіт дапамою max_seq_len. Гэта неяўнае падходжэнне мае два недзеяння:
- Внутршняя фрагментацыя — завершэнне тэксту з 100 токенамі, для якога зарэзерваваны 4096 слотоў, вядома пасвячае большую частку выдзеланай памяці.
- Зовнішняя фрагментацыя — зваліваныя рэгіоны разных размераў залішаюць «дзёрні», у якія нельга ўставіць новыя блокі.
Размер втрат у простых алакаторах часта станавіць 60–80% ад загальнага размеру памяці KV.
PagedAttention (папулярны ў vLLM) перадае ідэю віртуальной памяці ОС: блакіты фіксаванага розмеру (напрыклад, 16 токэнаў), плюс табліца блакетаў, якая супарабатоўвае логічныя пазыцыі з фізычнымі блакетамі ў будзь-якай частцы пула. Блакеты выдзеляюцца ў меру збільшэння дужыны паведамлення.
Прызнакі:
- Фрагментацыя зменшыцца → часта можна адрабатваць 2–4 разы больш адночасных последоўнасцей на тых сабе GPU-ах.
- Аднароджэнне прыфікса / копіюванне пад час запісу — многа запыткаў з аднам сістэмным прапанам раздзеляюць фізычныя блакеты, пакуль ўжо іх суфіксы не стануць рознымі; ідэальна для агентаў, інструкцый RAG і кейсаў з некалькамі прыкладамі.
- Лучы і паралельныя праекты раздзеляюць спакойны прыфікс уместо таго, каб клонаваць яго.
Цена — гэта непрамасць і ядро адзіркавання, якое збірае даныя з несуседзячых блакетаў.
Q38. Статычнае працэсаванне пакетамі проты безперывнага
Статычна групаванне чакае, пакуль не заполніцца група, адколі всі последованасці выконваюцца адночасна да самай дзейнай, і празьба заполняецца недасканымі данымі. Короткія запіты чакаюць дзейных; GPU вітрачае рэсурсы на апрацоўку недасканых токенав.
Непаўзлівая (на рэвель ітарацый) групаванне перзначае групу на кожны крок дэкодавання: завершаныя последованасці выходзяць, новыя заходзяць, і GPU працуе толькі над актуальнымі токенамі. Разніця ў затрымкі зменшаецца, а праўоцэна росце значна — гэта стандарт у сучасных двойчыхах (vLLM, TensorRT-LLM і т. д.)
Q39. Часткова прадзейнае заполненне і раздзелэнне прадзейнага заполнення/дэкодавання
Прадзейнае заполненне, якое включае тыячы токенаў, можа монаполізаваць GPU і спамоцаваць дэкодаванне для інтэрактыўных корыстувачаў. Часткова прадзейнае заполненне дзельніць дугія запросы на часткі, якія перакладваюцца паўз крокі дэкодавання, так што TTFT незначна вырастае, а TPOT застаецца стабільным.
Разбіўка ідzie даўжэй: адбываецца падготавка даных у пулах, оптымізаваных для вычысленняў, а дэкодаванне — у пулах, оптымізаваных для памяці; KV-даныя перадаюцца праз сетка. Цэў падвышае складнась оркестрацыі, але прыпінае кожны этап да апаратуры, якая фактычна ўжо насыцена.
Q40. Скорачэнне KV за межы GQA
Способы включаюць:
- MQA / GQA / MLA — меншае колькась KV-элементаў або ўскорачаныя варыянты.
- Квантаваныя кэшы (у стылі INT8/FP8/NF4) — часта майжэ без втрат для K/V-даных.
- Віконная / ковзаючая увага — адклэянне непатрэбных токенаў, калі гэта дазволяе задача.
- Політыкі вываджэння / стрымінгу для экстрэмальных сцэнарыяў.
- Парадыксы перадзяйснення між шарамі — ідэі доследжэння, якія дазволяюць перадаваць даныя між рознымі шарамі.
Кожны з эых спосабоў жэртвуе часткай якасьці або універсальнасьці зарады значных пераваг у вікорыстоўванні памяці.
Q41. Кэшаванне прыфіксаў — калі змінюецца архітэктура
Калі многі запыткі разам выкарыстоўваюць дзейнавы, незменны прыфікс (прапанні сістэмы, схемы інструментаў, запрашаны кантэкст), кэшаванне KV-значэнняў гэтага прыфікса запобегае ўпорачнаму яго вычысленню. Тады архітэктуры вялікай меры праглядзяць стабільныя прыфіксы і зменныя суфіксы: нестабільны тэкст корыстніка размешчаюць у канцы, а спакушаную частку заставляюць абавязкова аднаковай, каб ключы кэшу былі правераны. Тэкст продукту і компіляторы прапанняў стаюць часткай параметраў прыдатнасі.
Q42. Калі кэш KV стае недзейным?
У будзь-які момент, калі токены мэнтуюцца, а не проста дадаюцца: прагэнераванне ў ходзе размовы, перапісва прапанні сістэмы, змена апісаў інструментаў або застосаванне некаузальных змян. Кэш прыфіксаў павінен быць ключоўваны точным ідэнтыфікатаром токена (і версіяй шаблона). Параметры выбору праекстаментоў не робяць K/V-значэнняў недзейнымі — яны толькі зменяюць спосаб, якім лоджыты стаюць наступным ID — але змена адаптара модэлю, праектнага модэлю або масштабу RoPE ў ходзе працы можа гэта зробіць.
Частка 6 — галава LM (лінейная + softmax)
Пытанне 43. Чаму служыць галава LM і якія ў яе формы
Пасляпэдні блок выдае h ∈ ℝ^(seq_len × d_model). Пасля фінальнай нормалізацыі адна лінейная праеобразавальная функцыя стварае лоджыты вокабуляру:
logits = h @ W_lm W_lm ∈ ℝ^(d_model × V)
Для d_model = 4096 і V = 128,000 параметры W_lm складаюць 524 мільйона, і ён стварае вектор шырынёй 128K для кожной оцэнюванай позыцыі.
Пытанне 44. Лоджыты для кожной позыцыі пад дэкадаваннем?
Нята. Пры падготовцы даных можа быць неабяжна оцэнка многіх позыцый, але звычна процедура дэкадавання патрэбуе толькі стану скрытых параметраў пасляпэльнай пазыцыі. Ранейшыя пазыцыйы ужо выбралі своі токены.
Пытанне 45. Вартасць галавы LM пад дэкадаваннем
Кожны крок умножае d-вектар на d × V — гэта дае адзіну колькасць FLOPs на роўна 2 × d × V, а таксама патрабуе полны чытанне потэнцыйна нез’яўленага элемента. Пры велікім V гэта параганяецца з працай FFN-слою, што стварае патрэбу ў адаптаваным softmax, паралельным раздзеленні слоўніку і вікорыстанні з’яўленых эмбеддзінгаў, калі гэта дапускаецца.
Q46. Лоджыты проты верыятнасцей
Лоджыты — гэта неогранічэныя оцэнкі. Softmax іх нормалізуе:
p_i = exp(z_i) / Σⱼ exp(z_j)
Памятаце пра інварыянтнасць па зсуве: дадзенне сталай да всіх лоджытов не змянюе верыятнасцей — гэта аднойчыны фундамент стабільных рэалізацый і вікорыстання тэмпературы як спосабу пераскалявання разлікав.
Q47. Чыслаўна стабільны softmax
Наўманіты вычынак exp(z_i) у фармаце fp16 даўае перэплыв дадзенняя пры сярэдніх лоджытовах, а таксама можа прывесты да таго, што весь рад ператворыцца на нулі, чаго рэзультатам ёсць 0/0. Для выправлення спачатку вычысляецца максімум раду:
p_i = exp(z_i − max(z)) / Σⱼ exp(z_j − max(z))
Найбольшы ўзлэк становіць exp(0) = 1; рэшта знаходзіцца ў дыяпазоне (0, 1]. Анлайн-алгорытмы (як у FlashAttention) спаўнаюць гэта з аперацыяй matmul, каб утрымацься ад стварэння вялічзючых матрыцаў оцэнак.
Q48. Перплексітас
Перплексітас — цэе exp(серэдняя аб’ёмная лог-правядзімасць) па токэнах — ступень “здзівлення” мадэлі. Яго вылічаюць на той жаэтапе, дзе вырахоўваны лоджыты/softmax. Ніжэйшы перплексітас у певнай домэне парадзіць пра крашчую наладку выбору наступнага токэна, але гэта не ёсць прымітны показнік корыстнасці чы безпекі.
Частка 7 — стратэгіі выбору
Пасля блока LM у нас ёсць вектар лоджытай. Выбор па гэтым вектару і ёсць спосабам, які прыводзіць да выбору наступнага ID.
Q49. Алгорытм разшыфравання “жаднабурным” способам — і чаму ён разчароўвае
Алгорытм «жаднае» парадоксальнае апраноўка завжды выбірае argmax. Ён дэтэрміністычны і не выклікае вялікіх затрат, але часта дае банальныя рэзультаты або ўпорствае ў паводзе конкрэтных умов: ранні токены з высокай верыгоднасцю можу захаваць последовасць у патленнях з высокай верыгоднасцю, якія людзі ацэнююць як гorsыя за варыянты з нейкім менш высокай верыгоднасцю. Ожываеце яго для задач выкарыстоўвання інфармацыі з вялікай чутлівасцю; утрымваецеся ад яго як стандартнага рашэння для прозы з адкрытым фарматам.
Q50. Чаму не beam search?
Алгорытм «палеткі» (beam search) зберагае B лепшых частковых гіпотэз. Ён корыстны, калі цэль мае малую дужыну і ёсць обмежанай (напрыклад, пад час перакладу). Для адкрытых дыялогаў ён часта дае універсальны, безпечны з точкы зору верыгоднасці тэкст, выклікае затраты B× на апрацоўку дадзеных і паслабае эфекты ад разнаобразнасці у стыле nucleus. Большасць дапрыемстваў на аднойчыных нейронных сетках абанавалі яго на корыстце метода выбору прыкладоў.
Q51. Top-k
Зберагаюцься толькі k самых вяліках лоджытаў, які пасля рэнормалізацыі ваколююцца. Гэта проста, але значэнне k ёсць неадаптабельным: іноды верасціяны, якія знаходзяцца за межамі топ-k, таксама маюць значэнне; іноды топ-k ўключае небажаныя значэння, калі распад ёсць рошчэрокім. Фіксаванае значэнне k не можа прыстосавацца да рошчэрокасці распаду.
Q52. Top-p (ядэро)
Сортаваецца па верасціях, зберагаецца найменшы набор, якога кумулятывная маса ≥ p, пасля чаго ваколююцца. Калі мадэль впэўнена, ядро зменшваецца; калі ёй неясна, яно расшырваецца. Самэ гэтае прыстосаванне ўскладніла фіксаваны топ-k як стандарт у багатых сістэмах. Тыповае значэнне p належыць да дыяпазона 0,9–0,95 і налагоджваецца па кожнам продукту.
Q53. Тэмпература — матэматыка і інтуіцыя
p_i = exp(z_i / T) / Σⱼ exp(z_j / T)
Лоджыты падзеляюцца на T пры пераходзе да функцыі softmax.
T → 0— разлікі між верасціямі стаюць вельмі вялікімі; распад зменшваецца да значэння argmax (грызлівы падход).T = 1— распад мадэлі без масштабавання.
T > 1 — спячэнне; большая колькасць неспадкоўнасці і рызыку некаляканасці.У рэалізацыі тэмпература сама па сабе не «дадае наяўнасці абыякавасці» — яна перакаштоввае распад, з якога берае даныя сэмплар.
Q54. Парадокс: тэмпература проты скорачэння
Спачатку застосавіце тэмпературу да лоджытов, а пасля — метод top-k / top-p да рэзультатнага распаду (альбо, адпаведна, скорачыце верыятносці пасля застосавання тэмпературы). Скорачэнне раней, чым застосоўваецца тэмпература, зменшае колькасць наявных «хвостоў» і зазвычай ёсць неправільным падходам. Зазначыце парадакс, які выкарыстоўвае ваш сервер; тыхі змены парадаксу могу змяніць працэздатнасць.
Q55. Штрафы за павтарэнне, частоту і наявнасць
- Павтарэнне / частота — зменшыце вагу токенав, якія ўжо бачыліся, часта пры этам скаляруючы па ўжо наяўной колькасці.
- Наявнасць — налагаеце штраф на токен, які хоць раз з’явіўся, незалежна ад колькасці яго павтарэнняў.
Яны борацца з цікламі ў творчым дэкадаванні, але гэта можа нашкадзіць намеровай павтарэнню (коду, паэзіі, правовым фразам). Лепшая лёгкая штрафна сістэма і строгія правіла зупнення, чым агрэсывныя меры, якія спантажуюць працэздатнасць.
Q56. За межамі top-p
Min-p — гэта прагі, якія залежаць ад найвышэйшай верыятнасці (p_i ≥ min_p × p_max); такая сістэма працуе лепшая, калі тэмпература высока, а распад верыятнасцей — дзвінкі. Mirostat і падобныя кантролеры нацэлены на стварэнне эфекту неспакою. У звычайным вікорыстанні яшчэ прывяжаны тэмпература + top-p, але min-p постаўляе ся все бол популярным.
Q57. Чаму тэмпература 0 все равно зміняецца?
Нават „жадныя“ схемы апрацоўкі разлічаюцца за такімі параметрамі:
- Недэтэрміністычныя працэсы на GPU і з’едыненыя керні.
- Разныя графікі апрацоўкі пакетаў / безперывных пакетаў.
- Спекулятывныя шляхі і розныя матэматычныя рэалізацыі функцыі softmax.
- Стандартныя штрафы, правіла зупнення і шаблоны з боку сервера.
Метод «жаднае запісво» з стабільнымі бітамі выкалічвае працэю, калі трэба вікорыстоўваць заблокаваныя ядры, розмер пакета 1 і абоўсюдна ідэнтычныя версіі програмнага забезпечэння — гэта рэдкасць у флотах з калькуляцыяй на адно часоўка.
Q58. Прымусовая нарадка JSON або схемы
Варыянты рашэння:
- Актыўнае выкалічванне у варыянцы JSON (штучнае).
- Обмежаная дэкодаванне / маскі граматыкі — ў кожным кроцы абнуляюцца нелегальныя токены (regex, схема JSON, CFG).
- Выкарыстоўванне API-інтэрфейсаў інструментоў/функцый, якія парсуюць пасыланы матэрыял праз дапамогу спецыяльных каналаў, а не як звычны тэкст.
- Пасляэфектная палаткаўка (як апошняе рашэнне).
Обмежаная дэкодаванне ёсць надзеяным рашэнням для надзеяных сістэм, калі неабходна гарантаванне правамернасці.
Q59. Адгукненне да налаштаванняў выбору прыкладоў
Зафіксавшы мадэль, працюйце з параметрамі тэпературы/топ-п на пазначанай выборцы: успех задачы, токсічнасць, разнаванасць (distinct-n), частка парадоў, затрымка. Адначасова выконвайце офлайн-ацэнку і онлайн-тэсты тыпу A/B з чысткімі паметрамі продукту. Не налагайце настройкі на аднолькі выбраны прыказ.
Частка 8 — Спекулятывная дэкодаванне
Q60. Асновная ідэя
Дышэўскі праектны мадэль прымае калькі будучых токенав; цэльвы мадэль пераканае іх за адну паралельную обработку ў межах праектнага фрагмента. Прыйняты прыдатак становіцца выходам; пасля першай адмовы выберыце замену з распадзела цэльвага модэлю і адкінуце рэшту. Вы вітрачаеце большую частку магчымасцей цэльвага модэлю на паралельную пераканку, а не на серыйныя крокі з аднім токенам.
Q61. Чаму распадзел выхода не зменяецца
Пры адзьякаванні выкарыстоўваюцца спадзеянні межаў межы цэльвога p і праектавага q, так што адзьякаваныя токены плюс застаткова перасортка восстанавляюць точна p:
P(emit x) = q(x)·min(1, p(x)/q(x)) + P(reject)·p'(x)
Адзьякаваны шлях дапамагае min(q,p); застатковая перасортка запэўняе max(0, p−q). Сумаванне дае p. Таму спекулятывная дэкодаванне ўсупершце без втырок у супараванні з звычайной перасорткай цэльвага дадзенага — гэта прышвартаванне скорасці сістэмы, а не апрыксімацыя модэлю.
Q62. Адзьякаваная скорасць
Пры шчыльнасці адзьякавання α і дужыне праекту k, адзьякаваныя токены на цэльвы крок ёсць:
E[tokens] = (1 − α^(k+1)) / (1 − α)
Нават якшо кожны токен праекту не будзе адзьякаваны, вы все раве отрымаеце адзін токен з пасэгу пераканання цэльвага дадзенага. Пры вартасці праекту c у супараванні з цэльвым крокам:
speedup ≈ E[tokens] / (1 + k·c)
Прыём: α=0.8, k=4 → адзюкацыя пра ~3.36 токэнаў; з c=0.05 → ~2.8×. Публікуемыя успехі часта знаходзяцца ў дыяпазоне 2–3×. З вялікім значэнням k эфекты становяцца все менш значнымі, таму што верагатыба выжывання падае прымусова α^k.
Q63. Калі спекуляцыя шкодзіць
Нізкай рэгрэт (складныя запіты, змена домэна, слабкія праекты), занадта высокія вітраты на стварэнне праекту, або керні, якія не можаць эфектыва адбавляць пераканання паралельна. У такім случае додатковыя вітраты перавышаюць карысць — прыем толькі праз мераванае α.
Q64. KV-кэш пасля адхоўлення
Зберагчык пунктавых дадзенняў (і праектаў) для адхоўленых позыцый. У рэалізаціях выкарыстоўваюцца длужыні контрольных пунктав і ўрыванне дадзеных; багі тут пашкоджаюць будучую працэсу пераканання. Адхоўленыя токэны застаюцца з своімі K/V-значэннямі.
Q65. Савечныя варыянты
Медуза / мнагалікавыя версіі, прыстроі для стварэння версій у стыле орла, версіі на адказ на запіт/н-грамы з самага кантэксту, а таксама каскадныя прыстроі для стварэння версій. Той самы прынцып пераканальвання з адпаведным цэльным тэкстам.
Q66. Увага да дрэва
Працэс стварэння версій можа запропанаваць дрэва кандыдатаў, а не толькі лінейную ланцюговую структуру. Увага да дрэва пераканальвае адночасна колькі з галоў дрэва, чым падвайнае колькасць адзначаных версій за адны вызов, калі стварэнне галоў ёсць дышэўным.
Частка 9 — Дэтокенізатор і стрымінг
Q67. Дэтокенізацыя — гэта не простая зворачная карточка
Дэтокенізаторы должны ануляваць маркеры прыводка, караціца сабе замену байтов, складваць графемы з калькі токенав, а таксама утрымвачыцца ад выдачы непаштоўных данаеў UTF-8. Дэтокенізацыя праз стрымінг зберагае даныя ў буферы, пакуль не будзе можна безпечна выдаліць цэлы сімвол/частку — інакш кліенты бачыць замененыя сімволы.
Q68. Як працюе стрымінг і што мерыць
Серверы выдаюць токены (або часткі страк) як толькі яны ствараюцца. Памерайце TTFT, TPOT і час да першага чытальнага сімвола пасля дэтокенізацыі і буферавання. Для корыстніка важлівейшы самэўказаны показначык, чым первісныя часовыя меткі токанаў.
Q69. Перыяды завершэння ўскладненыя
Перыяды завершэння можаць распрастарацца за межы токанаў (\n\n проты аднаго токана, які містыць два новыхя радка). Неабходна пераканацца ў расшыфраваным тэксце (або у рэгіоне токанаў), а не толькі ў роўнасці ідэнтыфікатораў. У разе перакрыцча з часткова створанымі перыядамі завершэння трэба здарыць ануляванне, каб тэкст перыяду не быў паказаны.
Q70. Чаго чакаецца для завершэння генеравання?
EOS / спецыяльныя ідэнтыфікаторы завершэння, прыдатныя стракі завершэння, ліміты па колькасці токанаў, ануляванне з баку кліента або стандартны механізм нагляду сервера. Лепей выкарыстоўваць явны прыем для обработкі EOS, які будзе адпавядаць шаблону чату.
Частка 10 — FlashAttention, квантызацыя, roofline
Q71. FlashAttention — тачныя тверджэння
FlashAttention вычысляе атэнцыю без стварання цэлага n × n матрыцы значэнняў у HBM, выкарыстоўваючы тайлінг і статыстыку softmax у рэальны час. Гэта зменшае навантажэння на памяць і дазволяе працаваць з дыялектамі большай дужыны / большымі пакетамі. Гэта не зменяе матэматычны рэзультат атэнцыі (з урахоўванням нюансаў чысловай обработкі); цэе алгорытм, які уважае аспекты вводу/выводу, а не іншая мадэль.
Q72. Чы гэта дапамагае пад час дэкадавання?
Пад час дэкадавання з кэшам атэнцыя часта ствараеся з дапамогою q дужыны 1 да кэшаваных n ключоў — класычная перадача FlashAttention (вялікія квадратныя значэння) становіцься меншай. Варыянты (FlashDecoding і т. п.) все ж дапамагаюць у зборэ шыроўкі канала для KV-элементаў, але дэкадаванне застаецца залежным ад навантажэння на вагі, калі толькі пакет не ў вялікай дужыне.
Q73. Квантызацыя
Зберагаць/обчысляць вагі (і інодзе актывацыі/KV) у болей скураных фарматах (FP8, INT8, INT4, …). Памяць і пропускна здатнасць зменшаюцца прыблізна па меры шырыні біта; адхіленне ў якасці залежыць ад методу (GPTQ, AWQ, smooth quant, …). Практычны правіл: 8-бітны фармат часта ўжо майжэ безкоштовны; 4-бітны фармат коштуе трохі больш, інодзе ў межах шуму пры тэставанні — завжды пераканаўцеся на своіх задачах.
Q74. Roofline ў аднам параграфе
Прырасці FLOPs у супараванні з інтэнсывнасцю арыфметычных вычыслень. Перадзаполнення даных знаходзіцца бліжэй да «пакрыву» для вычыслень; дэкадаванне пакета 1 знаходзіцца бліжэй да «пакрыву» пропускной здатнасці пры ~1 FLOP/байт. Оптымізацыі, якія падвышаюць інтэнсывнасць (блокаванне, менш бітоў на кожны корыстны FLOP), прыбліжаюць вас да грэбеня; чыстыя прыбліжэння швайнаў не можу пераканаць вас за межы існуючага «пакрыву».
Q75. Раздзелэнне большога модэлю між GPU-мі
Tensor parallel — раздзеленыя элементы ўнутрь шароў (патрабуеяцца быстрая межасобная связь). Pipeline parallel — прызначэнне дыяпазонам шароў павагаў (рызык „бульбашак“). Expert parallel — раздзеленыя эксперты ў модэлі тыпу MoE. Replica / data parallel — копіюванне модэля для падвышэння працэсавальной спроможнасці. У рэальных развертаннях іх сумяшваюць; KV-даныя павінны быць раздзеленыя або копіюваныя адпаведна да структуры attention.
Частка 11 — Чысла з доскі
- Вагі 70B у фармаце fp16:
70e9 × 2 ≈ 140 GB. - KFLOPs для вычыслення на выхадзе: ~
2 × параметры × токены(па парадку велічын). - KV на токан (Llama-3-70B-class GQA): ~
два · шары · kv_heads · head_dim · dtype_bytes, прыблізна трохвята мегабайта на токан.
bandwidth / weight_bytes (клас H100: дзесятків tok/с у фармаце fp16 ранейш за іншыя варыянты).4d² прыблізна проты ~8d²). Частка 12 — Асаблівасці дыяграм
У звычайных навучальных дыяграмах не паказваюцца: шаблоны чату да токенізацыі, вплыв GQA/MQA на шырыню KV, дэталі парадку выбору прыкладоў, буфераванне пад час дэтокенізацыі, KV у фармаце сторанак і цыклы спекулятывнай перацэнкі. Спрыяйце дыяграмам як карточкам, а не як контрактам.
Заканчэнне
Інферэнс — гэта працэс пераціўкі дадзеных з байтаў у тэкст у строе, дзе прадаўленне дадзеных залежыць ад вычысляльных магчымасцей, а дэкадаванне — ад пропускной спроможнасі; каш KV домінуе ў памяці для калькольнікаў з кантэмпаратывацыяй, а кожная значныя оптымізацыя — GQA, пейджаванне, неперывная групаваўка, квантызацыя, FlashAttention, спекуляцыі — існуе для таго, каб перанесці вычысленняя на найблагопрыятнейшыя для апаратуры умовы, не змінюючы матэматычны мадэль больш, чым трэба.
Дзеяснення А — Эканаміка прадаўлення дадзеных проты дэкадавання ў практыцы
Калі вы выбіраеце розмер флоту, пачніце з разбівкі по лініі даху. Задачы з прадзеяным даным аддаюць прыорытэт ядрам тыпу тэнзараў: дужыя запіты ў рэжыме кодовай падтрымкі або выкачванні дадзенняў з RAG можу паказаць высокі рэверсны час апрацоўкі, калі ядра работаюць эфектывна. Задачы з дэкодаванням у першай пакетнай групе ствараюць атмосферу, сэродню тэстам на працездатнась цяпей памяці — тыя ж 70 мільярдаў вагов праходзяць праз HBM за адну операцыю GEMV. Самэ гэтая прычына, чаму продукт, які выдае адпаведзенні дыяву 500 токенаў, здаецца медленны нават на супер-выконваючых працэсарах, калі толькі не выкарыстоўваць пакетаванне, квантызацію або іншыя тэхнікі оптымізаціі.
Рэгрэсіі тыпу TTFT зазвычай означаюць, што запіты сталі дужэйшыя (з-за історыі запытоў, дадзенняў з RAG, схем інструментаў) без кэшавання прымусовых даноў. Рэгрэсіі тыпу TPOT зазвычай означаюць, што пакетаванне перэстало работаць эфектывна, пропускная здатнась зменілася або тырота KV-цяпей вынудзіла вікорыстоўваць маленькія пакеты. Час адпаведзення з початку да канца — гэта не адна елементарная настройка: скорачанне адпаведзенняў дапамагае зменшыць час TPOT у N разоў; кэшавання запытоў сістэмы дапамагае у сітуаціях TTFT; спекуляўнае дэкодавання дапамагае у падвышэнні часу TPOT, калі верагатнась прыйнятнага рэзультата высока.
Мэтрыкі працяздатнасці, праказаныя на панелях керування, лёгкая адманіпулявацыя іх за дапамою велікіх пакетаў дадзеных, што спрычыняе проблемы у інтэрактыўных корыстувачах. Неабходна праказваць і тое, і іншае: колькісць токенаў за секунду на адну GPU, а таксама значэння p50/p95 TPOT у рэалістычным сумешанні. Постацэйна обработка дадзеных дазволяе GPU працаваць без надмётнага навантажэння, якое ствараюць статычныя пакеты; частковая падготовка дадзеных запобегае таму, каб адны 32K-запросы зупінілі дэкодаванне всіх іншых.
Раздзельная падготовка/дэкодаванне дадзеных ёсць архітэктурным прызнанням таго, што гэтыя два тыпы задач выкарыстоваюць разныя апараты. Узлы падготовкі дадзеных можу працаваць з вышэйшай ўзлётнаю спроможнасцю; узлы дэкодавання патрабуюць меморыі і пропускной здатнасці для KV-дадзеных. Сетка должна эфектыва пераводзіць KV-дадзеныя, інакш вы прыгараеце. Не кожная команда павінна ствараць такую структуру з першага дня — але кожная команда павінна разумець, чаму такая схема існуе.
Дэтальны аналіз B — Токенізатор і вартасць у багацячыных мовах
Універсальна прыемкасць BPE на рэвэле байтаў ёсць і дар, і прытвор. Аплікацыі для чату на англійскай мове недастаткова вырахоўваюць косты для тэксту на хінды, тайскай мовах чыста або з велікой колькасцю эмодзі. Калі ваша модэль калькуляцый вырахоўвае токены на секунду для англійскай мовы, багатая на мовы экспанзія можа таямна спалохваць бюджэт. Калі гэта мае значэнне, выбірайце токенайзеры з шырэй падтрымкай багацых мов; вырахоўвайце токены на кластэры графем у рэальных корпусах, а не ў lorem ipsum.
Шаблоны чату ёсць часткай ідэнтычнасці модэлі. Адзін пракрашаны спецыяльны токен можа спрычыніць неправіловую гэнераванне тэксту чыста або яго перарыв. Зберагайце версію шаблону разам з рэвізіяй модэлі ў вашым рэестры. Калі дыбагуеце сітуацыю «модэль ігнаруе сістэмны прапан», токенізуйце оба баку і паварыньце ID-ы, перш чым каляцаць на вагі модэлі.
Палітры цыфр маюць значэнне для агентаў таблічных калькулятораў і рэпетытараў матэматыкі. Калі цыфры 1000 і 1,000 адзначаюцца разна, алгорытмы столчакоў ператвараюцца на лотарэйныя купаны. Пры стварэнні калькулятораў на базе LLM-аў лепш выбіраць токенайзеры з чысткамі правіл для цыфр, або перадаваць арыфметычныя вычысленні іншым засобам.
Дзеясны аналіз C — Атэнцыя, GQA і памяць
Історыя мульты-галавай атэнцыі — гэта спецыялізацыя ў межах бюджэту. Історыя GQA — гэта колькасць KV-байтаў. Пераход з MHA на GQA можа зменшыць размер кэшу прыблізна на ступенек спадзячасці галав запыту і груп KV — часта на 4–8 разоў — пры тым, калі трэнуецца для гэтага, якось зменшываецца якасць. MQA — гэта крайняя форма; MLA і супадзельныя методы сціскання прагледваюць той самы бутлнэк з разнымі алгебраічнымі падходамі.
Маскаванне прычын з ад’ютацыяй -як негатыўная бесканечнасць — не ёсць педантства: будзь-якая скончаная значэнне маскі прыводзіць да вытэкаў. Багі ў трэнаванні, якія віпадкова дазволяюць будучы ўвагу, ствараюць мадэлі, якія выглядаюць сільнымі па метрыках, заданых вучыльнікам, але потым зазнаюць няўспэху пад час справжнего автарэгрэсіўнага выкарыстоўвання. Кернелі часу дэкадавання, якія прыпускаюць, што структура кэша павінна адпавядаць геаметрыі трэнавання (колькасць галоў, база RoPE, масштабаванне), не працуюць належна.
Рэзыдуалі і прадзе-нормаванне — гэта прычыны, чаму стакі з 80–100 шароў ёсцю стандартам. Калі спецыяльная архітэктура ўсуне іх «чырага простасці», чакайце на нестабільнасць у трэнаванні раней, чым на якую-лебе крэатыўнасць. Механізм кантролю SwiGLU ёсць параметрам якосці, які паўтараеся ў праблемах з памяцю — трэба ведаць, чы ваш стак спраўна яго інтэгруе.
Дэплі дайв D — стратэгія пагінацыі KV і прыфіксаў
PagedAttention пераканструюе KV у скупчэнне блакоў. Наследкі:
- Фрэймворкі агентаў з вялічзюючымі спаканаванымі сістэмнымі прамптамі должны стандартызаваць тыя прыфіксы, каб хэшы блакоў збіваліся.
Анвалідаванне кэша з прадзеўкай — гэта проблема правільнасці, а не толькі выдатнасці. Калі схема інструмента зменяецца, а ключ кэша гэта ігнаруе, мадэль будзе вярна старым KV-даным для новых інструкцый — гэта тонкія, але неблагопрыятныя несправы. Уключыце ID токенізатора, хэш шаблона, ID LoRA і масштаб RoPE ў ключ.
Для вывядзення дадзеных пад тым прытыскам памяці трэбаецца правіла: LRU для незайнятых кансэртацый, жорсткія ліміты для кантэксту або стысненне за дапамой падсумавання. Што бы вы не выбралі, пакажыце гэта ў продукцыі — тыхае скрашчанне ёсць проблемай доверлівасці.
Дэтальны аналіз E — Softmax, выбіранне прыкладоў і дэтэрмінізм
У маршрутах fp16/bf16 неабяжна наявнасць стабільнага алгорытму softmax. З’едыненыя ядры камуфлююць процэс макс-вырахунку, але спецыяльны код для даследжэння все равно страждае ад перэпалювання. Перплексітас застаецца корыстным показнікам для выявлення змян, калі мянююцца ядры або схемы квантавання: рэзкія змяны значэння означаюць, што распад зместыўся.
Композіцыю выбору прыкладоў трэба тэставаць па елементам: спачатку тэмпература, потым обрыв, пасля таго штрафы, і толькі пасля таго выбіранне. Змяніце парадак у тэстовым фіксчары і старайцеся, каб «золатыя» транскрыпцыі сталаўся разнымі. Дэкадаванне JSON пад абмежэнням трэба тэставаць на навантажэнне; генераванне маскі можа стаць прычынай перавантажэння CPU, калі ёё рэалізаваць неакуратна.
Тэза пра тое, што тэмпература равная нулю значыць дэтэрміністычнае дэкадаванне, — гэта маркетынговая фраза, а не матэматычная гаранція на рэальных GPU. Калі вам патрэбна аўдытная рэплея, запісвайце выбраныя ID (або насэнні RNG плюс ядры, заблокаваныя для пакета 1). Для большасці дапраўкам прыемнае воспаўленне рэзультатаў у межах аднае версіі — гэтага дасылайце дакументацыю.
Глыбокі аналіз F — спекулятывныя операцыі дэкадавання
Спекуляцыя без адзінаго падкоса ёсць моцная, таму што власнікі продуктов бярознаюцься з падышам якосці. Тым не менш, аператывныя практыкі должны сочыць за кантэкстам прыняцця паказаў па класах. Завершэнне коду часта прынямліваеся добра; творчыя, аб’ектныя чат-розмовы — можа і ні. Адаптаванне дужыны праекту на адваротнае падставе няўзрымлівых прыняццяў лепшая, чым статычныя прыкладзеныя.
Спекуляцыя на адной лініі дапамагае, калі праект можа даслаўна запропанаваць альтэрнатывы. Тэсты на правільнасць адката KV должны быць у CI: цярпеліва адхіляйце іх пад час выканання і пераканваюцеся, што наступныя значэння атэнцыі падпараджаюцца неспекулятыўнай базе.
Мадэлі праекта должны дзельніцца токенайзерам (או сумэжным кардыналам) з цэльвай мадэлю. Несувярэнныя токенайзеры ствараюць „безшумны“ смэт, які выглядае так, нібы спекуляцыя зробіла мадэль глупейшай.
Глыбокі аналіз G — стрымінгавы UX і паставкі
Пользоватары спрыяюць плавнасці за счыткам недэтокенаўваных сімвалаў, а не суровых ID. Храніце даныя пакуль Unicode будзе валідным; калі гэта можліва, апусціце іх пасля пробела для лепшага ўжытку ў чаце. Пры зупінкі последоўнасці токенаў трэба астаточна стырzyć іх, каб кліент ніколі не бачыў тэксту зупінкі. Пры максімальных лімітах токенаў трэба дадаць чысты сігнал пры продажу, калі продукт дазволяе продаж.
Дэплі-дайв H — FlashAttention і квантызацыя пад час аддачы
FlashAttention дазваляе выкарыстоўваць большыя пакеты дадзеных і ўжоць ціхэйшую обработку за рахунак зачынення HBM. Адзначайце гэты факт, але не ставіцеся да гэтага як да перапісву прынцыпаў дэкодавання. Квантызацыя ёсць ключовым элементам дэкодавання: менша колькасць байтов на кожны вага падвышае эфектывную колькасць токенаў за секунду. Пераканайцеся ў эфектывасці на сваёй сэтцы тэстав — у чынносты інструментаў для вызова і вялікаг адтварання кантэксту — прычым перш чым ствараць уяву пра 4-бітную аддачу.
Логіка расчытку паверхні даху дапамагае заставіць аргументы чыстымі: калі у вас обмежана пропускная спроможнасць, пакупка большай колькасці TFLOPS без адказвеннага падышча пропускной спроможнасці (או зменшэння колькасці байт) ведае да разчароўвання. Калі ж проблема заключаецца ў вычысляльных можлівасцях пад час прадзейснення празаполнень, тады лепшыя алгорытмы GEMM і планаванне частак маюць большое значэнне, чым проста зменшэння колькасці KV-значэнняў.
Дэтальны аналіз I — Рэаліяў колькагуPU-рэшэнняў
Для паралельных вычыслаў тэнзораў патрэбны быстрыя межасобныя звязкі, інакш працэс застоюецца пад час аператыў all-reduce. Для паралельных вычыслаў у фармаце пайплайну патрэбны мікрогрупы дадзенняў, каб сховаць проблемы, якія выступаюць у віглядзе «бульбашак». Спалучэнне гэтых падходаў з безперывным формаваннем груп дадзенняў і вікорыстоўваннем KV-значэнняў у фармаце стороніц ёсць прычыной таго, што інжынерныя механізмы для прадзейснення модэляў становяць вялікія кодавыя базы. Калі хтось прапануе проста разбіць модэль на часткі, запытайце, па якой вясці гэта будзе здарыцца і што станецца з парадкам размешчэння KV-значэнняў.
Дэтальны аналіз J — Складанне пайплайну
Шлях запытку, які варта запамятаць:
- Фарматаванне шаблона і токенізацыя на CPU
- Укладка дадзенняў і празаполнэнне з вікорыстоўванням каузальнай увагі, запіс KV-значэнняў (GPU, вычысляльнае обмежэнне)
Кожная оптымізацыя адпавядае аднаму стрэлкі ў тым спіску. Калі вы не можэце паказаць на стрэлку, значы вы яшчо не аналізаваеце працэс інферэнсу — вы проста збіраеце інформацыю.
Дадатковыя раз’яснення у стылі FAQ
Чы рост тэмпературы значным чынам падвышае крэатыўнасць? Ён падвышае энтропію распадзелу наступных токенав. Тое, чы люды будуць вважаць рэзультат крэатыўным, залежыць ад задачы; мерку трэба вжываць за дапамогою паказнікаў разнаобразнасці і якосці, а не толькі на основе вражэнняў.
Чы грызлівасць калі-небудзь ўсё ж правільная? Так — класыфікацыя як генераванне, структуравана экстракцыя з обмежаным дэкадаваннем і дзеякія інструменты для ацэнкаў. У відкрытым дыялогу зазвычай так не ёсць.
Можна ліквідаваць кэш KV і перасчыляць даныя? Завжды, але з квадратнымі вітрамі. Пераканальныя прыстроі іноды працуюць у короткіх тайм-фрэмах без кэша; серверы практычна ніколі не должны так робіць.
Чаму на дыяграмах паказаны функцыі softmax як у частцы атэнцыі, так і ў галаве LM? Гэта разныя варыянты softmax: адна сумешчае значэння ўнутрь шару; другая ператварае лоджыты вокабуляру на катагорычны распад для выбірання прыкладоў. Адна і тая ж сям’я функцый, але разныя задачы.
Што новы інжынер павінен спачатку запам’ятаць? Проблемы, звязаныя з прадзейсненням дадзенаў наперад протырацею, формулу колькасці байтов KV на токен, TTFT протыраце TPOT, а таксама тое, што батчаванне прагнучае зменшыць затрымкі за рахунак падвышэння праўоўдзяйнасці. Усе інша вырастае з гэтых чатырох аспектаў.
Расшырэныя пояснення — ядры прадзейснення дадзенаў наперад і механізмы TTFT
Якасць прадзейсвення прадаўлення больш за ўсё залежыць ад таго, насколькі швайна ўмогаць ператворыць запіт у запрашаны KV-кэш. Ядро адзначэння, з’едыненыя шляхі MLP і спосаб перакладкі запіта на часткі вялічыню крывай TTFT. Калі запіты маюць спакойны корэнь, кэшаванне прыфікса ператварае падзею прадаўлення ў просты пошук; калі ж няма такога, кожная новая сесыя плаціць полную цэну.
Прадаўлення на часткі ёсць адночасна інструментам справядлівасці, і інструментам змены затрымкі. Без яго адзін прыём 40 каўалакоў токенав можа заблокаваць дэкодаванне для всіх іншых на GPU. З яго інтэрактывныя стрымы продовжаюць працаваць, пакуль дзейнае заведаменне адбываецца па часткі. Цэна за гэта — адносна вышыя значэння TTFT для самага дзейнаога заведамення, але гэта зазвычай ўзяць можна.
Размешчэнне прыфікса — гэта рашэнне, якое выносіцца ў зв’язку з адзінам продуктам. Пастаўце нестабільны тэкст корыстніка пасля фіксаванага корэня, каб ключы кешу засталіся стабільнымі. Калі аддзел маркетынгу ўсё час перапішае сістэмны запрос, спрацьвуйце з гэтым як з прычыной розбівання кешу і чакайце, што TTFT зноў вырасце, калі новы корэнь знову стане актываўным.
Расшырэная інструкцыя — Адгадваўанне матэматыкі пропускной здатнасі словамі
Уявіце сабе, што вы чытаеце весь набор ваг з HBM аднае разы за кожны створаны токен пры розмірэ пакета адна екземпляр. Інтэнсівнасць арыфметычных вырахункаў зменшваецца да аднаго корыстнага нараджэння-скаладання на кожны перадвінуты байт. Апаратура, якая добра справляецца з інтэнсіўнымі задачамі GEMM, выглядае бездзейнаю, таму што чакае на кантролеры памяці. Батчаванне дазволяе пераўтрымваць кожны завантажэння ваг у многа последованасці; квантызацыя зменшуе сама вагу дадзенняў; спекулятывная перапрацоўка прыводзіць к тому, што калькуляцыі, якія раней веліся серыйна, цяпер выкарыстоўваюцца паралельна. Гэта разныя спосабы падняцца на тую ж гору.
Калі хтось стверджуе, што ядро працюе “2 разы быстрэе” пад час дэкадавання, запытайце, пад якім “небе” ён знаходзіцца. Калі працэўка обмежаная шырыней каналу, чыстая оптымізацыя ALU не можа даць удвое вышэйскую скорасць. Калі ён таксама зменшыў колькасць перадаваных байтов, паверыце ў яго пасля скрыншота з інструментам для аналізу.
Расшыржаны апіс — Палітры обслужвання і SLO-ы
Запішыце SLO-ы окрэма для TTFT і TPOT. Выпуск, які павышае пропускную здатнасць, калі п95 TPOT удвое зростае, ёсць рэгрэсіяю для інтэрфейсу чату, нават калі панель керування ўместнасцю адзначае успех. Параметры безперывнага групавання (максымальная колькасць токенав у групе, максымальная дужка чакання, прывілейванне для дэкадавання проты падготовкі частак) — гэта практычныя настройкі, якіе стояць за гэтымі SLO-амі.
Контроль прыему дадзеных належыць да таго ж розраду, што і урахоўванне KV: адклейце або пакладзіце у чэргу новыя сесіі, калі прагнозаваная памяць кэшу перасягае заданы ліміт. У іншым случае сітуацыя з нехваткай памяці выглядае для кліента як адзінакавыя збоі мадэлі.
Расшыржаны апіс — Спіс пераказоў токенайзера
Перш чым практыкуваць мадэль:
- Зберагаюце файлы токенізатора і тэкст шаблона чату ў той жа хранільнік дадзеных, што і вагі мадэлі.
- Адрабатаваце калькуляцыю дужын токенів для калякоў мультыязычных стрэнгаў і эмодзі.
- Адрабатаваце калькуляцыю дужын токенів для стрэнгаў, якія маюць багато цыфр, калі продукт выкарыстоўвае матэматыку.
- Пераканаўцеся, што ID-ы токенів завершэння паспаўная з маркерамі канца шаблона.
- Пераканаўцеся, што інструменты для вычыслення logprob выкарыстоўваюць той жа токенізатор, што і пры аналізе дадзеных.
Якшо прыхіліцеся да якога-небудзь з гэтых пунктаў, вы будзеце раскладваць прычыны “якосці мадэлі”, якія на самай працоўцы ёсць наследкам змян у пакаванні.
Расшыржаная інструкцыя — варыянты Attention у часовай шкале
Першыя ШМ выкарыстоўвалі цэлы MHA і платылі за яго з выкарыстоўвання кэшу. Трывогі, зв’язаныя з працэсам вырабоцтва, прывелі да стварэння MQA, а пасля — GQA як компроміса, які перадувалі большасць пунктав перакантролю. Ідэі MLA і супаўзяжных KV з нізкім рангам продовжаюць тую ж сагу: захаваць насышчанне запіту, але зменшыць колькасць дадзеных, якія зберагаецца за кожны пакет токену. Чытая научную статэю, трэба перакладаць тверджэння на «байты на токен KV» і «змяну якосці па нашым адлікаванню» — маркетынговыя тэрміны пра «эфектывную увагу» інакш выступаюць беззначнымі.
Расшырэныя пояснення — Paged KV і поведанне кількох аб’ектаў
Матэматыка фрагментаціі ёсць жорсткайя для суседзячых рэзервацый. Пагінацыя ператварае яе на задачу распадзелу з фіксаванымі блакамі. Кластэры, якія падтрымваюць кількох аб’ектаў, должны фіксаваць неудачы распадзелу, выкарыстоўваць затрэмтвання з табелей блакоў і ступень падаражэння. Разычны спад у ступені падаражэння часта означае змяну у фармаце прыводу дадзеных або тыхамую змяну у механізме токенавання.
Раздзеленыя копіі пад час запісу межа лучамі і паралельнымыя прыводкі не ўзначальваюцца як неабязковыя для дэкодавання, падобнага да пошуку; без іх вы без прычыны збільшаеце запатрэбнай памяці за розмер луча.
Расшырэны ўвод — Выбіранне прыводакоў для продуктав
Стандартныя настройкі для адправкі, якія падходзяць да задання:
- Параметры выкалічвання / інструменту: нізкая тэмпература, обмежанае дэкодаванне, метод „жаднабытнае“ або маленькі ядро.
- Чат-падтрымка: сярэдняя тэмпература, ядро ў межах стандартнага дыяпазона 0.9, лёгкія штрафы за павторэння, калі з’яўляюцца ціклы.
- Творчая праця: вышэйшая тэмпература, узьважэнне на параметр min-p, адчутныя паведамлення для корыстніка пра варыяцыі.
Запісвайце тупл прыводакоў разам з кожнай адпаведзю для тыкетаў падтрымкі. Без гэтага немагчыма адпавесці на запіт „Модэль вчора сказала X“.
Расшырэны ўвод — Адкліканне спекуляўнае дэкодавання
Застосавайце гэта за спінам флага. Адметрабавайце прынятнасць па канцэнтры. Выключайце, калі α падае ніжэй за роўню выкарыстання, вылічаную на аднойчынку з вашай пачатковай вартосці c і пачатковага дужынкавасці k. Зберагайце некон’юктыўны фрагмент трафіку канарыя назаўсёды — гэта ваша асновная праметка якосці.
Забяжыцеся, каб шляхі адклэювання чыставалі KV. Дадзіце тэст хаосу, які выклікае адклэювання ў серэдзіне секвенцы пад навантажэнням.
Расшыржаны апіс — дэталі протаколу стрымінгу
Адначыце, чы рэжым перэдачы дадзенняя стрымуе токены, рэстры, паспрацаваныя з токенайзаціі, чы і адно, і другое. Кліенты, якія паспрацоўваюць дадзення інакш, не будуць згодны ў паўстановлэнні меж. Лепш выкарыстоўваць паспрацаванне дадзенняў з боку сервера з явнымі запускамі “flush”, калі готавы цэлы кластэр графем. Дакументавайце, як адсікаюцься секвенцы зупнення, каб код UI не обрабоўваў іх два разы.
Расшыржаны апіс — тэсты прынятнасці квантызаціі
Перш чым увёсці 4-бітныя вагі ў працэсе:
- Заўядзейце стандартны набор тэстаў eval.
- Заўядзейце фікстуры для вызову інструментаў.
- Заўядзейце тэсты з дугім кантэкстам.
- Парабяльце тэсты на адхіленні / безпеку, як гэта прыемліва.
- Парабяльце показнікі p95 TPOT і VRAM.
Калі якасць падпадае пад даговораны ліміт эпсілон і разлік у часе адпаведны, выкладзіце продукт. Калі няма — застаўце 8-бітную версію для гэтага мадэлі.
Расшыржаны апісанні — адказы на задачы з даскай для малювання у прозе
Пам’ятка для чэкпоінта з семдзяць мільярдаў параметраў у фармаце fp16 становіць або-маста чатырнацца гігабайтаў толькі для ваг. Адпрацоўка пакета даных коштае прыблізна два FLOPs на параметр і на токен. Адбыўчы рост KV-элементаў ёсць лінейным у залежнасці ад колькасці актуальных токенаў і вялічыны колькасці галав ключ/значэнне, якія фактычна зберагаюцца. Швальнасць дэкадавання пакета №1 завісіць ад пропускной здатнасці памяці, дэленай на колькасць байтов, якія адчыняюцца за кожны крок. Табліцы эмбедынгаў і нез’якораныя галавы LM можуць выкарыстоўваць сотні мільйонаў параметраў у большых словарах — гэта не памылкі аброунавання. Унутрані ў блоке шлях фід-фарварду часта мае прыблізна удвое больш параметраў проекцыі, чым параметры атэнцыі.
Расшыржаная інструкцыя — Навчанне чыстасці дыяграм
Калі вы паказваеце схему працы новачкам, адзначайце выключаныя элементы: шаблоны, пагінаўкю, безперывную групавання даных, спекуляцыі і буферы для дэтокенізацыі. Інакшыя інжынеры рэалізуюць дыяграму і стаюць здзівленымі пад час працы.
Заключны ўдзяг — Як выглядае «завершанне» для власніка інферэнсу
Вы можэце без слайдоў паспяшыць, чаму адпаведны інцыдэнт пашкодзіў TTFT у працу, на адміністрацыю TPOT. Вы можэце ацэніць памяц KV для запраектаванага цэлевага рывня канкурэнцыі × кантэксту. Вы можэце назваць, які з механізмаў — пакетная обработка, квантавацыя, GQA, спекуляцыя, кэш прыфіксаў — паслужыў для рашэння проблемы. Вы спрыяеце токенізаторам і шаблонам як версіяваным залежнасцям. Гэта і ёсьце оператыўная грамотнасць для інферэнсу LLM; усе іншае — дэталі, якія можна знайсці ў іншых джэрэлах.
Наратыў студыі прыкладу — 70B інтэрактыўная служба
Падазроўваючы, што вы выкладзаеце 70B мадэль чату у фармаце fp16 на пару GPU з вялікай памятчыю. Лячыльнікі самі по сабе займаюць адносна сто чатырнаццаць гігабайтаў, таму пара GPU практычна заповнюецца ўжо да пачатку будзь-якага дыялогу. Чыстая памяць, якая застаецца, должна пакрыць потрэбы KV для всіх актыўных сесый, актывацыяў і фрагментацыі алакатора.
Вы задаеце цялевыя показнікі для продукту: шанзнацьце адночасных выкарыстоўначаў, чатырнацьцаць тысяч токенаў у кантэксце, адпаведзі ў фармаце стрымінгу. Прыбліжныя расчыткі па формуле KV паказваюць, што колькісць кілабайт на токен становіць каля кальколька сотак, таму шанзнацьце паўтарэння чатырнаццаць тысяч такіх токенаў дае дзесяткі гігабайтаў — гэта занадто для застаўшагуся прыемніка памяці. Негараздзе рашэнняя з’яўляюцца адразу: перайсці на пункт контролю GQA, квантызаваць кэш, зменшыць адночаснае выкарыстоўвання, скорачыць кантэкст або дадаць GPU. Саме такія расчыткі разлічваюць нечыясны запіт «нам трэба больш GPU» ад точнага плану ўстатку.
Вы таксама зазначаеце рэзкія падышчы TTFT на пачатку кожнай гадзіны, калі многі кліенты паўтараюць з’яносінне з ідэнтычнымі запросамі сістэмы. Кэшаванне прыфіксаў усуне гэтыя падышчы, калі корэнь запросу будзе зафіксаваны. Няспроможнасць зафіксаваць корэнь пасля змены запросу выглядае як рэгрэсія мадэлі ў панелі метрык.
Наратыў пра аналіз кейсу — цыклы агента і ключы кэша
Агент кожны раз пры выконанні задачы адправляе той самы схема інструмента. Калі JSON-схема серыявана з нестабільным порадкам ключоў, хэшы прыфіксаў не падтрымваюцца, і за кожны крок трэба падлягаць перапраўкі тыяч токенаў. Канонічнае кодаванне JSON стае спосабам оптымізацыі вычысленняў. Адпоўна так сама, адключэнне профілю карыстальніка прычыняе перашкоды ў аднароўненні межаў між пользоватэлямі; яго адключэнне пасля захоўвае спадзячуюся структуру інструмента.
Наратыў кейс-стадзіі — Спекулятывнае дэкодаванне коду проты чату
У тэрмінаце для дапраўкі коду маленькій праектны мадэль, натрэнаваны на падобных даных, прымае большасць токенаў; час адпаведзення зменшыцца прыбліжна у 2 разы. У тэрмінаце для творчай працы без чыткіх меж прыемлівасць рэдукуецца, і той самы праектны мадэль марнуе рэсурсы. Вывядкі функцый па кожнаму маршруту лепшыя, чым глобальны пераключанні спекуляцый.
Наратыў кейс-стадзіі — Багі ў последовальносцях завершэння
Команда ставіць паузу для маркдаун-бар’ера. Паловы час бар’ер складаецца з адного токена; паловы час ён дзеліцца. Карыстальнікі бачаюць заканчаваючыяся тыльды. Рашэнне выклікае перагляд адdekодаванага тэксту і скасоўвае перыод паузы. Паузы, створаныя толькі за дапамогою ID токена, былі прычыной бага.
Наратыў даследжэння — Неспадзяваная квантызацыя
Вагі з чатырма бітамі паўпрынаймлі на 40% паднялі швырак токен/секунда на шляху адdekодавання з обмежэнай памяцю. Расчыты за дапамогою інструментаў знізіліся на тры пункты. Компрас: 8 біт для інструментальных шляхоў, 4 біта для праектаў длугіх блогаў. Адні артфакты модэлю, два профілі выдачы — гэта можліва завяршэнням маршруту праз гейтвей.
Практычны чэк-ліст — Гатовнае запусканне
- [ ] Дакументавана історыя Roofline для прадзейснення падзеяў і адdekодавання
- [ ] Зважаны колькісць KV байт/токен на рэальным пункце перагляду
- [ ] Канкурантнасць × бюджэт кантэксту падходзіць для памяці GPU з запасам
- [ ] Увёрнута неперывная групавання з політыкай прыорытэта адdekодавання
Практычны чэк-ліст — трыажуванне інцыдэтаў
- Чы не выкліканы проблемы ў TTFT чы TPOT?
- Чы змянілася дужнасц промпта чы склад пакета?
- Чы памяць KV назойдзіла да межы?
- Чы версіі токенайзера/шаблона змяніліся?
- Чы змяніўся флаг ядра/квантызацыі?
- Чы спекуляцыя праблематычна прыймае рэзультаты?
- Чы мы маем проблемы з пропускной спроможнасцю чы вычысканням у конкрэтным профіле?
Выконвайце спіс па парадку; большая частка старонак “модэль сёгодні нярозумна” рашуецца на чэтвёртым кроку.
Слоўнік у адным месцы
TTFT — час да першага выданага токена пасля пачатку запіту. TPOT / ITL — сярэдні час межу наступнымі токанамі. Prefill — паралельная обработка запіту, якая запоўняе KV. Decode — аутарэгрэсіўныя крокі, якія выдаюць новыя токаны. KV cache — збераглі ключы/значэнні для паканальных токанаў. GQA — групаваная увага да запыту, якая скарочвае галавы KV. PagedAttention — распадэлка KV па блаках. Nucleus (top-p) — адаптатыўнае скрацэнне хвоста верыятносцяў. Speculative decoding — прышвартаванне за дапамогою прамараваго тады пераканання. Roofline — модэль, якая вырашае ступень інтэнсівнасці па максымальных FLOPs у супрацоўке з пропускной спроможнасцю.
Фінальны параграф сынтэзы
Спрытнае вычысленне трэба розглядаць як варабочую лінію. Токенайзеры выканаюць ролю яшчакоў для дзялянак. Эмбеддынгі і блокі ўособляюць самыя машыны. KV-кэш — гэта запасы у працэсе апрацоўкі, які займае прастор на складзе па кожнам ачытым замовленню. Выбіранне прыкладоў — гэта контроль якосці для кожнай елемента. Стрымаванне дадзеных — гэта прыстань для выдазвы. Спекулятывнае дэкодаванне — гэта паралельны корыдор для аўдыту. Калі оптымізаваць станцыю, не стараючыся контролаваць запасы і пропускную здатнась, будуць скупы незавершаных заданняў і разгневанных кліянтаў — нават калі кожная станцыя “выглядае шчыльней” адокола.
Дадатак — Порэванне ментальных модэляў, якія вы чуеце пад час адзінакоў
Інтэрв’юеры частаўка прасябе падшукваць спосаб разыяснення троха гаслаў: «трансфармэры працуюць паралельна», «дэкадаванне ўжывае последовы спосаб» і «атэнцыя мае квадратны характар». Усе яны правдзівы, але ў разных межах. Працэсы навчання і падзаполнення выкарыстоўваюць паралелізм межа ўжо існуючых позыцый. Дэкадаванне не можа загадзя стварыць будучыя токены без спекуляцый. Квадратны элемент атэнцыі мае наўякольшы значэнне, калі дужына последовасці вялікая у стацыях да вычыслаў, базаваных на шырыні. Хораша адпаведзь паказвае межы прыменення гасла.
Іншая распашчатка — спаўненне колькасці параметраў з шыроцай дэкадавання. Параметры вплываюць на колькасць байтов, якія пераводзяцца за крок; падача дадзеных (GQA), тып дадзеных і групаванне вялікі ўплыв на тое, як гэтыя байты ператвараюцца на токены за секунду. Два мадэлі ў размерэ 70B можа разлічыцца у два разы за час адпаведзі пасля урахоўвання гэтых фактораў.
Трохім падчынак — гэта спрытлівасць працавання з выборкам як “толькі RNG”. Тэмпература, обрыванне даных, штрафы і абмежэння кожны з іх перакшталтаваяць катагарычны распад; RNG проста выбірае з таго, што засталося. Для адклікання дзівных рэзультатаатаваць пачынаецца з фіксацыі гэтага туплу.
Дадатак — Мінімальныя рэвуляцыі, якія варта запам’ятаваць
KV bytes ≈ 2 × layers × kv_heads × head_dim × bytes × seq_len × batch. Інтэнсівнасць дэкадавання для batch-1 ≈ 2 × params / weight_bytes ≈ O(1) FLOP/byte для dense fp16. Адказаныя спекуляцыйныя токены на адверыфікацыю ≈ (1 − α^(k+1)) / (1 − α). Стабільнасць Softmax: вычысляйце максімум перш чым застосаваць exp. Казальны маск: запішыце −∞, а не нуль, у забраныя балы.
Калі вы можэце перапрацаваць гэтыя формулы на дошцы і поясніць кожны з сімвалоў, вы ужо перавышаеце большасць нечыткіх адказоў.
Дадатак — Куды працаваць далей
Пасля гідавання паіплайнаў наступнымі ёсць стандартныя крокі: чытанне шляху алакатора у стыле PagedAttention у запусцанай енжыне, аналіз адной ступені прадаўлення і адной ступені дэкадавання за дапамогою інструменту аналізу вэндора, а таксама рэалізацыя маленькага цікавасцовага цыклу дэкадавання з явным кэшам KV у NumPy або PyTorch, ўпэўніваючыся у правільных фарматах. Гэтыя вправы ператвараюць вышэўказаны слоўнік у мускульную памяць без неабходнасці выкарыстоўвання цэлага комплексу засобаў для трэніравання.
Ішоў адзін пас — сувязь метрык з проблемамі корыстніка
Калі у тыкце падтрымкі напісана «AI працуе медленна», трэба гэта перакласіць. Калі іконка загрузкі апынулася перад будзь-ятым тэкстам, трэба пераглянуць параметры TTFT: дужына запрасу, холадныя прыфіксы, перагружанне прадаўленням або відсутнасць кэша. Якшчы тэкст з’яўляецца быстра, але пасля таго працюе поваліка, трэба пераглянуць параметры TPOT: занадта вялікіі пакеты, кэш KV, які змушае выкарыстоўваць маленькія пакеты, неквантаваныя вагі на карце з обмежанай пропускной спроможнасцю або выключэнне спекуляцый на маршруце, які раней даваў хорашыя рэзультаты.
Калі ў заявцы напісана «Адпаведзіць стала гorsай пасля вёскадня», перад тым, як працаваць над падготовкай мадэлі занова, парабяруйце туплы праекспанзіі, хэшы шаблонаў і флагі квантызаціі. Рэгрэсіі ў працы мадэляў часта маскуюцца як рэгрэсіі інтэлекту.
Калі ў заявцы напісана «мадэль сама стварае JSON», перастаньце налагоджваць параметр тэмпературы і вікорыстоўвайце метод строгага дэкадавання. Прэекспанзія не можа прымусіць сабліжэнне з граматыкай; маскаванне — можа.
Зустрэчы па планаванню магчымасцей праходзяць лепшая, калі хтось запішае на дошцы тры цыфры: колькісць байтов на кожны токен KV, цэльвую паралельнасць і цэльвую глобальную кантэкстуальную масу. Прымножыце іх, дадзіце вагу, парабяруйце з мемарыямі GPU. Аргументы пра «чары AI» заканчываюцца; пачынаецца матэматыка закупаў.
Гэта і ёсць мета всіго гэтага аналізу: заменіць таюмачэння на конкрэтныя показнікі, а показнікі — на рычагі, якія можна выкарыстоўваць.
Заключныя заўважэння пра межы
Эта перапісва застаецца ў межах парадку выважоў: што адбываецца пасля таго, як створэныя вагі, калі кліент адправляе тэкст, і перад тым, як каманда з аперацый пачне говорыць пра тонкую налаштаванню. Праблемы часу навчання — сумешанне дадзеных, оптымізаторы, планы паралельнага навчання — маюць вялічызна значэння, але яны належаць да іншага курсу. Калі вы можэце пад тым тыслом запам’ятаваць разлік межу прадзейснення/дэкадавання, «падатак KV» і склад сэмпліраў, у вас ужо ёсць каркас, да якога прыўязуюцца тые іншыя курсы.
Заданне для чытальніка
Выберыце адна заявка на обработку з вашых логаў. Запісайце колькасць токэнаў у запітах, колькасць токэнаў у рэзультатах, а таксама спазырваныя значэння TTFT/TPOT, якія ў вас ёсць. Адначысціце памятаку KV за дапамою формулы на адны токэн для слоёў і структуры галавы вашага модэлю. З’ясавіце, чыя заявкі болей прылегалі да працэса заполнення дадзеных даных, залежнага ад вычысленняў, чы то да працэса дэкодавання, залежнага ад пропускной спроможнасі. Указайце адну з меры, такую як кэш прыфіксаў, розмер пакета, квантызація, GQA чы спекуляцыя, якая могла б парадкаваць показнік, які для вас найважлівейшы. Калі вы можэце завершыць гэты задачэ без падзеяўчага чытання гэтай статыі, значыць перапісваўка выканала сваю працу.
Зберагачыце короткі персональны карточку з інструкцыямі: разлік межаў прадзеяння і дэкодавання, формула для KV-байтаў, разлік TTFT і TPOT, а таксама парадак выбору прыкладоў. Пераглядзіце яе перад аналізам магчымасцей і перад тым, як зваліцаць мадэль за наяўнасць багоў. Такія маленькія звычкі спрыяют развіццю надзеянай інтуўіцыі.