Конфигурация вывода LLM

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

Длина вывода (Output length)

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

Уменьшение длины вывода не заставляет LLM стать более лаконичной по стилю или содержанию; это просто заставляет модель прекратить предсказание токенов по достижении лимита. Если вам нужен короткий ответ, вам также может потребоваться доработать сам промпт соответствующим образом.

Ограничение длины вывода особенно важно для некоторых техник промптинга, таких как ReAct, где LLM может продолжать выдавать бесполезные токены после того, как нужный ответ уже получен.

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

Управление сэмплированием (Sampling controls)

LLM формально не предсказывают один конкретный токен. Вместо этого они предсказывают вероятности для каждого токена из своего словаря. Затем эти вероятности используются для сэмплирования (выбора), чтобы определить, какой именно токен будет следующим. Температура (temperature), top-K и top-P — наиболее распространенные настройки, определяющие, как обрабатываются эти вероятности для выбора одного выходного токена.

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

Температура контролирует степень случайности при выборе токена. Низкие значения температуры хороши для промптов, требующих детерминированного (предсказуемого) ответа, в то время как высокие значения могут привести к более разнообразным или неожиданным результатам. Температура 0 (жадное декодирование — greedy decoding) является наиболее детерминированной: всегда выбирается токен с наибольшей вероятностью (хотя стоит отметить, что если два токена имеют одинаковую максимальную вероятность, результат может варьироваться в зависимости от реализации).

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

Управление температурой в Gemini можно сравнить с функцией softmax в машинном обучении. Низкая температура подчеркивает один предпочтительный вариант с высокой степенью уверенности. Высокая настройка температуры делает приемлемым более широкий диапазон вариантов вокруг выбранного параметра. Эта повышенная неопределенность подходит для сценариев, где жесткая точность не обязательна — например, при творческих экспериментах.

Top-K и top-P

Top-K и top-P (также известное как накопленное сэмплирование или «ядерное сэмплирование» — nucleus sampling) [4] — это две настройки сэмплирования, используемые в LLM для того, чтобы следующий токен выбирался только из списка токенов с наибольшей предсказанной вероятностью. Как и температура, эти параметры управляют случайностью и разнообразием генерируемого текста.

  • Top-K выбирает K наиболее вероятных токенов из предсказанного моделью распределения. Чем выше top-K, тем более творческим и разнообразным будет вывод; чем ниже top-K, тем более сдержанным и фактическим будет ответ. Значение top-K, равное 1, эквивалентно жадному декодированию.
  • Top-P выбирает токены, чья суммарная вероятность не превышает определенного значения (P). Значения P варьируются от 0 (жадное декодирование) до 1 (учитываются все токены из словаря LLM).

Лучший способ выбрать между top-K и top-P — поэкспериментировать с обоими методами (или их комбинацией) и посмотреть, какой из них дает нужный результат.

Сводим всё воедино

Выбор между top-K, top-P, температурой и количеством токенов зависит от конкретного приложения и желаемого результата. Важно понимать, что все эти настройки влияют друг на друга. Также стоит изучить, как ваша конкретная модель комбинирует различные параметры сэмплирования.

Если доступны и температура, и top-K, и top-P (как в Vertex Studio), то кандидатами на роль следующего токена становятся те, которые соответствуют критериям и top-K, и top-P. Затем применяется температура для сэмплирования из этих прошедших отбор токенов. Если доступен только один из параметров (top-K или top-P), поведение остается таким же, но используется только одна настройка.

Если температура недоступна, то среди токенов, соответствующих критериям top-K и/или top-P, один выбирается случайным образом.

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

  • Если установить температуру на 0, параметры top-K и top-P перестают иметь значение — выбирается самый вероятный токен. Если установить температуру экстремально высокой (выше 1, обычно ближе к 10), температура перестает быть значимой, и токены, прошедшие через фильтры top-K и top-P, выбираются случайным образом.
  • Если установить top-K на 1, температура и top-P становятся нерелевантными — проходит только один токен. Если установить top-K экстремально высоким (равным размеру словаря), любой токен с ненулевой вероятностью пройдет этот фильтр.
  • Если установить top-P на 0 (или очень маленькое значение), большинство реализаций сэмплирования оставят только самый вероятный токен, делая температуру и top-K нерелевантными. При top-P, равном 1, критерию соответствуют все токены с ненулевой вероятностью.

В качестве общей отправной точки: температура 0.2, top-P 0.95 и top-K 30 дадут относительно связные результаты, которые могут быть творческими, но не чрезмерно. Для более креативных результатов попробуйте температуру 0.9, top-P 0.99 и top-K 40. Если же вам нужна минимальная креативность, начните с температуры 0.1, top-P 0.9 и top-K 20. Наконец, для задач с одним правильным ответом (например, математические задачи) используйте температуру 0.

ПРИМЕЧАНИЕ: С ростом свободы (высокие значения температуры, top-K, top-P и количества токенов) LLM может генерировать менее релевантный текст.

ПРЕДУПРЕЖДЕНИЕ: Вы когда-нибудь видели ответ, заканчивающийся огромным количеством слов-заполнителей? Это известно как «баг цикла повторений» (repetition loop bug) — распространенная проблема больших языковых моделей, когда модель застревает в цикле, многократно генерируя одно и то же слово, фразу или структуру предложения. Эту проблему часто усугубляют неподходящие настройки температуры и top-K/top-P. Это может происходить как при низких, так и при высоких температурах, хотя и по разным причинам. При низких температурах модель становится слишком детерминированной, жестко придерживаясь пути с наибольшей вероятностью, что может привести к циклу, если этот путь возвращается к ранее сгенерированному тексту. И наоборот, при высоких температурах вывод становится чрезмерно случайным, что повышает вероятность того, что случайно выбранное слово вернет систему в предыдущее состояние. В обоих случаях процесс сэмплирования «застревает», выдавая монотонный и бесполезный результат, пока не заполнится окно вывода. Решение часто требует тщательной подстройки параметров для поиска оптимального баланса между детерминизмом и случайностью.