Спекулятивная генерация.
Или “Как уменьшить задержку при генерации авторегрессионной моделью?”
Вариант 1: Лёгкая черновая модель
Основной пост: https://huggingface.co/blog/assisted-generation
Суть: В трансформерах подтверждение корректности сгенерированных токенов работает быстрее, чем генерация этих же токенов. Потому что подтверждение делается параллельно по токенам, а вот генерировать можно только один токен за раз. Поэтому можно пытаться предсказать токены более легкой моделью, и потом подтверждать основной. Если легкая модель достаточно часто угадывает правильные токены, получаем значительное ускорение инференса.
Проблемы: Нужно найти хорошую маленькую модель и хостить её рядом с основной.
Поддержка:
- VLLM: в процессе, https://github.com/vllm-project/vllm/pull/2188
- TGI: поддерживаются n-граммные черновые модели, https://github.com/huggingface/text-generation-inference/issues/1169
Вариант 2: Медуза
Основной пост: https://sites.google.com/view/medusa-llm
Суть: Доучиваем несколько голов на предсказание нескольких следующих слов вместо одного. По сути заменяем черновую модель на адаптеры для основной. Предсказания подтверждаем основной моделью. Каждая голова выдает сразу несолько кандидатов (например топ-5). Проверяем сразу все комбинации, используя аккуратную “древесную” маску внимания.
Проблемы: Нужно что-то доучивать.
Поддержка:
- VLLM: в процессе, https://github.com/vllm-project/vllm/pull/2188 (там в PR оба варианта)
- TGI: поддерживается, https://github.com/huggingface/text-generation-inference/pull/1308
Вариант 3: Lookahead decoding
Основной пост: https://lmsys.org/blog/2023-11-21-lookahead-decoding/
Суть: Метод Якоби для предсказания окна впереди с кешированием n-грамм. То есть мы сначала подставляем в окно случайные токены и потом пытаемся их итеративно улучшать. При таком подходе токены часто правильные даже на ранних итерациях, но не в своей позиции. Поэтому кэшируем n-граммные “траектории” и пытаемся их тоже подставлять.
Проблемы: Сложнее в понимании и, кажется, слишком медленно.
Поддержка:
- VLLM: идёт дискуссия, https://github.com/vllm-project/vllm/issues/1742
- TGI: отказано, https://github.com/huggingface/text-generation-inference/issues/1169
Другое:
OSD: https://arxiv.org/abs/2310.07177, про онлайн доучивание черновых моделей
Статья DeepMind: https://arxiv.org/abs/2302.01318, про то, как это всё подружить с сэмплированием
Post #14
3.15K
- 👍 22
- ❤ 6
- 🔥 5
- ❤🔥 1