LoRA — это метод дообучения модели, при котором базовые веса не меняют, а поверх них добавляют небольшие обучаемые матрицы. Такой подход помогает адаптировать большую модель под новую задачу с меньшими затратами памяти и вычислений, чем при полном fine-tuning.
Содержание статьи
Что такое LoRA
LoRA расшифровывается как low-rank adaptation, или низкоранговая адаптация. Метод используют для настройки уже обученной модели под конкретный сценарий без пересчёта всех её параметров.
Идея проста: вместо полного дообучения огромной нейросети изменяется только небольшая добавка к исходным весам. Базовая модель при этом остаётся замороженной. За счёт этого разработчик может быстрее получить специализированную версию модели под нужную задачу.
Подход стал особенно заметен в работе с LLM, то есть большими языковыми моделями. Он подходит там, где полное дообучение слишком дорого по памяти, времени или требованиям к оборудованию.
Зачем нужен LoRA
LoRA нужен для того, чтобы адаптировать крупную модель дешевле и быстрее, чем при полном дообучении. Это особенно полезно, когда базовая модель уже хорошо обучена, но её нужно подстроить под узкий набор задач.
Большие модели содержат огромное число параметров. Если менять их все, обучение требует много памяти GPU, хранения состояний оптимизатора и длительных вычислений. LoRA снимает часть этой нагрузки, потому что обучает лишь небольшой набор дополнительных параметров.
Практический смысл здесь в следующем: одна и та же базовая модель может использоваться в разных сценариях, а различия между сценариями задаются отдельными LoRA-адаптерами. Это упрощает работу с несколькими задачами, где раньше приходилось бы хранить несколько полноценных версий модели.
Как работает LoRA
LoRA замораживает исходные веса модели и обучает только две небольшие матрицы, которые описывают изменение этих весов. После обучения эти добавки можно применять вместе с базовой моделью или объединять с её весами.
В классической схеме fine-tuning модель получает обновления по всем или почти всем параметрам. В LoRA логика другая. Исходные веса предобученной модели не трогают. Вместо этого для нужных слоёв добавляют компактное представление изменения весов через матрицы низкого ранга.
Если упростить, большой весовой матрице не пытаются подобрать новое полное значение. Для неё задают поправку в виде произведения двух меньших матриц. Именно эти небольшие матрицы и обучаются через градиентный спуск.
На выходе модель учитывает и исходные веса, и обученную поправку. За счёт этого поведение меняется в нужную сторону, но вычислительная нагрузка на этапе настройки оказывается заметно ниже.
Что значит низкий ранг
Низкий ранг в контексте LoRA означает, что изменение большой матрицы представляют через более компактную форму. Это позволяет уменьшить число обучаемых параметров.
Матрицы лежат в основе вычислений нейросетей. Если большую матрицу можно описать через произведение двух меньших, хранить и обучать такую конструкцию обычно проще. Именно на этой идее и строится LoRA.
Смысл не в том, что модель становится маленькой целиком. Уменьшается именно объём изменяемой части, которая отвечает за адаптацию к новой задаче.
Что происходит во время обучения
Во время обучения LoRA обновляет только добавленные матрицы, а базовая модель остаётся неизменной. Это и даёт экономию памяти и ресурсов.
Процесс обычно выглядит так:
- Берут предобученную модель.
- Замораживают её исходные веса.
- Выбирают слои или модули, куда будет добавлен LoRA-адаптер.
- Подключают две небольшие обучаемые матрицы.
- Обучают только эти матрицы на новой задаче.
- Используют адаптер отдельно или объединяют его с базовыми весами.
Такой подход особенно удобен при работе с блоками внимания, где LoRA часто и применяют. Но конкретные целевые модули зависят от архитектуры модели и реализации.
Чем LoRA отличается от полного дообучения
Главное отличие LoRA от полного fine-tuning в том, что при LoRA почти все параметры модели остаются неизменными. Обучается только компактная надстройка.
| Критерий | LoRA | Полное дообучение |
| Какие параметры меняются | Только добавленные матрицы | Большая часть или все параметры модели |
| Требования к памяти | Ниже | Выше |
| Скорость настройки | Обычно выше | Обычно ниже |
| Работа с несколькими задачами | Можно хранить несколько адаптеров для одной базы | Часто нужны отдельные версии модели |
| Изменение базовой модели | Нет | Да |
Полное дообучение остаётся полезным, когда нужен полный контроль над параметрами модели. Но для многих прикладных сценариев LoRA даёт более лёгкий путь к адаптации.
Какие параметры LoRA настраивают чаще всего
При работе с LoRA обычно задают ранг матриц, целевые модули и коэффициент масштабирования. Эти параметры влияют на размер адаптера и характер обновления весов.
- r — ранг обновляющих матриц. Чем он ниже, тем меньше обучаемых параметров.
- target_modules — слои или блоки модели, куда вставляют LoRA-адаптеры.
- lora_alpha — коэффициент масштабирования для обновлений.
На практике эти параметры подбирают под архитектуру модели и ограничения по ресурсам. Слишком маленький ранг может не дать нужной точности, а слишком большой уменьшит выигрыш по памяти и скорости.
Где используют LoRA
LoRA чаще всего применяют для дообучения больших языковых моделей и других крупных нейросетей, где полная настройка слишком затратна. Метод подходит для задач, в которых есть сильная базовая модель и нужна узкая специализация.
Это может быть настройка модели под конкретный стиль ответов, формат классификации, извлечение данных, работу с внутренними документами или иные прикладные задачи. Общий принцип один: база уже умеет многое, а LoRA помогает сместить её поведение под нужный контекст.
Подход используют не только с текстовыми моделями. Сам принцип параметрически экономного дообучения шире, хотя чаще всего LoRA обсуждают именно в контексте LLM.
Плюсы LoRA
Основные плюсы LoRA — меньше обучаемых параметров, ниже требования к памяти и удобная работа с несколькими адаптациями одной базовой модели.
У метода есть несколько практических преимуществ.
- Экономия ресурсов. Нужно обучать лишь небольшую часть параметров.
- Проще хранение версий. Вместо нескольких полноценных моделей можно держать одну базу и набор адаптеров.
- Быстрее настройка. Объём вычислений ниже, чем при полном дообучении.
- Гибкость при развёртывании. Обученные матрицы можно объединять с весами модели без отдельной тяжёлой конструкции.
- Совместимость с другими подходами. LoRA можно использовать вместе с другими методами параметрически экономного fine-tuning.
Есть и ещё один важный момент. Если базовая модель уже распределяется как общий фундамент, команда может готовить разные LoRA-адаптеры под разные задачи, не меняя саму основу.
Какие ограничения есть у LoRA
LoRA уменьшает число обучаемых параметров, но за это платит ограничением на форму обновления весов. Из-за этого адаптация может быть менее полной, чем при полном дообучении.
Суть ограничения связана с самой идеей низкого ранга. Большую матрицу изменений заменяют более компактным представлением. Такая замена экономит ресурсы, но может терять часть деталей.
Насколько это критично, зависит от задачи, архитектуры модели и выбранного ранга. Если ранг слишком мал, адаптеру может не хватить выразительности. Если увеличить ранг, точность может вырасти, но вместе с ней растут и затраты.
Поэтому LoRA — это всегда баланс между экономией ресурсов и глубиной адаптации.
Что такое QLoRA
QLoRA — это вариант LoRA, который сочетает низкоранговую адаптацию с квантизацией модели. Такой подход помогает ещё сильнее сократить требования к памяти при дообучении.
Идея здесь в том, что хранение модели переводят в более низкую точность, а вычисления для обучения организуют так, чтобы сохранить качество настройки. В результате крупные модели можно дообучать на более ограниченном оборудовании по сравнению с обычным сценарием.
QLoRA не заменяет базовую идею LoRA, а развивает её. Если LoRA уменьшает объём обучаемых параметров, то QLoRA дополнительно снижает стоимость хранения и работы с исходной моделью.
Как используют LoRA в Hugging Face
Для LoRA в экосистеме Hugging Face обычно применяют библиотеку PEFT, которая позволяет подключать адаптеры к модели без ручной переделки архитектуры.
PEFT расшифровывается как parameter-efficient fine-tuning, то есть параметрически экономное дообучение. Библиотека работает вместе с Python, PyTorch и моделями из Hugging Face, позволяя задать конфигурацию LoRA и встроить адаптеры в нужные модули.
Обычно разработчик выбирает базовую модель, определяет целевые слои, задаёт ранг и коэффициенты LoRA, после чего обучает только добавленные параметры. Такой сценарий стал стандартным для многих практических задач с открытыми моделями.
Когда LoRA уместен, а когда нет
LoRA уместен, когда нужна недорогая адаптация уже сильной модели под конкретную задачу. Если же требуется глубокое изменение поведения на уровне всей сети, может понадобиться полное дообучение.
Метод хорошо подходит в ситуациях, где есть ограничения по GPU-памяти, времени обучения или хранению нескольких версий модели. Он также удобен, когда одна база обслуживает несколько сценариев и для каждого нужен свой набор корректировок.
Если задача требует перестройки большого числа внутренних представлений модели, компактной надстройки может оказаться мало. Тогда выигрыш по ресурсам уже не компенсирует ограничения по качеству адаптации.
Коротко: что нужно запомнить о LoRA
LoRA — это способ дообучать большие модели через небольшие добавочные матрицы, не меняя основную массу параметров. Метод снижает требования к памяти и вычислениям, упрощает хранение нескольких адаптаций и часто используется для настройки LLM.
Ключевая идея одна: вместо полного переписывания весов модель получает компактную обучаемую поправку. За счёт этого LoRA стал одним из самых заметных подходов в параметрически экономном дообучении нейросетей.