Какие способы уменьшения размера модели при сохранении качества существуют?
Что проверяют
Знаете ли вы методы сжатия не списком, а с ценой каждого: что уменьшается на диске, что в памяти и что реально ускоряется. Следом обычно спрашивают, как вы проверите, что качество действительно сохранилось.
Как отвечать
- понижение точности: веса из fp32 в fp16 или bf16 дают вдвое меньший размер почти без потерь, это первый шаг;
- квантование: int8, а для больших языковых моделей и int4 (GPTQ, AWQ, NF4 в bitsandbytes, формат GGUF для llama.cpp). Post-training quantization делается быстро на калибровочной выборке, quantization-aware training дороже, но лучше держит качество маленьких моделей;
- дистилляция: модель-ученик учится на мягких вероятностях учителя через KL-дивергенцию с температурой. Классика DistilBERT: примерно на 40% меньше BERT при сохранении около 97% качества на GLUE;
- прунинг: неструктурированный обнуляет отдельные веса, структурированный выкидывает каналы, головы внимания или слои. Реальный выигрыш по размеру и скорости даёт второй, либо разреженность 2:4 на GPU NVIDIA начиная с Ampere;
- низкоранговое разложение: матрица весов заменяется произведением двух узких через SVD;
- компактная архитектура: MobileNet или EfficientNet вместо ResNet, в бустинге меньше деревьев и глубины.
Методы комбинируются: дистилляция, затем квантование, затем экспорт в ONNX Runtime, TensorRT или LiteRT (так теперь называется TensorFlow Lite).
Качество проверяйте на отложенной выборке и по срезам, а не одной общей метрикой: редкие классы страдают от сжатия первыми. Отдельно замеряйте размер файла, пиковую память и задержку на целевом железе.
Где спотыкаются
Ждут ускорения от неструктурированного прунинга. Нули в плотной матрице умножаются так же долго, без разреженного формата и поддержки железа выигрыша нет.
Называют L1 и L2 регуляризацию способом уменьшить модель. L2 размер не меняет вообще, L1 даёт нули, но файл остаётся прежним, пока их не вырезать.
Квантуют без калибровки и смотрят только на accuracy. Средняя метрика почти не сдвинулась, а на важном сегменте модель уже ошибается вдвое чаще.