Галоўная / Артыкулы / Практычныя прытамулкі: Как фактычна працююць LLM-ы: ад прагнозавання наступнага слова да

Практычныя прытамулкі: Как фактычна працююць LLM-ы: ад прагнозавання наступнага слова да

Практычныя прыказкі: Как саме працуюць LLM-ы: ад прагнозавання наступнага слова да контрактов, перакрыцэння і слотаў для коду, якія можна выкарыстоваць командам, якія викорыстоўваюць гэты патэрн.

1803 слоў

Існавайце гэта як перапрацоўаны варыянт ідэй з кнігі «Як насправды працуюць 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: не кладзіце ключы прадастаўцаў у репазітарый, задаце верхнюю межу калечака на кожную сесію і зберагачыце транскрыпты праз фіксаты адлікавання, каб пазнейшыя замены модэляў заставаліся парабелнымі.