Температура, Top-K та Top-P: Практичний посібник з вибору зразків у LLM
Дізнайтеся, як налаштування температури, top-k та top-p впливають на результати роботи ШІ, з практичними порадами та поширеними помилками під час налаштування чат-ботів, асистентів для програмування та систем RAG.
Ви запускаєте чат-бота в прямому ефірі. Людям це подобається. А потім одного дня хтось публікує скріншот відповіді настільки дивної, що здається, ніби модель бачила кошмар. Водночас ваш асистент з кодування постійно повертає однакову універсальну відповідь, незалежно від того, як сформульовано запитання, наче папуга, яка запам’ятала програму курсу.
Обидва ці симптоми мають одну причину: налаштування вибіру даних так і не були скориговані.
Насправді модель виконує тисячі обчислень ймовірностей, по одному токену за раз.
- Кожне слово.
- Кожна кома.
- Кожна наступна ідея.
І ось що більшість розробників ігнорують:
Те, наскільки креативною, точною чи передбачуваною буде відповідь, може суттєво змінюватися лише завдяки трьом налаштуванням: Temperature, Top-K та Top-P.
Ці три регулятори виступають у ролі керма, яке контролює поведінку мовної моделі.
Незалежно від того, чи працюєте ви з API OpenAI, моделями Anthropic, Google Gemini чи сімейством Llama від Meta, глибше розуміння цих параметрів змінює спосіб їх використання під час розробки.
Розглянемо кожен з них не в академічному стилі, а так, щоб ви могли його застосувати на практиці.
По-перше: як насправді генерують текст ШММ
Перш ніж перейти до параметрів 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: Повністю детерміновано. Модель завжди виводить найймовірніший токен — по суті, це жадібне декодування.
Математика (не хвилюйтесь, це просто)
По суті, температура ділить кожен первинний рейтинг моделі (логіт) перед тим, як ці рейтинги перетворюються на ймовірності:
adjusted_logit = original_logit / temperature
Ці перескальовані логіти потім проходять через функцію softmax для отримання кінцевого розподілу ймовірностей.
- Ділення на мале значення (низька температура): Розширює відстань між логітами, загострюючи розподіл, тож модель з більшою впевненістю обирає свій найкращий варіант.
- Ділення на велике значення (висока температура): Зближує логіти, спрямовуючи розподіл до плоского вигляду та додаючи більше випадковостей.
Приклад: Температура = 0
Запит: "Напишіть слоган для стартапу з інструментом програмування на основі ШІ."
Результат: "Створюйте програмне забезпечення швидше за допомогою ШІ."
Якщо повторити запит десять разів, ви отримаєте абсолютно однаковий рядок щоразу.
Ця детермінована поведінка ідеально підходить для:
- Генерації коду
- Запитів SQL
- Виведення даних у форматі JSON
- Вилучення структурованих даних
Приклад: Температура = 0.3
Результат: "Прискоріть розробку програмного забезпечення за допомогою інтелектуального ШІ."
Результат все ще досить послідовний, але з трохи більшою гнучкістю.
Цей діапазон чудово підходить для:
- Технічного написання
- Документування
- Пояснень API
Приклад: Температура = 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 кандидатами."
При значенні K = 50 модель бере у розгляд лише 50 найймовірніших наступних токенів. Усе, що посідає 51-те місце чи вище, повністю видаляється, незалежно від первісної ймовірності.
Чому це існує
Приклад
Запит:
"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 каже їй «вибери стільки хороших варіантів, скільки існує».
Ця різниця має велике значення на практиці.
Використання їх разом (ось де все стає серйозним)
Ось що рідко пояснюється чітко: параметри temperature, 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.
Завжди перевіряйте ці значення самостійно, а не просто припускайте їх. Перенесення тієї самої програми на іншу модель без коректування цих параметрів може призвести до значно іншої поведінки.
Рекомендовані значення за замовчуванням
Розумна загальна точка відліку виглядає так:
Коригуйте ці значення в залежності від конкретного завдання.
Ментальна модель, яку варто пам’ятати
Якщо щось інше не залишиться в пам’яті, запам’ятайте це:
Параметр Temperature контролює випадковість. Параметр Top-K визначає кількість доступних опцій. Параметр Top-P встановлює межу ймовірності цих опцій.
Це і є вся суть.
Як тільки ви зрозумієте, як ці три елементи взаємодіють, ви перестанете просто „використовувати“ модель ШІ.
Ви почнете свідомо формувати її результати. Саме ця зміна відрізняє поверхневе запитування від професійних систем ШІ.
І у майбутньому ця різниця стане ще важливішою.
Заключні думки
Багато розробників витрачають усі зусилля на оптимізацію запитів, але запити — це лише половина рівняння. Параметри вибору зразків — це менш помітні елементи керування, які виконують таку ж роботу.
Часто вони мають навіть більше значення, ніж сам формулювання запиту.
Наступного разу, коли ШІ створить щось дивне, не поспішайте звинувачувати модель.
Краще перевірте:
- Температура
- Top-K
- Top-P
Іноді проблема не в самій моделі.
Проблема у вашій конфігурації. Як тільки ви це усвідомите, ви отримаєте набагато глибший контроль над поведінкою цих систем.
Щасливого програмування!
Пов’язана література
- Ентологія-орієнтовані агенти даних у Microsoft Fabric IQ: практичний посібник — Дізнайтеся, як Microsoft Fabric IQ поєднує семантичні моделі, ентології та MCP для переходу корпоративних AI-агентів від отримання даних до керованого бізнес-міркування.
- Розуміння AI-агентів: цілі, інструменти, пам’ять та цикл агента — Просте пояснення для початківців про те, чим AI-агенти відрізняються від чат-ботів, з описом основних компонентів, циклу прийняття рішень, рівнів автономії та прикладів використання у реальному світі.