Читайте нас в Telegram или Макс

Спекулятивное декодирование: как нейросеть угадывает свои же следующие слова, чтобы отвечать быстрее

Когда вы задаёте вопрос в поиске Google и получаете сводку от ИИ сверху страницы, ответ часто собирает не одна модель, а две.

Маленькая быстро набрасывает черновик из нескольких слов, большая за один проход проверяет его и оставляет только то, что написала бы сама. Метод называется спекулятивным декодированием, Google применяет его в AI Overviews. В исходной работе 2022 года он ускорил генерацию в 2–3 раза, причём ответ остаётся точно таким же, как без ускорения. Разбираем, как это устроено, почему качество не страдает и где у метода предел.

Почему нейросеть пишет по одному слову

Языковая модель генерирует текст авторегрессивно: по одному токену за шаг. Токен — это кусочек текста, иногда целое слово, иногда его часть или знак препинания. Чтобы получить токен номер 12, модели нужно знать токены с 1 по 11. Значит, фраза из 12 токенов требует 12 последовательных шагов, и параллелить их напрямую нельзя.

Каждый шаг означает полный проход через всю нейросеть. Причем дорогое в этом проходе не вычисления, а чтение весов модели из памяти.

Посчитаем на круглых числах. Модель на 70 млрд параметров в 16-битном формате весит около 140 ГБ. На каждом шаге генерации эти веса нужно прочитать из видеопамяти в вычислительные блоки. Пропускная способность памяти у NVIDIA H100 SXM составляет около 3,35 ТБ/с. Даже в идеальных условиях одно только чтение весов занимает около 40 миллисекунд на токен, то есть не больше 25 токенов в секунду. Вычислительные блоки в это время в основном простаивают: ускорители выполняют сотни триллионов операций в секунду, а память отдаёт данные со скоростью в несколько триллионов байт в секунду. Разница составляет примерно два порядка.

Отсюда главная идея. Если узкое место в чтении весов, а не в вычислениях, то проверить за один проход пять токенов стоит почти столько же, сколько сгенерировать один. Веса всё равно читаются один раз, а дополнительные вычисления укладываются в простаивающие мощности. Осталось найти, откуда взять эти пять токенов-кандидатов.

Как работает спекулятивное декодирование

Черновик и проверка

В классической схеме работают две модели:

  • черновая модель (draft): маленькая и быстрая, например в сто раз меньше основной;
  • целевая модель (target): та самая большая модель, ответ которой мы хотим получить.

Один цикл выглядит так:

  • Черновая модель последовательно генерирует несколько токенов вперёд, обычно от 3 до 8. Она маленькая, поэтому эти шаги дешёвые.
  • Целевая модель получает весь черновик и за один проход вычисляет свои вероятности для каждой позиции. Это возможно, потому что все токены черновика уже известны, и их можно обработать параллельно, как обрабатывается обычный промпт.
  • Токены черновика проверяются слева направо. Пока целевая модель «согласна», токены принимаются. На первом несогласии черновик обрезается, а на место отвергнутого токена встаёт токен, выбранный целевой моделью.
  • Если приняты все токены черновика, целевая модель бесплатно добавляет ещё один, следующий: его вероятности она уже посчитала в том же проходе.

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

Почему маленькая модель вообще может угадывать за большую? Потому что значительная часть текста предсказуема. После «Москва — столица» почти наверняка идёт «России». Закрывающая скобка, окончание слова, служебные конструкции в коде — всё это маленькая модель угадывает не хуже большой. Большая модель нужна на сложных местах, и именно там черновик отбрасывается.

Почему результат не меняется

Главное свойство метода: итоговый текст статистически неотличим от того, что выдала бы целевая модель сама. Это не эвристика, а математическая гарантия, и держится она на модифицированной выборке с отклонением (rejection sampling).

Для каждого токена черновика есть две вероятности: q — с какой вероятностью его выбрала черновая модель, и p — с какой вероятностью его выбрала бы целевая. Правило проверки такое:

  • если p больше или равно q, токен принимается всегда;
  • если p меньше q, токен принимается с вероятностью p/q;
  • если токен отвергнут, новый выбирается из скорректированного распределения: берётся разность p − q там, где она положительна, и нормируется.

