tgoop.com/quant_prune_distill/236
Last Update:
Half-Quadratic Quantization of Large Machine Learning Models
[Блог][Код]
Введение
Некоторое время назад здесь мы разбирали работу HQQ+ с довольно спорными заявлениями. И сейчас откатимся немного назад в прошлое и рассмотрим исходный метод квантизации - HQQ.
1️⃣ Есть data-agnostic
методы квантизации - round-to-nearest, bnb квантование, не требующие входных данных.
2️⃣ Есть data-aware
методы - GPTQ, AWQ, SpQR, SqueezeLLM, QuIP#, AQLM и д.р, которые ищут конфигурацию квантованных весов, оптимизирующую ошибку на некотором входном распределении данных. Вторая группа методов обычно точнее по качеству, но более вычислительно затратна. Кроме того, имеет место переобучение под калибровочные данные.
Метод
В данной работе предлагают метод, якобы гарантирующий одновременно хорошее качество и не требующих никаких данных.
Исходная функция ошибки l_p
норма (c 0 < p < 1)
, которая устойчива к выбросам, характерным для больших языковых моделей. Скейлы квантизации фиксируют, и оптимизируют zero_point. Однако, в исходном виде, задача плохо решается из-за невыпуклости, потому авторы вводят вспомогательную переменную, которая в оптимуме равна разнице между исходными и квантованными весами, и решают полученную задачу альтернированной оптимизацией, поочередно оптимизируя скейлы и фиктивную переменную.
Согласно заявлениям авторов, метод сходится за пару десятков итераций.
Эксперименты
Метод валидируют на моделях семейства Llama-2 и OpenCLIP ViTах. В первом случае замеряют перплексию на Wikitext2, а во втором качество 0-shot и linear probe.
8-битная квантизация работает без просадки по качеству. 4-битная с небольшой, 2- и 3- битные квантизации уже заметно просаживаются по сравнению с fp16, но все еще выдают стабильный результат. Но тут есть нюанс 🧐 - 2-х и 3-х битные квантизации используют малые группы (64 для 3-битной) и (16, 32 для 2-битной). В одной постановке scale хранится в 16 битах, в другой квантуется в 8 бит. Потому HQQ_g16 - это на самом деле 3.5 бита на параметр, а HQQ_g16* - 3 бита.
Работает метод быстро: ~1 минута для Llama-2-7b/13b и 4 минуты для Llama-2-70b на 1-ой A100.
ViT-B заметно просаживается по качеству при квантовании, но его большие собратья - ViT-L, ViT-H сохраняют неплохие метрики даже при 2-битной квантизации. Размер группы не уточняется, потому непонятно, настоящие это 2 бита, или 3 с лишним 🤷♂️…
Вывод
На текущий момент данный метод, наверное, лучший среди data-agnostic методов квантизации. Тем не менее без информации о входном распределении данных, хорошее качество при высокой степени сжатия модели недостижимо.
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/236