Галоўная / Артыкулы

Ад прадказання наступнага токена да працоўнага кода: як LLM генеруюць Python

Токены, softmax, тэмпература, self-attention і feed-forward пласты па парадку, з пакрокавым прыкладам сартавання і жорсткімі межамі, якія вынікаюць з прадказання.

Выдавец: REACTAPP.TOP9 хв чытання1998 слоў

Крыніцы: How LLMs Actually Work: From Predicting the Next Word to Writing Code.

Такі інструменты, як ChatGPT і Copilot, пішчытаюць функцыі, лагодзяць бягі і адказваюць на запытанні пра алгорытмы, і можа здавацца, што тут відбываецца нечыта проста допылненне тэксту. Ментальная модэль, паказаная ніжэй, пачынаецца з найболей базовых элементаў: прыкладзення пра токены, атэнцыя, а таксама прычына, чаму механізм, які завершае рэчэнне, адночасна стварае правільны код на Python.

Адна запытанне, якое ставяцца параду

Незалежна ад таго, чы рэзультатам ёсць хайку, маркетынгавы ліст чы алгорытм сортавання, мовная модэль параду адказвае на адна і тая ж запытанне: вырахаваючы все, што было пазірана ўжо, калі ёсць найбольш верагодны наступны токен?

Не існуе сэмантычнага разумеўнага аспекту ў традыцыянальным сэнсе, і няма такога этапу, калі мадэль спачатку вырашвае напісаць функцыю, перш чым стварыць слова def. Яна прагнозуе кожны токен окрэма. За дапамогою мільярдаў параметраў і тэксту для навчання, які налічвае сотні мільярдаў токенаў, прагнозы выглядаюць па-спэцыяльнаму як разумаванне.

Што такое токен