Смысл в том, что черновая модель «переоценила» некоторые токены, и проверка срезает этот перекос ровно настолько, насколько нужно. А скорректированное распределение при отказе добирает вероятность тех токенов, которые черновик недооценил. В сумме получается в точности распределение целевой модели. Авторы оригинальной работы Google формулируют это так: метод даёт идентичные выходы без переобучения и изменения архитектуры.

При жадной генерации (когда модель всегда выбирает самый вероятный токен) всё ещё проще: токен черновика принимается, если он совпадает с самым вероятным токеном целевой модели.

Сколько токенов удаётся угадать

Эффективность метода определяют два параметра: доля принятия α (какую долю токенов черновика целевая модель принимает) и длина черновика k.

Ожидаемое число токенов, которое даёт один проход большой модели, считается по формуле из работы Левиатана и соавторов: (1 − α в степени k+1) / (1 − α).

Эволюция метода: от двух моделей к одной

Первые работы: Google и DeepMind

Метод почти одновременно описали две команды. Янив Левиатан, Матан Калман и Йосси Матиас из Google опубликовали работу «Fast Inference from Transformers via Speculative Decoding» в ноябре 2022 года и получили ускорение в 2–3 раза на T5-XXL. В феврале 2023 года команда DeepMind во главе с Чарли Ченом выпустила «Accelerating Large Language Model Decoding with Speculative Sampling»: на модели Chinchilla с 70 млрд параметров генерация ускорилась в 2–2,5 раза в распределённой конфигурации.

У классической схемы два неудобства. Нужна вторая модель, которую надо держать в памяти и которая должна быть обучена на похожих данных, иначе доля принятия будет низкой. А для каждой новой большой модели приходится подбирать или обучать свой черновик.

Medusa: головы вместо второй модели

В январе 2024 года Тианле Цай, Три Дао и соавторы предложили Medusa. Вместо отдельной черновой модели к большой модели добавляются несколько лёгких «голов», каждая из которых предсказывает токен на позицию вперёд: первая — следующий, вторая — через один, и так далее. Головы дают несколько вариантов продолжения, которые складываются в дерево и проверяются за один проход с помощью древовидного внимания (tree attention).

Medusa-1 обучает только головы поверх замороженной модели и даёт ускорение больше 2,2 раза без потери качества. Medusa-2 дообучает головы вместе с моделью и достигает ускорения в 2,3–3,6 раза.

EAGLE: угадывать признаки, а не слова

Семейство EAGLE пошло дальше: черновая часть работает не с токенами, а со скрытыми представлениями самой большой модели, то есть с тем, что модель «думает» перед выбором слова. Это даёт черновику гораздо больше информации, чем голая последовательность токенов.

EAGLE-3 вышла в марте 2025 года. Авторы отказались от предсказания признаков в пользу прямого предсказания токенов и стали использовать признаки сразу с нескольких слоёв модели. По данным статьи, ускорение достигает 6,5 раза, а прирост относительно EAGLE-2 составляет около 1,4 раза.

У EAGLE осталось ограничение: черновые токены генерируются по одному, и задержка черновика растёт вместе с его длиной. Инженеры AWS и NVIDIA предложили P-EAGLE (Parallel EAGLE), где все черновые токены создаются за один проход. Метод встроили в популярный движок инференса vLLM начиная с версии 0.16.0. На ускорителях B200 и модели GPT-OSS 20B он добавляет от 5 до 69% скорости поверх обычного EAGLE-3.

Multi-token prediction: модель сразу учат смотреть вперёд

DeepSeek в модели V3 (декабрь 2024 года) встроила предсказание нескольких токенов прямо в обучение. Модуль multi-token prediction (MTP) учится угадывать сразу два токена: следующий и тот, что идёт за ним. Изначально это делалось ради качества: модель, которая планирует на шаг дальше, лучше понимает структуру текста. А при генерации тот же модуль служит готовым черновиком. По данным технического отчёта, второй предсказанный токен принимается в 85–90% случаев, что даёт ускорение около 1,8 раза по числу токенов в секунду.

