LoRA: учим не всю модель, а маленькую добавку
LoRA замораживает веса модели и обучает только маленькие низкоранговые матрицы, которые добавляются к слоям.
Зачем это нужно
Полный fine-tuning обновляет все параметры. Для GPT-3 175B это значит хранить отдельную копию модели на каждую задачу. Авторы называют это непомерно дорогим.
Как это работает
Веса предобученной модели остаются замороженными. В каждый плотный слой добавляется обучаемое обновление ΔW, которое представляется как произведение двух низкоранговых матриц. Обучаются только они. Обновление ΔW имеет ранг r, гораздо меньший размерности слоя. В итоге на каждую задачу хранятся маленькие матрицы, а не полная модель.
Пример
По данным статьи, по сравнению с полным fine-tuning GPT-3 175B с Adam, LoRA уменьшает число обучаемых параметров в 10 000 раз и требования к памяти GPU в 3 раза. Качество на RoBERTa, DeBERTa, GPT-2 и GPT-3 не хуже полного дообучения.
Что запомнить
- LoRA замораживает базовые веса и обучает низкоранговые матрицы.
- Для каждой задачи хранится маленький адаптер, а не копия модели.
- По статье, при таком подходе нет дополнительной задержки на инференсе.
Где читать дальше
- Hu et al., LoRA (arXiv:2106.09685), разделы 1 и 4