lora дообучение
LoRA (Low-Rank Adaptation) — это метод parameter-efficient fine-tuning (PEFT), позволяющий дообучать большие языковые модели с минимальными вычислительными затратами. LoRA дообучение основано на идее, что изменения весов модели во время адаптации имеют низкий внутренний ранг — то есть их можно представить как произведение двух небольших матриц вместо обновления всей матрицы весов.
Математическая идея LoRA
В обычном full fine-tuning каждый слой трансформера обновляет свои весовые матрицы W размерности d×d. При LoRA исходная матрица W замораживается, а вместо неё обучаются две маленькие матрицы A (d×r) и B (r×d), где r — ранг адаптера, обычно от 4 до 64. Итоговое обновление весов: ΔW = BA.
Поскольку r ≪ d, количество обучаемых параметров сокращается драматически. Для модели LLaMA 7B вместо обновления 7 миллиардов параметров обучаются лишь несколько миллионов — снижение на два порядка. При инференсе матрицы A и B сворачиваются с исходными весами: W' = W + BA, что не добавляет задержки.
Преимущества LoRA перед full fine-tuning
- Низкие требования к памяти GPU — модель 7B можно дообучить на одном GPU с 16 ГБ VRAM
- Скорость обучения — меньше параметров обновляется на каждом шаге
- Модульность — адаптеры LoRA хранятся отдельно от базовой модели и легко подключаются/отключаются
- Отсутствие задержки при инференсе — после слияния весов производительность идентична базовой модели
- Множественные адаптеры — одна базовая модель может иметь десятки LoRA-адаптеров для разных задач
QLoRA: квантизация + LoRA
QLoRA (Quantized LoRA) — дальнейшее развитие метода, предложенное Тимом Детмерсом в 2023 году. Базовая модель квантизируется до 4-битного представления (NF4 — Normal Float 4), что сокращает потребление памяти ещё в 4 раза, а LoRA-адаптеры обучаются в bfloat16. Это позволяет дообучать модели 70B на одном GPU A100 80 ГБ — ранее такое было немыслимо без кластера.
QLoRA использует несколько дополнительных трюков: double quantization (квантизация констант квантизации) и paged optimizers для управления пиками памяти.
Гиперпараметры LoRA
Основные параметры, которые нужно настроить:
- r (rank) — ранг матриц; чем выше, тем больше выразительности, но больше памяти. Типичные значения: 8, 16, 32, 64.
- alpha — коэффициент масштабирования обновлений, обычно равен r или 2r.
- target_modules — к каким слоям применять LoRA. Стандартно: q_proj, v_proj, k_proj, o_proj в слоях self-attention.
- dropout — регуляризация адаптеров, обычно 0.05–0.1.
Практический стек для LoRA дообучения
Библиотека Hugging Face PEFT реализует LoRA и QLoRA. Axolotl и LLaMA-Factory предоставляют удобные конфигурационные файлы для запуска. Unsloth оптимизирует вычисления LoRA через кастомные CUDA-ядра, достигая 2–5× ускорения при вдвое меньшем потреблении памяти.
Типичный процесс: загрузить базовую модель с Hub → обернуть в LoraConfig → подготовить датасет в формате instruction-response → запустить SFTTrainer из библиотеки TRL → сохранить адаптер отдельно от базовой модели.
Когда использовать LoRA
LoRA — оптимальный выбор, когда нужно адаптировать большую модель при ограниченных GPU-ресурсах, когда требуется быстрая смена адаптеров для разных задач, или когда нужно поддерживать несколько специализаций одной базовой модели. Для задач, требующих глубокого изменения фундаментальных знаний модели, может потребоваться полноценный fine-tuning или предобучение.
Публикация и обмен LoRA-адаптерами
Одно из преимуществ LoRA — компактность адаптеров. Для модели LLaMA 7B адаптер с r=16 занимает около 50–100 МБ вместо 14 ГБ полной модели. Это делает обмен адаптерами практичным: Hugging Face Hub содержит тысячи публичных LoRA-адаптеров для разных задач и языков. При публикации важно указывать базовую модель, ранг, целевые модули, датасет и условия использования в model card. OpenPEFT и PEFT-совместимые фреймворки гарантируют воспроизводимость: любой может скачать адаптер и применить его к правильной базовой модели без дополнительной настройки.
Частые вопросы
Что такое ранг в LoRA и как его выбирать?
Ранг r определяет размерность адаптерных матриц. Чем выше ранг, тем больше выразительности, но выше потребление памяти. Начинайте с r=16 и экспериментируйте. Для большинства задач r=8..32 достаточно.
Можно ли комбинировать несколько LoRA-адаптеров?
Да, с помощью методов LoRA merging (LoRAHub, TIES-Merging) несколько адаптеров можно объединить в один. Также существует механизм dynamic adapter switching для переключения адаптеров без перезагрузки модели.
Сохраняет ли модель после LoRA исходные способности?
LoRA значительно снижает catastrophic forgetting по сравнению с full fine-tuning, так как базовые веса заморожены. Однако при высоких learning rate и большом количестве эпох деградация исходных способностей всё равно возможна.
Другие термины в теме «ИИ и машинное обучение»
Не хватает деталей?
Напишите, что уточнить по теме «lora дообучение» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).