Перейти к содержанию

llama.cpp b11368: вероятностный драфтинг и rejection sampling для MTP

5.0/10

В релизе движка llama.cpp b11368 реализована поддержка вероятностного сэмплирования драфт-токенов в сочетании с верификацией через rejection sampling для сценариев простого драфтинга (simple draft) и многотокенного предсказания (Multi-Token Prediction, MTP). Изменения изолируют потоки генератора псевдослучайных чисел (RNG) драфтера от целевой модели, добавляют флаг активации вероятностного режима (по умолчанию сохранен жадный выбор — greedy) и вводят обязательную перенормировку распределения после наложения масок. Для запросов с грамматическими ограничениями обеспечена совместимость с rejection sampling и предусмотрен резервный откат к argmax-сэмплированию, а логика повторного принятия токенов (replay) вынесена на уровень сервера. Прямые бенчмарки скорости генерации (tok/s) и задержки в описании релиза отсутствуют, однако доработка позволяет корректно сохранять целевое вероятностное распределение при спекулятивном инференсе без деградации качества вывода.

Метод оптимизации

В архитектуру спекулятивного декодирования для механизмов simple draft и Multi-Token Prediction (MTP) внедрено вероятностное сэмплирование кандидатов драфтером с их последующей верификацией целевой моделью методом выборки с отклонением (rejection sampling). Реализация разделяет потоки генератора случайных чисел (RNG) между драфт- и таргет-моделями, а также производит корректную ренормализацию распределения вероятностей после наложения масок при работе с грамматическими ограничениями. По умолчанию в конфигурации сохраняется жадный режим (greedy/argmax), при этом новый флаг позволяет задействовать стохастический отбор с синхронным усечением пула кандидатов и очереди spec_draft_q.

Источники