Что такое NF4-квантование в QLoRA?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
NF4 — это формат 4-битного квантования, который специально хорошо подходит для весов нейросетей, близких к нормальному распределению. В QLoRA он позволяет сильно снизить потребление памяти без критичной потери качества. Обычно это объясняют как ключевой элемент, который делает дообучение больших LLM на одной GPU практически реалистичным.
Определение:
NF4 (NormalFloat4) — это 4-битный квантованный формат хранения весов, разработанный с учетом того, что распределение весов у языковых моделей часто близко к нормальному. В отличие от обычного равномерного 4-битного квантования, NF4 использует неравномерные уровни, которые лучше сохраняют информацию в диапазонах, где значения встречаются чаще. В QLoRA базовая модель хранится в NF4, а обучаются только небольшие адаптеры LoRA.
Пример использования:
Например, есть модель на 13B параметров, и она не помещается в память GPU в full precision. Ее загружают в NF4-квантовании, замораживают базовые веса и обучают только LoRA-адаптеры на своих данных.
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
import torch
model_name = "some-llm"
model = AutoModelForCausalLM.from_pretrained(
model_name,
load_in_4bit=True, # квантование весов в 4 бита
torch_dtype=torch.float16
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"]
)
model = get_peft_model(model, lora_config)
Пояснение кода:
В этом примере код показывает общий принцип QLoRA: модель загружается в 4-битном виде, чтобы уменьшить память, а затем поверх нее добавляются LoRA-адаптеры.
load_in_4bit=True означает, что веса базовой модели не хранятся в обычном формате FP16/FP32, а квантованы.
LoraConfig задает маленькие обучаемые матрицы, которые компенсируют потери качества от квантования и адаптируют модель под новую задачу.
На практике NF4 — это конкретный способ такого 4-битного представления, обычно используемый внутри 4-bit загрузки в QLoRA.
Ключевые моменты:
- NF4 — это не просто “4 бита”, а специальный неравномерный формат квантования.
- Он лучше подходит для весов LLM, чем обычное равномерное 4-битное квантование.
- В QLoRA NF4 используется для хранения замороженной базовой модели.
- Обучаются только LoRA-адаптеры, поэтому требования к памяти сильно снижаются.
- Главная цель — сделать fine-tuning больших моделей возможным на ограниченном железе.
- На собеседовании важно подчеркнуть баланс между экономией памяти и сохранением качества.