Галоўная / Артыкулы / Тэпература, Top-K і Top-P: практычныя вядомасці пра выбір прыкладоў у LLM

Тэпература, Top-K і Top-P: практычныя вядомасці пра выбір прыкладоў у LLM

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

2423 слоў

Вы запускаеце чат-бота у працы. Людзі яго спадабляецца. А потам аднаго вечара хтось публікуе скріншот адпаведзі, яка настолькі дыяволская, што здаецца, нібы модель бачыла кошмар. У той жа час ваш асистент для напісання коду продовжвае даўаць аднакавы, універсальны адпаведзь, незалежна ад таго, як вы сформулюеце запитанне, падобна папагаю, які запамятаў навчальную програму.

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

У тылу, модель адбывае тыясячы расчыткаў верыятнасці, па аднам токену за раз.

  • Кожна слова.
  • Кожная кома.
  • Кожная наступная ідея.

І гэта тое, чаго большасць разработчыкаў не беруць у прытык:

Тое, насколькі творчым, точным чы праўдападобным будзе адпаведзь, можа рошна змяніцца завислячы толькі ад трох настройкаў: Temperature, Top-K і Top-P.

Этыя тры краны выступаюць у ролі керма, якое кантролюе поведзенне мовнага модэля.

Незалежна ад таго, чыры вы працуеце з API OpenAI, моделямі Anthropic, Google Gemini чы ўсёю сяродзею Llama ад Meta, рэальна інтуўіцыя ў цых параметрах зменяе спосаб вашай роботы з імі.

Разберамо кожны з іх не акадэмічным спосабом, а так, як вы можете ўжыць на практыцы.

Перша частка: Как саме LLM-ы генеруюць тэкст

Перш чым перейсці да Temperature, Top-K і Top-P, трэба зрозумець адну основную ідею.

Мовны модэль не складае рэчы так, як чалавек. Ён прагнозуе, по аднам токэну за раз.

Возьмімо гэты запит як прыклад:

"JavaScript ёсць"

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

awesome -> 30%
a -> 25%
the -> 15%
used -> 10%
not -> 8%
weird -> 7%
broken -> 5%

Этыя цыфры выйшлі з патэранаў, якія модэль асваяў пад час трэнавання на вельмі большых колькасцях тэксту.

Справжній вопыт: кой з гэтых токенав на самай працоўны спосаб выбірае?

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

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

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

Тэмпература: регулятор креатыўнасці

Тэмпература — гэта найвядомейшы з трох парадактав, а таксама той, які людзі часта неправильна разумеюць.

