综述六:模型量化技术
量化技术在机器学习(ML)和大型语言模型(LLM)中的应用,指的是将模型的权重和激活值的数值精度降低,通常目的是提高计算效率、减少内存占用,并加速推理过程,而不显著降低准确度。随着时间的推移,这些方法在传统机器学习和深度学习的研究中不断发展。
以下是按引入时间排序的 量化方法 列表:
1. 定点量化(Fixed-Point Quantization) (1980年代 - 1990年代初)
- 核心思想:将浮点数(32位)转换为定点数(例如16位或8位整数)。这可以减少内存需求,并加速计算,因为定点操作通常比浮点操作在硬件上更高效。
- 应用:早期的信号处理和硬件实现。
2. 向量量化(Vector Quantization)(1980年代 - 1990年代)
- 核心思想:通过使用较少的质心或码本来表示高维向量(如特征表示)。这是一种有损压缩技术,用于减少表示的维度。
- 应用:用于图像和语音压缩。
- 重要论文:Gray, “Vector Quantization and Signal Compression”, 1984。
3. 产品量化(Product Quantization) (2006)
- 核心思想:通过将向量分割成较小的子向量,并分别对每个子向量进行量化,来扩展向量量化。这减少了搜索复杂度,并提高了最近邻搜索的效率。
- 应用:大规模图像检索和特征压缩。
- 重要论文:Hervé Jégou 等人,“Product Quantization for Nearest Neighbor Search” ,2006。
4. 权重量化(Weight Quantization) (2015)
- 核心思想:将神经网络中的权重的精度从32位浮点数降低到较低位数的表示(例如8位或16位整数)。其主要目标是减少内存占用,并加速推理,特别是在专用硬件(如GPU和TPU)上。
- 应用:用于深度神经网络,使其能够更高效地部署在硬件上。
- 重要论文:Rastegari 等人,“Quantizing deep convolutional networks for efficient inference: A whitepaper” ,2016。
5. 二值量化(Binary Quantization)(2016)
- 核心思想:一种更激进的量化方法,将权重限制为两个可能的值,通常是±1。这大大减少了模型的大小和计算复杂度,因为二进制权重可以用一个比特表示。
- 应用:通常用于硬件实现中,需要极高效率的场景。
- 重要论文:Hubara 等人,“Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or -1” ,2016。
6. 三值量化(Ternary Quantization)(2017)
- 核心思想:扩展二值量化,将权重限制为三种可能的值(通常是-1、0、+1),在保持比二值量化更多信息的同时,进一步减少了内存占用。
- 应用:通常用于硬件受限的环境,如嵌入式系统或边缘设备。
- 重要论文:Zhang 等人,“Ternary Weight Networks” ,2017。
7. 量化感知训练(Quantization-Aware Training, QAT)(2017)
- 核心思想:与传统的后训练量化方法不同,QAT在训练过程中模拟低精度算术操作。这样,模型可以适应量化的影响,并减小精度损失。
- 应用:确保量化后能更好地保留准确性,尤其是对于复杂的深度神经网络。
- 重要论文:Jacob 等人,“Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference” ,2018。
8. 动态量化(Dynamic Quantization)(2018)
- 核心思想:在训练后进行量化,动态地确定每一层或激活的最佳量化方案。这可以在不修改模型的情况下对预训练模型进行量化,且无需重新训练。
- 应用:用于推理场景中,尤其是快速推理且不方便重新训练的情况。
- 重要论文:Jacob 等人,“Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference” ,2018。
9. 仅整数量化(Integer-Only Quantization)(2019)
- 核心思想:将所有操作(包括权重和激活值)转换为仅整数的算术(例如8位整数)。这使得模型可以完全在整数硬件上运行,这比浮点数运算更高效。
- 应用:通常用于在资源受限的边缘设备(如手机和物联网设备)上的部署。
- 重要论文:Rastegari 等人,“Integer-only quantization of deep convolutional networks” ,2019。
10. 低秩量化(Low-Rank Quantization)(2020)
- 核心思想:通过将权重矩阵分解为低秩组件,而不是对所有权重使用固定精度,这样可以对这些组件进行更低位的量化。这对于减少内存和计算成本特别有效。
- 应用:用于大规模神经网络,特别是变换器模型(transformer)。
- 重要论文:Shen 等人,“Low-Rank Quantization for Neural Network Compression” ,2020。
11. 后训练量化(Post-Training Quantization, PTQ)(2020)
- 核心思想:一系列技术,允许在不重新训练的情况下对预训练模型进行量化,通常使用校准集来微调量化参数(例如尺度、零点)。PTQ因其易于部署和快速回馈而变得流行。
- 应用:主要用于资源受限的环境(如边缘设备)上的部署。
- 重要论文:Choukroun 等人,“Post-Training Quantization for Neural Networks: A Survey” ,2020。
12. 变换器模型的量化(Quantization for Transformer Models)(2020-2021)
- 核心思想:专注于变换器(如BERT、GPT等)模型的高效量化。由于这些模型通常较大且占用大量内存,量化在使其能够部署在资源受限的环境中时扮演了关键角色。
- 应用:将大型语言模型(LLM)部署到手机设备和云服务等资源有限的环境中。
- 重要论文:Zafrir 等人,“Q8BERT: Quantized 8-bit BERT” ,2021。
13. 基于注意力的量化(Attention-based Quantization)(2021)
- 核心思想:一种专门针对变换器模型的量化方法,在量化过程中考虑注意力权重的重要性。这允许在不显著损失性能的情况下进行更高效的压缩。
- 应用:用于NLP任务中,尤其是变换器模型较为常见的任务。
- 重要论文:Tay 等人,“Efficient Transformers: A Survey” ,2020。
14. 混合精度量化(Mixed-Precision Quantization)(2021)
- 核心思想:为模型的不同部分使用不同的位宽。例如,某些层可能使用8位量化,而其他层使用16位,这取决于层对模型整体性能的重要性。
- 应用:优化模型大小和推理速度之间的折衷,特别是在大规模深度模型的部署中。
- 重要论文:Zhou 等人,“Mixed Precision Quantization for Deep Neural Networks” ,2021。
15. 学习量化(Learned Quantization)(2021-至今)
- 核心思想:与固定量化水平不同,学习量化技术在训练过程中学习最优的量化方案,允许根据任务和模型动态调整位宽和量化方案。
- 应用:应用于大规模神经网络(例如变换器),提高准确性保留和计算效率。
- 重要论文:Xu 等人,“Learned Quantization for Efficient Neural Network Inference” ,2021。
量化方法总结:
- 定点量化(1980年代 - 1990年代初)
- 向量量化(1980年代 - 1990年代)
- 产品量化(2006)
- 权重量化(2015)
- 二值量化(2016)
- 三值量化(2017)
- 量化感知训练(QAT)(2017)
- 动态量化(2018)
- 仅整数量化(2019)
- 低秩量化(2020)
- 后训练量化(PTQ)(2020)
- 变换器模型的量化(2020-2021)
- 基于注意力的量化(2021)
- 混合精度量化(2021)
- 学习量化(2021-至今)
这些量化方法通过逐步引入不同的技术,帮助提升深度学习模型的计算效率和内存利用率。随着计算硬件(如边缘设备、移动设备)能力的增强,以及大规模模型(如大型语言模型)的兴起,量化技术越来越成为实际部署过程中不可或缺的一部分。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Model The World!