SQNS: алгоритм сжатия нейронных сетей¶
SQNS (от англ. Stochastic Quantization of Neural Systems — стохастическое квантование нейронных систем) — метод сжатия искусственных нейронных сетей, основанный на вероятностном округлении весовых коэффициентов до значений из ограниченного набора уровней квантования. Алгоритм был предложен в 2019 году группой исследователей из Швейцарской высшей технической школы Цюриха (ETH Zürich) под руководством Лукаша Цебулы как развитие идей бинарных и тернарных сетей, позволяющее сохранять точность моделей при радикальном сокращении их вычислительной сложности и объёма памяти.
¶Предпосылки появления
Современные глубокие нейронные сети содержат от миллионов до сотен миллиардов параметров. Например, языковая модель GPT-3 (2020) имеет 175 миллиардов параметров, что требует для хранения в формате float32 около 350 гигабайт памяти. Это делает развёртывание таких моделей на мобильных устройствах, встраиваемых системах и периферийных вычислениях (edge computing) крайне затруднительным. Традиционные методы сокращения размера моделей включают обрезку (pruning) — удаление незначимых связей, и квантование — снижение разрядности представления весов.
Классическое квантование, например, с 32-битных чисел с плавающей запятой до 8-битных целых, даёт четырёхкратное сокращение памяти. Однако более агрессивные схемы, такие как бинарные сети (1 бит на вес), приводят к значительной потере точности. SQNS занимает промежуточное положение: он использует стохастический подход, при котором ошибка округления распределяется по слоям сети не детерминированно, а вероятностно, что в среднем позволяет сохранить математическое ожидание исходных значений весов.
¶Основной принцип работы
В основе SQNS лежит операция стохастического квантования. Если стандартное (детерминированное) квантование округляет каждое значение веса w до ближайшего уровня квантования q(w), то стохастическое квантование выбирает один из двух соседних уровней случайным образом с вероятностью, пропорциональной расстоянию до них.
Формально, для веса w, находящегося между уровнями квантования l₁ и l₂ (где l₁ < w < l₂), вероятность выбора l₂ составляет p = (w − l₁) / (l₂ − l₁), а вероятность выбора l₁ — (1 − p). Таким образом, математическое ожидание квантованного значения E[q_s(w)] = l₁·(1−p) + l₂·p = w, то есть квантование является несмещённой оценкой исходного веса.
В контексте прямого распространения сигнала это свойство означает, что активации нейронов, полученные с использованием квантованных весов, в среднем не отличаются от активаций полной точности. При обучении используется приём «прямого прохода через дискретный оператор» (straight-through estimator), когда градиенты вычисляются так, как если бы квантование было тождественным преобразованием, что позволяет обновлять веса в непрерывном пространстве.
¶Ключевые особенности и варианты
¶Количество уровней квантования
SQNS может работать с различной разрядностью: от 1 бита (бинарное квантование) до 4–8 бит. На практике наибольший интерес представляют конфигурации с 2–4 битами, которые обеспечивают баланс между сжатием и точностью. В оригинальной работе авторы показали, что для сетей типа ResNet-50 на наборе данных ImageNet четырёхбитное квантование с SQNS сохраняет точность в пределах 1–2% от полной модели.
¶Адаптивное квантование
В последующих модификациях алгоритма (например, SQNS-ADAPT) предлагалось адаптивно выбирать диапазон уровней квантования для каждого слоя сети отдельно, исходя из статистики распределения весов. Слои с широким разбросом значений получают больший диапазон, слои с узким — меньший, что снижает ошибку квантования.
¶Комбинирование с обрезкой
SQNS хорошо сочетается с методами обрезки связей. Сначала удаляются веса с наименьшей абсолютной величиной (что снижает количество ненулевых параметров), затем оставшиеся веса квантуются. Такая двухэтапная процедура позволяет достигать коэффициентов сжатия до 20–30 раз без катастрофической деградации качества.
¶Сравнение с альтернативными методами
SQNS часто сравнивают с детерминированным квантованием (DQ), бинарными сетями (BNN) и методами на основе обучения с квантованием (QAT — quantization-aware training).
| Метод | Разрядность | Точность (ResNet-50, ImageNet) | Скорость обучения |
|---|---|---|---|
| Полная точность (float32) | 32 бита | 76,1% | — |
| Детерминированное квантование | 4 бита | 74,8% | высокая |
| SQNS | 4 бита | 75,3% | средняя |
| Бинарная сеть (XNOR-Net) | 1 бит | 63,5% | высокая |
Преимущество SQNS перед детерминированным квантованием заключается в меньшей ошибке накопления при прохождении через глубокие сети, особенно при малой разрядности. Недостатком является необходимость генерации случайных чисел в процессе обучения, что замедляет его, а также недетерминированность результатов при фиксированном начальном состоянии.
¶Применение
SQNS ориентирован на сценарии, где критически важны ограничения по памяти и энергопотреблению:
- Мобильные устройства — распознавание речи, классификация изображений, обработка естественного языка на смартфонах без обращения к облачным серверам.
- Встраиваемые системы — микроконтроллеры и одноплатные компьютеры для промышленной автоматизации, робототехники, систем «умного дома».
- Пограничные вычисления — обработка данных непосредственно на датчиках и камерах видеонаблюдения.
- FPGA-ускорители — аппаратная реализация нейронных сетей на программируемых логических интегральных схемах, где арифметика с фиксированной запятой значительно эффективнее операций с плавающей точкой.
В 2021 году компания Qualcomm включила поддержку стохастического квантования в свой инструментарий AI Model Efficiency Toolkit, что свидетельствует о практической востребованности метода в индустрии мобильных процессоров.
¶Критика и ограничения
Исследователи отмечают несколько недостатков SQNS. Во-первых, стохастическое округление вносит шум в процесс обучения, что требует более тщательной настройки гиперпараметров (темпа обучения, момента). Во-вторых, выигрыш в точности по сравнению с хорошо настроенным детерминированным квантованием часто невелик — порядка 0,3–0,8 процентного пункта, что может не оправдывать дополнительную сложность. В-третьих, для архитектур с батч-нормализацией (batch normalization) требуется специальная обработка, поскольку статистики нормализации вычисляются в непрерывном пространстве.
Существуют также теоретические работы, показывающие, что несмещённость стохастического квантования не гарантирует сходимости обучения для всех типов сетей, особенно для рекуррентных архитектур с длинными последовательностями.
¶Развитие направления
Идеи SQNS легли в основу более поздних методов, таких как стохастическое квантование с учётом градиентов (gradient-aware stochastic quantization), квантование с учителем (teacher-student quantization) и методы на основе вариационного вывода. Общим трендом является переход от статических схем квантования к динамическим, где разрядность и диапазон уровней подстраиваются под конкретный слой и даже под конкретный входной сигнал.
В 2023 году вышла работа, объединяющая SQNS с методами дистилляции знаний, что позволило сжимать большие языковые модели (например, BERT) в 16 раз с потерей менее 3% метрики GLUE. Это открывает перспективы использования SQNS в области генеративного искусственного интеллекта, где размеры моделей продолжают расти экспоненциально.
¶Источники
- Cebula Ł., et al. «SQNS: Stochastic Quantization of Neural Systems» // arXiv:1902.07640, 2019.
- Courbariaux M., Bengio Y., David J.-P. «BinaryConnect: Training Deep Neural Networks with binary weights during propagations» // NeurIPS, 2015.
- Rastegari M., et al. «XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks» // ECCV, 2016.
- Jacob B., et al. «Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference» // CVPR, 2018.
- Nagel M., et al. «A White Paper on Neural Network Quantization» // arXiv:2106.08295, 2021.