Асалідная ідея: тэпература вплывае на тое, насколькі гострым або розпыленым стае распад верытнасцей пры выборы токена.

  • Низкая тэпература (прыблізна 0,1–0,4): Гастрае распад. Токен, які і так ўсё болей верагодны, стае ўсё болей домінантным, таму модель ведаецца прыкметней, консерватыўней і аднообразнае.
  • Высокая тэпература (прыблізна 0,8–1,5 і вышэй): Развяжвае распад. Токены, якія раней былі малаверагодныя, таксама маюць шанс быць выбраныя, таму рэзультат стае болей креатыўным, нечаканым і часам некахэнным.
  • Тэпература = 0: Паўная детерміністычнасць. Модель завжды выдае самы верагодны токен — па сутнасці, грабліва дэкодаванне.
  • Тэпература = 1.0: Няма жадных кантроляў. Модэль выкарыстоўвае первасныя, неканфігураваныя верыятнасці.
  • Матэматыка (не хвалюйцеся, гэта проста)

    По суты, тэпература дзеліць кожны первасны рэйтынг модэлі (лоджіты) прычыму, перш чым гэтыя рэйтынгі ператвараюцца ў верыятнасці:

    adjusted_logit = original_logit / temperature
    

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

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

    Прыклад: Тэпература = 0

    Запрос: "Напісце слоган для стартапу, які спецыялізуецца на інструментах для кодавання за дапамою ШІ."

    Рэзультат: "Ствараце програмна аплікацыі быстрей за дапамою ШІ."

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

    Прычына простая: значэнне 0 завжды выбірае самы верагодны варыянт, без жадных асаблівэй.

    Такая детерміністычная працэздатнасць часта викорыстоўваецца для:

    • Стварання коду
    • Запытавань SQL
    • Выходных дадзеных у формате JSON
    • Экстракцыі структураваных дадзеных

    Прыклад: Temperature = 0.3

    Рэзультат: "Акцыянаце розвіццю програмнай аплікацыі за дапамою інтэльгентнага ШІ."

    Рэзультаты застаюцца досыць стабільнымі, але ёсць большая гнучкасць.

    Гэты дыяпазон часта падходзіць для:

    • Тэхнічнага пісьма
    • Документавання
    • Адказоў на запытань пра API

    Прыклад: Temperature = 1.0

    Рэзультат: "Ваш штучны інтэлект, які памагае ператвараць самыя нечаканыя ідеі на код для рэалізацыі."

    Тепер рэзультаты маюць большую індывідуальнасць і разнаўтносць. Шырокі спектр можа быць выкарыстоўваны:

    • Для напісання блогаў
    • Для маркетынгавых тэкстаў
    • Пад час сесій брынстормінгу

    Прыклад: Тэмпература = 2.0

    Рэзультат: "Меры пра код. Ствараць галактыкі. Перапісваць завтрашнекі дзень за дапамой каляркавай выдумкі."

    Ці гэта выдумка? Звычайна.

    Ці гэта практычна? Не дужа.

    Якщо падняць тэмпературу занадта высока, існуе рызык атрымання тэкста, які не мае большога сэнсу.

    Калі і што выкарыстоўваць

    Use                     | CaseTemperature
    ========================|=================
    Code generation         | 0.0 – 0.2
    Factual Q&A / RAG.      | 0.1 – 0.3
    Summarization           | 0.3 – 0.5
    Chatbot/conversation.   | 0.6 – 0.8
    Creative writing        | 0.8 – 1.2
    Brainstorming/ideation. | 1.0 – 1.5
    

    Што такое Top-K?

    Top-K абмежвае колькість кандыдатаў-токенав, якія модэль можа расследзіць.

    Уместо таго, каб вазаваць усю лексыкантную базу, модэль обмежвае ся K токенамі з найвышэйшай верыятнасцю.

    Правіла практычна такія:

    "Адзінавацьце все, што знаходзится за межамы топ-К кандыдатаў."

    Калі K = 50, модэль берае прыклады толькі з 50 самых верагодных наступных токэнаў. Усе, што займае 51-е або вышэй месца, адзінаваецца цалкам, незалежна ад таго, насколькі верагодным яно было спачатку.

    Чаму гэта існуе

    Уявіце сабе распад, які охопляе 50 000 можлівых токэнаў. Нават токэны з мінімальнымі верагоднасцямі іноды можу быць выбраны, чаго наследкам стае странная аб бессэнсавая выходная маса. Функцыя Top-K служыць жорсткім лімітом, па сутнасці кажучы: "Мы нават не будзем расследваць адхіленні."

    Прыклад

    Запит:

    "React ёсць"

    Кандыдаты на наступныя токэны:

    Token    -> Probability
    a        -> 35%
    the      -> 20%
    one      -> 15%
    becoming -> 10%
    fast     -> 8%
    useful   -> 7%
    wild     -> 5%
    

    Top-K = 1

    Заставлены толькі: [a]

    Выходна маса: "React ёсць a"

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

    Top-K = 3

    Заставлены: [a, the, one]

    Гэта прыносіць певную регулюемую разнаўтнеча.

    Магчымыя завершэнні включаюць:

    • React ёсць…
    • React — гэта…
    • React ёсць адна з…

    Разумны прымітны варыянт.

    Top-K = 5

    Заставлены: [a, the, one, becoming, fast]

    Больш прыгожа для варіяцый. Адпаведзі зьмагаюцца стаць значна разнаобразнейшымі.

    Top-K = 50

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

    Аналагія з рэальнага жыцьця для Top-K

    Падумайце пра выбіранне ўжынкі з меню, якое мае 200 пунктав.

    Установка Top-K на 5 значыць, што вы проста паглядзіце на пяць найлепшых рэкамендаваных страв.

    Рашынак прымецца быстрей і не такім перавантажуючым. Гэта, по суты, та задача, яку выканае Top-K для моделі мовы.

    Што такое Top-P? (Nucleus Sampling)

    Top-P выкорыстоўвае болей тонкі падход, чым Top-K.

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

    Такім чынам, якщо вы задаеце P = 0.9, модель берае прыклады з найменшага можлівага групавання токенаў, верыятнасці якіх разам станавяю 90% ад загальнага распаду.

    Чаму «Nucleus Sampling»?

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

    Прыклады верыятнасцей:

    Top-P = 0.50

    Продовжаеце дадаваць токены, пакуль сумарная верыятнасць не досягне прынеймней 50%.

    A = 40% B = 25%

    Сумарна = 65%

    Заставленыя токены: [A, B]

    Top-P = 0.80

    A = 40% B = 25% C = 20%

    Сумарна = 85%

    Заставленыя токены: [A, B, C]

    Top-P = 0.95

    A+B+C+D = 95%

    Заставленыя токены: [A, B, C, D]

    Главна рэч, яку трэба зазначыць, — гэта тое, што Top-P нарадзіва зменяе свой пул кандыдатаў.

    Самэ гэтая прычына часта ўзякалівае яго на працэ паўстаннік Top-K у савременных рашэннях.

    Тыповыя значэнні

    P    | ValueBehavior
    =====|============================
    0.5. | Very conservative, focused
    0.75 | Balanced
    0.9  | Standard creative tasks
    0.95 | More exploratory
    1.0  | No filtering (use all tokens)
    

    Top-K проты Top-P

    Top-K работае з фіксаваным колькасцю токэнаў.

    Top-P работае з зменным колькасцю токэнаў.

    Прыклад:

    Калі распад верыятнасцей мае выражаны пік, Top-P можа застаўіць толькі 2 токэны.

    Калі распад розтрыманы, Top-P можа застаўіць 15 токэнаў.

    Саме гэтая адаптабельнасць робіць яго такім эфектывным.

    Top-K кажа модэлю "выберыце з гэтых X вароўкі". Top-P кажа яму "выберыце столькі, сколькі існуе хорашых вароўкі"

    Гэтае разлічэнне мае вялікое значэнне на практыцы.

    Їх саюзнае выкарыстоўванне (тут і пачынаецца справа)

    Є ўсё, што рэдкая час адзначаецца чыста: тэмпература, Top-K і Top-P прыкладзаюцца па абароту, а не аддзельна.

    Тыповая схема выбірання выглядае так:

    Raw logits
        ↓
    ÷ Temperature  (reshape the distribution)
        ↓
    Apply Top-K    (cut to top K tokens)
        ↓
    Apply Top-P    (cut to nucleus)
        ↓
    Sample         (pick one token from what's left)
    

    Кожны ўзлок скорачае кантэнт кандыдатаў у токенах, і порядак застосоўвання гэтых фільтраў мае значэнне.

    Практычныя спосабы для рэальных проектаў

    Спосаб 1: Памочнік з кодам

    temperature = 0.1
    top_p = 0.95
    top_k = 40
    

    Тут патрэбна прыемлівасць, адны правільны адказ і жаданых неспакоў. Низка тэмпературы выканае большую частку работы, а Top-P служыць дапаможным захоўнікам.

    Спосаб 2: Чат-бот

    temperature = 0.7
    top_p = 0.9
    top_k = 50
    

    Гэта дае размовныя, натуральна звучацьчыя адказы без пераходу да абэктнасці. Модель чытаецца як людзкая, а не робатая.

    Спосаб 3: Партнер для творчага пісьменніка

    temperature = 1.1
    top_p = 0.95
    top_k = 0  # disabled
    

    Даўце модэлі можласць дакладнейшага аналізу. Вам патрэбны справжнія творчыя варіяцыі, а не стандартны філер. Top-K выключаецца цэлкам, і Top-P сам адпавядае за фільтрацыю.

    Спосаб 4: Система Factual RAG

    temperature = 0.0
    top_p = 1.0
    top_k = 1
    

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

    Рэцепт 5: Автарскія пастаткі

    Temperature = 0.8
    Top-K = 40
    Top-P = 0.95
    

    Гэта дае тэкст, які здаецца натуральным і прыемным для чытання, падходзячы для довгіх статэйкаў.

    Рэцепт 6: Пісьменніцтва гаспадарскіх апаведанняў

    Temperature = 1.2
    Top-K = 100
    Top-P = 0.98
    

    Гэта спрыяе стварэнню выдуманага, менш прыемлівага паслявыходу, які часта викорыстоўваецца у художній літэратуре.

    Рэцепт 7: Адчыненне дадзейнасці

    Temperature = 0
    Top-K = 1
    Top-P = 1
    

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

    Проблемы, пра якія ніхто вас не паведамляе

    1. Вышэйшая температура не значыць кращага паслявыходу

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

    2. Тэмпература = 0 ўсё ж такі детерміністычны толькі ў межах адной сесіі

    Пры тэмпературе 0 модель фактычна выконвае алгорытм argmax, завжды выбіраючы токен з найвышэйшай верагоднасцю. Але ў залежнасці ад апаратуры, розмеру пакета дадзеных чы версіі API, нават мілкія разніцы ў заокругленні чисоў з плаваючай канмой можу прынесці адносна разныя рэзультаты. Не прыпускайце ідеальнай воспавядомасці, якщо толькі вы не задаеце фіксаваныя значэння для вэлікай адзінакавасці там, дзе API гэта падтрымляе.

    3. Top-P і Top-K можу працаваць адварсна

    Якщо Top-K задаецца дужа низка, напрыклад K=5, а Top-P — высока, напрыклад P=0.95, то Top-K фактычна выграеўвае. Вы вялікай меры абмежылі выбір токэнаў до 5, таму у Top-P больш няма ресурсаў для дадатковага фільтравання. Рашуча выберыце, які параметр на самай працоўвае для практычнага фільтравання у вашай настройцы.

    4. Стандартныя значэння разлічаюцца ў розных прадаўцах

    У GPT-4 ад OpenAI стандартна задаюцца temperature=1.0 і top_p=1.0. Моделі Claude ад Anthropic не маюць ўніверсальных стандартных значэнняў — яны зменяюцца залежна ад версіі модэлі. У дзеярых настройках Gemini ад Google часта викорыстоўваюцца temperature=1.0, top_p=0.95 і top_k=40.

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

    Рэкамендаваныя стандартныя значэння

    Разумны пачатковы пункт для шырокага вялікання выглядае так:

    Скорэчвайце гэтыя значэння ў залежнасці ад конкрэтнага заведама.

    Ментальны модэль, якія трэба памяцать

    Якщо нічога іншага не застыне, памяцайце гэта:

    Тэмпература кантролюея адклоненне. Top-K кантролюея, сколькі варыянтаў існуе. Top-P кантролюея межу верыятнасці гэтых варыянтаў.

    Гэта ўсё, што трэба знать.

    Калі вы разумеце, як гэтыя тры элементы взаімаўпрацуюць, вы перастаеце проста „выкарыстоўваць“ модэль ШІ.

    Вы пачынаеце цаленаправлена проектаваць яе рэзультаты. Гэтае змена і ўскладнівае разлік межу простым запрашэнням і системамі ШІ высокага стандарта.

    І ў будучыні гэта разлік стане ўсё болей важлівым.

    Заключныя меркі

    Багато разработчыкаў вяліце зусілля на доўнераванне запитоў, але запіты — толькі палова рэшэння. Параметры адбору дадзеных — это менш помітныя настройкі, якія таксама выпалюють значны час.

    Часта яны маюць аж большое значэнне, чым сама формулірацыя запиту.

    Колі LLM стварыць штасьце незвычайнае, не трэба адразу звынувачваць сам модель.

    Замест таго пераканайцеся:

    • Temperature
    • Top-K
    • Top-P

    Інодзе модель не ёсць тым, хто памыляецца.

    Прамяніваець — гэта ваша настройка. Калі вы це усвядоміце, вы здобудзеце набагато глыбэйшы контроль над тым, як працуюць гэтыя системы.

    Ёшчае успехоў у програмаванні!

    Спадневаная літэратура

  • Абэцедны карта паняўства AI-інжынерыі і моменты, калі яны маюць значэнне — Дазвольце дазнацца, якія паняўства AI-інжынерыі вялікаважныя для таго, каб система ўзагалі працавала, якія маюць значэнне пасля стварэння продакту для рэальнай експлуатацыі, а якія можна адкласіць.
  • Jev ад TypeSafe AI: Модель без чату для прымэтных рашэнняў — У этай статыце пояснюецца, як модель Jev ад TypeSafe AI зовсама не выкарыстоўвае генераванне тексту, а замест таго вяртае прымэтныя, калібруваныя адпаведзі, і дзе такі падход насправды є карысным.
  • 30 практычных тэхнік стварання запитоў для Claude, выкарыстоўваных у рэальнай ўжытковасці — Деталізаваны аналіз 30 тэхнік стварання запитоў для Claude, пераказанных за прызначэнням: ад чыстых інструкцый да цэлых систем запитоў.