QLoRA: LoRA поверх 4-битной модели
QLoRA хранит замороженную модель в 4 битах и обучает LoRA-адаптеры поверх неё, сохраняя качество 16-битного дообучения.
Зачем это нужно
Даже с LoRA базовая модель занимает много памяти. Для 65B модели полный fine-tuning в 16 битах требует более 780 ГБ GPU-памяти. Авторы хотят уместить дообучение на одной видеокарте.
Как это работает
Градиенты проходят через замороженную 4-битную модель и попадают в LoRA-адаптеры. Авторы вводят три новшества. NF4 (4-bit NormalFloat) — тип данных, оптимальный по теории информации для нормально распределённых весов. Double quantization квантует сами константы квантования. Paged optimizers переносят состояние оптимизатора в память, чтобы сгладить пики.
Пример
По статье, QLoRA дообучает 65B модель на одной GPU с 48 ГБ памяти, сохраняя качество полного 16-битного дообучения. Память для такого дообучения падает с более чем 780 ГБ до менее 48 ГБ.
Что запомнить
- Базовая модель хранится в 4 битах и не обучается.
- Обучаются только LoRA-адаптеры.
- NF4, double quantization и paged optimizers экономят память без потери качества по заявлению авторов.
Где читать дальше
- Dettmers et al., QLoRA (arXiv:2305.14314), разделы 1 и 3