Температура (LLM)

Материал из Systems analysis wiki
Перейти к навигации Перейти к поиску

Температура (англ. Temperature) в контексте больших языковых моделей (LLM) — это гиперпараметр, который контролирует уровень случайности и «креативности» при генерации текста. Он регулирует «резкость» или, наоборот, «разглаженность» вероятностного распределения следующего токена на каждом шаге декодирования. Манипулируя температурой, можно управлять балансом между предсказуемостью (когерентностью) и разнообразием (креативностью) генерируемого текста.

Простое объяснение

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

При низкой температуре модель ведёт себя более консервативно. Она сильнее «доверяет» самым вероятным словам и реже отклоняется от наиболее ожидаемого продолжения. В результате текст обычно получается более ровным, предсказуемым, формально правильным и последовательным. Такой режим полезен там, где важны точность формулировок, стабильность ответа, повторяемость результата и минимизация лишней вариативности. Однако у этого подхода есть и обратная сторона: текст может становиться слишком шаблонным, сухим, однообразным и иногда излишне «осторожным». При чрезмерно низкой температуре модель может даже начать бесконечно повторять одни и те же конструкции (попадать в цикл), «застревая» на самых вероятных, но не всегда уместных продолжениях.

При высокой температуре модель ведёт себя смелее. Она чаще допускает выбор не только самых вероятных, но и менее очевидных слов. За счёт этого ответы становятся более разнообразными, живыми, нестандартными и иногда более оригинальными. Это может быть полезно в творческих задачах, при мозговом штурме, генерации идей, художественных текстов или поиске нескольких разных формулировок. Но вместе с ростом разнообразия увеличивается и риск: текст может стать менее связным, менее точным, а в крайних случаях — странным, нелогичным или случайным.

Удобная интуиция состоит в том, что температура — это не регулятор знаний, а регулятор риска при выборе слов. Низкая температура заставляет модель почти всегда выбирать «самый безопасный» вариант. Высокая — позволяет ей чаще «рисковать» и пробовать менее очевидные продолжения.

Ещё один полезный образ: температуру можно сравнить с тем, как человек отвечает на вопрос. Если требуется официальный, точный и аккуратный ответ, человек, как правило, выбирает наиболее нейтральные и ожидаемые формулировки — это похоже на низкую температуру. Если же задача состоит в том, чтобы придумать необычную идею, метафору, сюжетный ход или несколько нестандартных вариантов, формулировки становятся свободнее и смелее — это похоже на высокую температуру.

Таким образом, температура отвечает за баланс между двумя свойствами генерации:

  • предсказуемостью и устойчивостью ответа;
  • разнообразием и неожиданностью формулировок.

Чем ниже температура, тем ближе модель к наиболее вероятному и стандартному продолжению. Чем выше температура, тем больше пространство для вариативности, но тем слабее контроль над строгостью и связностью результата.

Теоретическое определение

Математически, температура (T) вводится как делитель в функцию softmax, которая преобразует выходные логиты модели (ui) в распределение вероятностей (Pi). Формула выглядит следующим образом:

Pi(T)=eui/Tjeuj/T

Где:

  • Pi(T) — итоговая вероятность i-го токена при температуре T.
  • ui — логит (не нормализованная оценка) для i-го токена, выданный моделью.
  • T — параметр температуры (строго положительное число). Например, в API OpenAI для большинства моделей допустимый диапазон составляет от 0 до 2.0, где 0 — специальный случай greedy decoding (см. ниже). В других библиотеках (Hugging Face Transformers, llama.cpp) температура может принимать любое положительное значение.

Важно: температура влияет на вывод только в режимах с sampling. В режимах без сэмплирования (greedy decoding, классический beam search) параметр температуры не оказывает эффекта. Например, в Hugging Face Transformers для работы температуры необходимо включить do_sample=True.

Влияние значения температуры

  • T=1 (стандартное значение): Распределение вероятностей остаётся без изменений. Это стандартный softmax, который отражает исходные предсказания модели.
  • T<1 (низкая температура, например, 0.20.7): Распределение становится более острым или пиковым. Вероятности наиболее вероятных токенов увеличиваются, а маловероятных — уменьшаются. Это делает генерацию более детерминированной и предсказуемой. Модель чаще выбирает очевидные, высокочастотные слова, что повышает когерентность и грамматическую правильность текста, но снижает его разнообразие.
  • T>1 (высокая температура, например, 1.11.5): Распределение становится более гладким или равномерным. Разница между вероятностями токенов сглаживается, что увеличивает шанс выбора менее вероятных (и более «неожиданных») токенов. Это делает текст более креативным, разнообразным и непредсказуемым, но повышает риск генерации бессвязных или грамматически неверных фраз.

