Практычныя прытамулкі: Как фактычна працююць LLM-ы: ад прагнозавання наступнага слова да
Практычныя прыказкі: Как саме працуюць LLM-ы: ад прагнозавання наступнага слова да контрактов, перакрыцэння і слотаў для коду, якія можна выкарыстоваць командам, якія викорыстоўваюць гэты патэрн.
Існавайце гэта як перапрацоўаны варыянт ідэй з кнігі «Як насправды працуюць LLM: ад прагнозавання наступнага слова да напісання коду» для аператараў: чыстыя этапы, аранжаваныя блакіткі для коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы. Этап Апглед ўсё лепш працуе, калі яго розглядаць як вимерную паверхню. Запісаўце адна ідеальная транскрыпцыю, адзін кейс неудачы і прыметкі з вярнення да пачатку перш чым расширваць масштаб. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісьць крок не выходзіць, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны процес.
Усё пачынаецца з аднаго запитання
Для стадіі «Усё пачынаецца з аднаго» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій стадіі як даговору межаў вхідных даных і перакананых выходных рэзультатаў. Даць назвы артыфактам, узначыць перакананні ў успеху і адмовіцца ад тыхняга частковага завершэння без паведамлення. Калі наступны крок — це код або вызов інструмента, валідаванне за дапамою схемы лепш за працэс з вільным форматам тексту.
Што такое токен?
Для ўрагу «Што такое?» неабходна падчас змены коду адзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аператары должны магчымае перзапускати крок з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Запісвайце час выконання і вартасць токена або запиту праза функцыональныя рэзультаты. Відразувая візуабельнае прадставлення вартасцей, можна ухіліцца ад неспакоўных рахунков, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўы. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з пераканальванням схемы, чым вольнай формы тэкст.
Цікл прагнозавання
Для стадіі «Цыкл праўдзявання» неабходна перад змінай коду задаць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння. Аператары должны магчымае перайсці на выкананне кроку з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць параду ад коду прыкладнення. Файлы сераўіса, хранальнікі секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Калі наступны крок — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем ў схэме, чым вольныя тэкстовыя апісанні. Для стадіі «Цыкл праўдзявання» неабходна перад змінай коду задаць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння. Аператары должны магчымае перайсці на выкананне кроку з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выкарыстоўваць маленькія, тэставаныя елементы, чым велікія скрыпты. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцуг задач.
P(next_token | "The", "cat", "sat", "on", "the")
P(token_i) = exp(logit_i) / Σⱼ exp(logit_j)
Архітектура: Transformer
Калі працюеце над стадзіяй «Архітектура Transformer», спачатку запісайце контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага нэуспеху. Такі список контроля дапамагае заліцьварыць чыстасцю пазнейшых змян у кодзе. Спрэцаваўце гэтую стадзію як контракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зберагачвайце у кешы стабільныя інструкцыі системы і схемы інструментаў. Перадача ідэнтычных прамулкіў ёсць частым вываром рэсурсаў.
Token IDs → Embedding layer → [Attention + FFN] × N layers → Linear head → Softmax → P(next token)
Самаатэнцыя: Канкрэтны механізм
Калі працюеце над стадзіяй «Асабліванне ўвагі: асновны механізм», спачатку запішыце умовы: неабходныя данні, сигнал успеху і тое, што выходзіць пад частковым невясненнем. Такі список дапамагае заліцварыць будучыя змены ў кодзе. Запісвайце час выканання і вартасць токенав або запыткаў праза функцыйнае рэзультат. Відразлівасць вартасцей з самага пачатку запобегае неспакойным рахункам, калі праця пераходзіць з дэмавайнага режыма ў спяльныя сераўеры. Зберагачвайце стабільныя інструкцыі системы і схемы інструментаў. Перадзесланне ідэнтычных прамаўляючых частак — частая прычына зайвых витрацоў.
Q = XWᴬ_Q (Query: what am I looking for?)
K = XWᴬ_K (Key: what do I contain?)
V = XWᴬ_V (Value: what do I contribute?)
score(i, j) = qᵢ · kⱼᵀ / √dₖ
Attention(Q, K, V) = softmax(QKᵀ / √dₖ) · V
MultiHead(Q, K, V) = Concat(head₁, ..., headₕ) · W_O
headᵢ = Attention(QWᵢ_Q, KWᵢ_K, VWᵢ_V)
Сетка з падаўленнем уперад
Калі працуеце над стадзіяй «The Feed-Forward Network», спачатку запісайце умовы вярбунка: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі список дапамагае заліцьвараць чыстасцю пазнейшых змян у кодзе. Зберагаюце настройкі празмаў ад коду прыемліка. Файлы сераўнавання, храненні секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры. Кэшавайце стабільныя інструкцыі системы і схемы інструментаў. Перадзял упораменавання ідэнтычных прамаў ёсць частым выклікам расходавання ресурсаў. Калі працуеце над стадзіяй «The Feed-Forward Network», спачатку запісайце умовы вярбунка: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі список дапамагае заліцьвараць чыстасцю пазнейшых змян у кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптаў. Калі якісь крок не выйшоў, неудача должна адносіцца да адной адпаведальнасці, а не да заплутанай лініі обробкі.
FFN(x) = max(0, xW₁ + b₁)W₂ + b₂
FFN(x) = (SiLU(xW_gate) ⊙ xW_up) · W_down
Чаму LLM-ы пішаюць код: аргумент прыкладзення
Этап «Чаму LLM-ы пішаюць код» працюе найэфектывней, калі яго розглядаць як меравальную плошчу. Зафіксавце адны ідеальны прыклад, адну справу з бягам і прыметку пра вярнэнне да пачатковага стану перш чым расширваць масштаб. Разглядзайце гэты этап як кантракт межа вхіднымі даннымі і пераканаленымі выходамі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад бяспечнага частковага завершэння. Задзейце бюджет токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.
P("(" | ..., "def", " quicksort") ≈ 1.0
P(":" | ..., "def", " quicksort", "(", "arr", ")") ≈ 1.0
P("return" | context inside function body) >> P("import" | same context)
Конкрэтны прыклад: стварэнне функціі сортавання
Конкрэтны прыклад стварэння этапа работае наяўней, калі яго спрыяваць як меравальную паверхню. Запісаце адна ідеальная версія, адзін прыклад неудачы і прыметку па адвярненню змян перш чым расширваць масштаб. Запісвайце часы выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае паказанне костаў з самага пачатку запобегае неспакойным рахункам, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўысы.
Тэмпература і выбіранне пры генераванні коду
Параметры Temperature і Sampling на стадыі роботы працуюць найэфектывней, калі іх спрыяваць як меркаваную плошчу. Зберагачыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Храніце настройкі парадульна коду прыемліка. Файлы сяродавішняе сераўісу, базы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Устанавіце ліміты токенаў на кожны раунд і на кожную сесію. Інструменты з агентным падходам агрэсіўна расширваюць контекст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоючыя рахункі. Параметры Temperature і Sampling на стадыі роботы працуюць найэфектывней, калі іх спрыяваць як меркаваную плошчу. Зберагачыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі які-небудзь крок не выйшае, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцоўкі задач.
Аргумент пра масштаб: чаму большыя — гэта не тое ж самае
Для стадіі «Аргумент працэўнасці» неабходна перад змянай коду задаць вхідныя даны, абавесць крока і критэрыі завершэння. Аперацыям павінна быць можлівасць перзапускаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цій стадіі як даговору межаў вхідных даных і перакананых выходных рэзультатаў. Даць назвы артыфактам, задаць перакананні на успех і адмовіцца ад беззвучнага частковага завершэння. Калі наступны крок — це код або вызов інструмента, валідаваць структураваныя выходныя даны з падтрымкай схемы лепей, чым працэўнае тэкстовае выказванне.
Што LLM-ы не можаць рабіць (за свайгою структурой)
Для ўрагу «Чаго не можа зробіць LLM» паказвайце вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае перазапускаць крок з вядомай точкі контролю, не прабуючы вычысляць схованы стан. Запісвайце час выконання і кост токенав або запытаў праза функцыйнае рэзультат. Відкрытыя даны пра косцы запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмавайнага режыма ў спяльныя сераўры. Калі наступны крок — гэта код або вызов інструмента, валідаванне структуры выходных дадзеных за дапамою схемы лепша, чым вільная проза.
Падсумак
У стадії падробнага аналізу неабяжна ўважна вказаць інпуты, адпаведальную особу за крок і крэтынія выходу пры перадзеўці коду. Аператары павінны магчымаць перзапуск крока з вядомай точкі контролю без неабяжнага вычыслення захаваных станоў. Конфігурацыю трэба заставляць праза код аплікацыі. Файлы серавэра, храненні секретных дадзенаў і флагі функций павінны знаходзіцца ў адном месцы, якое аператары можаць пераглядаць без чытання всей структуры. Калі наступны крок — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходны дадзеныя з перакранаваннем схэмы, чым вольныя тэкстовыя апісанні. У стадії падробнага аналізу неабяжна ўважна вказаць інпуты, адпаведальную особу за крок і крэтынія выходу пры перадзеўці коду. Аператары павінны магчымаць перзапуск крока з вядомай точкі контролю без неабяжнага вычыслення захаваных станоў. Лепш выкарыстоўваць маленькія, тэставаныя елементы, чым вялікія скрыпты. Калі крок не выйшоў, прычына неабяжна павінна быць адносна адзінай адпаведальнасці, а не заплутанага ланцоўка задач.
Чэк-ліст для эксплуатацыі
Калі працюеце над стадзіяй Кантрольнага списку, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абярэння. Такі кантрольны список дапамагае заліцьварыць пазнейшыя змены коду.
Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе контралі і обработка некоректных паведамленняў ёсць часткаю продукту, а не пазнейшыя дапрацоўкі.
Зберагайце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Перадзял працэсу з аднаковым прамаргіналам ёсць частым выклікам.
Робіце процес рэндараўцы дашчавым і адкладайце дорогія процесы выведзення толькі пасля зьмерэння. Неранее застосаванне мемаізацыі можа сховаць багі, вызваные застарэлымі даннымі.
Калі бюджет дазволяе, дадзіце тэст на працэс у CI, які перабірае критычны шлях, з викорыстаннем фіксатываў, а не рэальных платных API.
Запісвайце часы выконання а таксу калечака або запиту праз функцыянальныя рэзультаты. Відразлівая візуабільнасць таксы ўчасе запобегае неспакоўным рахункам, калі маршрут пераходзіць з дэмавай версіі ў спадзеленыя среды.
Перш чым пераводзіць стэк у продакшн, заморозьце версіі, зафіксавайце «золаты» транскрыпты для критычных маршрутаў і паказваце крокі для атрыбуцыі. У спадзеленых средах неабходны ліміты швыдкасці, перакананні ў прыналежнасці та чысткі власнік для ротацыі секрэтных даных. Валіце надзейнасць працы над крэатывнымі дэмамі.
Прыметка для 9267285893fa: не кладзіце ключы прадастаўцаў у репазітарый, задаце верхнюю межу калечака на кожную сесію і зберагачыце транскрыпты праз фіксаты адлікавання, каб пазнейшыя замены модэляў заставаліся парабелнымі.