transformer实现模型量化

模型量化技术

量化(Quantization)技术专注于用较少的信息表示数据,同时尽量不损失太多准确性。
具体来说,量化会将模型参数使用的数据类型,转换为更少位数表示,并尽可能达到相同信息的效果。

同时,较低的精度还可以加快推理速度,因为使用较少位进行计算所需要的时间更短。

eg:模型权重原始以32位浮点数存储(Float32)

  • 如果将他们量化为16位浮点数,则可以将模型大小减半。换句话说,仅需要一半的GPU显存即可加载量化后的模型;
  • 如果将模型量化为8位整数,则大约需要四分之一的显存开销;
  • 如果将模型量化为4位数据类型Normal Float 4,则几乎需要八分之一的显存开销;

在这里插入图片描述

1、GPTQ

GPTQ:Accurate Post-Training Quantization for Generative Pre-trained Transformers是一个高效、准确的量化技术,特别适用于大规模GPT模型,能够在显著降低模型大小和计算需求的同时,保持高准确和推理速度。GPTQ算法具有以下特点:

  • 专为GPT模型设计:GPTQ针对大模型GPT模型进行优化,解决了这类模型因规模庞大导致的高计算和存储成本问题;
  • 一次性权重量化方法:GPTQ是一种基于近似二阶信息的权重量化方法,能够在一次处理中完成模型的量化;
  • 高效率:GPTQ能在大约四个GPU小时内完成1750亿参数的GPT模型的量化;
  • 低位宽量化:通过将权重位宽降至每个权重3或4位,GPTQ显著较少了模型的大小;
  • 准确度保持:即便在进行显著的位宽减少后,GOTQ也能保持与未压缩模型相近的准确度,减少性能损失;
  • 支持极端量化:GPTQ还可以实现更极端的量化,如2位或三元量化,同时保持合理的准确度;
  • 推理速度提升:使用GPTQ量化的模型在高端GPU上实现了大约3.25倍的推理速度提升,在成本效益更高的GPU上实现了大约4.5倍速度提升;
  • 适用于单GPU环境:GPTQ使得在单个GPU内执行大规模模型的生成推理成为可能,显著降低了部署这类模型的硬件要求;

GPTQ量化算法核心流程

核心步骤:使用存储在Cholesky(切尔斯基)分解中的逆Hessian(海森)信息量化连续列的块,并在步骤结束时更新剩余的权重,在每个块内递归地应用量化过程;
具体步骤如下:

  • 块量化:选择一块连续的列,并将其作为当前步骤的量化目标;
  • 使用Cholesky分解:利用Cholesky分解得到的逆Hessian信息来量化选定的块。Cholesky分解提供了一种数值稳定的方法来处理逆矩阵,这对维持量化过程的准确性至关重要。
  • 权重更新:在每个量化步骤的最后,更新剩余的权重。这个步骤确保了整个量化过程的连贯性和精确性。
  • 递归量化:在每个选定的块内部,量化过程是递归应用的。这意味着量化过程首先聚焦于一个较小的子块,然后逐步扩展到整个块。
    通过这种方式,GPTQ方法能够在保持高度精度的同时,高效地处理大量的权重,这对于大型模型的量化至关重要。这种策略特别适用于处理大型、复杂的模型,如GPT系列,其中权重数量巨大,且量化过程需要特别小心以避免精度损失。

2、激活感知权重量化(Activation-aeare Weight Quantization,AWQ)

激活感知权重量化算法,其原理不是对模型中的所有权重进行量化,而是仅保留小部分(1%)对LLM性能至关重要的权重。其算法的主要特点如下:

  • 低位权重量化:AWQ专为大型语言模型(LLMs)设计,支持低位(即少位数)的权重量化,有效减少模型大小。
  • 重点保护显著权重:AWQ基于权重重要性不均的观察,只需要保护大约1%的显著权重,即可减少量化误差。
  • 观察激活而非权重:在确定哪些权重是显著的过程中,AWQ通过观察激活分布而非权重分布来进行。
  • 无需反向传播或重构:AWQ不依赖于复杂的反向传播或重构过程,因此能够更好地保持模型的泛化能力,避免对特定数据集的过拟合。
  • 适用于多种模型和任务:AWQ在多种语言建模任务和领域特定基准测试中表现出色,包括指令调整的语言模型和多模态语言模型。
  • 高效的推理框架:与AWQ配套的是一个为LLMs量身定做的高效推理框架,提供显著的速度提升,适用于桌面和移动GPU。
  • 支持边缘设备部署:这种方法支持在内存和计算能力有限的边缘设备上部署大型模型。

量化算法对比

特征AWQGPTQ
设计目的量化大型语言模型,特别强调保护显著权重,以减少量化误差专为GPT模型设计,高效地完成权重量化,以减少设计和存储成本
量化方法基于激活分布而不是权重来选择保护的权重一次性权重量化,基于近似二阶信息
精度和效率在不同模型和位精度上都表现优异,能够提高视觉语言模型的性能在极低位数量化下仍能够保持合理准确度,能在短时间内量化大规模模型
硬件适应性支持高效推理框架,适用于桌面和移动GPU使得在单个GPU上执行大规模模型成为可能,提高了推理速度
应用范围适用于多种模型和任务,包括多模态语言模型专门针对GPT模型,适用于高计算需求的模型
推理性能提升提供显著的速度提升,尤其在边缘设备上表现突出在高端和成本效益高的GPU上卷实现显著的推理能力提升

3、BitsAndBytes

BitsAndBytes(BNB)是自定义CUDA函数的轻量级包装器,特别是8比特优化器、矩阵乘法和量化函数。特征如下:

  • 具有混合精度分解的8比特矩阵乘法
  • LLM.int8()推理
  • 8比特优化器:Adam、AdamW、RMSProp、LARS、Lion
  • 稳定的嵌入层:通过更好的初始化和标准化提高稳定性
  • 8比特量化:分位数、线性和动态量化
  • 快速的分位数估计:比其他算法快100倍

在Transformers量化方案中,BNB是将模型量化为8位和4位的最简单选择。

  • 8位量化将fp16中的异常值与int8中的异常值相乘,将非异常值转换回fp16,然后将它们相加以返回fp16中的权重。这减少了异常值对模型性能产生的降级效果。
  • 4位量化进一步压缩了模型,并且通常与QLoRA一起用于微调量化LLM。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值