QUANT_PRUNE_DISTILL Telegram 236
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 методов квантизации. Тем не менее без информации о входном распределении данных, хорошее качество при высокой степени сжатия модели недостижимо.
🔥6



tgoop.com/quant_prune_distill/236
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Select “New Channel” Telegram desktop app: In the upper left corner, click the Menu icon (the one with three lines). Select “New Channel” from the drop-down menu. Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators. A Hong Kong protester with a petrol bomb. File photo: Dylan Hollingsworth/HKFP. 5Telegram Channel avatar size/dimensions
from us


Telegram КПД
FROM American