tgoop.com/quant_prune_distill/167
Last Update:
The LLM Surgeon
[Статья] [Кода нет]
На текущий моментнаиболее успешные методы по прунингу и квантизации моделей так или иначе опираются на некоторое приближение матрицы вторых производных для определения важных весов и отпимальной сжатой конфигурации.
Чем больше модель, тем дороже становится вычисление любого приближения, и многие подходы не масштабируются на современные LLM.
SparseGPT / GPTQ и их производные оптимизируют квадратичную ошибку на выходе линейного слоя / свертки, но ничего не знают о целевой функции потерь. Чтобы учесть целевую функцию, надо так или иначе вычислить градиент (или его прокси) и агрегировать.
И на помощь приходит приближение матрицы Фишера для данного слоя (линейного или свертки) кронекеровским разложением F = A \otimes G
. Первый фактор (матрица ковариации входных активаций) идентичен Гессиану квадратичной ошибки для данного слоя. Второй фактор - матрица ковариации градиентов по выходу слоя. Кронекеровское разложение точно в предположении независимости градиентов по выходу слоя от активаций, которое вообще говоря не выполняется, но попытка - не пытка.
И в данной работе, получилось успешно применить кронекеровское разложение в фреймворке Optimal Brain Surgeon.
Метод
Суть метода в следующем - берут Optimal Brain Surgeon, где вместо настоящего Гессиана используется Кронекеровское разложение и выводят формулы для неструктурированного / 2:4 и структурированного прунинга. Для более высоких уровней прореживания метод применяют итеративно - между итерациями прунинга дообучают LoRA добавки и пересчитывают матрицу Фишера (до 40 раз при прореживании до 50%). Недешевое удовольствие, но качество подымает почти гарантированно.
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/167