qlora的意义

qlora主要的出发点就是为了: 量化模型减少数据的存储空间.---》目的、q_lora产生的意义

fp16
    数据格式:符号位(1bit) +  指数位  + 小数部分
     指数位(5bit=2^5=32,全0或者全1表示正负inf,故最多能表示2^30,分为正负区间后表示的指数范围:2^-14~2^15)
    小数部分(10bit,最小精度为1/2^10)        
    表示的最大正值为: (-1)^0 * 2^15 * (1+1023/1024) = 65504
    表示的最小正值为: (-1)^0 * 2^-14 * (1+1/1024) 

fp32
    fp32是1个符号位+8个指数位+23个小数位,精度是最高的


bfloat16 和 fp16有什么区别?
    bfloat16是1个符号位+8个指数位+7个小数位,所以它的表示范围比fp16大,但它的精度没有fp16高,小数位的精度为1/2^7=1/128


量化(absmax、量化因子)、反量化(为了在模型推理时使⽤这个量化的权重,我们需要将其反量化回浮点数)
    归一化:x' = (x-min)/(max-min)       量化过程跟此过程类似
    反归一化: x = x' * (max-min) + min        反量化过程跟此相似
     
    seg:   list = [0.123456789, 1],量化为int8,int8的范围是[-127, 127]
            absmax=1,量化因子是127       整个list的数据除以absmax后--->[0.123456789, 1] --->乘以127---->[16, 127]
        反量化(整个过程逆向计算回来)--->[0.1259, 1]
    结论:通过反量化,量化的权重16被转换回浮点数 0.1216 ,这个值接近原始权重 0.123456789 ,但由于量化的精度损失,它并不完全相同
为什么要进行反量化
    1、为了在模型推理时使⽤这个量化的权重,我们需要将其反量化回浮点数
    2、在进行混合精度运算时,int8类型的数据和int8类型的数据算完了,接着需要和bfloat16类型的数据进行运算,此时也需要把int8类型的数据反量化回bfloat16
    3、有些任务必须进行反量化,如机器学习的数据(身高、体重、年龄)在量化之后,看不出这些数据的实际意义,必须反量化回去

int4
    int4是1个符号位 + 2个指数位 (假设最多能表示16,[-7,8]) + 1个小数位
    nf4认为这种切分数据的方法太平均了,不够精细(比如0.01和0.02,这两个数字相差两倍,但是量化之后都变成了0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值