SPECULATIVE DECODING · УГАДАЙ, ПОТОМ ПРОВЕРЬ
Большая модель пишет медленно: один проход — один токен. Маленькая быстро угадывает несколько токенов вперёд, а большая проверяет все догадки за один проход. Верные принимаются пачкой, на первой ошибке большая ставит свой вариант.
01 · текст prompt
догадка принятаисправила большаябонус от большой
02 · раунд k = 4 догадки
черновик
ждёт
большая
ждёт
03 · проходы большой модели главная цена генерации
обычная генерация0
speculative0
принято догадок —
Почему это быстрее: большая модель на настоящем железе упирается в чтение своих весов из памяти, а не в вычисления. Проверить 4 токена за один проход стоит почти столько же, сколько сгенерировать один. Черновик маленький, его проходы почти бесплатные.
Обе модели настоящие и обучены мной на одном корпусе: большая — та же, что на странице transformer, черновик в 6 раз меньше (1 слой, вектор из 16 чисел). Всё считается в браузере. Здесь показан жадный вариант (всегда самый вероятный токен), поэтому итог совпадает с обычной генерацией слово в слово, и страница это проверяет. Для случайной генерации есть вариант с rejection sampling, который сохраняет распределение большой модели точно.
~/ai $ generate(draft=small, k=4)
раунд [0]
принято [0/0]
проходов [0 vs 0]