Урок 5Новое

Настройки LLM

Temperature, Top-p и другие

Проблема: Ты задаёшь ChatGPT один и тот же вопрос дважды, но получаешь разные ответы. Иногда креативные, иногда сухие. Что происходит?

Решение: Регуляторы на микшерном пульте

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

Температура: регулятор креативности

Температура (temperature) пересчитывает распределение вероятностей перед выборкой. Большинство API принимают значения от 0 до 2. Низкая температура (0–0.3) «заостряет» распределение, и самый вероятный токен почти всегда побеждает — ответы становятся сфокусированными, воспроизводимыми и консервативными. Высокая температура (0.8–1.5) «сглаживает» распределение, давая реальный шанс редким токенам и порождая более разнообразный, неожиданный текст. Ставь temperature 0 для извлечения данных, классификации или математики, где нужен один и тот же верный ответ каждый раз, и 0.8 — для брейншторма или творческого письма, где ценно именно разнообразие.

Top-P, Top-K и штрафы

Top-P (nucleus sampling) работает иначе: вместо пересчёта вероятностей он оставляет минимальный набор токенов, чьи вероятности в сумме дают P (например, 0.9 — верхние 90% вероятностной массы), и сэмплирует из него. Этот набор подстраивается автоматически: уверенная модель рассматривает мало вариантов, неуверенная — много. Top-K — более простой родственник: он всегда оставляет ровно K самых вероятных токенов (например, K=40), независимо от уверенности модели. Распространённый приём — снижать либо температуру, либо top-p, но не оба сразу. Наконец, frequency penalty (штраф за частоту) снижает оценку токена тем сильнее, чем чаще он уже встречался (борется с дословными повторами), а presence penalty (штраф за присутствие) даёт фиксированное снижение, как только токен появился хотя бы раз (подталкивает к новым темам). Обычно оба лежат в диапазоне от 0 до 2. Настройка max tokens — это жёсткий лимит длины ответа: ставь его щедро для эссе и узко для односложных классификаций, чтобы экономить деньги и избегать разрастающихся ответов.

Представьте это как микшерный пульт диджея с регуляторами:

  • 1. Temperature (0-2): «ручка креативности». Низко = предсказуемо и чётко. Высоко = дико и творчески
  • 2. Top-P (0-1): «ширина словарного запаса». Низко = только самые безопасные слова. Высоко = рассматриваются и редкие варианты
  • 3. Max Tokens: «лимит длины ответа». Сколько слов может сгенерировать модель
  • 4. Frequency Penalty: «штраф за повторения». Заставляет модель избегать повторения одних и тех же слов
  • 5. Presence Penalty: «поощритель новых тем». Подталкивает модель поднимать новые темы

Где это применяется?

    Интересный факт: Temperature = 0 не гарантирует одинаковые ответы! В системе есть другие источники случайности. Для полностью детерминированного вывода нужно также задать фиксированный «seed».

    Попробуйте сами!

    Ниже — интерактивная панель. Двигай ползунки и наблюдай, как меняется поведение модели. Попробуй temperature 0 vs 2 — разница колоссальная!

    Настройки LLM

    Двигай слайдеры и смотри, как каждый параметр влияет на выбор следующего токена и генерацию в реальном времени.

    Temperature
    0.7
    ТочнееКреативнее
    Top-P (Nucleus)
    0.90
    УзкийШирокий
    Max Tokens
    10
    КороткийДлинный
    Stop Sequences

    Нажми на чип, чтобы активировать стоп-последовательность

    Выбор следующего токена (softmax)
    Top-P = 0.90 → 2 из 8 токенов в пуле
    Париж
    82.0%
    это
    11.1%
    Top-P cutoff
    прекрасный
    4.1%
    столица
    1.7%
    Франция
    0.7%
    город
    0.3%
    великолепный
    <0.1%
    банан
    <0.1%

    Больше креативности — менее вероятные слова получают шанс

    {
      "temperature": 0.7,
      "top_p": 0.90,
      "max_tokens": 10
    Промпт: "Какая столица Франции?"
    Сгенерированный ответ:
    Столица
    Франции
    это
    прекрасный
    Париж
    .
    Это
    один
    из
    самых
    красивых
    \n
    городов
    мира
    ,
    известный
    искусством
    END
    и
    10 / 20 токенов
    Ключевая идея

    Temperature и Top-P работают вместе: низкая temperature (0.1-0.3) для фактов и кода, средняя (0.5-0.7) для большинства задач, высокая (0.8-1.2) для креатива. Избегай temperature > 1.5 — ответы станут бессмысленными.

    Частые вопросы

    Что такое temperature (температура) в LLM?

    Температура — это параметр выборки, который пересчитывает распределение вероятностей перед выбором следующего токена. Низкие значения (0–0.3) делают ответы сфокусированными и предсказуемыми, высокие (0.8–1.5) — более разнообразными и творческими. Большинство API принимают значения от 0 до 2.

    Чем top-p отличается от top-k?

    Top-p (nucleus sampling) оставляет минимальный набор токенов, чьи вероятности в сумме дают P (например, 0.9), и этот набор подстраивается под уверенность модели. Top-k всегда оставляет ровно K самых вероятных токенов (например, 40) независимо от уверенности. Top-p адаптивен, top-k — фиксированный по количеству.

    Какую температуру выбрать для разных задач?

    Для извлечения данных, классификации и математики ставьте temperature 0 — нужен один и тот же верный ответ каждый раз. Для генерации кода подойдёт 0.2–0.4, а для брейншторма и творческого письма — около 0.8 и выше, где ценно разнообразие. Менять стоит либо температуру, либо top-p, но не оба сразу.

    Чем frequency penalty отличается от presence penalty?

    Frequency penalty (штраф за частоту) снижает оценку токена тем сильнее, чем чаще он уже встречался, и борется с дословными повторами. Presence penalty (штраф за присутствие) даёт фиксированное снижение, как только токен появился хотя бы раз, подталкивая модель к новым темам. Оба параметра обычно лежат в диапазоне от 0 до 2.

    Попробуй сам

    Интерактивное демо этой техники

    Сравнение техник
    Демо режим
    Предзаписанные ответы
    ЗадачаНачинающийКод

    Написать функцию для вычисления факториала числа

    Без техники
    Без техники
    Промпт
    Напиши функцию факториала на Python.
    Ответ
    def factorial(n):
        if n == 0:
            return 1
        return n * factorial(n-1)
    
    Токены:15/35
    Время:280ms
    Качество:
    С Настройки LLM
    С техникой
    Промпт
    Напиши функцию факториала на Python. [Настройки: temperature=0.1, top_p=0.95]
    Ответ
    def factorial(n: int) -> int:
        """Calculate factorial of n.
        
        Args:
            n: Non-negative integer
        Returns:
            Factorial of n
        Raises:
            ValueError: If n is negative
        """
        if n < 0:
            raise ValueError("n must be non-negative")
        if n == 0 or n == 1:
            return 1
        return n * factorial(n - 1)
    
    👁️Низкая temperature даёт более предсказуемый код
    👁️Модель добавила type hints и docstring
    Включена обработка ошибок
    Токены:25/95
    Время:420ms
    Качество:
    Почему это работает

    Низкая temperature (0.1) для кода обеспечивает более консистентный, документированный и безопасный результат.

    1 / 7

    Квиз по уроку

    1 из 3

    1.Что контролирует параметр max_tokens?

    Практика

    Создайте бесплатный аккаунт для решения челленджей

    4 челленджей с AI-проверкой для этого урока

    Связанные уроки:DecodingInference

    Этот урок — часть структурированного курса по LLM.

    Мой путь обучения