Speculative decoding: как удвоить скорость инференса маленькой моделью

Speculative decoding работает по принципу: маленькая, быстрая модель генерирует кандидатов нескольких токенов параллельно, большая модель проверяет их правильность за один проход. Если предсказание совпадает с выводом большой модели — выигрыш во времени очевиден.

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

Использование в локальном инференсе

Фреймворки llama.cpp и vLLM встроили поддержку speculative decoding. Пользователи теперь могут загрузить большую модель Llama и дистиллированную версию параллельно, получив ускорение без изменения кода приложения.

Результаты варьируются: на текстовой генерации среднее ускорение 1,5–1,8 раза, на кодировании выше — до 2,3 раза. На задачах с низкой энтропией (например, с temperature близкой к нулю) эффект слабее.

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