QLoRA
Квантизованная LoRA: fine-tuning поверх 4-битной модели, снижающий требования к VRAM до ~8 ГБ.
Что такое QLoRA
QLoRA (Quantized LoRA) — метод, предложенный Dettmers et al. (2023), объединяющий квантизацию базовой модели в 4 бит с LoRA-адаптерами. Позволяет дообучать 7B-модели на GPU с 8 ГБ VRAM и 65B-модели на 40 ГБ — в сравнении с 80+ ГБ для full fine-tuning.
Технически QLoRA использует NF4 (Normal Float 4-bit) — оптимальный для нормально-распределённых весов формат квантизации, и double quantization — квантизацию самих констант квантизации для дополнительной экономии.
Минимальные требования к VRAM (с QLoRA)
| Модель | Full FT | LoRA BF16 | QLoRA INT4 |
|---|---|---|---|
| 7B | ~80 ГБ | ~20 ГБ | ~8 ГБ |
| 13B | ~130 ГБ | ~35 ГБ | ~12 ГБ |
| 34B | ~320 ГБ | ~80 ГБ | ~24 ГБ |
| 70B | ~640 ГБ | ~160 ГБ | ~40 ГБ |
Быстрый старт
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model
import torch
# Загрузить модель в 4 бит
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=bnb_config,
device_map="auto",
)
# Подготовить модель к обучению (PEFT + gradient checkpointing)
from peft import prepare_model_for_kbit_training
model = prepare_model_for_kbit_training(model)
# Добавить LoRA-адаптеры
lora_config = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj","v_proj"])
model = get_peft_model(model, lora_config)
QLoRA vs полный fine-tuning: потеря качества
QLoRA практически не уступает full fine-tuning по итоговому качеству дообученной модели: разница по стандартным бенчмаркам составляет <1%. При ограниченном VRAM QLoRA — выбор по умолчанию.
Связанные термины
- LoRA — базовый метод, расширяемый QLoRA
- PEFT — библиотека, реализующая QLoRA
- квантизация — INT4/NF4 формат базы при QLoRA
- gradient checkpointing — совместно используется с QLoRA
- Подробный гайд по LoRA и QLoRA
Готовы запустить GPU-задачу?
Запустить GPU-сервер