ЯдроКодаподготовка к экзаменам
Научная библиотека

Загружаем научный разбор

Подготавливаем текст, источники и редакционные примечания без изменения разметки страницы.

Каталог статейМатериал и источники

LoRA: почему небольшая поправка к матрице помогает дообучать LLM

Автор: · Обновлено

Разбор LoRA через ранг матриц, собственный расчёт числа параметров и пример ограничений адаптера: что экономится и что остаётся дорогим.

У команды есть большая предобученная модель и небольшой набор примеров ответов в нужном формате. Полное дообучение разрешает менять огромное число весов. Для каждого обучаемого параметра могут понадобиться градиент и состояния оптимизатора; для нескольких заказчиков приходится хранить несколько вариантов модели. Возникает вопрос: действительно ли для новой задачи необходимо независимо двигать каждую координату каждой матрицы?

LoRA предлагает ограничить форму поправки. Это не магическое сжатие всех знаний модели и не новый способ превращать текст в токены. Метод меняет пространство параметров, в котором проходит адаптация. Чтобы понять цену такого ограничения, достаточно небольшой матрицы и нескольких арифметических операций.

Идея исследования

Hu и соавторы представили LoRA на ICLR 2022. Предобученные веса замораживаются, а обновление выбранных матриц задаётся произведением двух меньших матриц. Авторы исследовали этот подход для нескольких языковых моделей и задач. Полученные ими сравнения относятся к описанным экспериментам; они не утверждают, что любая задача допускает одинаково маленький ранг. Страница первичной работы.

Пусть исходная матрица W имеет m строк и n столбцов. Вместо свободной поправки из m × n чисел обучаем B размера m × r и A размера r × n. Тогда изменение выхода задаётся B(Ax), а итоговый слой вычисляет Wx + BAx, с возможным дополнительным коэффициентом масштаба. Число параметров поправки равно r(m + n).

Собственный расчёт бюджета

Для квадратного слоя 4096 × 4096 полная поправка содержит 16 777 216 параметров. При r = 8 адаптер содержит 65 536 параметров. Отношение равно 256. Это точный подсчёт для одной выбранной матрицы, а не обещание уменьшить в 256 раз всю память процесса. Базовые веса, активации, другие слои и временные буферы остаются.

m = n = 4096
rank = 8
full = m * n
adapter = rank * (m + n)
assert full == 16_777_216
assert adapter == 65_536
print(full // adapter)  # 256

# Поправка ранга 1: внешний продукт столбца и строки.
b = [1, 2, -1]
a = [3, 0, 4]
delta = [[left * right for right in a] for left in b]
x = [2, 5, 1]
direct = [sum(row[j] * x[j] for j in range(3)) for row in delta]
factorized = [value * sum(a[j] * x[j] for j in range(3)) for value in b]
assert direct == factorized == [10, 20, -10]

Последние строки показывают одинаковый результат двух способов вычисления. Но они не демонстрируют обучения: A и B заданы вручную. Это полезное разделение. Алгебраическое равенство можно проверить без датасета, тогда как качество адаптации требует отдельного эксперимента с обучением и контрольными заданиями.

В поправке ранга 1 все строки пропорциональны одной строке. Поэтому она не может представить произвольное изменение. Например, единичная матрица размера 3 × 3 имеет три независимых направления и не равна одному внешнему произведению. Увеличение ранга расширяет доступное пространство, но одновременно увеличивает число параметров и риск подогнать небольшой обучающий набор.

Как сравнивать адаптеры

Возьмём практическую задачу: модель должна извлекать из обращения категорию, краткое описание и необходимость ответа оператора. Разделите данные по исходным обращениям, чтобы варианты одного текста не оказались и в обучении, и в проверке. Заранее выберите метрики: корректность схемы, точность категории и долю случаев, где потеряна существенная деталь.

Сначала измерьте базовую модель с одинаковой инструкцией. Затем сравните несколько рангов при сопоставимом бюджете обучения. Сохраняйте версии модели и токенизатора, выбранные слои, длину контекста, порядок данных и seed. Если одна конфигурация получила больше примеров или времени, результат нельзя приписать только рангу. Проверяйте и старые задачи, если сохранение прежнего поведения входит в требования продукта.

Объём файла адаптера удобен для распространения нескольких специализаций. Однако получателю нужна совместимая базовая модель. Адаптер, обученный для одних весов, нельзя считать переносимым на другую модель только из-за совпадения размеров слоёв. Также различайте хранение адаптера и исполнение: при отдельном вычислении поправки могут появляться дополнительные операции и организационные расходы.

Границы вывода и применение

Отдельный журнал ресурсов должен различать память хранения весов, память во время обучения и размер итогового файла. Измерьте пиковое использование при одинаковом размере пакета и длине примеров. Затем оцените скорость обработки и время полного эксперимента. Маленький адаптер удобен для обмена, но проект может оставаться ограниченным дорогими активациями длинного контекста. Если требование связано с задержкой ответа, проверяйте её после выбранного способа загрузки или объединения адаптера, а не выводите из одного подсчёта параметров.

Документация PEFT описывает выбор целевых модулей, ранга и объединение адаптера с базовыми весами. Возможность объединения следует из формы W + BA, но режимы квантования и конкретная реализация требуют собственных проверок. Сам термин LoRA не означает, что базовая модель стала маленькой или что её можно исполнять без достаточной памяти.

Для разработчика метод полезен, когда нужна контролируемая специализация модели и важен бюджет обучаемых параметров. Он не заменяет качественные примеры, проверку утечек между выборками и тестирование результата. Главное практическое решение — выбрать минимальный бюджет адаптации, при котором выполняются требования на новых данных, а затем сохранить воспроизводимый комплект базовых весов, конфигурации и адаптера.

Источники

Формат и права

Формат
Авторский разбор

Атрибуция

Самостоятельный русскоязычный разбор ЯдроКода. Описания первоисточников отделены от авторских учебных примеров и инженерных выводов. Материал не является переводом или перепечаткой.

Код, данные и иллюстрации

Учебные данные, расчёты, таблицы и программные примеры созданы для этой публикации. Иллюстрации и программный код из первоисточников не воспроизводятся.