一步一步理解大模型:模型量化技术2-源代码

量化的过程可以根据其发生的时机,被划分为训练时量化和训练后量化,也被称为后训练量化(Post Training Quantization)。在模型的训练阶段,我们通常会寻求优质的硬件条件和更高的计算精度,以便训练出性能更优秀的模型,从而获得更高的评估分数。然而,在模型部署阶段,我们需要考虑到用户硬件的实际限制。为了让更多的用户能够使用我们的模型,我们通常会在训练后的推理阶段进行量化处理。这样,我们可以在保持模型性能的同时,降低模型的硬件需求和运行成本,使模型能够在更广泛的硬件环境中运行。因此,后训练量化是实际商业应用中的常见做法。

所以,这里我们只关心训练后量化,将训练好的权重拿出来量化,这些压缩后的模型仅用于推理。

在模型量化技术(1)中,我们提到一个重要的步骤是找到权重附近的“落脚点”,在实际运算过程中,我们是找到浮点数附近的整数,就是做四舍五入运算来间接处理的。代码如下:

static inline int nearest_int(float fval) {
    assert(fval <= 4194303.f);
    float val = fval + 12582912.f;
    int i; memcpy(&i, &val, sizeof(int));
    return (i & 0x007fffff) - 0x00400000;
}

对了,是不是和你课本上 ( int )( x + 0.5f ) 不一样?

这段代码实现了一个产品化的,高性能的,精准的将浮点数四舍五入到最接近的整数的函数。这个函数的工作原理基于IEEE 754浮点数的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值