Я провел бенчмарк Speculative Decoding — a = 3.5 оказалось недостаточно

Speculative Decoding (SD) опирается на простое математическое правило: a > 1 + α + β

Длина принятия (a) должна превышать 1 плюс коэффициент вычислений (α) и накладные расходы на верификацию (β). Если это условие выполняется, SD выигрывает. Если нет — проигрывает.

Я протестировал эту теорию на реальном железе. Я использовал процессор Intel 12-го поколения с 64 ГБ оперативной памяти. В качестве пары я взял маленькую черновую модель (draft model) Qwen2.5-0.5B и более крупную целевую модель (target model) Qwen2.5-1.5B.

Результаты оказались неожиданными. SD работал на 49–62% медленнее, чем обычная генерация.

Вот как менялась длина принятия (a) в зависимости от задачи:

• JSON (структурированные данные): a = 3.50. Черновая модель хорошо предсказывала формат. • Код (полуструктурированные данные): a = 3.00. Хорошо, но паттерны именования варьировались. • Рассказ (творчество): a = 2.11. Черновой модели было трудно подбирать слова.

Даже когда значение «a» было высоким, SD не справлялся на CPU. Почему?

Главной проблемой стал коэффициент нулевого принятия (zero-accept rate). В 15–30% раундов принималось ноль токенов.

В таких раундах черновая модель работает, целевая модель проверяет, но вы не получаете ничего нового. Вы заплатили за два прохода, чтобы получить один токен. Это увеличивает стоимость SD в 2 раза при том же результате.

Это подчеркивает, почему SD — это оптимизация для GPU.

На GPU работа черновой модели почти бесплатна. Коэффициент вычислений (α) ничтожно мал. На CPU черновая модель конкурирует за пропускную способность памяти. Она не бесплатна. На CPU это неравенство перестает работать.

Если вы планируете использовать SD на CPU — не делайте этого. Цифры не сходятся.

Ключевые выводы для ваших развертываний:

  • Измеряйте собственное значение «a». Не доверяйте заявлениям вендоров.
  • Разделяйте данные по типам задач. У кода и чата разные показатели принятия.
  • Следите за коэффициентом нулевого принятия. Высокая вариативность портит вашу задержку p99.
  • Используйте SD на GPU, где стоимость работы черновой модели минимальна.

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

Source: https://dev.to/zxpmail/i-benchmarked-speculative-decoding-a-35-wasnt-enough-1geb

Optional learning community: https://t.me/GyaanSetuAi