Sobes.tech
Назад к вопросам
Middle — Senior
9

Что такое NF4-квантование в QLoRA?

Компании, где спрашивали
Автомакон
AstonAston

Ответ от нейросети

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 больших моделей возможным на ограниченном железе.
  • На собеседовании важно подчеркнуть баланс между экономией памяти и сохранением качества.