Замеры на движке SGLang, опубликованные в блоге LMSYS в июле 2025 года, показали рост выходной пропускной способности DeepSeek V3 до 60% на конфигурации из 16 ускорителей H200. При черновике из 3–4 токенов в среднем принималось 2,2–2,4 токена за проход.

Подсказка из контекста: Predicted Outputs

Черновик не обязательно генерировать моделью. Если вы просите переименовать переменную в файле на 300 строк, 290 строк ответа будут совпадать с исходником. Их можно просто подставить как черновик.

Так работает функция Predicted Outputs, которую OpenAI добавила в API в ноябре 2024 года. Разработчик передаёт ожидаемый текст ответа, модель проверяет его кусками параллельно и генерирует заново только изменённые места. Сейчас функция доступна для GPT-4o, GPT-4o mini и семейства GPT-4.1. Похожий приём в открытых движках называется prompt lookup decoding: черновик ищется среди n-грамм самого промпта.

Когда ускорение не работает

Большой батч

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

Это хорошо видно по цифрам EAGLE-3: до 6,5 раза ускорения в лучших условиях, но в фреймворке SGLang при размере батча 64 прирост пропускной способности составил 1,38 раза. В крупной конфигурации LMSYS (128 ускорителей) MTP дал всего 14% против 60% на малой.

Непредсказуемый текст

Доля принятия зависит от того, насколько текст предсказуем. Код, таблицы, переводы, пересказы и шаблонные ответы черновик угадывает хорошо. Творческий текст с высокой температурой выборки угадывается хуже: целевая модель сама выбирает каждый раз по-разному, и черновик чаще промахивается.

Слабый черновик

Если черновая модель обучена на других данных или слишком мала, доля принятия падает. При α около 0,5 выигрыш почти съедается затратами на сам черновик. Поэтому команды, которые выкатывают модели в продакшен, обычно обучают черновик специально под свою модель, а не берут первый попавшийся.

Скорость в обмен на деньги

Отклонённые токены тоже вычислялись, и кто-то за них платит. В Predicted Outputs токены, которые не вошли в ответ, тарифицируются как обычные выходные. Разработчик Саймон Уиллисон проверил это на примере из документации: ответ пришёл за 3,3 секунды вместо 5,2, то есть на 36% быстрее, но стоил на 72% дороже, потому что из 156 предсказанных токенов принято было только 49.

Что это значит для тех, кто пользуется нейросетями

Спекулятивное декодирование работает на стороне провайдера, и пользователь его не включает и не видит. Но оно объясняет несколько вещей, которые заметны в повседневной работе.

  • Почему одна и та же модель отвечает с разной скоростью. Скорость зависит от загрузки серверов и от того, насколько предсказуем ваш ответ. Переписать готовый текст с мелкими правками модель может заметно быстрее, чем сочинить новый текст той же длины.
  • Почему у провайдеров появились «быстрые режимы» за отдельные деньги. Например, у Claude Opus 5.5 есть быстрый режим, который работает в 2,5 раза быстрее при двойной стоимости. Каким именно способом ускоряется этот режим, Anthropic не раскрывает, но логика компромисса та же: скорость покупается дополнительными вычислениями.
  • Почему маленькие модели вроде GPT-6 Luna или Gemini 3.5 Flash так популярны для массовых задач. Они дёшевы и быстры сами по себе, а большие модели оправданы там, где черновик бы постоянно ошибался: в сложных рассуждениях и нестандартных задачах.

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

Сравнивать модели проще всего через единый API. У SpeShu.AI один ключ открывает больше 300 нейросетей, включая GPT-6, Claude, Gemini и DeepSeek V4. API совместим с форматом OpenAI, поэтому, чтобы переключить модель, достаточно поменять одну строку с её названием. Всё остальное в интеграции остаётся как было. Так можно прогнать один и тот же набор запросов через несколько моделей и замерить три вещи: время до первого токена, скорость генерации в токенах в секунду и стоимость ответа. После этого видно, где хватит быстрой модели вроде GPT-6 Luna или Gemini 3.5 Flash, а где нужна флагманская. Для бизнеса это ещё и бухгалтерски удобно: оплата в рублях, закрывающие документы и учёт расходов по каждому проекту, без валютных платежей зарубежным провайдерам.

Подарок

Гайд «Как выжать 1000% из текстовых нейросетей» про то, как формулировать запросы, чтобы модель реже ошибалась и меньше «лила воду». Короткий и точный ответ экономит токены и время независимо от того, какие ускорения работают на стороне провайдера.

Частые ошибки

Ошибка 1: считать, что спекулятивное декодирование делает ответы хуже. Это не сжатие и не упрощение модели. Метод математически гарантирует то же распределение ответов, что и у целевой модели. Если ответ ускоренной модели хуже, причина в чём-то другом: в квантизации, другой версии модели или настройках генерации.

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

Ошибка 3: путать ускорение генерации с ускорением обучения. Спекулятивное декодирование работает только при инференсе, то есть когда готовая модель отвечает на запросы. На скорость обучения оно не влияет. Исключение — MTP: там дополнительный модуль учится вместе с моделью, но ускорение всё равно проявляется только при генерации.

Ошибка 4: ждать одинакового ускорения на любых задачах. Цифры вроде «в 6,5 раза» получены в лучших условиях: одиночные запросы и предсказуемый текст. На загруженном сервере и творческих задачах прирост может составить десятки процентов.

Ошибка 5: считать, что быстрее значит дешевле. Отклонённые токены тоже требуют вычислений. В Predicted Outputs за них платит пользователь, в быстрых режимах провайдеры берут дороже за ту же модель.

Ошибка 6: путать спекулятивное декодирование с кэшированием. Кэш промпта ускоряет обработку повторяющегося начала запроса и снижает его цену. Спекулятивное декодирование ускоряет генерацию ответа. Это разные механизмы, и они работают одновременно.

Заключение

Спекулятивное декодирование использует простое наблюдение: большая модель тратит время на чтение собственных весов, а не на вычисления, поэтому проверить пять токенов почти так же дёшево, как сгенерировать один. Черновик даёт кандидатов, проверка с отклонением гарантирует, что итог не отличается от ответа большой модели, а ускорение в 2–3 раза давно стало стандартом. Следующие поколения метода (Medusa, EAGLE-3, MTP) убрали отдельную черновую модель и подняли потолок ускорения, но физика осталась прежней: чем загруженнее сервер и чем непредсказуемее текст, тем меньше выигрыш.

Сравнить скорость и стоимость ответов разных моделей на своих задачах можно в SpeShu.AI. По промокоду KODTSNIS действует бонус 15% к сумме пополнения.

Частые вопросы

Что такое спекулятивное декодирование простыми словами?

Это способ ускорить генерацию текста нейросетью. Маленькая быстрая модель угадывает несколько следующих слов, а большая модель за один проход проверяет их и оставляет только те, которые выбрала бы сама. Если угадано много, ответ приходит в 2–3 раза быстрее.

Влияет ли спекулятивное декодирование на качество ответа?

Нет. Проверка с отклонением устроена так, что итоговый текст статистически неотличим от ответа большой модели без ускорения. Это доказано в оригинальных работах Google и DeepMind.

Чем Medusa и EAGLE отличаются от классического спекулятивного декодирования?

В классической схеме черновик пишет отдельная маленькая модель. Medusa добавляет к большой модели несколько лёгких голов, которые предсказывают токены на несколько позиций вперёд. EAGLE строит черновик на скрытых представлениях самой большой модели, поэтому угадывает точнее и даёт ускорение до 6,5 раза в лучших условиях.

Почему спекулятивное декодирование хуже работает на загруженных серверах?

Метод использует вычислительные мощности, которые простаивают, пока модель читает веса из памяти. Когда сервер обрабатывает много запросов одновременно, простоя нет, и проверка черновиков начинает конкурировать с полезной работой. Поэтому при больших батчах ускорение снижается до десятков процентов.

Можно ли включить спекулятивное декодирование самому?

В чат-интерфейсах нет: этим управляет провайдер. Разработчики могут использовать Predicted Outputs в API OpenAI, а при запуске открытых моделей на своём сервере включить спекулятивное декодирование в движках vLLM или SGLang.

Erid: 2Vtzqw8FKJd. Реклама. ООО «ЦНИС», ИНН: 9704271170