HeadlinesBriefing favicon HeadlinesBriefing.com

Спекулятивное декодирование vLLM

Hacker News •
×

Кратко: Спекулятивное декодирование позволяет vLLM проверять несколько предложенных токенов за один проход целевой модели. В наших экспериментах его эффект на выходной throughput варьировался в зависимости от методов предложения и их длины, а также от семейства моделей, точки проверки, рабочей нагрузки и поведения принятия.

Введение: Большие языковые модели поддерживают широкий спектр приложений, но их обслуживание в масштабе требует тщательной оптимизации. Стандартный авторегрессивный декодинг — базовый метод, используемый большинством систем обслуживания LLM: модель генерирует один токен, добавляет его к последовательности, а затем использует обновленную последовательность для генерации следующего токена. Этот процесс прост и надежен, но цикл обслуживания всё равно продвигает один подтвержденный токен за раз, так как выходные токены должны производиться в строгом порядке слева направо. Спекулятивное декодирование [1] строит на этой базе через механизм draft-and-verify. Легкий компонент draft предлагает кандидальные будущие токены, а целевая модель проверяет эти кандидаты перед их подтверждением. Когда несколько токенов draft принимаются, система может подтвердить несколько выходных токенов за один проход проверки целевой модели, сохраняя поведение выходных данных целевой модели.

Эта статья исследует, как работает спекулятивное декодирование в vLLM, и делится измерениями из нашей тестовой среды. Сначала мы рассматриваем базовый авторегрессивный декодинг и процесс draft-and-verify. Затем рассматриваем пять методов спекулятивного предложения: native MTP, Gemma 4 MTP, EAGLE-3, DFlash и DSpark. Эти методы отличаются тем, как компонент draft получает информацию от целевой модели и предлагает ли кандидаты последовательно, авторегрессивно, параллельно или гибридным способом. В конце мы показываем, как включить проверенные в нашей среде методы, сообщаем измерения наших экспериментов на GPU AMD Instinct↓ MI300X и MI355X с использованием открытой платформы программного обеспечения ROCm↓, и обсуждаем практические аспекты настройки и наблюдаемости.

Базовый авторегрессивный декодинг: В стандартном авторегрессивном декодинге каждый шаг декодирования производит и подтверждает новый токен. Например, генерация четырех выходных токенов требует четырех последовательных шагов декодирования: Шаг 1:context→model→T1 Шаг 2:context + T1→model→T2 Шаг 3:context + T1 T2→model→T3 Шаг 4:context + T1 T2 T3→model→T4 После каждого шага генерируемый токен добавляется в последовательность и становится входом для следующего шага. Это делает цикл декодирования простым, но также требует один шаг декодирования модели для каждого выходного токена. В длинных генерациях этот цикл token-by-token может доминировать задержку и ограничивать пропускную способность обслуживания.

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

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

В каждой раунде спекулятивного декодирования, как показано на Рисунке 1, легкий компонент draft предлагает один или несколько будущих токенов. Эти токены являются только кандидатами и не подтверждаются сразу. Целевая модель затем оценивает последовательность кандидальных токенов за один проход проверки. Проверка proceeds from left to right. Каждый токен draft проверяется с помощью результата целевой модели в соответствующей позиции. Принимаемые токены подтверждаются в выходной последовательности. Когда токен draft отвергается, последующие кандидаты...