Статьи · arXiv 2106.09685
LoRA: низкоранговая адаптация больших языковых моделей
LoRA: Low-Rank Adaptation of Large Language Models
Опубликовано cs.CLcs.AIcs.LG arXivPDF
Кратко в трёх строках
- 🎯 Полная тонкая настройка гигантских языковых моделей, таких как GPT-3 175B, требует переобучения и хранения миллиардов параметров для каждой задачи, создавая критические узкие места в хранении, памяти VRAM и развертывании.
- 🔧 Замораживает матрицы предобученных весов и внедряет обучаемые матрицы низкорангового разложения () в полносвязные слои Transformer, масштабируя их произведение на и позволяя объединять веса перед развертыванием без дополнительных задержек.
- 📈 Для GPT-3 175B метод LoRA сокращает объем обучаемых параметров в 10 000 раз, а использование VRAM — в 3 раза (с 1.2TB до 350GB), не уступая или превосходя полную тонкую настройку на бенчмарках GLUE, WikiSQL и SAMSum.
Аннотация
Важная парадигма обработки естественного языка состоит в масштабном предобучении на данных общей области и последующей адаптации к конкретным задачам или доменам. По мере увеличения размера предобучаемых моделей полная тонкая настройка (full fine-tuning), при которой переобучаются все параметры модели, становится все менее практичной. Например, для GPT-3 175B развертывание независимых экземпляров дообученных моделей, каждая из которых содержит 175B параметров, обходится непомерно дорого. Мы предлагаем низкоранговую адаптацию (Low-Rank Adaptation, LoRA), которая замораживает веса предобученной модели и внедряет обучаемые матрицы низкорангового разложения в каждый слой архитектуры Transformer, значительно сокращая число обучаемых параметров для прикладных задач. По сравнению с GPT-3 175B, дообученной с помощью Adam, LoRA способна сократить число обучаемых параметров в 10 000 раз, а требования к памяти GPU — в 3 раза. LoRA демонстрирует качество на уровне или выше полной тонкой настройки на моделях RoBERTa, DeBERTa, GPT-2 и GPT-3, несмотря на меньшее количество обучаемых параметров, более высокую пропускную способность обучения и, в отличие от адаптеров, отсутствие дополнительных задержек при инференсе. Мы также представляем эмпирическое исследование низкого собственного ранга при адаптации языковых моделей, которое проливает свет на эффективность LoRA. Мы выпускаем пакет, облегчающий интеграцию LoRA с моделями на базе PyTorch, и предоставляем наши реализации и чекпоинты моделей для RoBERTa, DeBERTa и GPT-2 по адресу https://github.com/microsoft/LoRA.
Оригинальная аннотация (англ.)
An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.
Разбор статьи
Проблема и мотивация
Адаптация крупномасштабных предобученных языковых моделей к различным прикладным задачам традиционно опирается на полную тонкую настройку (обновление всех параметров с до ). Для массивных архитектур вроде GPT-3 175B хранение и обслуживание независимых копий моделей с 175B параметров непомерно дороги с точки зрения дискового пространства, видеопамяти (GPU VRAM) и накладных расходов ввода-вывода. Существовавшие ранее методы эффективной параметрической настройки (PEFT) обладают серьезными недостатками:
- Последовательные слои адаптеров (Series Adapter Layers): встраивают модули типа «bottleneck» последовательно внутрь блоков Transformer. Поскольку эти последовательные операции нельзя распараллелить, они вызывают значительную задержку при инференсе, замедляя прямой проход (forward pass) вплоть до на одном GPU при онлайн-обслуживании с небольшим размером батча.
- Префиксная настройка / настройка промптов (Prefix / Prompt Tuning): оптимизирует непрерывные векторы промптов, добавляемые к активациям слоев. Такие методы сложно оптимизировать, они масштабируются немонотонно относительно длины промпта и расходуют бюджет длины последовательности, доступный для контекста.
LoRA решает этот компромисс между эффективностью и качеством, опираясь на гипотезу о том, что обновления весов при адаптации к новой задаче обладают низким внутренним (собственным) рангом.
Ключевые идеи
- Низкоранговая репараметризация: для замороженной плотной матрицы обновление адаптации параметризуется как , где , , а ранг .
- Нулевая дополнительная задержка инференса: благодаря линейности репараметризации обученные низкоранговые матрицы можно напрямую суммировать с предобученными весами () на этапе развертывания, сохраняя архитектуру инференса неизменной и не создавая задержек по сравнению с полной тонкой настройкой.
- Единая базовая модель с горячей заменой: большая замороженная модель постоянно находится в памяти GPU; для переключения задач требуется лишь заменить низкоранговые матрицы и , что кардинально снижает требования к дисковому пространству с сотен гигабайт до десятков мегабайт.
- Выборочная адаптация механизма внимания: применение низкорангового разложения исключительно к проекциям механизма внимания (в частности, для query и value ) обеспечивает конкурентоспособное качество, оставляя полносвязные слои (MLP) замороженными.
Метод
Для полносвязного слоя проекции, вычисляющего , LoRA модифицирует вычисление следующим образом:
Ключевые детали реализации:
- Инициализация: матрица инициализируется случайным гауссовым распределением , а матрица инициализируется нулями, что гарантирует в начале обучения.
- Коэффициент масштабирования: обновление масштабируется на , где — константный гиперпараметр. При оптимизации с помощью Adam равенство начальному рангу избавляет от необходимости повторного подбора скорости обучения (learning rate) при экспериментах с различными значениями .
- Слияние при развертывании: в продакшене адаптированная весовая матрица явно материализуется как . При смене задачи восстанавливается вычитанием () и объединяется с новыми весами адаптера ().
- Целевые слои: метод применим к любому плотному слою, однако эксперименты сосредоточены главным образом на проекциях внимания Transformer (). Применение LoRA с к матрицам и обеспечивает оптимальный баланс эффективности и качества.
Результаты
- GPT-3 175B: LoRA сокращает число обучаемых параметров со 175 255.8M до 4.7M ( или ) или 37.7M (), уменьшая размер чекпоинта с 350GB до 35MB (сокращение в 10 000 раз) и требуемый объем VRAM при обучении с 1.2TB до 350GB. Пропускная способность обучения увеличивается на (с 32.5 до 43.1 токенов/с на GPU V100).
- Точность на целевых задачах (GPT-3):
- Точность валидации логических форм WikiSQL: полная тонкая настройка достигает ; LoRA (37.7M) достигает .
- Точность совпадения на валидации MultiNLI: полная тонкая настройка достигает ; LoRA (4.7M) достигает .
- Суммаризация диалогов SAMSum: полная тонкая настройка набирает 52.0 / 28.0 / 44.5 по метрикам ROUGE-1/2/L; LoRA (4.7M) демонстрирует 53.8 / 29.8 / 45.9.
- RoBERTa и DeBERTa (бенчмарк GLUE): на модели RoBERTa Large LoRA не уступает тонкой настройке ( против среднего балла), используя 0.8M параметров вместо 355.0M. На DeBERTa XXL (1.5B) LoRA достигает среднего балла на GLUE с 4.7M параметров по сравнению с для полной тонкой настройки (1500.0M параметров).
- Анализ внутреннего ранга: анализ схожести подпространств показывает, что главные сингулярные направления для и сильно перекрываются (нормализованное сходство для первого измерения). Кроме того, усиливает направления, которые присутствуют, но слабо выражены в , демонстрируя коэффициент усиления при .
Ограничения и открытые вопросы
- Батчинг разнородных задач: когда низкоранговые веса объединяются с для исключения задержек инференса, одновременная обработка входных данных для нескольких разных задач в рамках одного батча становится нетривиальной.
- Эвристический выбор слоев: текущий подход опирается на эмпирические эвристики (адаптация и ), а не на строгую теоретическую систему выбора матриц между слоями внимания и MLP.
- Экстремальный сдвиг домена: для задач, распределение данных в которых кардинально отличается от предобучающей выборки (например, адаптация англоязычной LLM к совершенно новому целевому языку), адаптации низкого ранга может оказаться недостаточно по сравнению с адаптацией высокого ранга или полной тонкой настройкой.
Ключевые термины
- Low-Rank Adaptation (LoRA)
- Метод эффективной параметрической тонкой настройки (PEFT), который замораживает веса базовой модели и обучает матрицы низкорангового разложения параллельно полносвязным слоям.
- Intrinsic Rank
- Низкая эффективная размерность или минимальное количество сингулярных векторов, необходимых для фиксации значимой адаптации параметров при переносе на конкретную задачу.
- Adapter Layers
- Внешние модули типа «bottleneck», последовательно встраиваемые в блоки Transformer, которые создают непараллелизуемые последовательные вычисления и задержку инференса.
- Prefix Tuning
- Стратегия адаптации, при которой обучаемые непрерывные векторы добавляются перед входными токенами или скрытыми состояниями слоев, сокращая полезный контекст последовательности.
- Weight Folding / Weight Merging
- Арифметическое сложение низкоранговых матриц непосредственно с предобученной матрицей весов для устранения дополнительных вычислительных затрат во время инференса.
- Grassmann Distance Subspace Similarity
- Метрика , измеряющая степень перекрытия линейных оболочек столбцов между ортонормированными матрицами сингулярных векторов для обновлений адаптации.
- Feature Amplification Factor
- Отношение нормы Фробениуса матрицы к проекции матрицы на сингулярное подпространство , показывающее, насколько сильно акцентируются специфичные для задачи направления.
Вопросы
Почему LoRA не добавляет задержки при инференсе в отличие от классических адаптеров?
Поскольку преобразование LoRA линейно (), низкоранговое произведение можно явно вычислить и сложить с перед запуском сервиса (). В результате инференс выполняет стандартное матричное умножение без последовательных узких слоев (bottlenecks), вызывающих задержки в архитектурах с адаптерами.
К каким весовым матрицам Transformer следует применять LoRA?
Эксперименты на GPT-3 показывают, что адаптация матриц проекций query () и value () обеспечивает наилучшее качество при фиксированном бюджете параметров. Адаптация нескольких матриц внимания с меньшим рангом (например, ) превосходит выделение всех обучаемых параметров под один тип матрицы с более высоким рангом.
Какой ранг $r$ достаточен для адаптации больших языковых моделей?
Для большинства целевых задач часто достаточно очень малого ранга, такого как , или . Анализ подобия подпространств показывает, что главные сингулярные векторы, полученные при малых рангах, значительно перекрываются с векторами, полученными при более высоких рангах (например, ), тогда как более высокие ранги в основном захватывают случайный оптимизационный шум.
Как инициализируются низкоранговые матрицы в LoRA?
Матрица инициализируется случайным нормальным (гауссовым) распределением, а матрица инициализируется нулями. Это гарантирует, что в самом начале обучения, благодаря чему прямой проход исходной предобученной модели остается неизменным.
Обзор на этой странице написан ИИ по тексту статьи и может содержать ошибки. Подробности смотрите в самой статье.