Training

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 — выбор по умолчанию.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер