Инференс и оптимизация 30 просмотров

Квантизация

Quantization

Квантизация — метод сжатия нейронных сетей путём уменьшения точности представления весов (FP16 → INT8 → INT4). Уменьшает VRAM в 2-4× и ускоряет инференс с минимальной потерей качества.

Что такое квантизация

Квантизация — процесс преобразования весов модели из формата с плавающей точкой (FP16/FP32) в целочисленный формат с меньшей битностью (INT8, INT4, INT2).

Типы квантизации

По моменту применения

  • PTQ (Post-Training Quantization) — после обучения, без дообучения
  • QAT (Quantization-Aware Training) — в процессе обучения

По методу

Метод Битность Тип Скорость Качество
GPTQ 4-bit PTQ Быстрый Хорошее
AWQ 4-bit PTQ Быстрый Лучше GPTQ
GGUF 2-8 bit PTQ CPU/GPU Хорошее
bitsandbytes 4/8-bit PTQ Средний Хорошее
SmoothQuant 8-bit PTQ Быстрый Отличное

Экономия VRAM

LLaMA 3 70B:
FP16:  140 GB  2× A100 80GB
INT8:   70 GB  1× A100 80GB
INT4:   35 GB  1× A100 40GB или RTX 4090 24GB (с offload)

Практическое применение

# bitsandbytes 4-bit (NF4)
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3-70B",
    quantization_config=bnb_config,
    device_map="auto",
)

Влияние на качество

INT8: потеря < 0.5% на бенчмарках
INT4 (GPTQ/AWQ): потеря 1-3%
INT2: заметная деградация (5-10%+)

Рекомендация: для инференса используйте AWQ INT4 — лучший баланс качества и скорости.

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

Улучшает
Включает

Попробуйте на практике

Арендуйте GPU и запустите ML-модели в Intelion Cloud

Начать работу