tgoop.com/quant_prune_distill/320
Last Update:
GIFT-SW: Gaussian noise Injected Fine-Tuning of Salient Weights for
LLMs
[Статья] [Код]
Введение
PEFT и квантизация - два понятия, которые за последние пару лет стали неразрывно связаны с большими языковыми моделями, особенно в контексте обучения и инференса в условии ограниченных ресурсов. И в сегодняшнем эфире будет сказ про немного необычное сочетание этих идей в работе от ребят из Cколтеха, AIRI и Вышки.
Метод
Вкратце напомню, что суть PEFT в до-обучении небольшого (по сравнению с размером исходной модели) числа параметров. Эти параметры могут быть как адаптерами к весами (как LoRA, DoRA, OFT), кои можно (или нельзя) влить в модель, а могут быть некоторым подмножеством весов исходной модели. Второй вариант еще называется в литературе Selective Finetuning и про него сегодня пойдет речь.
Метод основан на двух основных идеях:
1️⃣ Определении “чувствительных” весов, которые, с одной стороны не квантуются, а с другой являются тем самым подножеством обучаемых параметров.
2️⃣ Добавлении “шума” в процесс обучения.
Наличие выбросов в весах, затрудняющая квантизацию, известная особенность LLM (временами оспариваемая), и потому для улучшения качества их обычно держат в исходной точности. В данном случае, следуя LLM.int8() и QUIK выбросы определяются как уровне колонок матриц весов (входных размерностей). В качестве метрики берутся комбинации вида:s_i = || D_i || ||X_i||_{\rho}^{\gamma}
Где \rho - норма весов в колонке, а \gamma - степень - {-½, 1, ½}.
D_i - это пертурбация весов, и в качестве пертурбации рассматривается операция квантования (скалярные однородная симметричная).
Выбросы, для которых значение данной метрики самое большое - не квантуются.
Градиентный спуск с шумом, примененным к весам до или после шага градиентного спуска, как известно из литературы, помогает избегать седел и плохих оптимумов, повышает устойчивость. В данной работе шум применяется до шага SGD.
Итоговый метод выглядит следующим образом:
Квантизуем с помощью GPTQ все веса, за исключением “выбросов”. Затем до-обучаем через обычный бэкпроп эти колонки, а оставшимся весам добавляем нормальный i.i.d шум с std равным шагу квантизации.
Рассматриваются 3 стратегии:
1️⃣ Pre-GIFT-SW - сначала учим с шумом и выбросам, типа готовим модель к квантизации, а затем квантизуем
2️⃣ Salient FT - квантизуем и до-обучаем только “выбросы” без шума
3️⃣ Post-GIFT-SW - квантизуем и до-обучаем “выбросы” с шумом
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/320