Точнасць мае значэнне ў перадзе прагнозавання. Мадэлі працуюць не з сімволамі чы словамі, а з токенамі — падсловянымі елементамі, створанымі алгорытмамі, такімі як Byte Pair Encoding. Прыблізна:

  • Звычайныя словы зазвычай стаюць адзінамі токенамі, такімі як "the", "def" і "return".
  • Рэдкія словы дзелююцца на часткі, таму "unhappiness" стае ["un", "happiness"].
  • Сімвалі коду частаюць бываць адзіннымі токанамі, напрыклад "(", ":", "==" і "->".
  • Для GPT-4 адзін токан адпаваець прыблізна 0,75 англійскага слова, а ў кодзе ён складаецца з 3-4 сімвалаў, таму што код заполнены токанамі з аднаго сімвола, такімі як : і (.

    Мадэль таксама мае слоўнік — фіксаваны спіс вядомых токанаў, які зазвычай налічвае ад 50 000 да 100 000 елементаў. На кожным кроцы ёна прызначае верыгоднасць кожнаму элементу і абрашае або самы верагодны варыянт, або элементы з паведамлення, пры чым выбор керуецца параметрам temperature.

    Цыкл прыказаў

    Для последовасці "Кацка сядзела на" неабходна вылічыць умовную верыгоднасць:

    P(next_token | "The", "cat", "sat", "on", "the")
    

    Гэта распад парадыгмы паўсюду ў вокабуляры. Проходжэнне сігналу праз сетка дае вектар размеру вокабуляра, які функцыя softmax ператварае на правільны распад верыятнасей:

    P(token_i) = exp(logit_i) / Σⱼ exp(logit_j)
    

    У методзе жаднага дэкадавання выбіраецца токен з найвышэйшай верыятнасцю. Інакшыя ж выбіраецца токен прыблізна прыпорцяна распаду, пры чым temperature кантролюе распаў:

    • temperature = 0 завжды выбірае токен з найвышэйшай верыятнасцю, таму выход яе дэтэрміністычны.
    • temperature = 1 выбірае токены прыблізна прыпорцяна чыстаму распаду, што дае разнаобразныя і крэатыўныя рэзультаты.
    • Калі значэнне больш за 1, распад становіцца плоскім, і выход стае болей аднойчыным.
    • Калі значэнне меньш за 1, распад становіцца стрэлкамі, і выход стае болей консерватывным.

    Самэльчынае адно запрошэнне можа даць разныя адпаведзі на разныя запускі.

    Transformer

    Функцыя, якая ператварае последоўнасць токенав у распад наступных токенав, — гэта Transformer, а самэльчынае толькі дэкадэр, які ўтварае аднойчыну GPT, Llama, Mistral і Claude. Высокага рэвэлю цэп:

    Token IDs → Embedding layer → [Attention + FFN] × N layers → Linear head → Softmax → P(next token)
    

    Элементы, парадоксальна спраба:

    1. Слой уявлення. Кожны цэлык-токен зь ідэнтыфікатаром стае ўшчэльненым векторам размеру d_model; напрыклад, 4096 у Llama-3 8B. Позыцыйныя уявлення, або RoPE у сучасных мадэлях, дадаюць інфармацыю пра парадак.
    2. Слоі Transformer, павтарэнныя N разоў. Кожны з іх мае мнага-галавовую сама-атэнцыю, сетку падачы-дзеяння, нормалізацыю слоя, якая прыменяецца перад кожным падслоем у стыле „прыемнай нормалізацыі“, а таксама залішковыя з’ѐеднанні.
    3. Лінейная галава і softmax. Фінальны скрыты стан ператвараецца ў лоджыты формы [|V|], а softmax стварае распад.

    Сама-атэнцыя

    Сама атэнцыя дазваляе токэну аналізаваць іншыя токэны ў последовасці, каб стварыць болей шырокую картыну апошньага. Самэй гэтам Трансфармэры маюць прыямую перадчыну над RNN-амі: кожны токэн можа дасягнуць кожнага іншага токэна за адны крок, без змены інтэнсывнасці градыента з аддаленням.

    Пры наявнасці n токэнаў, кожны з іх проецююцца троха способамі:

    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?)
    

    Тут X — гэта матрыца вхідных дадзенняў формы [n, d_model], а тры матрыцы W — гэта выучаны вагі. Рэйтынг між токенам i, які выступае як запіт, і токенам j, які выступае як ключ, ёсць:

    score(i, j) = qᵢ · kⱼᵀ / √dₖ
    

    Дзеянне дзелае на квадратным корані ключовай высоты не дазволяе скалярным дзьёнам стаць занадта велікімі, калі dₖ вялікі, што могла б прымусіць алгорытм softmax працаваць у рэгіонах з мінімальнымі градыентамі. Полная формула вычыслення ў такім разе:

    Attention(Q, K, V) = softmax(QKᵀ / √dₖ) · V
    

    У модэлі, якая выкарыстоўвае толькі дэкадэр, такой як GPT, атэнцыя ўражаецца прычынна-наследным спосабам, тыябо ёй прыкладзена маскаванне: токен i можа звертацца толькі да позыцый да i. Будучыя позыцыі парадуецца значэннем мінус-нечыякога, перш чым працаваць функцыя softmax, таму ўсі ўзвешанні для іх становяць роўна нулю.

    Мнагаадроўая атэнцыя адкрывае h незалежных функцый атэнцыі паралельна, кожная з якіх мае меньшую размернасць d_model / h, і з’едынае ў выходны рэзультат ўсі ўсунуткі:

    MultiHead(Q, K, V) = Concat(head₁, ..., headₕ) · W_O
    headᵢ = Attention(QWᵢ_Q, KWᵢ_K, VWᵢ_V)
    

    Разныя часткі працююць з разнымі аспектамі стосункаў. Адна можа следаваць сынтаксічным залежнасцям, іншая — корэферэнціі, а ўсё інша — пазычнай блізкасці.

    Сетка з падачай наперад

    Пасля прыдзеўкі прэдставленне кожнага токена праходзіць праз сетку FFN па пазыцыях:

    FFN(x) = max(0, xW₁ + b₁)W₂ + b₂
    

    Сучасныя архітэктуры, такія як Llama і Mistral, заместа таго выкарыстоўваюць SwiGLU:

    FFN(x) = (SiLU(xW_gate) ⊙ xW_up) · W_down
    

    Большая частка запам’ятаваных знаньяя мадэлі знаходзіцца ў FFN. Ён функцыонуе як хранальнік у фармаце «клуч-значэнне», які працуе з фактычнымі асоціяціямі. Механізм увагі перадае інформацыю між токенамі, а FFN шукае зберажаныя факты і шаблоны. У вялікіх мадэлях шырыня FFN становіць прыблізна чатыры разы большая, чым d_model. У Llama-3 70B d_model = 8192, а межовы розмер — 28672, і самэ там знаходзіцца большая частка параметраў.

    Чаму мадэлі можуць пісаць код

    Код — гэта таксама послідовнасць токенав, як і нейтральная мова. Для мадэлі функцыя на Python не ўсё така ужо й спецыяльная — цэла проста послідовнасць токенав, такіх як def, sort, _list, (, arr, ), : і так далей.

    Сінтаксычна правільны выхід ёсць чыста наследкам способу навчання. Разглянем гэтыя умовныя верыятносці:

    P("(" | ..., "def", " quicksort") ≈ 1.0
    P(":" | ..., "def", " quicksort", "(", "arr", ")") ≈ 1.0
    P("return" | context inside function body) >> P("import" | same context)
    

    Яныя пікі ўтвараюцца таму, што мадэль бачыла мільйоны файлаў на Python, якія всі павінаваліся тым самым правілам. Граматыка Python не зафіксавана жадзею ў сетцы; яна выклікаецца на адной з статыстыкаў корпусу.

    Гэта таксама пояснюе, чаму мадэлі іноды пішу код, які ўсё правільна сформаваны, але логічна некарэктны. Яны максымізуюць верагоднасць наступнага токена, адпаведна да распаду пад час навчання. Яны не запускаюць код і не пераканальваюць яго.

    Функцыя сортавання, па кроках

    Падазроўваючы, што запіт ў фармаце "Напісці функцыю на Python для сортавання ліста", мадэль спрацоўвае яго як последовасць токенаў і дадае выходны рэзультат па аднаму токану за раз. Прыблізна:

    • Крок 1, пасля запіту: def пры аблікованасці 0.91.
    • Крок 2, пасля def: sort пры аблікованасці 0.78.
    • Крок 3: _list або ( пры аблікованасці 0.65.
    • Шаг 4: пасуе sort(: arr або lst пры значэнні апошнейша 0.71.
    • Шагі 5–7: ), пасля чаго :, пасля чаго новы радок; кожны з эых элементаў прыблізна пры значэнні 0.99.
    • Шаг 8: адступ у чатыры прасторы пры значэнні апошнейша 0.97.

    У шагах 5–8 мадэль падходзіць да павярнення ў вопытках сынтаксічных токэнаў. Гэта не значыць розумеўце Пайтона. На самай працэ ўсё гэта — простая дапрацоўка шаблонаў, выучаная з корпусу, у якім кожна з адзінакоў функцыі выглядае аднакова.

    Праўія выборы вырабляюцца раней, у шагах 1–4, калі выбіраецца назва функцыі, назвы параметраў і загальная структура. Гэтыя выборы формуюцца пад вплывам зместу запіту за дапамогою механізма адзіркі. Токэн sort у запыце мае высокую вагу адзіркі пад час генеравання назвы функцыі.

    Тэмпература пад час генеравання коду

    Copilot і падобныя інструменты зазвычай працуюць пры нізкай тэмпературэ, ад 0,1 да 0,3, для апрацоўкі коду:

    • Сынтаксічныя токены павінны быць майжэ дэтэрміністычнымі.
    • Частае ўсуненне адной правільнай рэалізацыі.
    • Самаствораныя API стаюць глыбокім адказам пры высокай тэмпературэ.

    Для творчых элементаў, такіх як імены зменных, докстрынгі і каментары, дазволяецца трохі вышэйшая тэмпература. Дзеяныя інструменты таксама выкарыстоўваюць beam search, які адразу падтрымлівае колькасць частковых последоўнасцей k і ў канцы выбірае тую, якая мае найлепую сумарную верыятнасць.

    Чаму большыя мадэлі працуюць інакш

    Мадэль 7B і мадэль 70B маюць аднаковую архітэктуру. Разлік — у масштабе: больш слоёў, шырэйшы d_model і больш галав атэнцыі. Аднак большая мадэль парадзіць сабе кантэнтныя прыбыткі, укладаючы ў сябе багатоэтапнае разумаванне, болей правільны код і эмергентнае навчанне ў кантэксце.

    У масштабным фарматах мадэль выучае не толькі статыстыку токэнаў, але і глыбэйшыя законамернасці, такія як алгарытмічная структура, логічныя залежнасці і абмежэнні тыпаў. Мадэль на 70 мільярдаў параметраў побачыла столькі багаванага коду праз неудачы ў тэстах, што неявна паў’язала певныя законамернасці з правільнасцю працы. Гэта ўжытковая база гіпатэзы пра масштабаванне: спроможнасць мадэлі расце па павольнай крывай залежна ад вычыслювальных магчымасцей, дадзей і параметраў, а якосьць коду расце разам з яю настолькі ж надзеямо, як і будзь-яя іншая навык.

    Абмежэнні, якія вынікаюць з дызайну

    Знанне механізму работы мадэлі адкрывае дзеякія строгія абмежэнні:

    1. Выкананне. У самай модэлі няма часу выканання. Тое, што яна выдае, нагадвае выход правільна выкананага коду, але на самай працэ выканання нічога не адбываецца.
    2. Абсалютная правільнасць. Прагнозаванне максымізуе верагамосць на адпаведнае распадзеленне дадзеных пад час навчання, а не логічную правядзібнасць.
    3. Праўя новасць. Нельга стварыць алгорытм, які не мае статыстычных прыкладаў у дадзеных пад час навчання. Мадэль можа сумаваць і прыстосавацца, але не можа ствараць новага.
    4. Точны адзыск. Не існуе табелі пошуку. Вся памяць розпадзелена між вагамі, таму індыкатары API, падпісы функцый і версіі бібліятэкаў іноды могу быць халюцынацыямі.

    Ні адна з гэтых проблем не ўсё ў тым, што трэба вылечыць. Яны вынікаюць безпаспэчна з самай архітэктуры, і ўсведамленне іх дапамагае кожнам стаць лепшым корыстнікам дапаможных прыстроёў для програмавання.

    Короткая аповесць пра усё

    • Токен — гэта падсловае елемент, прыблізна равны 0,75 англійскага слова.
    • Прагнозаванне — гэта вычысленне за дапамою функцыі softmax над слоўнікам на кожны крок.
    • Сама атэнцыя дазваляе кожнаму токэну прыкладваць увагу да всіх паканянных токэнаў за дапамой масштабаваных дарабоцтва запыткі-клуча.
    • Мнага-галавая атэнцыя запускае калькы такога роду паралельна, каб зафіксаваць разныя зв’язкі.
    • FFN выступае як памяць клуч-значэнне для фактычных асоціяцыяў.
    • Генераванне коду працуе як і генераванне тэксту, пры чым сынтаксіс выклікаецца на базе статыстык трэніравання.
    • Тэмпература задае ступень агрэсіўнасці распаду выбору пры выборы токэна.
    • Актуальныя меры обмежэння — гэта ўжо немагчымасць выканання, немагчымасць гарантавання правільнасці і відсутнасць справжней новатнасці.

    Усе ў гэйманехнізме, ад атэнцыі і FFN да залішковых значэнняў і нормы шара, служыць аднаму цылі: зробіць умовную верыятнасць наступнага токэна, за ўмовы наявнасці ўсіх паканянных токэнаў, як магчыма точнейшай. Рэшта выклікаецца сама.

    Спаднія матэрыялы

  • Практычныя прыміткі: Як іменна працуюць LLM: токены, трансфармэры і наступны токен — Дэталізаваны апৎвядчык практычных прымітак: Як іменна працуюць LLM: токены, трансфармэры і наступны токен: контракты, перакрыцціі і шаблоны коду для команд, якія вікорыстоўваюць гэты падход.
  • Пяцьдзесят гадоў даследжэнняяў у сферы выкарыстоўвання інфармацыі, якія ўжо ў вашай схеме RAG — Фрагментаванне дадзеных у RAG, гібрыдны пошук, HyDE, перэранківанне і ацэнкі — усе гэта мае дзесяткі гадоў старых прадкуў у галузі выкарыстоўвання інфармацыі. Апৎвядчык даследжэнняяў і ўсіх іх слабых сторон.
  • Практычныя прытамулкі: ZQ Intelligence: Orchestrator-Specialist Agents для фінансавых прыемоў — Паследовыя інструкцыі па вікорыстоўванні Практычных прытамулак: ZQ Intelligence: Orchestrator-Specialist Agents для фінансавых прыемоў: контракты, пераказы і шаблоны коду для команд, якія вікорыстоўваюць гэты патэрн.
  • Чаму індыйскія мовы коштаюць больш токэнаў у LLM-ах і як паспеліваюць токэнізаторы — Адна і тая ж фраза займае 5 токэнаў у англійскай мове і 34 у тамільскай. Пазнакаміце, як трэнінгавыя даны BPE спрычыняюць гэта, якія змяны выканаюцься ў балансаванні і розмерзе слоўніку, і як працюе пашырэнне слоўніку.