LoRA
Материал из MachineLearning.
(Новая: {{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником ~~~~}} {{TOCright}} '''LoRA''' (англ. ''Low...) |
|||
| Строка 1: | Строка 1: | ||
| - | {{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником [[Участник:Iaroslav Lyakhov|Iaroslav Lyakhov]] 20: | + | {{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником [[Участник:Iaroslav Lyakhov|Iaroslav Lyakhov]] 20:37, 5 июля 2026 (MSD)}} |
{{TOCright}} | {{TOCright}} | ||
| - | '''LoRA''' (англ. ''Low-Rank Adaptation'', низкоранговая адаптация) - метод экономного [[Дообучение|дообучения]] больших [[Нейронная сеть|нейросетевых]] моделей | + | '''LoRA''' (англ. ''Low-Rank Adaptation'', низкоранговая адаптация) - метод экономного [[Дообучение|дообучения]] больших [[Нейронная сеть|нейросетевых]] моделей. При обучении веса исходной модели замораживаются, а настраивается лишь небольшое число дополнительных параметров, представленных произведением двух узких матриц низкого ранга. LoRA относится к семейству методов '''PEFT''' (parameter-efficient fine-tuning, параметрически-эффективное дообучение) и стала стандартным способом адаптации [[Большая языковая модель|больших языковых моделей]] под конкретные задачи при ограниченных ресурсах. Предложена исследователями Microsoft (Hu et al., 2021). |
== Проблема == | == Проблема == | ||
| - | + | У современной LLM миллиарды весов. Полное дообучение означает, что для каждого веса нужно хранить сам вес, его градиент и состояния оптимизатора (например, у Adam - два дополнительных числа на параметр). В сумме это десятки и сотни гигабайт памяти видеокарты. Хуже того, под каждую новую задачу приходится хранить отдельную полную копию модели. Для большинства команд это слишком дорого и неудобно. | |
== Идея == | == Идея == | ||
| - | LoRA опирается на | + | LoRA опирается на наблюдение: при дообучении веса меняются «неглубоко», и '''матрица изменений имеет низкий ранг'''. Поэтому вместо того чтобы менять матрицу весов <tex>W_0 \in \mathbb{R}^{d\times k}</tex> напрямую, её приращение раскладывают в произведение двух узких матриц: |
| - | ::<tex>W = W_0 + \Delta W = W_0 + B A, \ | + | ::<tex>W = W_0 + \Delta W = W_0 + B A, \qquad A \in \mathbb{R}^{r\times k},\; B \in \mathbb{R}^{d\times r}</tex> |
| - | где ранг <tex>r \ll \min(d,k)</tex> ( | + | где ранг <tex>r \ll \min(d,k)</tex> (на практике обычно от 4 до 64). Исходная матрица <tex>W_0</tex> заморожена; обучаются только <tex>A</tex> и <tex>B</tex>, а их всего <tex>r(d+k)</tex> чисел вместо <tex>dk</tex> - в тысячи раз меньше. При применении поправка масштабируется коэффициентом <tex>\alpha/r</tex>, где <tex>\alpha</tex> задаёт «силу» адаптации. |
| - | + | Важная деталь инициализации: матрица <tex>B</tex> изначально нулевая, поэтому в самом начале обучения <tex>\Delta W = 0</tex> и модель ведёт себя ровно как исходная. Обучение стартует «без вреда» и лишь постепенно отклоняет поведение в нужную сторону. | |
| + | |||
| + | == Как это применяют == | ||
| + | Обычно LoRA-поправки добавляют к матрицам проекций внутри [[Механизм внимания|механизма внимания]] (чаще всего к проекциям запросов и значений), а иногда и к полносвязным слоям. Настройка сводится к выбору ранга <tex>r</tex>, коэффициента <tex>\alpha</tex> и набора слоёв, к которым применяется адаптация. | ||
== Преимущества == | == Преимущества == | ||
| - | * '''Экономия памяти''' | + | * '''Экономия памяти.''' Обучаемых параметров на порядки меньше (нередко менее 1 % от общего числа), и для замороженных весов не нужно хранить состояния оптимизатора. |
| - | * ''' | + | * '''Маленький артефакт.''' Обученный адаптер занимает мегабайты. Для десятков разных задач хранят одну большую базовую модель и набор маленьких адаптеров к ней. |
| - | * ''' | + | * '''Нет задержки на инференсе.''' Поправку <tex>BA</tex> можно один раз сложить с <tex>W_0</tex> (операция merge) и получить обычную матрицу - тогда никаких дополнительных вычислений при работе модели не возникает. |
| - | * '''Горячая замена''' | + | * '''Горячая замена.''' Адаптеры под разные задачи подключаются и отключаются «на лету», поверх общей модели. |
== QLoRA и развитие == | == QLoRA и развитие == | ||
| - | '''QLoRA''' (2023) объединяет LoRA с 4-битным [[Квантование нейронных сетей|квантованием]] базовой модели, | + | '''QLoRA''' (2023) объединяет LoRA с 4-битным [[Квантование нейронных сетей|квантованием]] базовой модели: тяжёлые замороженные веса хранятся в сжатом виде, а обучаются только LoRA-адаптеры. Это позволяет дообучать модели с десятками миллиардов параметров на одной потребительской видеокарте. Другие развития - AdaLoRA (адаптивно распределяет ранг между слоями по их важности) и DoRA (разделяет обновление на «величину» и «направление»). |
| + | |||
| + | == Место среди методов PEFT == | ||
| + | LoRA - один из представителей PEFT наряду с адаптерами (небольшие вставные слои, adapter tuning), prefix-tuning и prompt-tuning (обучаемые «псевдотокены» на входе). В отличие от [[Дистилляция моделей|дистилляции]], которая создаёт отдельную сжатую модель, LoRA ничего не сжимает, а дёшево специализирует уже имеющуюся. | ||
| - | == Связь с | + | == Связь с переносом обучения == |
| - | LoRA - | + | По сути LoRA - удобный инструмент [[Перенос обучения|переноса обучения]]: базовые представления, полученные [[Самостоятельное обучение|самостоятельным обучением]] на огромных данных ([[Фундаментальная модель|фундаментальная модель]]), остаются нетронутыми, а под конкретную задачу [[Метод стохастического градиента|градиентным спуском]] настраивается лишь тонкая низкоранговая надстройка. |
== Ограничения == | == Ограничения == | ||
| - | * | + | * На задачах, сильно отличающихся от предобучения, качество может уступать полному дообучению. |
| - | * | + | * Результат чувствителен к выбору ранга, коэффициента <tex>\alpha</tex> и набора адаптируемых слоёв. |
== См. также == | == См. также == | ||
| Строка 38: | Строка 44: | ||
* [[Дистилляция моделей]] | * [[Дистилляция моделей]] | ||
* [[Трансформер]] | * [[Трансформер]] | ||
| - | * [[ | + | * [[Фундаментальная модель]] |
== Литература == | == Литература == | ||
| - | * {{статья |автор=Hu E. и др. | | + | * {{статья |автор=Hu E. и др. |заглавие=LoRA: Low-Rank Adaptation of Large Language Models |издание=Proc. of ICLR |год=2022 |ссылка=https://arxiv.org/abs/2106.09685}} |
| - | * {{статья |автор=Dettmers T. и др. | | + | * {{статья |автор=Dettmers T. и др. |заглавие=QLoRA: Efficient Finetuning of Quantized LLMs |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2023 |ссылка=https://arxiv.org/abs/2305.14314}} |
| + | * {{статья |автор=Houlsby N. и др. |заглавие=Parameter-Efficient Transfer Learning for NLP |издание=Proc. of ICML |год=2019 |ссылка=https://arxiv.org/abs/1902.00751}} | ||
[[Категория:Машинное обучение]] | [[Категория:Машинное обучение]] | ||
[[Категория:Нейронные сети]] | [[Категория:Нейронные сети]] | ||
Текущая версия
| | Статья написана с использованием LLM Claude Opus 4.8 и проверена участником Iaroslav Lyakhov 20:37, 5 июля 2026 (MSD) |
|
LoRA (англ. Low-Rank Adaptation, низкоранговая адаптация) - метод экономного дообучения больших нейросетевых моделей. При обучении веса исходной модели замораживаются, а настраивается лишь небольшое число дополнительных параметров, представленных произведением двух узких матриц низкого ранга. LoRA относится к семейству методов PEFT (parameter-efficient fine-tuning, параметрически-эффективное дообучение) и стала стандартным способом адаптации больших языковых моделей под конкретные задачи при ограниченных ресурсах. Предложена исследователями Microsoft (Hu et al., 2021).
Проблема
У современной LLM миллиарды весов. Полное дообучение означает, что для каждого веса нужно хранить сам вес, его градиент и состояния оптимизатора (например, у Adam - два дополнительных числа на параметр). В сумме это десятки и сотни гигабайт памяти видеокарты. Хуже того, под каждую новую задачу приходится хранить отдельную полную копию модели. Для большинства команд это слишком дорого и неудобно.
Идея
LoRA опирается на наблюдение: при дообучении веса меняются «неглубоко», и матрица изменений имеет низкий ранг. Поэтому вместо того чтобы менять матрицу весов напрямую, её приращение раскладывают в произведение двух узких матриц:
где ранг (на практике обычно от 4 до 64). Исходная матрица
заморожена; обучаются только
и
, а их всего
чисел вместо
- в тысячи раз меньше. При применении поправка масштабируется коэффициентом
, где
задаёт «силу» адаптации.
Важная деталь инициализации: матрица изначально нулевая, поэтому в самом начале обучения
и модель ведёт себя ровно как исходная. Обучение стартует «без вреда» и лишь постепенно отклоняет поведение в нужную сторону.
Как это применяют
Обычно LoRA-поправки добавляют к матрицам проекций внутри механизма внимания (чаще всего к проекциям запросов и значений), а иногда и к полносвязным слоям. Настройка сводится к выбору ранга , коэффициента
и набора слоёв, к которым применяется адаптация.
Преимущества
- Экономия памяти. Обучаемых параметров на порядки меньше (нередко менее 1 % от общего числа), и для замороженных весов не нужно хранить состояния оптимизатора.
- Маленький артефакт. Обученный адаптер занимает мегабайты. Для десятков разных задач хранят одну большую базовую модель и набор маленьких адаптеров к ней.
- Нет задержки на инференсе. Поправку
можно один раз сложить с
(операция merge) и получить обычную матрицу - тогда никаких дополнительных вычислений при работе модели не возникает.
- Горячая замена. Адаптеры под разные задачи подключаются и отключаются «на лету», поверх общей модели.
QLoRA и развитие
QLoRA (2023) объединяет LoRA с 4-битным квантованием базовой модели: тяжёлые замороженные веса хранятся в сжатом виде, а обучаются только LoRA-адаптеры. Это позволяет дообучать модели с десятками миллиардов параметров на одной потребительской видеокарте. Другие развития - AdaLoRA (адаптивно распределяет ранг между слоями по их важности) и DoRA (разделяет обновление на «величину» и «направление»).
Место среди методов PEFT
LoRA - один из представителей PEFT наряду с адаптерами (небольшие вставные слои, adapter tuning), prefix-tuning и prompt-tuning (обучаемые «псевдотокены» на входе). В отличие от дистилляции, которая создаёт отдельную сжатую модель, LoRA ничего не сжимает, а дёшево специализирует уже имеющуюся.
Связь с переносом обучения
По сути LoRA - удобный инструмент переноса обучения: базовые представления, полученные самостоятельным обучением на огромных данных (фундаментальная модель), остаются нетронутыми, а под конкретную задачу градиентным спуском настраивается лишь тонкая низкоранговая надстройка.
Ограничения
- На задачах, сильно отличающихся от предобучения, качество может уступать полному дообучению.
- Результат чувствителен к выбору ранга, коэффициента
и набора адаптируемых слоёв.
См. также
- Большая языковая модель
- Дообучение
- Квантование нейронных сетей
- Дистилляция моделей
- Трансформер
- Фундаментальная модель
Литература
- Hu E. и др. LoRA: Low-Rank Adaptation of Large Language Models // Proc. of ICLR. — 2022.
- Dettmers T. и др. QLoRA: Efficient Finetuning of Quantized LLMs // Advances in Neural Information Processing Systems (NeurIPS). — 2023.
- Houlsby N. и др. Parameter-Efficient Transfer Learning for NLP // Proc. of ICML. — 2019.

