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

本文关注训练后量化,一种在模型部署阶段降低模型硬件需求和运行成本的技术。通过介绍如何找到浮点数附近的整数并进行四舍五入,展示了一种高性能的浮点数到整数的转换函数。接着,提供了一个量化到8比特的函数,该函数处理浮点数数组,计算量化的比例因子,并存储量化的结果。
摘要由CSDN通过智能技术生成

量化的过程可以根据其发生的时机,被划分为训练时量化和训练后量化,也被称为后训练量化(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浮点数的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值