← Назад к вопросам

Что такое квантизация нейронных сетей?

2.2 Middle🔥 101 комментариев
#Глубокое обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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

Квантизация — это техника оптимизации моделей глубокого обучения, которая снижает точность представления числовых параметров с целью уменьшения размера модели и ускорения вычислений.

Основной принцип

Обычно нейронные сети используют float32 для хранения весов. Квантизация преобразует их в представления с меньшей точностью:

  • float32 в float16
  • float32 в int8 (8 бит целое число)
  • float32 в int4

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

1. Post-Training Quantization (PTQ)

Применяется после полного обучения модели:

  • Быстро и просто
  • Не требует переобучения
  • Небольшая потеря в точности

2. Quantization-Aware Training (QAT)

Модель обучается с учётом квантизации:

  • Более высокое качество
  • Требует переобучения
  • Дольше, чем PTQ

Преимущества

Размер модели: Уменьшение в 2-4 раза

  • Было: 400 MB (float32)
  • Стало: 100 MB (int8)

Скорость: Ускорение инференса

  • На CPU: 2-3 раза быстрее
  • На специальных ускорителях: 4-8 раз

Память: Меньше потребления RAM

  • Важно для edge devices
  • Позволяет запускать большие модели на слабых устройствах

Энергоэффективность: Снижение потребления энергии

  • Критично для мобильных устройств
  • Снижает счета за облачные вычисления

Недостатки

Потеря точности: Неизбежное падение метрик качества

  • Обычно 0.5-2 процента
  • При агрессивной квантизации может быть больше

Сложность: Требует экспериментирования

  • Разные модели ведут себя по-разному
  • Нужна адекватная калибровка

Совместимость: Требует поддержки в фреймворках

  • Не все операции поддерживают int8
  • Может быть проблем с custom слоями

Калибровка

Для хорошей квантизации нужна калибровка на репрезентативных данных. Модель запоминает диапазоны активаций и лучше их квантизирует.

Выбор уровня квантизации

int8 (8 бит)

  • Стандартный выбор
  • Хороший баланс размер и качество
  • Поддержка на большинстве платформ

int4 (4 бита)

  • Более агрессивная
  • Требует специальной поддержки
  • Пример: GGML формат

float16

  • Сохраняет больше информации
  • Легче обучать
  • Меньше ускорения

Когда использовать квантизацию

  1. Production deployment — нужно снизить задержку и затраты
  2. Edge devices — телефоны, IoT, браузер
  3. Batch inference — обработка большого объема данных
  4. Resource-constrained — ограниченные ресурсы вычисления
  5. Cost optimization — нужно сэкономить на облаке

Инструменты

  • PyTorch: встроенный torch.quantization
  • TensorFlow: tf.lite.TFLiteConverter
  • ONNX Runtime: встроенная квантизация
  • TensorRT: NVIDIA для GPU
  • OpenVINO: Intel для различных процессоров

В моей практике

Была задача с BERT моделью (340 MB), которую нужно запустить на мобильных телефонах. Квантизировал INT8 — получилось 85 MB, инференс ускорился в 3.5 раза, потеря F1 составила 1.2 процента. Вполне приемлемо для production.

Квантизация — это не просто техника оптимизации, а необходимость при работе с реальными системами, где ресурсы ограничены и скорость критична.