Прежде чем выбрать следующий токен, модель отсекает заведомо плохих кандидатов. Top-k и top-p — два правила отсечения. Top-k оставляет ровно k самых вероятных вариантов. Top-p оставляет столько, сколько нужно, чтобы их суммарная вероятность достигла p. Разница между «ровно столько» и «сколько нужно» — вся суть.
#Пример на одном шаге
После слова «столица» модель оценивает продолжения так: России — 0,82, Франции — 0,09, нашей — 0,04, дальше хвост из тысяч вариантов по крохам. top_k = 40 оставит сорок кандидатов, из них большинство — заведомый мусор. top_p = 0.9 оставит два.
А на шаге, где модель колеблется и уместны двадцать разных слов с вероятностями около 0,05, top_p = 0.9 оставит почти все двадцать. Top-p подстраивается под уверенность модели, top-k нет. Поэтому nucleus sampling (второе имя top-p) вытеснил top-k как основной фильтр.
| Параметр | Что задаёт | Ведёт себя | Разумный диапазон |
|---|---|---|---|
top_k |
число кандидатов | одинаково на любом шаге | 20–100, либо выключен |
top_p |
порог накопленной вероятности | адаптивно | 0,9–0,95 |
min_p |
порог относительно лидера | адаптивно | 0,03–0,1 |
temperature |
резкость распределения | меняет форму до отсечения | 0,2–0,9 |
Строка min_p добавлена не для полноты: этот фильтр отбрасывает всё, что заметно уступает лидеру, и потому лучше переносит высокую температуру. Поддерживается не всеми движками.
#Порядок применения и почему это важно
Фильтры применяются последовательно, и результат — пересечение, а не объединение. Зажав всё сразу — temperature 0.3, top_k 10, top_p 0.7 — вы получите не «очень точную» модель, а модель с одним-двумя кандидатами на каждом шаге. Практически это тот же ноль температуры, с его повторами и зацикливанием.
Рабочее правило: регулируйте что-то одно — либо температуру при широких фильтрах, либо фильтры при обычной температуре. Как это выставляется в движке — в разборе настройки параметров Ollama.
#Где путают
Заблуждение первое: top-p и top-k делают одно и то же. Они расходятся ровно там, где это важно — на шагах, где модель не уверена. Именно там решается, будет ли текст живым или шаблонным.
Заблуждение второе: чем меньше значения, тем «умнее» модель. Отсечение не добавляет знаний. Оно запрещает маловероятные продолжения и вместе с мусором отсекает редкие, но верные варианты — имена и термины.
Заблуждение третье: параметры переносятся между моделями. Рекомендованные значения указаны в карточке модели и связаны с её обучением. Если после смены модели ответы стали хуже, проверьте сначала это, а не промпт — типовые причины собраны в тексте когда модель не виновата.
#Частые вопросы
#Что выключить, если хочется предсказуемых ответов?
Опустите температуру до 0,2–0,3 и оставьте top_p около 0,9, не трогая top_k. Три зажатых фильтра дают не предсказуемость, а вырождение.
#Как выключить top-k?
Значение 0 в большинстве движков означает «без ограничения по числу кандидатов». Для top_p то же самое даёт 1.0.
#Влияют ли эти параметры на воспроизводимость ответа?
Влияют: они меняют, из какого набора идёт случайный выбор. Но воспроизводимости сами по себе не дают — за неё отвечает фиксация seed, разобранная в справке про seed и детерминизм.
#Почему модель повторяет одну и ту же фразу по кругу?
Чаще всего из-за слишком узкого отсечения в сумме с низкой температурой. Расширьте top_p до 0,95, поднимите температуру до 0,7 и проверьте штраф за повторы.
Соседний параметр разобран в справке про температуру модели, остальные термины — в глоссарии терминов ИИ.