|
|
| Строка 1: |
Строка 1: |
| - | {{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником [[Участник:Iaroslav Lyakhov|Iaroslav Lyakhov]] 20:37, 5 июля 2026 (MSD)}}
| + | <!-- Публикуется под заголовком: LoRA |
| - | {{TOCright}}
| + | Это страница-перенаправление на основную статью «Адаптация низкого ранга». |
| - | | + | Весь текст страницы - одна строка ниже. --> |
| - | '''LoRA''' (англ. ''Low-Rank Adaptation'', низкоранговая адаптация) - метод экономного [[Дообучение|дообучения]] больших [[Нейронная сеть|нейросетевых]] моделей. При обучении веса исходной модели замораживаются, а настраивается лишь небольшое число дополнительных параметров, представленных произведением двух узких матриц низкого ранга. LoRA относится к семейству методов '''PEFT''' (parameter-efficient fine-tuning, параметрически-эффективное дообучение) и стала стандартным способом адаптации [[Большая языковая модель|больших языковых моделей]] под конкретные задачи при ограниченных ресурсах. Предложена исследователями Microsoft (Hu et al., 2021).
| + | #REDIRECT [[Адаптация низкого ранга]] |
| - | | + | |
| - | == Проблема ==
| + | |
| - | У современной LLM миллиарды весов. Полное дообучение означает, что для каждого веса нужно хранить сам вес, его градиент и состояния оптимизатора (например, у Adam - два дополнительных числа на параметр). В сумме это десятки и сотни гигабайт памяти видеокарты. Хуже того, под каждую новую задачу приходится хранить отдельную полную копию модели. Для большинства команд это слишком дорого и неудобно.
| + | |
| - | | + | |
| - | == Идея ==
| + | |
| - | LoRA опирается на наблюдение: при дообучении веса меняются «неглубоко», и '''матрица изменений имеет низкий ранг'''. Поэтому вместо того чтобы менять матрицу весов <tex>W_0 \in \mathbb{R}^{d\times k}</tex> напрямую, её приращение раскладывают в произведение двух узких матриц:
| + | |
| - | | + | |
| - | ::<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> (на практике обычно от 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''' (2023) объединяет LoRA с 4-битным [[Квантование нейронных сетей|квантованием]] базовой модели: тяжёлые замороженные веса хранятся в сжатом виде, а обучаются только LoRA-адаптеры. Это позволяет дообучать модели с десятками миллиардов параметров на одной потребительской видеокарте. Другие развития - AdaLoRA (адаптивно распределяет ранг между слоями по их важности) и DoRA (разделяет обновление на «величину» и «направление»).
| + | |
| - | | + | |
| - | == Место среди методов PEFT ==
| + | |
| - | LoRA - один из представителей PEFT наряду с адаптерами (небольшие вставные слои, adapter tuning), prefix-tuning и prompt-tuning (обучаемые «псевдотокены» на входе). В отличие от [[Дистилляция моделей|дистилляции]], которая создаёт отдельную сжатую модель, LoRA ничего не сжимает, а дёшево специализирует уже имеющуюся.
| + | |
| - | | + | |
| - | == Связь с переносом обучения ==
| + | |
| - | По сути LoRA - удобный инструмент [[Перенос обучения|переноса обучения]]: базовые представления, полученные [[Самостоятельное обучение|самостоятельным обучением]] на огромных данных ([[Фундаментальная модель|фундаментальная модель]]), остаются нетронутыми, а под конкретную задачу [[Метод стохастического градиента|градиентным спуском]] настраивается лишь тонкая низкоранговая надстройка.
| + | |
| - | | + | |
| - | == Ограничения ==
| + | |
| - | * На задачах, сильно отличающихся от предобучения, качество может уступать полному дообучению.
| + | |
| - | * Результат чувствителен к выбору ранга, коэффициента <tex>\alpha</tex> и набора адаптируемых слоёв.
| + | |
| - | | + | |
| - | == См. также ==
| + | |
| - | * [[Большая языковая модель]]
| + | |
| - | * [[Дообучение]]
| + | |
| - | * [[Квантование нейронных сетей]]
| + | |
| - | * [[Дистилляция моделей]]
| + | |
| - | * [[Трансформер]]
| + | |
| - | * [[Фундаментальная модель]]
| + | |
| - | | + | |
| - | == Литература ==
| + | |
| - | * {{статья |автор=Hu E. и др. |заглавие=LoRA: Low-Rank Adaptation of Large Language Models |издание=Proc. of ICLR |год=2022 |ссылка=https://arxiv.org/abs/2106.09685}}
| + | |
| - | * {{статья |автор=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}}
| + | |
| - | | + | |
| - | [[Категория:Машинное обучение]]
| + | |
| - | [[Категория:Нейронные сети]]
| + | |