tgoop.com/quant_prune_distill/216
Last Update:
GaLore: Memory-Efficient LLM Training by Gradient Low-Rank Projection
[Статья][Код]
Введение
В связи со стремительным ростом размера моделей, все более острой становится проблема memory-efficient обучения LLM. По существу, рядовому пользователю доступны лишь parameter-efficient файнтьюны предобученных моделей. В разобранной ранее статье ReLoRA было предложено обучать несколько низкоранговых добавок и вливать их в веса. Однако, для достижения качества, не сильно уступающему обучению всей модели целиком, этап обучения всей модели целиком был необходим, то есть multi-GPU обучения все равно не избежать.
В этой статье был предложен подход, который позволил достичь с Llama-7b-подобной моделью качества близкого к полному обучению, доступный владельцам 1️⃣ GPU с 24Гб VRAM.
Метод
Суть метода довольно проста и не нова, по существу 👨🦳 .
Низкоранговые LoRA добавки неплохо работают на стадии дообучения, но эффективный pretrain требует заметать в процессе обучения пространство большой размерности. Однако, сами изменения весов могут (и авторы даже дают некоторое обоснование данному явлению) лежать в пространстве низкой размерности.
Отсюда мысль - проектировать градиенты и состояния оптимизатора в пространство низкой размерности. А именно делают следующее:
1️⃣ Считают градиент по весу на n-шаге
2️⃣ Считают его SVD разложение, откуда достают первые r векторов, отвечающих главным сингулярным значениям.
3️⃣ Проектируют на полученные подпространства состояния оптимизатора
В основе работы метода - предположение о том, что градиенты слабо меняются между соседними итерациями. Прикрутить его можно более-менее к любому стандартному градиентному алгоритму оптимизации - SGD, Adam (хоть исходный, хоть Adam8bit).
GaLore требует даже меньше памяти на линейный слой c n входными и m выходными нейронами, чем LoRA (с Adam).
🔴 LoRA : (mn + mr + nr)
параметров, (2mr + 2nr)
состояний оптимизатора
🟢GaLore : mn
параметров, (mr + 2nr)
состояний оптимизатора
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/216