Журнал · Rit.work

GDLoRA сокращает разрыв между LoRA и полным дообучением

GDLoRA обновляет базовые веса в направлениях, недоступных адаптеру LoRA, и приближает его качество к полному дообучению без буферов оптимизатора для всей модели.

Rit.work
Студия разработки
30 сентября 2026 г.3 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Базовую модель научились дообучать в направлениях, которые обычный адаптер LoRA пропускает. В препринте Huazhong University of Science and Technology и Hebei University of Technology, который не проходил рецензирование и приводит числа, полученные самими авторами, метод GDLoRA приблизился по качеству к полному дообучению при заметно меньшем расходе памяти. Это даёт промежуточный вариант командам, которым LoRA не хватает качества, а полное дообучение не помещается на доступные GPU.

Почему LoRA не использует весь градиент

При полном дообучении (full fine-tuning) оптимизатор может менять каждый вес модели. LoRA оставляет базовые веса замороженными и обучает две небольшие матрицы, произведение которых задаёт низкоранговую поправку. Благодаря этому AdamW хранит служебные буферы только для адаптера, а не для всей модели.

Такая экономия ограничивает возможные обновления. В каждый момент обучения изменения двух матриц LoRA могут сдвинуть эффективные веса лишь в определённых направлениях. Авторы описывают их как касательное пространство текущего адаптера: оно зависит от состояния матриц и меняется вместе с ними.

Полный градиент обычно содержит и компоненту, которая лежит вне этого пространства. Обычная LoRA не может выразить её малым изменением своих матриц на текущем шаге. Улучшенная инициализация или настройка градиентов адаптера помогает выбрать направление внутри доступного пространства, но не снимает само ограничение.

Работа формализует это различие через ортогональное разложение. Одну часть полного градиента может воспроизвести LoRA, а вторая перпендикулярна всем доступным ей направлениям. Эту вторую часть авторы называют нормальным градиентом. Если она не равна нулю, небольшой шаг против неё уменьшает ошибку текущего пакета данных и не дублирует обновление адаптера.

Как GDLoRA обновляет базовые веса

GDLoRA восстанавливает полный градиент линейного слоя из входных активаций и сигнала обратного распространения. Затем метод строит проекции по текущим матрицам адаптера и отделяет нормальную часть. Для этого не требуется сингулярное разложение полного градиента, но требуется дополнительное матричное умножение.

Дальше обучение расходится на две ветви. Матрицы LoRA обновляет обычный AdamW, а нормальный градиент напрямую меняет базовые веса. Обе ветви используют одно и то же состояние модели до шага оптимизатора, поэтому нормальная компонента остаётся дополнением к текущим возможностям адаптера.

Перед обновлением базовых весов градиент делят на число входных позиций. Без такой нормализации обучение в предварительных опытах вело себя нестабильно, а подходящую скорость обучения было трудно подобрать. Для нормальной ветви задают отдельную скорость, тогда как градиенты адаптера не масштабируют этим способом.

GDLoRA не создаёт для базовых весов буферы момента и дисперсии, которые AdamW обычно хранит при полном дообучении. Поэтому при одинаковых настройках адаптера бюджет памяти под состояние оптимизатора остаётся таким же, как у LoRA. Общий расход памяти всё же растёт: нужно восстановить полный градиент и выполнить проекции.

Когда метод меняет выбор способа дообучения

На математических задачах с Llama-3-8B GDLoRA превысил средний результат LoRA на 2,50 процентного пункта. От полного дообучения его отделили 0,62 пункта, а GPU-памяти потребовалось на 65,0% меньше. Проверка, где базу обновляли полным градиентом или только его касательной частью, дала худший результат: полезным оказалось именно отделение недоступного адаптеру направления.

Эффект проверяли также на RoBERTa для понимания языка, Gemma-7B для рассуждений на основе общих знаний и ViT для классификации изображений. В сравнение вошли обычная LoRA, PiSSA, DoRA, rsLoRA, Fira, LoRA-GA, LoRA-Pro и полное дообучение. GDLoRA улучшил средние результаты LoRA во всех представленных группах задач, но границы вывода задают именно эти модели, наборы данных и конфигурации адаптеров.

Метод стоит включить в испытания, если команда уже выбрала LoRA из-за памяти, но видит устойчивый разрыв с полным дообучением. Сравнивать нужно не только качество и пиковую память, но и длительность шага: GDLoRA экономит на состоянии оптимизатора, однако выполняет дополнительное умножение и заново строит проекции на каждом шаге.

GDLoRA не служит прямой заменой переносимому адаптеру. Обычная LoRA сохраняет базовую модель неизменной, поэтому поверх неё легко переключать небольшие наборы весов. Здесь нормальная ветвь меняет саму базу, а значит, для каждой специализации придётся хранить и разворачивать изменённые базовые веса либо их отдельную разницу.

Интеграция также требует доступа к активациям и сигналам обратного распространения внутри выбранных слоёв, двух правил обновления и отдельной скорости для базовой ветви. Поэтому практичный следующий шаг — пилот на собственном датасете рядом с текущей LoRA, а не немедленная замена конвейера. Если узкое место связано именно с качеством при ограниченной памяти, работа даёт обоснованный третий вариант между адаптером и полным дообучением.

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

← Ко всем материалам
Понравилось? Обсудим вашу задачу