tgoop.com/quant_prune_distill/178
Last Update:
RoSA: Accurate Parameter-Efficient Fine-Tuning via Robust Adaptation
[Статья] [Код]
Введение
Низкоранговые адаптеры (LoRA) уже давно используются при дообучении больших языковых моделей на downstream задачи. Эффективность данного метода основана на наблюдении, что при дообучении на малые задачи, разница между исходными и дообученными весами обладает низкоранговой структурой - то есть основная масса концентрируется в нескольких первых сингулярных векторах.
Однако, данное утверждение - приближенное, и поэтому LoRA, по всей природе неспособная учить высокоранговые добавки, не всегда сравнивается по качеству с дообучением всей модели.
Другая опция малопараметрической добавки к матрице весов - разреженные матрицы.
А совместив низкоранговую с разреженной добавкой получаем своего рода Robust PCA - метод принциапиальных компоненты с шумом, который используется много где (рекомендую видео со Стивом Брантоном).
Основная техническая сложность использования разреженных матриц - эффективная реализация на GPU. Благо при сильном прореживании неплохо работают ядра из специальных библиотек, в частности, sputnik.
Метод
Как можно догадаться, суть работы в том что совместили низкоранговый и low-rank adapter и дообучили на downstream задачах. Разреженную маску получают на основе самых больших элементов диагонали матрицы Фишера. Авторы отмечают, что отдельно диагональ для sparse адаптера работает не очень, но хорошо в связке с низкоранговым адаптером.
Авторы анализируют точность приближения суммой низкорангового и sparse приближения на одном слое, и оказывается, что минимум ошибки достигается при сопоставимом вкладе от low-rank и sparse компоненты. Чем больше доля параметров от исходной - тем эффективнее перекладывать в sparse (который уже не такой sparse).
Эксперименты
Метод валидируют на Llama-2-7b и датасетах Viggo, GSM-8k (математика без подвоха 🤡), SQL. При фиксированном бюджете некоторая смесь, обычно с примерно равной долей sparse и low-rank компоненты, дает лучшее качество. По отдельности low-rank и sparse не так хороши. Больший адаптер работает обычно лучше и самой большой (с суммарным числом обучаемых параметров 160M) почти сравнивается по качеству с полным файнтьюном. Все эксперименты влезают на одну RTX3090 (24Gb памяти).
Выбор разреженной маски на основе усредненного градиента и диагонали Фишера дает примерно одно и то же качество. (В статье не говорится, но знаю лично от авторов, что случайная маска и по абсолютной величине весов работает хуже)
Вывод
Поиск эффективных и выразительных адаптеров - архиважная задача, ибо пользователи без high-end GPU только так и могут обучать современные LLMки на целевую подзадачу. LoRA и ортогональные адаптеры OFT показывают себя неплохо в конкретных приложениях, но ограничены в выразительности по природе своей и оптимальный адаптер, по всей видимости, представляет собой некоторую смесь низкопараметрических матриц. Ее правда, надо еще сначала найти 😅️️
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/178