Квантизация

Эффективные методы реализации моделей ИИ

Constantine Korikov
Константин Кориков
PhD, AI Research Engineer
Разбор хакатона 15 мин
Виды квантизации 25 мин
Проблемы квантизации 5 мин
Квантизация в нейронных сетях 15 мин
Домашнее задание 10 мин

Разбор хакатона

Занятие 07 · MNIST на sim8 v3

Виды квантизации

Квантование (quantization) — разделение величины на дискретное число малых частей.

ВидыПро что это?
СтруктураScalar / VectorКодируем числа по одному или группой?
СеткаUniform / Non-uniformРавномерные шаги или переменные?
Гранулярность scaleper-tensor / per-channel / per-group / per-token / per-elementСколько значений делят один scale?

Равномерная (uniform)

$$Q(x) = \text{clamp}\!\left(\text{round}\!\left(\frac{x}{s}\right) + z,\; 0,\; 2^b{-}1\right)$$

$$\hat{x} = s \cdot (Q(x) - z)$$

Неравномерная (non-uniform)

Сетка сгущается в областях, где значений больше — обычно у нуля.

Float-форматы — логарифмическая сетка: мелкие числа представлены точнее.

Векторная квантизация

Квантуем не отдельные числа, а группы (векторы) целиком.

k-means: найти $2^b$ центроидов из данных, хранить индексы ($b$ бит) + таблицу центров.

MXFP — Microscaling

Группа из $k$ элементов делит один общий scale (shared exponent).

Каждый элемент хранится в узком float (FP8, FP6, FP4), а scale — в более широком формате (E8M0).

Blackwell (B200), Huawei Ascend A5 — нативная поддержка MXFP.

Проблемы квантизации

Outlier'ы

Outlier'ы растягивают диапазон

$[0.1,\; 0.3,\; 0.2,\; 0.4,\; 0.15,\; 0.25,\; 0.35,\; 47.0]$

range = 46.9 → scale ≈ 0.184
Числа 0.1–0.4 → уровни 0–2

Результат

Один outlier убил точность для 7 из 8 чисел.

Ошибка 50–100% для нормальных значений

Квантизация в нейронных сетях

Чем особенная?

Линейный слой

$$\mathbf{y} = \sigma(\mathbf{W}\mathbf{x} + \mathbf{b})$$

$\mathbf{W} \in \mathbb{R}^{m \times n}$ — веса, $\mathbf{x}$ — активации (вход), $\mathbf{b}$ — смещение

Что квантовать?

  • Веса — известны заранее, квантуем офлайн
  • Активации — зависят от входа, нужна калибровка или динамическая квантизация
  • W + A вместе — максимальное ускорение (INT8×INT8 на тензорных ядрах)

PTQ

Post-Training Quantization

  • После обучения
  • Нужна модель + калибровочные данные

QAT

Quantization-Aware Training

  • Во время обучения
  • Нужен тренировочный пайплайн

Домашнее задание

SmoothQuant

Разобрать SmoothQuant

Xiao et al., 2023 — Abstract + Section 3

  1. Какую проблему решает?
  2. Объяснить формулу
  3. Числовой пример
  4. Реализация на sim8 v3?

Ключевая формула

$$Y = (X \cdot \text{diag}(s)^{-1}) \cdot (\text{diag}(s) \cdot W)$$