中文翻译暂不可用,显示俄语原文。
Как работает DoRA (Weight-Decomposed LoRA) и чем лучше LoRA?
Краткий тезис
DoRA (Weight-Decomposed Low-Rank Adaptation) — это улучшение метода LoRA, которое разлагает предобученные веса на две компоненты: magnitude (масштаб/норма) и direction (направление). В DoRA обучается только направление через низкоранговую адаптацию (как в LoRA), а масштаб дообучается отдельным скалярным параметром. Такой подход позволяет точнее аппроксимировать полное обновление весов, давая прирост качества на 2–5% на рассуждающих задачах (reasoning) при незначительном увеличении числа параметров (примерно ×1.1 по сравнению с LoRA). DoRA особенно эффективен в сценариях, где важна точность логических выводов, например при fine-tuning LLM для агентных систем.
1. Термин: LoRA (Low-Rank Adaptation) — основа для понимания DoRA
LoRA — это метод параметро-эффективного fine-tuning (PEFT), который вместо обновления всей матрицы весов W (размерности d×k) вводит две маленькие матрицы A (d×r) и B (r×k), где ранг r значительно меньше d и k. Обновление весов представляется как ΔW = BA. Во время обучения замораживаются исходные веса W, а обучаются только A и B. Это резко сокращает количество обучаемых параметров (в 100–1000 раз) и потребление памяти.
Ограничение LoRA: обновление ΔW имеет ранг не выше r. Это означает, что все изменения весов лежат в подпространстве размерности r. На практике для многих задач ранга 8–16 достаточно, но для сложных рассуждающих задач (математика, логика) такое ограничение может снижать качество, так как полное обновление весов может требовать более богатой структуры.
2. Идея DoRA: разделение magnitude и direction
DoRA исходит из наблюдения, что любая матрица весов может быть представлена как произведение нормы (magnitude) и единичного направления (direction):
W = m * (V / ||V||), где m — вектор норм (для каждого выходного нейрона), а V — матрица весов без нормировки.
При fine-tuning полное обновление ΔW можно разложить на изменение масштаба Δm и изменение направления ΔV. LoRA пытается аппроксимировать и то, и другое одним низкоранговым обновлением, что неоптимально.
DoRA предлагает:
- Заморозить исходную матрицу
W_0. - Разложить её на
m_0(норма по строкам) иV_0(нормированные веса). - Обучать направление через стандартную LoRA:
V' = V_0 + BA. - Обучать масштаб отдельно:
m— это обучаемый вектор длины d (количество выходных нейронов), инициализированный какm_0. - Итоговый вес:
W = m * (V' / ||V'||).
Таким образом, DoRA добавляет к LoRA всего d дополнительных параметров (обычно d — размер скрытого слоя, например 4096 для LLaMA-7B), что составляет примерно 10% от числа параметров LoRA (при r=8). Общее число обучаемых параметров ≈ 1.1× от LoRA.
3. Математическая формулировка DoRA
Пусть W_0 ∈ R^{d×k} — предобученная матрица весов (например, проекция Query в attention). Обозначим W_0 = [w_1; w_2; ...; w_d], где w_i — строка (вектор размерности k).
Шаг 1: разложение
m_0[i] = ||w_i||_2 (норма L2 каждой строки)
V_0[i] = w_i / m_0[i] (нормированная строка)
Шаг 2: обучаемые параметры
m ∈ R^d— вектор масштабов, инициализируется какm_0.A ∈ R^{d×r},B ∈ R^{r×k}— низкоранговые матрицы LoRA, инициализируются стандартно (A — случайная, B — нулевая).
Шаг 3: прямой проход
V' = V_0 + BA
V_norm = V' / (||V'||_2 по строкам) # нормализация каждой строки
W = diag(m) * V_norm # поэлементное умножение строк на m
Шаг 4: градиенты
- Градиенты по
mвычисляются напрямую через цепное правило. - Градиенты по
AиBпроходят через нормализацию, что требует аккуратного вычисления (используется градиент нормировки).
На практике DoRA реализуется как дополнительный слой-обёртка, который принимает исходные веса и LoRA-адаптеры, а затем применяет разложение.
4. Сравнение DoRA и LoRA
| Характеристика | LoRA | DoRA |
|---|---|---|
| Число обучаемых параметров | 2×d×r (A и B) | 2×d×r + d (дополнительный вектор m) |
| Относительное увеличение | 1× | ~1.1× (при r=8, d=4096) |
| Качество на reasoning-задачах (GSM8K, MATH) | Базовый уровень | +2–5% |
| Качество на NLU-задачах (GLUE, SuperGLUE) | Сопоставимо | Сопоставимо или чуть лучше |
| Скорость обучения | Быстро | Незначительно медленнее (из-за нормализации) |
| Скорость инференса | Без накладных расходов (можно слить веса) | Требует слияния весов или дополнительного шага нормализации |
| Интерпретируемость | Низкая | Выше: можно анализировать изменение масштаба и направления отдельно |
| Стабильность обучения | Хорошая | Лучше: разделение компонент уменьшает конфликт градиентов |
Ключевое преимущество DoRA: разделение magnitude и direction позволяет модели точнее подстраивать как "уверенность" (масштаб), так и "смысл" (направление) каждого нейрона. В LoRA оба эффекта смешиваются в низкоранговом обновлении, что может приводить к субоптимальным решениям.
5. Экспериментальные результаты (из оригинальной статьи)
Авторы DoRA (Liu et al., 2024) провели эксперименты на LLaMA-7B/13B и других моделях:
- MMLU (massive multitask language understanding): DoRA превосходит LoRA на 1.5–2% при том же ранге.
- GSM8K (математические задачи): прирост 3–5% (например, с 42% до 46% на LLaMA-7B).
- MATH (сложная математика): прирост 2–4%.
- Common-sense reasoning (HellaSwag, WinoGrande): прирост 1–2%.
- NLU (GLUE): разница в пределах статистической погрешности.
Важно: DoRA особенно эффективен, когда требуется точное следование инструкциям и многошаговые рассуждения — именно те сценарии, которые важны для агентных систем.
6. Когда выбирать DoRA вместо LoRA
Рекомендуется использовать DoRA, если:
- Вы fine-tune модель для задач, требующих логических рассуждений (математика, code generation, планирование).
- Ваша агентная система использует LLM для принятия решений на основе инструментов (tool use) — DoRA улучшает качество выбора действия.
- У вас есть достаточно вычислительных ресурсов для незначительного увеличения времени обучения (обычно +5–10%).
- Вы хотите интерпретируемости: можно отследить, какие нейроны изменили масштаб, а какие — направление.
LoRA остаётся предпочтительным, если:
- Критично минимальное число параметров (например, развёртывание на edge).
- Задача простая (классификация, сентимент-анализ) — выигрыш DoRA минимален.
- Вы ограничены в памяти GPU (DoRA требует хранения дополнительного вектора m и вычисления нормализации).
7. Связь с Agentic RAG
В контексте Agentic RAG (агентные системы, которые используют RAG для поиска информации и выполнения действий) fine-tuning LLM с помощью DoRA даёт следующие преимущества:
- Улучшение планирования: агент должен разбить сложный запрос на подзадачи — DoRA повышает точность рассуждений.
- Лучший выбор инструментов: агент решает, какой API вызвать — DoRA улучшает понимание контекста.
- Более точная генерация запросов к векторной БД: DoRA помогает модели формулировать эффективные поисковые запросы.
- Снижение галлюцинаций: за счёт более точного fine-tuning модель реже выдумывает факты.
Таким образом, DoRA — это современная техника fine-tuning, которая особенно полезна для агентных архитектур, где качество рассуждений напрямую влияет на успех системы.
8. Пет-проект для закрепления
Задача: Сравнить LoRA и DoRA при fine-tuning небольшой LLM (например, GPT-2 или LLaMA-2-7B) на датасете математических рассуждений (GSM8K) и оценить точность.
Инструменты:
- Python, PyTorch, Hugging Face Transformers, PEFT (библиотека поддерживает DoRA начиная с версии 0.12.0).
- Датасет:
gsm8k(Hugging Face datasets). - Метрика: accuracy на тестовой выборке.
Шаги:
- Загрузить предобученную модель (например,
meta-llama/Llama-2-7b-hf). - Реализовать LoRA (через
peft.LoraConfig) и DoRA (черезpeft.DoraConfig). - Fine-tune обе модели на подмножестве GSM8K (например, 1000 примеров) с одинаковыми гиперпараметрами (ранг r=8, learning rate=2e-4, 3 эпохи).
- Оценить accuracy на тестовом наборе (200 примеров).
- Сравнить число параметров, время обучения и точность.
Ожидаемый результат:
- DoRA покажет accuracy на 2–5% выше, чем LoRA.
- Число параметров DoRA будет примерно на 10% больше.
- Время обучения увеличится незначительно (до 10%).
Дополнительно: можно визуализировать изменения вектора m (magnitude) после обучения — увидеть, какие нейроны изменили масштаб.
9. Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 482 | Как работает LoRA и какие у него ограничения? |
| 484 | Что такое QLoRA и как он сочетается с DoRA? |
| 485 | Какие ещё методы PEFT существуют (IA3, AdaLoRA)? |
| 486 | Как fine-tuning влияет на производительность RAG-системы? |
| 487 | Как оценивать качество fine-tuning для агентных систем? |
| 488 | В чём разница между full fine-tuning и PEFT? |
10. Навигация
- Предыдущий: 482
- Следующий: 484
- Индекс: 00. Индекс разборов
Навигация
- Предыдущий: 482
- Следующий: 484
- Индекс: 00. Индекс разборов