Ускорение вывода LLM:
квантование, спекулятивное декодирование и Continuous Batching
Практическое руководство по современным методам ускорения инференса с примерами библиотек vLLM, TensorRT-LLM и TGI
Современные языковые модели становятся всё больше, а требования к скорости и эффективности инференса — всё жёстче. В этой статье разберём четыре ключевых подхода, которые позволяют значительно ускорить работу моделей без заметной потери качества.
Квантование моделей
Целочисленное квантование
Преобразует веса из FP16/BF16 в 8-битные целые числа. Снижает потребление памяти в 2 раза и ускоряет вычисления на GPU с поддержкой INT8.
Квантование с плавающей точкой
Использует 8-битные числа с плавающей точкой (E4M3/E5M2). Сохраняет динамический диапазон лучше INT8 и отлично работает на новых GPU NVIDIA Hopper.
Activation-aware Weight Quantization
Защищает наиболее важные веса от квантования, анализируя активации. Один из лучших методов по соотношению качество/скорость на 4-битном уровне.
Спекулятивное декодирование
Метод позволяет генерировать сразу несколько токенов за один проход большой модели. Небольшая «черновая» модель предлагает кандидатов, а основная модель проверяет их параллельно.
- Medusa
- Speculative Sampling (Google)
- EAGLE
Continuous Batching (вечно-дружественный батчинг)
В отличие от классического статического батчинга, Continuous Batching позволяет добавлять и удалять запросы из батча в реальном времени. Это особенно эффективно при работе с переменной длиной последовательностей и онлайн-запросами.