Граничные случаи

  • T0: В пределе, когда температура стремится к нулю, softmax-функция превращается в argmax. Модель всегда будет выбирать токен с наивысшим логитом. Этот режим эквивалентен жадному декодированию (greedy decoding) и является полностью детерминированным. Он часто приводит к повторяющемуся и шаблонному тексту. Примечание: значение T=0 нельзя подставить в формулу напрямую (деление на ноль); во многих реализациях оно обрабатывается как специальный режим максимально консервативного выбора, близкий к greedy decoding. При этом не все hosted API гарантируют полную детерминированность при T=0 — например, в Anthropic API даже при нулевой температуре результаты могут незначительно варьироваться.
  • T: Когда температура стремится к бесконечности, распределение вероятностей становится равномерным. Все токены в словаре становятся равновероятными, и модель генерирует случайный «поток сознания», полностью теряя когерентность. На практике бесконечность не нужна: уже при T>2.0 распределение становится почти равномерным, и текст превращается в бессвязный набор токенов.

Практическое применение и рекомендации

Правильный выбор температуры критически важен и зависит от конкретной задачи. Приведённые ниже диапазоны являются грубыми эвристиками — оптимальные значения могут существенно различаться в зависимости от конкретной модели, домена и задачи.

  • Для творческих задач (написание рассказов, стихов, маркетинговых слоганов):
    • Рекомендуется более высокая температура (T0.71.2).
    • Это стимулирует модель генерировать более неожиданные и креативные идеи, использовать разнообразную лексику и избегать шаблонных фраз.
  • Для задач, требующих точности и фактологичности (ответы на вопросы, суммаризация, генерация кода):
    • Рекомендуется низкая температура (T0.00.4).
    • Это снижает вариативность и повышает воспроизводимость результата, заставляя модель придерживаться наиболее вероятных продолжений текста. При T=0 генерация становится детерминированной (при фиксированном seed и отсутствии других источников случайности), что полезно для тестирования и отладки, но может маскировать проблемы, проявляющиеся только при сэмплировании. Однако низкая температура сама по себе не гарантирует фактическую точность — если модель не обладает нужным знанием, она может уверенно генерировать неверный ответ. Для максимальной фактологичности рекомендуется комбинировать низкую температуру с методами поиска по базе знаний (RAG) и улучшенным промптингом. В документации OpenAI для задач извлечения данных и фактологических ответов рекомендуется T=0.
  • Для задач reasoning, математики и генерации кода:
    • Как правило, используются более низкие температуры, однако оптимальное значение заметно зависит от конкретной модели и задачи.
    • Примечание: в некоторых reasoning-моделях (например, семейство OpenAI o1/o3) параметры sampling могут быть ограничены или зафиксированы на стороне провайдера. Внутренний chain-of-thought требует стабильного распределения, поэтому провайдеры могут полностью блокировать изменение температуры или принимать пользовательские значения только в узком диапазоне.
  • Для диалоговых систем и чат-ботов:
    • Рекомендуется умеренная температура (T0.50.8).
    • Это позволяет найти баланс: ответы остаются связными и по теме, но при этом не становятся слишком сухими и однообразными.

Примечание: в документации OpenAI API рекомендуется изменять либо temperature, либо top_p, но не оба параметра одновременно — иначе поведение становится сложно предсказуемым. В справочных примерах OpenAI API в качестве значения по умолчанию обычно фигурирует T=1.0.

Сравнение с Top-k и Top-p

Температура, в отличие от методов отсечения, таких как Top-k и Top-p (nucleus sampling), работает по-другому:

  • Температура перераспределяет вероятности между всеми токенами в словаре, но не отсекает ни одного из них. Даже при очень низкой температуре у маловероятных токенов остаётся мизерный, но ненулевой шанс быть выбранными.
  • Top-k и Top-p вводят жёсткое отсечение, полностью исключая токены, не попавшие в ядро выборки. Такое отсечение уменьшает риск выбора хвостовых токенов, но само по себе является грубой эвристикой и может отбрасывать правдоподобные продолжения с ненулевой «истинной» вероятностью.

На практике эти параметры часто используются совместно. Например, можно установить умеренную температуру (например, T=0.8) для общей стилистики и добавить Top-p (например, p=0.9), чтобы отсечь «хвост» распределения и уменьшить риск грубых ошибок. При очень низкой температуре (T0) Top-p фактически теряет смысл, так как распределение и без того имеет только один значимый пик.

Взаимодействие температуры с другими параметрами декодирования

Температура почти никогда не используется в изоляции. На практике её комбинируют с другими гиперпараметрами для тонкой настройки баланса «креативность ↔ надёжность».

Типичный порядок применения параметров

В распространённых sampling-реализациях (в частности, Hugging Face Transformers) параметры обычно применяются в следующем порядке:

  1. Модель выдаёт сырые логиты (ui).
  2. Применяются штрафы за повторения (repetition / frequency / presence penalty) — изменение логитов на основе уже сгенерированных токенов.
  3. Температура масштабирует логиты: ui/T.
  4. Применяется softmax → получается новое распределение вероятностей.
  5. Отсечение (truncation): сначала Top-k (если задан), затем Top-p или Min-p.
  6. Из оставшегося «ядра» происходит случайная выборка (sampling).

