tgoop.com/quant_prune_distill/127
Last Update:
ECoFLaP: Efficient Coarse-to-Fine Layer-Wise Pruning for Vision-Language Models
[Статья][Код есть, но не почищен]
Большинство методов прунинга сжимают все слои нейронной сети с одинаковой силой .
Естественно предположить, что слой слою рознь, и какие-то можно сильно проредить, не потеряв заметно в качестве, а спарсификация других же, напротив, будет очень болезненно восприниматься сеткой. Потому, при некотором целевом уровне сжатия отпимальным будет скорее всего неоднородное распределение процента нулевых весов по разным слоям.
Но как найти это распределение?
Метод
Современные SOTA-методы сжатия LLM-ок опираются обычно на послойное приближение Гессиана, которое ничего не знает о влиянии данного слоя на конечный выход. Как вариант можно оценить важность слоя с помощью градиентов модели, в частности, используя диагональ матрицы Фишера.
Но для многомиллиардных моделей подсчет градиента и хранение промежуточных активаций - удовольствие не из дешевых, потому в данной статье предлагается заменить честный градиент его приближением нулевого порядка. А именно, сэмплируется гауссов шум, считается разница значений лосс функций при сдвиге в положительном и отрицательном направлении от данной точки и делится на величину шума - производная по случайному направлению по существу. По-хорошему, требуется много сэмплов, чтобы оценить аккуратно градиент. Но в этой работе утверждают, что одного достаточно.
Вооружившись определенным выше критерием важности слоев, можно для каждого слоя задать свою степень сжатия и применить известный метод прунинга.
Эксперименты
Авторы валидируют метод на BLIP-2 (задача VQA), Flan-T5 (на MMLU), EVA-ViT (на ImageNet-1k). Не то, чтобы подсчет градиентов был непосильной задачей для моделей этого размера, но зато можно оценить качество приближения нулевого порядка по сравнению с "честным" Фишером.
В качестве метода прунинга используется Wanda (SparseGPT, где заменили послойный гессиан его диагональю ) и модели не дообучаются после прунинга.
Предложенный метод неплохо накидывает по сравнению с uniform sparsity при сжатии 50-60%, однако просадка все же довольно существенна по сравнению с плотной моделью во всех трех сценариях. Приближение градиента разностью почти не просаживает качество по сравнению с использованием истинного градиента. Найденные sparsity распределения тоже близки. Метод сильнее прореживает текстовую модель в BLIP чем vision. Большее количество шумов для оценки градиента не влияет на качество.
Вывод
На текущий момент при определении важности и влияния слоя на конечный выход модели человечеству приходится оперировать эвристиками, основанными на величине активаций, градиентов, но исчерпывающего, удовлетворительного решения пока нет. Разработка некоторого надежного, подкрепленного теоритическими гарантиями метода позволит сделать большой шаг в сжатии моделей и построении эффективных архитектур. Странно, что статья хоть и предлагает метод, экономичный по памяти, не валидируется на условной Llama/Llama-2 .
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/127