QLoRa的核心思想是首先使用低秩分解技术降低参数的数量,然后对这些低秩表示的参数应用量化技术,进一步减少所需的存储空间和计算量。
低秩分解
低秩分解(Low-Rank Factorization):通过将模型中的权重矩阵分解为更小的矩阵乘积,减少模型中的参数数量。
参看:LoRA 微调和低秩矩阵
这种方法特别适用于减少全连接层和卷积层的参数,因为这些层通常包含大量的参数。
权重量化
权重量化(Weight Quantization):在进行低秩分解之后,QLoRa对得到的低秩矩阵进行量化,将浮点数权重转换为低比特宽度的表示形式。
这进一步减少了模型的存储需求和计算复杂度,使模型更适合部署在资源受限的设备上。
下面是一些常见的权重量化方法及其对计算和存储复杂度的影响的比较:
量化方法 | 比特宽度 | 存储复杂度降低 | 计算复杂度降低 | 备注 |
---|---|---|---|---|
FP32(未量化) | 32 | - | - | 原始浮点数格式 |
FP16 | 16 | 2倍 | 取决于硬件 | 半精度浮点数,常用于GPU加速 |
INT8 | 8 | 4倍 | 显著降低 | 整数量化,广泛应用于边缘设备 |
INT4 | 4 | 8倍 | 显著降低,更高 | 低比特量化,对模型精度影响较大 |
INT2 | 2 | 16倍 | 显著降低,最高 | 极端量化,需要特殊技术保持性能 |
INT1(二值化) | 1 | 32倍 | 极大降低 | 最极端的量化方法,计算可用简单逻辑实现 |
-
存储复杂度降低:这指的是模型权重存储空间的减少。例如,使用8位整数(INT8)量化时,存储需求是原始32位浮点数(FP32)的1/4,因此存储复杂度降低了4倍。
-
计算复杂度降低:这主要指的是运行模型所需的计算资源减少。计算复杂度的降低程度取决于特定硬件对不同数据类型操作的支持程度。一般来说,使用低比特宽度进行量化可以显著加速计算,尤其是在支持特定量化操作的硬件上。
需要注意的是,量化的比特宽度越低,对模型精度的潜在影响越大。因此,在选择量化策略时,需要在模型大小、计算效率与模型性能之间做出权衡。此外,实际的存储和计算复杂度降低也取决于特定的模型架构、硬件平台以及量化后的优化程度。
标签:存储,降低,权重,QLoRa,复杂度,微调,量化,模型 From: https://www.cnblogs.com/ghj1976/p/18036181/qlora