tgoop.com/quant_prune_distill/371
Last Update:
Pushing the Limits of Large Language Model Quantization via the Linearity Theorem
[Статья][PR в transformers]
SOTA векторные методы квантизации, такие как AQLM (+PV), QuIP#, QTIP, способны достигать умеренной просадки качества при сжатии в 2-3 бита, и почти без просадки (смотря на чем замерять) в 4 битах.
Однако, деквантизация в данных подходах довольно ресурсоемкая, что ограничивает предельно возможную скорость инференса.
Кроме того, сами методы требуют некоторых приседаний и вычислительных затрат, чтобы произвести на свет сжатую модель. И требуют калибровочных данных для оценки распределения данных, что может давать некий сдвиг.
И коллеги @galqiwi и @black_samorez, совместно с корешами из IST, KAUST и MIT предложили новый, data-free (в большинстве сценариев) метод квантизации с переменной битностью слоев, который дает одновременно и хорошее качество в 3-4 бита и значительное ускорение.
Метод
State-of-the-art методы квантизации и прунинга для LLM по большей части оптимизируют ошибку на выходе линейного слоя, так как прямой учет лосса слишком затратен на масштабе.
Но в конечном итоге хочется-то не просесть в качестве генерации, а связь между послойной ошибкой и ошибкой на выходе модели не очевидна.
И авторы обнаруживают, что при не слишком сильном сжатии есть линейная взаимосвязь между конечной ошибкой (перплексией), и относительной ошибкой на выходе слоя. То есть перплексия сжатой модели есть перплексия исходной + некоторая линейная комбинация послойных ошибок сжатия.
Но сама ошибка может существенно варьироваться от слоя к слою и зависит от распределения значений в матрицах весов. Кроме того, хочется иметь data-free метод квантизации, а наивный RTN просаживает качество довольно сильно при сжатии в 4 и и ниже бит.
Потому авторы применяют знакомые давним подписчикам канала Адамаровы вращения, которые убивают выбросы в весах и приводят распределение весов к нормальному i.i.d. А для нормального распределения существуют рассчитанные (численно) оптимальные решетки. Потому метод зовется Hadamard Incoherence and Gaussian MSE-optimal GridS (HIGGS). Причем рассматривается случай как скалярной, так и векторной квантизации. Векторная квантизация с 2-мерными кодбуками дает лучшее качество, чем скалярная, и при этом эффективно реализуется кернелами из библиотеки FLUTE.
Налагая на данный вес случайный шум и смотря на изменение перплексии, можно оценить коэффициент пропорциональности между послойной ошибкой и перплексией на выходе.
Далее решением задачи линейного программирования при заданной степени сжатия определяет отпимальное распределение уровней сжатия среди несколько возможных вариантов.
Таким образом, задача нахождения оптимальных квантизованных весов сводится к нахождению коэффициентов важности каждого слоя и оптимальной квантизации для нормально распределенных i.i.d. весов.
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/371