Внутри нейросети хранятся миллиарды чисел — весов. Они определяют, какие связи модель считает важными.Обычно веса записываются с точностью 16 бит. Но для локального запуска модель можно сжать:
Q8 — примерно 8 бит на вес.
Q4 — примерно 4 бита на вес.
Чем меньше бит, тем меньше памяти занимает модель. Но вместе с размером снижается и точность хранения чисел. Для каждой группы рассчитывают общий коэффициент масштаба —
scale.Например, есть веса:
−1,20 | −0,30 | 0,40 | 1,10Самое большое значение по модулю —
1,20. Делим его на 7:scale = 1,20 / 7 ≈ 0,171Теперь исходные веса заменяются компактными кодами:
−1,20 → −7В памяти хранятся эти коды и один общий scale−0,30 → −20,40 → 2
1,10 → 6
.
Во время работы модель умножает коды на коэффициент и получает приблизительные веса:
−1,20 | −0,34 | 0,34 | 1,03`
Они немного отличаются от исходных, но не сильно.Архитектура модели не меняется. Меняется только способ хранения весов.
В итоге, Q4 меньше FP16 в 3–4 по памяти.
#нейросети





