QLoRA — это метод дообучения больших языковых моделей, в котором базовую модель загружают в 4-битной квантизации, а обучают только LoRA-адаптеры. В исходной статье авторы описали NF4, double quantization и paged optimizers и показали дообучение модели 65B на одной GPU 48 ГБ.
Английский термин: QLoRA. Также встречается: квантизированный LoRA-подход, 4-битный LoRA-стек, QLoRA-style finetuning.
Простыми словами
Можно представить QLoRA как способ «ужать» большую модель так, чтобы она поместилась в ограниченную память, но при этом не переписывать её целиком. Вы оставляете основную часть модели замороженной и добавляете маленькие обучаемые вставки.
Грубо говоря, это компромисс между полным fine-tuning и просто запуском готовой модели: памяти нужно меньше, чем при обучении всех весов, а подстроить поведение под задачу всё же можно.
Как это работает
Схема работы выглядит так:
pretrained LLM ↓ 4-bit quantization (NF4 + double quantization) frozen base model ↓ attach LoRA adapters train only adapter weights ↓ paged optimizer helps with memory spikes finetuned model = quantized base + trained adapters
Важная логика здесь двойная. Сначала 4-битная квантизация уменьшает память, нужную для самой базы. Затем LoRA добавляет небольшие ранговые матрицы, и именно они обучаются; базовые веса остаются замороженными.
В текущем официальном стеке Hugging Face типовой путь описан через bitsandbytes + Transformers + PEFT: load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, затем prepare_model_for_kbit_training(). Для контроля памяти используют model.get_memory_footprint().
Последовательность действий
- Вы загружаете базовую модель через
BitsAndBytesConfigв 4-битном режиме. - Указываете
bnb_4bit_quant_type="nf4"иbnb_4bit_use_double_quant=True. - Вызываете
prepare_model_for_kbit_training(). - Подключаете LoRA-адаптеры и обучаете только их.
- Проверяете реальный расход памяти через
model.get_memory_footprint().
Где применяется
- Исследовательские и прикладные кейсы, где нужно дообучить 65B-модель на одной GPU 48 ГБ — такой сценарий показан в исходной статье.
- Адаптация модели под доменные тексты, внутренние инструкции или стиль ответов конкретной команды.
- Быстрое прототипирование в экосистеме Hugging Face на связке bitsandbytes + Transformers + PEFT.
- Сценарии, где важно оставить базовую модель замороженной и обновлять только небольшую добавку параметров.
Если задача не в изменении весов, а в подключении внешних документов, смотрите RAG (Retrieval-Augmented Generation) и GraphRAG (графовый RAG). Если нужна именно параметрическая адаптация без квантизации базы, сравните с LoRA (низкоранговая адаптация). Для агентных сценариев рядом часто рассматривают ReAct (reasoning + acting), но это уже про логику действий, а не про обучение весов.
Практический пример
Пошаговый сценарий из официальной документации и reference repository:
- Вы загружаете базовую модель через
BitsAndBytesConfigв 4-битном режиме. - В PEFT docs рекомендуют
BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16). - Затем вызываете
prepare_model_for_kbit_training(). - Подключаете LoRA-адаптеры и обучаете только их.
- Проверяете реальный расход памяти через
model.get_memory_footprint().
В рабочем пайплайне это помогает быстро понять, помещается ли выбранная модель в вашу конфигурацию до начала обучения. Если нет, проверьте не только модель, но и совместимость accelerator, ОС и стека CUDA/PyTorch.
Чем отличается от…
| Метод | База | Что обучается | Когда уместен |
|---|---|---|---|
| QLoRA | 4-битная квантизация базы | Только LoRA-адаптеры | Когда память ограничена и нужен fine-tuning крупной модели |
| LoRA | Обычно без 4-битной квантизации | Только адаптеры | Когда база и так помещается и квантизация не нужна |
| Полный fine-tuning | Без обязательной квантизации | Все веса | Когда нужен полный контроль и хватает ресурсов |
Ограничения и заблуждения
- Заблуждение: QLoRA — это просто сжатие модели. На деле: это именно метод дообучения, где базовые веса остаются замороженными.
- Заблуждение: 4-битная квантизация убирает все ограничения по памяти. На деле: память всё равно нужна под активации, optimizer state и служебные данные; для этого и используются paged optimizers.
- Ограничение: поддержка зависит от accelerator, ОС и связки CUDA/PyTorch. Официальные docs сейчас указывают поддержку для NVIDIA CUDA 11.8-13.0, Intel XPU, Intel Gaudi и CPU.
- Практическая оговорка: официальные Hugging Face docs на ветке
mainмогут расходиться с тегированными релизами; по состоянию на 2026-08-14 на страницах релизов указаныbitsandbytes 0.50.1,PEFT v0.20.0иTransformers v5.15.0. - Дополнительное ограничение: официальные docs отмечают, что 8-bit и 4-bit training поддерживается только для обучения extra parameters; отдельные PEFT-пути, например
replace_lora_weights_loftq, работают только с bitsandbytes 4-bit иsafetensors.
Практический вердикт: QLoRA стоит выбирать, когда вам нужно дообучать крупную модель при ограниченной памяти и вы готовы зафиксировать совместимый стек версий.
Вопросы и ответы
QLoRA — это то же самое, что LoRA?
Нет. LoRA — это сама идея низкоранговых адаптеров, а QLoRA добавляет к ней 4-битную квантизацию базовой модели.
Можно ли с QLoRA обучать все веса модели?
Нет. В типовом QLoRA-сценарии базовые веса заморожены, а обучаются только адаптеры.
Зачем нужны NF4 и double quantization?
Это части метода, описанного в исходной статье и поддержанного текущими официальными инструкциями по загрузке в 4-битном режиме.
Как проверить, помещается ли модель в память?
В официальных документах для этого рекомендуют смотреть model.get_memory_footprint() после загрузки и подготовки модели.
Какие библиотеки обычно нужны для QLoRA?
В текущем официальном пути обычно используют bitsandbytes, Transformers и PEFT.
Связанные термины, инструменты и исследования
- LoRA (низкоранговая адаптация) — базовый механизм адаптеров.
- RAG (Retrieval-Augmented Generation) — подход, который решает задачу через внешние данные, а не через дообучение весов.
- GraphRAG (графовый RAG) — вариант retrieval-подхода с графовой структурой.
- ReAct (reasoning + acting) — агентный паттерн, который часто путают с fine-tuning, но он относится к выполнению действий.