4-bit NormalFloat(NF4):一种新的数据类型,在信息理论上优于正常分布的权重,基于Quantile Quantization技术开发,通过估计输入张量的分位数来保证每个量化区间分配相等的值。 Quantile是一种统计学术语,指的是将数据集分成几个等份的过程,每个等份包含相同数量的数据点。例如,将一个包含100个数据点的数据集分成四个等...
NormalFloat数据类型是分位数量化技术的增强,它显示出比4位整数和4位浮点数更好的结果,在信息论意义上是正态分布权重的最佳表示。NF4主要由QLoRA方法使用,以4位精度加载模型以进行微调。 bitsandbytes库集成了NF4量化,同时还支持FP4、LLM.int8()量化。transformers库已经集成并原生支持了bitsandbytes这个量化库。而且...
你可以使用 4 比特量化的不同变体,例如 NF4 (NormalFloat4 (默认) ) 或纯 FP4 量化。从理论分析和实证结果来看,我们建议使用 NF4 量化以获得更好的性能。其他选项包括 bnb_4bit_use_double_quant ,它在第一轮量化之后会进行第二轮量化,为每个参数额外节省 0.4 比特。最后是计算类型,虽然 4 比特 bitsan...
作者将 SVDQuant 与以下 Post-Training Quantization (PTQ) 方法进行比较: 4位 NormalFloat (NF4) 是仅权重量化的数据类型[19]。它假设权重服从正态分布,并且是信息论最优的 4-bit 表示。作者使用社区量化的 NF4 FLUX.1 模型[20]作为基线。 ViDiT-Q[15]使用 per-token 量化和 smoothing 缓解不同 batch 和...
你可以使用 4 比特量化的不同变体,例如 NF4 (NormalFloat4 (默认) ) 或纯 FP4 量化。从理论分析和实证结果来看,我们建议使用 NF4 量化以获得更好的性能。 其他选项包括bnb_4bit_use_double_quant,它在第一轮量化之后会进行第二轮量化,为每个参数额外节省 0.4 比特。最后是计算类型,虽然 4 比特 bitsandbytes...
你可以使用 4 比特量化的不同变体,例如 NF4 (NormalFloat4 (默认) ) 或纯 FP4 量化。从理论分析和实证结果来看,我们建议使用 NF4 量化以获得更好的性能。 其他选项包括bnb_4bit_use_double_quant,它在第一轮量化之后会进行第二轮量化,为每个参数额外节省 0.4 比特。最后是计算类型,虽然 4 比特 bitsandbytes...
QLoRA的关键在于其使用的4位NormalFloat(NF4)数据类型和双量化技术,这些技术共同作用下,使得在单个GPU上微调大型LLM成为可能。 源码解读 bitsandbytes在QLoRA中的应用 在QLoRA的实现中,bitsandbytes主要用于模型的量化部分。通过替换模型中的nn.Linear层为量化层(如bnb.nn.Linear4bit),bitsandbytes将模型的权重从...
首先,QLORA使用一种名为4位NormalFloat的新数据类型。此数据类型专为正常分布的权重量身定制,优于其他4位类型。然后是双重量化。这本质上是量化的量化;它量化常数,有效地减少了内存需求。别忘了Paged Optimizers,它们旨在确保内存峰值不会给工作带来麻烦。Paged Optimizers利用NVIDIA的统一内存功能在CPU和GPU之间自动传输...
load_in_4bit=True:指定要以4-bit精度转换和加载模型。 bnb_4bit_use_double_quant=True:使用嵌套量化来提高内存效率的推理和训练。 bnd_4bit_quant_type="nf4":4-bit集成带有 2 种不同的量化类型FP4和NF4。NF4 dtype代表Normal Float 4,在QLoRA 论文中有介绍。默认情况下,使用FP4量化。
增加Adapter:4-bit的NormalFloat与Double Quantization,节省了很多空间,但带来了性能损失,作者通过插入更多adapter来弥补这种性能损失。在LoRA中,一般会选择在query和value的全连接层处插入adapter。而QLoRA则在所有全连接层处都插入了adapter,增加了训练参数,弥补精度带来的性能损失。