COMRAD404 / GLOSSARY

QLoRA: что это и как работает

QLoRA

QLoRA — это способ дообучать большие языковые модели в 4-битной квантизации: база остаётся замороженной, а обучаются только LoRA-адаптеры. Разбираем, как это устроено, где применяется и какие у метода ограничения.

TL;DR

Метод дообучения LLM: базовая модель хранится в 4-битной квантизации, а обучаются только LoRA-адаптеры.

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().

Последовательность действий

  1. Вы загружаете базовую модель через BitsAndBytesConfig в 4-битном режиме.
  2. Указываете bnb_4bit_quant_type="nf4" и bnb_4bit_use_double_quant=True.
  3. Вызываете prepare_model_for_kbit_training().
  4. Подключаете LoRA-адаптеры и обучаете только их.
  5. Проверяете реальный расход памяти через model.get_memory_footprint().

Где применяется

  • Исследовательские и прикладные кейсы, где нужно дообучить 65B-модель на одной GPU 48 ГБ — такой сценарий показан в исходной статье.
  • Адаптация модели под доменные тексты, внутренние инструкции или стиль ответов конкретной команды.
  • Быстрое прототипирование в экосистеме Hugging Face на связке bitsandbytes + Transformers + PEFT.
  • Сценарии, где важно оставить базовую модель замороженной и обновлять только небольшую добавку параметров.

Если задача не в изменении весов, а в подключении внешних документов, смотрите RAG (Retrieval-Augmented Generation) и GraphRAG (графовый RAG). Если нужна именно параметрическая адаптация без квантизации базы, сравните с LoRA (низкоранговая адаптация). Для агентных сценариев рядом часто рассматривают ReAct (reasoning + acting), но это уже про логику действий, а не про обучение весов.

Практический пример

Пошаговый сценарий из официальной документации и reference repository:

  1. Вы загружаете базовую модель через BitsAndBytesConfig в 4-битном режиме.
  2. В PEFT docs рекомендуют BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16).
  3. Затем вызываете prepare_model_for_kbit_training().
  4. Подключаете LoRA-адаптеры и обучаете только их.
  5. Проверяете реальный расход памяти через 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.

Связанные термины, инструменты и исследования

Источники

Источники

SOURCES

Вопросы и ответы

FAQ
QLoRA — это то же самое, что LoRA?

Нет. LoRA — это сама идея низкоранговых адаптеров, а QLoRA добавляет к ней 4-битную квантизацию базовой модели.

Можно ли с QLoRA обучать все веса модели?

Нет. В типовом QLoRA-сценарии базовые веса заморожены, а обучаются только адаптеры.

Зачем нужны NF4 и double quantization?

Это части метода, описанного в исходной статье и поддержанного текущими официальными инструкциями по загрузке в 4-битном режиме.

Как проверить, помещается ли модель в память?

В официальных документах для этого рекомендуют смотреть model.get_memory_footprint() после загрузки и подготовки модели.

Какие библиотеки обычно нужны для QLoRA?

В текущем официальном пути обычно используют bitsandbytes, Transformers и PEFT.

Читайте также

LINKS