Official code for ICCV'25 paper [2503.08668] SSVQ: Unleashing the Potential of Vector Quantization with Sign-Splitting
Comparison between uniform quantization and vector quantization on how the quantized weight is updated. We assume a simple update
The sign bit is extracted and k-means clustering is applied to all-positive weights. Secondly, the fixed sign is replaced by the latent parameter's sign function. Furthermore, an improved iterative freezing strategy is employed on the learnable sign.
We provide the training scripts of both VQ and SSVQ. This way, you can clearly see how SSVQ outperforms VQ.
For CNNs (e.g. MobileNet, EfficientNet, ConvNext)
cd CNN
bash train_vq.sh #### to reproduce VQ results
bash train_ssvq.sh #### to reproduce SSVQ results
## The default epochs are 10, but you can get a relatively good result with only 3 epochs
For ViTs (e.g. DeiT)
cd ViT
bash deit_vq.sh #### to reproduce VQ results
bash deit_ssvq.sh #### to reproduce SSVQ results
- update codes for Stable Diffusion
- update codes for LLMs
We would like to acknowledge and thank the following works that inspired and contributed to this project:
-
Overcoming Oscillations in Quantization-Aware Training. github
-
Oscillation-free Quantization for Low-bit Vision Transformers. github
-
Learning Best Combination for Efficient N:M Sparsity. github
-
Extreme Compression of Large Language Models via Additive Quantization. github
If you find SSVQ useful in your research, please kindly cite this paper:
@article{li2025ssvq,
title={SSVQ: Unleashing the Potential of Vector Quantization with Sign-Splitting},
author={Li, Shuaiting and Deng, Juncan and Wang, Chenxuan and Xu, Kedong and Deng, Rongtao and Gu, Hong and Shen, Haibin and Huang, Kejie},
journal={arXiv preprint arXiv:2503.08668},
year={2025}
}