GPU, ускорители и инфраструктура LLM

Выбор следующего токена

Определение

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

Также ищут: декодирование языковой модели · next-token decoding

Зачем это знать

Одни и те же оценки модели могут дать разные продолжения при разных правилах выбора. Разобрав один шаг, можно объяснить результат настроек и сравнивать генерации при зафиксированных параметрах.

Наглядно

Top-k: кандидатов меньше, сумма снова 1

Вероятности до и после top-k=2До фильтра: сумма 1A · 0,4B · 0,3C · 0,2D · 0,1После top-k=2 и нормировкиA · 4/7B · 3/7C · 0D · 0
Учебный пример без равных оценок: top-k=2 исключает C и D. Прежняя сумма A и B — 0,7; деление на неё даёт 4/7 и 3/7. Высоты столбцов показывают вероятности в одном масштабе. Источники схемы
Связи из словаря

Карта понятия

Доказательная часть

Что подтверждено

  1. При жадном выборе берут токен с наибольшей текущей оценкой; при случайной выборке токен выбирают по вероятностям, полученным после обработки оценок.

    Граница применимости: Один шаг обычного авторегрессионного декодирования; максимум на шаге не означает оптимума всей последовательности.

  2. Температура (temperature) T — положительный делитель числовых оценок токенов, логитов, перед softmax. Для исходных вероятностей p_i новые вероятности равны p_i^(1/T)/Σ_j p_j^(1/T). При T больше 1 различия между вероятностями сглаживаются, при T между 0 и 1 усиливаются; порядок токенов сохраняется.

    Граница применимости: Температурное преобразование одного распределения. TemperatureLogitsWarper в Transformers 4.44.2 требует положительную T и отклоняет ноль.

  3. Top-k при отсутствии равных оценок на границе оставляет k токенов с наибольшими оценками, а остальные исключает. Вероятности оставшихся токенов делят на их прежнюю сумму, чтобы новая сумма стала равна единице.

    Граница применимости: k — от 1 до числа кандидатов. В Transformers 4.44.2 удаляются оценки строго ниже k-й; ничья на границе может сохранить больше k токенов.

  4. Top-p оставляет кратчайший начальный отрезок списка токенов по убыванию вероятности, чья сумма достигает p. Порог считают по вероятностям на входе фильтра; вероятности оставшихся токенов делят на их сумму.

    Граница применимости: Ядро случайной выборки при p больше 0 и не больше 1. В рассматриваемом обычном режиме Transformers 4.44.2 сохраняется минимум один токен; дополнительные ограничения числа кандидатов не включены.

  5. В обычном generate() Transformers 4.44.2 при num_beams=1 и do_sample=False выбирается максимальная текущая оценка, а temperature, top_k и top_p не применяются. При do_sample=True выполняется случайная выборка с включёнными преобразованиями.

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

  6. В обычной случайной выборке Transformers 4.44.2 включённые temperature, top-k и top-p применяются в порядке: температура → top-k → top-p.

    Граница применимости: Порядок _get_logits_warper() в v4.44.2. Другие преобразования здесь не рассматриваются; порядок не обобщается на остальные библиотеки и версии.

  7. Для условного распределения A=0,4, B=0,3, C=0,2, D=0,1 top-k=2 даёт A=4/7 и B=3/7; top-p=0,6 без top-k оставляет A и B. При T=2 веса до нормировки равны квадратным корням исходных вероятностей, а порядок токенов сохраняется.

    Граница применимости: Учебный расчёт для четырёх вероятностей без ничьих. Top-k и top-p разобраны отдельно при неизменной температуре; преобразование T=2 разобрано отдельно без фильтров.

  8. Для вероятностей A=0,4, B=0,3, C=0,2, D=0,1 порядок top-k=2 затем top-p=0,55 оставляет только A, тогда как top-p=0,55 без предварительного top-k оставляет A и B.

    Граница применимости: Учебный расчёт при T=1 и указанном порядке фильтров. Top-p вычисляет вероятности по оценкам, оставшимся после top-k; перед итоговой выборкой вероятности нормируются.

Перед спецификацией

Что проверить

  1. Запишите do_sample, temperature, top_k, top_p и версию библиотеки.
  2. Проверьте, какой порядок фильтров применяет именно используемая библиотека.
Открытые основания

Первоисточники

  • Исследование1
  • Документация3
  • Официальная документация
    Transformers v4.44.2: generation/utils.py Hugging Face · Git tag v4.44.2; _get_logits_warper и _sample · проверено

    Код задаёт порядок температуры, top-k и top-p. В обычном режиме без лучевого поиска do_sample определяет выбор между случайной выборкой и максимальной текущей оценкой.

    Утверждения: 01 · 05 · 06 · 08

  • Первичная публикация
    The Curious Case of Neural Text Degeneration Ari Holtzman et al. · arXiv:1904.09751v2, 14 февраля 2020 года; §§2.1, 3.1–3.3 · проверено

    §§3.1–3.2 определяют top-p/top-k и перенормировку; §3.3 задаёт температурный softmax. Экспериментальные выводы ограничены исследованными моделями и задачами генерации.

    Утверждения: 01 · 02 · 03 · 04 · 07 · 08

  • Официальная документация
    Transformers v4.44.2: logits_process.py Hugging Face · Git tag v4.44.2; TemperatureLogitsWarper, TopKLogitsWarper, TopPLogitsWarper · проверено

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

    Утверждения: 02 · 03 · 04 · 07 · 08

  • Официальная документация
    Utilities for Generation, Transformers v4.44.2 Hugging Face · Transformers v4.44.2: TemperatureLogitsWarper, TopKLogitsWarper, TopPLogitsWarper · проверено

    Описания преобразований оценок, значения температуры, порога top-p, числа токенов top-k и зависимости от do_sample.

    Утверждения: 02

Карта знаний

Связанные понятия

Из знания — в навык

Курсы по теме

Подтвердите действие