В этой типичной схеме температура меняет форму распределения после применения штрафов за повторения, но до softmax и фильтрации. Поэтому одна и та же top_p=0.9 при T=0.2 и при T=1.5 даёт совершенно разный размер «ядра». Штрафы и температура взаимодействуют нелинейно — это важно учитывать при подборе параметров. Внутренний порядок применения в hosted API (OpenAI, Anthropic) публично не документирован на таком уровне детализации.

Top-p (nucleus sampling) и Min-p

Min-p (minimum probability sampling) — относительно новый метод отсечения, задающий нижний порог вероятности относительно наиболее вероятного токена (обычно 0.05–0.1). В отличие от Top-p, он отсекает токены по относительному порогу (привязанному к вероятности лучшего токена, а не к фиксированной кумулятивной массе), что особенно эффективно при высокой температуре (>0.8): предотвращает выбор совсем неподходящих токенов без значительной потери разнообразия. Min-p поддерживается рядом популярных open-source inference-стеков, включая vLLM и llama.cpp.

Repetition / Frequency / Presence penalty

Frequency_penalty и presence_penalty (OpenAI API) снижают вероятность повторения уже встречавшихся токенов. Они могут компенсировать один из недостатков низкой температуры — склонность к шаблонности и зацикливанию.

Typical sampling и Mirostat

Typical sampling (Meister et al., 2023) выбирает токены, чья вероятность близка к «ожидаемой» энтропии контекста. Mirostat (v2) динамически подстраивает параметры отсечения, чтобы целевая perplexity оставалась постоянной — это полезно для длинных текстов, где стабильность стиля критична.

Иллюстративные примеры настройки

Ниже приведены примерные конфигурации для различных типов задач. Эти значения не являются рекомендациями общего назначения — оптимальные параметры зависят от конкретной модели, задачи и inference-стека.

Задача Температура Возможная комбинация Логика
Factual Q&A, суммаризация 0.0–0.3 T + top_p=0.9 Минимизация случайной вариативности
Генерация кода, математика 0.1–0.4 T + repetition_penalty Стабильность + избежание зацикливания
Диалоги / чат-боты 0.6–0.85 T + top_p=0.92 или min_p=0.1 Баланс естественности и связности
Творчество (рассказы, маркетинг) 0.75–1.1 T + min_p=0.07–0.1 Разнообразие с фильтрацией хвоста
Long-form / агенты 0.5–0.8 Mirostat или T + frequency_penalty Контроль длины и связности

Общий совет: не стоит сильно менять одновременно temperature и top_p. Как правило, удобнее зафиксировать один из truncation-параметров и управлять креативностью температурой — это делает поведение модели более предсказуемым.

Особенность современных aligned-моделей: в сильно выровненных моделях (прошедших RLHF / Constitutional AI / RLAIF) эффект высокой температуры ослаблен по сравнению с базовыми моделями — модель реже генерирует бессвязный текст даже при T=1.2. Конкретные оптимальные значения могут меняться с выходом новых поколений моделей; приведённые выше рекомендации актуальны по состоянию на 2025–2026 годы.

Литература

  • Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Caccia, M. et al. (2018). Language GANs Falling Short. arXiv:1811.02549.
  • Fan, A. et al. (2018). Hierarchical Neural Story Generation. arXiv:1805.04833.
  • Meister, C. et al. (2023). Locally Typical Sampling. arXiv:2202.00666.
  • Hewitt, J.; Manning, C.; Liang, P. (2022). Truncation Sampling as Language Model Desmoothing. arXiv:2210.15191.
  • Su, Y.; Collier, N. (2022). Contrastive Search Is What You Need for Neural Text Generation. arXiv:2210.14140.
  • O'Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
  • Finlayson, M. et al. (2023). Closing the Curious Case of Neural Text Degeneration. arXiv:2310.01693.
  • Shi, C. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925.
  • Ravfogel, S. et al. (2023). Conformal Nucleus Sampling. arXiv:2305.02633.
  • Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.
  • Basu, S. et al. (2021). Mirostat: A Perplexity-Controlled Neural Text Decoding Algorithm. arXiv:2007.14966.
  • Nguyen, M. N. et al. (2025). Turning Up the Heat: Min-p Sampling for Diverse and High-Quality Text Generation. arXiv:2407.01082.
  • Renze, M.; Guven, E. (2024). The Effect of Sampling Temperature on Problem Solving in Large Language Models. arXiv:2402.05201.
  • Zhang, S. et al. (2024). EDT: Improving Large Language Models' Generation by Entropy-based Dynamic Temperature Sampling. arXiv:2403.14541.
  • Li, L. et al. (2025). Exploring the Impact of Temperature on Large Language Models: Hot or Cold?. arXiv:2506.07295.

См. также