tgoop.com/quant_prune_distill/340
Last Update:
AlphaPruning: Using Heavy-Tailed Self Regularization Theory for Improved Layer-wise Pruning of Large Language Models
[Статья][Ридми, но код все равно нахрен не нужен]
Обсуждать по существу тут нечего, чисто поугарать.
Метод
Хотим мы прунить LLMки. Текущие методы сжимают слои равномерно.
Однако, одни слои могут быть чувствительнее других. Как эффективно распределить степени прореживания между разными слоями для максимизации качества?
В этой же статье предлагают использовать коэффициент в законе убывания сингулярных значений матриц весов W. Логика такая - у случайных матриц закон (при иниализации весов элементами из i.i.d нормального распределения) убывания собственных значений есть Марченко-Пастур c ограниченным спектром, а степенная зависимость типа отвечает сигналу. Чем медленее убывание - тем типа больше сигнала. Потому матрицы с меньшей степенью предлагается сжимать слабее.
Задают некий порог минимальной и максимальной степени сжатия и распределяют степень сжатия между слоями в зависимости от того, насколько велик/мал коэффициент по сравнению с минимальным/максимальным по всем слоям модели.
Эксперименты
Стоял на дворе 2024 год, а ребята основную часть экспериментов делают на Llama-1 и Vicuna. Валидируют по сложившейся традиции на перплексии и 0-shots.
Отдельного внимания заслуживает утверждение:
Our empirical results show that AlphaPruning prunes LLaMA-7B to 80% sparsity
while maintaining reasonable perplexity, marking a first in the literature on LLMs.
При том что перплексия переваливает за 200 в лучшем случае, что на практике означает, что модель галлюцинирует чуть менее чем полностью на любой запрос.
Предложенный метод по качеству по перплексии несколько лучше Uniform, критериев, основанных на спектральной норме и норме Фробениуса, предложенного ранее OWL, но тем не менее просадки остаются весьма значительными (на уровне 1+eps битных квантизаций) при сжатии на 70%.
Есть результаты и на 🦙-3, которая почему-то называется LLaMA-V3-7B. Там просадки значительнее.
Еще и на ConvNext прогнали для разнообразия.
Найденные профили для LLM обычно следующие - пруним меньше первые блоки, сильнее - последние (за исключением самого последнего).
Вывод
Выглядит как использование некой взятой из воздуха характеристики матриц весов для оценки важности, без внятной мотивации. Тем не менее, в упорстве и умении себя хорошо подать авторам не занимать, потому их и взяли на NeurIPS. А вообще, прунить LLMки тяжело дается как-то по сравнению с квантизацией. В 4 бита просадка на простых бенчах почти и не видна, а 50% sparsity (сжатие в 2 раза) уже существенно ломает модель.
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/340