STBLLM: Breaking the 1-Bit Barrier with Structured Binary LLMs
<|reference_start|>STBLLM: Breaking the 1-Bit Barrier with Structured Binary LLMs: In this paper, we present the first structural binarization method for LLM compression to less than 1-bit precision. Although LLMs have achieved remarkable performance, their memory-bound nature during the inference stage hinders the adoption of resource-constrained devices. Reducing weights to 1-bit precision through binarization substantially enhances computational efficiency. We observe that some weights in binarized LLMs can be randomly flipped without significant performance degradation, suggesting the potential for further compression. To exploit this, our STBLLM employs an N:M sparsity technique to achieve structural binarization of the weights. Specifically, we introduce a novel Standardized Importance (SI) metric, which considers weight magnitude and input feature norm to more accurately assess weight significance. Then, we propose a layer-wise approach, allowing different layers of the LLM to be sparsified with varying N:M ratios, thereby balancing compression and accuracy. Furthermore, we implement a fine-grained grouping strategy for less important weights, applying distinct quantization schemes to sparse, intermediate, and dense regions. Finally, we design a specialized CUDA kernel to support structural binarization. We conduct extensive experiments on LLaMA-1/2/3, OPT family, and Mistral to evaluate the effectiveness of STBLLM. The results demonstrate that our approach performs better than other compressed binarization LLM methods while significantly reducing memory requirements.<|reference_end|>
@article{dong2024stbllm:,
    title={STBLLM: Breaking the 1-Bit Barrier with Structured Binary LLMs},
    author={Peijie Dong, Lujun Li, Yuedong Zhong, Dayou Du, Ruibo Fan, Yuhan Chen,
  Zhenheng Tang, Qiang Wang, Wei Xue, Yike Guo, Xiaowen Chu},
    journal={arXiv preprint arXiv:2408.01803},
    year={2024},
    archivePrefix={arXiv},
    eprint={2408.01803},
    primaryClass={cs.LG cs.CL}
}