QLora 里的双重量化Block-wise Quantization内存占用解释

目录

首先是0.5位参数来源

1. 块大小和常量c的关系

2. 常量c的共享性

3. 常量c的内存开销分摊

4. 计算每个参数的额外内存开销

然后是8/64 + 32/(64·256) = 0.127位的来源:Block-wise Quantization内存占用降低解释

1. 块大小和常量c的关系

2. 参数量化后的内存占用

3. 常量c的内存开销分摊

4. 计算每个参数的总内存占用


看这个大佬的文档,对里面这一段话理解的不是很透彻,尝试理解一下:

https://zhuanlan.zhihu.com/p/632533576

双重量化我们引入了双重量化(Double Quantization,DQ),这是一种为了额外的内存节省而量化量化常数的过程。虽然需要较小的块大小来进行精确的4位量化[13],但它也带来了相当大的内存开销。例如,使用32位常数和64的块大小对W进行量化,平均每个参数的量化常数增加32/64 = 0.5位。双重量化有助于减少量化常数的内存占用

更具体地说,双重量化将第一次量化的量化常数cFP322作为第二次量化的输入。这个第二步产生了量化的量化常数cFP82和第二级的量化常数cFP321。我们使用块大小为256的8位浮点数进行第二次量化,因为我们观察到8位量化没有性能下降,这与Dettmers和Zettlemoyer[13]的结果一致。由于cFP322是正的,我们在量化之前从c2中减去平均值,以使值围绕零居中,并利用对称量化。平均而言,对于64的块大小,这种量化将每个参数的内存占用从32/64 = 0.5位,降低到8/64 + 32/(64·256) = 0.127位,减少了0.373位每个参数。

首先是0.5位参数来源

1. 块大小和常量c的关系

在Block-wise Quantization中,参数被分成多个大小固定的块,每个块有自己的一个常量c。这个常量c是一个浮点数,通常用float32表示,占用32位内存。假设一个块的大小为64,即一个块中有64个参数。

2. 常量c的共享性

在每个块中,所有的参数都会共享这个常量c。换句话说,块中的64个参数都使用同一个常量c进行量化,因此,这个常量c只需要存储一次。

3. 常量c的内存开销分摊

虽然所有的参数都共享这个常量c,但在计算内存开销时,我们通常会将这个常量c的内存开销平均分摊到块中的每个参数上。也就是说,32位的内存开销需要平均分摊到64个参数上。

4. 计算每个参数的额外内存开销

所以,每个参数的额外内存开销就是常量c的内存开销(32位)除以块的大小(64),即32/64 = 0.5位。这意味着,为了存储这个常量c,每个参数需要额外增加0.5位的内存。

然后是8/64 + 32/(64·256) = 0.127位的来源:Block-wise Quantization内存占用降低解释

1. 块大小和常量c的关系

在Block-wise Quantization中,参数被分成多个大小固定的块,每个块有自己的一个常量c。这个常量c是一个浮点数,通常用float32表示,占用32位内存。假设一个块的大小为64,即一个块中有64个参数。

2. 参数量化后的内存占用

在量化过程中,每个参数被量化为一个8位的整数,所以每个参数的内存占用是8位。然后,这个8位的内存占用需要平均分摊到块中的每个参数上,所以每个参数的内存占用是8/64 = 0.125位。

3. 常量c的内存开销分摊

然后,我们还需要将常量c的内存开销平均分摊到块中的每个参数上。因为常量c是一个32位的浮点数,所以它的内存开销是32位。但是,因为我们有256个不同的量化级别,所以实际上,我们可以将这个32位的内存开销分摊到256个级别上,所以每个级别的内存开销是32/256 = 0.125位。然后,这个0.125位的内存开销还需要平均分摊到块中的每个参数上,所以每个参数的内存开销是0.125/64 = 0.001953125位。

4. 计算每个参数的总内存占用

所以,每个参数的总内存占用就是参数量化后的内存占用(0.125位)加上常量c的内存开销(0.001953125位),即0.125 + 0.001953125 = 0.126953125位。这意味着,通过量化,我们将每个参数的内存占用从0.5位降低到了0.126953125位,减少了0.373046875位。

如果有问题,欢迎各位大佬指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

samoyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值