Главная / Аналитика / Инфраструктура
Инфраструктура

Как ужать модель без потери качества

Набор приёмов режет аппетит модели в разы почти без потери качества. Что включать и в каком порядке.

Редакция asiclub2 мин23 июня

Модель обучили в 16 битах на параметр. Но держать её такой в проде расточительно. Есть набор приёмов, которые режут аппетит модели в разы, почти не трогая качество. Ниже разберём, что включать и в каком порядке.

Квантизация первым делом

Начинать стоит с понижения точности весов. Перевод из FP16 в FP8 на современных ускорителях идёт из коробки: тот же vLLM поддерживает его нативно. Он даёт от 1,3 до 2 раз пропускной способности при потере качества меньше 2% на инструктивных моделях. Соотношение выгоды к риску тут лучшее из всех приёмов, поэтому с него и начинают.

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

Что ещё выжимает скорость

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

Отдельная головная боль — KV-кэш, память под уже обработанный контекст. На длинных диалогах он раздувается и съедает всю VRAM. Грамотное управление им и разумные лимиты контекста часто высвобождают больше, чем ожидаешь.

Порядок действий такой. Сначала FP8, дёшево и почти бесплатно по качеству. Потом батчинг и работа с KV-кэшем, чтобы выжать железо под нагрузкой. Дальше, по необходимости, 4 бита и спекулятивное декодирование. И на каждом шаге замеряйте качество на своих данных, а не на общих бенчмарках: где именно просядет ваша модель, заранее не скажет никто.