目录
正态分布的分位数函数详解
1. 正态分布简介
2. 分位数函数定义
3. 正态分布的分位数函数计算
4-bit NormalFloat Quantization
4-bit NormalFloat Quantization详解
1. 4-bit NormalFloat Quantization的定义和应用
2. 4-bit NormalFloat Quantization的工作原理
3. 4-bit NormalFloat Quantization的优势
4. 4-bit NormalFloat Quantization在QLoRA中的应用
正态分布的分位数函数详解
1. 正态分布简介
正态分布,也被称为高斯分布,是连续概率的一种。它的概率密度函数呈钟形,可以完全由两个参数(均值和标准差)确定。在正态分布中,均值、中位数和众数是相等的。
2. 分位数函数定义
分位数函数,又称为逆累积分布函数,是累积分布函数的逆函数。对于正态分布,其分位数函数可以给出对应于预先指定的累积概率的观测值。例如,如果我们知道某个变量服从标准正态分布,我们可以使用分位数函数来找出对应于累积概率0.975的观测值。
3. 正态分布的分位数函数计算
正态分布的分位数函数无法用初等函数表示,但可以通过数值方法计算。在实际应用中,通常会使用查表或者软件(如R、Python等)来计算正态分布的分位数。
在Python中,可以使用scipy库的norm.ppf函数来计算正态分布的分位数。例如,计算标准正态分布(均值为0,标准差为1)累积概率为0.975的分位数,可以使用以下代码:
from scipy.stats import norm
norm.ppf(0.975, loc=0, scale=1)
这将返回约为1.96的结果,这意味着在标准正态分布中,约有97.5%的值小于或等于1.96。
4-bit NormalFloat Quantization
分位数量化的工作原理是将数据分布的分位数用较少的比特数来表示,从而达到数据压缩的目的。具体来说,它首先通过经验累积分布函数来估计输入数据的分位数,然后将这些分位数进行量化,即将连续的分位数转化为离散的数值。
分位数量化的工作方式是通过估算输入张量的分位数来利用经验累积分布函数。然而,分位数量化的主要挑战在于估计分位数的步骤可能需要较大的计算资源。
在神经网络的环境中,预先训练的权重通常呈现出零中心的正态分布,其标准差为σ。通过调整σ,可以使分布刚好符合NF的范围。对于NF,作者设定了一个随意的范围[-1, 1]。因此,数据类型和神经网络权重的分位数都需要被标准化到这个范围。
对于范围在[-1, 1]内的零均值正态分布,计算了从信息理论角度看最优的数据类型。
这个过程包括:(1) 估计理论N(0, 1)分布的 2**k+1 个分位数,从而得到一个k位的分位数量化数据类型;
(2) 将这个NF的值标准化到[-1, 1]范围;
(3) 通过最大绝对值的重新标定,将输入权重张量标准化到[-1, 1]范围,然后进行量化。一旦模型权重的范围与NF的范围相匹配,就可以像通常那样进行量化。这个过程等同于重新调整权重张量的标准差,使其与k位数据类型的标准差相匹配。更详细地,下面这个公式展示了 2**k+1到分位数的映射关系:
公式中的Qx 是分位数函数的表示。
4-bit NormalFloat Quantization详解
1. 4-bit NormalFloat Quantization的定义和应用
4-bit NormalFloat Quantization是一种改进的量化方法,它是基于之前的8-bit量化方法中提到的Block-wise Quantization和Quantile Quantization^1^。该方法被应用在QLoRA中,一个模型加载和训练的方法,其中模型使用4-bit NormalFloat量化加载,并在训练时将数值反量化为bf16进行训练^1^。
2. 4-bit NormalFloat Quantization的工作原理
Block-wise Quantization通过将数值分批量化,每个批次使用独立的常数c,以解决outlier对量化过程的影响^1^。Quantile Quantization通过将数值分为均匀分布的16个区间来充分利用16个可用的量化值,以避免信息丢失^1^。QLoRA使用双重量化方法,对常数c进行额外的量化,以减少显存开销^1^。
3. 4-bit NormalFloat Quantization的优势
4-bit NormalFloat(NF4)量化数据类型是一种对于正态分布数据而言在信息论上最优的量化数据类型^2^。使用4-bit NormalFloat Quantization,可以有效地减少显存使用,尽管实际训练是在bf16水平上进行的^1^。
4. 4-bit NormalFloat Quantization在QLoRA中的应用
QLoRA使用4位NormalFloat(NF4)量化数据类型,以及分页优化器,用于管理内存波动^2^。使用QLoRA进行微调的Guanaco模型在Vicuna基准测试上达到了ChatGPT性能水平的99.3%^2^。
以上就是关于4-bit NormalFloat Quantization的详细介绍,希望对您有所帮助。
参考文献
- "QLoRA: 4bit量化+LoRA训练=瞬间起飞 - 知乎" link
- "QLoRA: Efficient Finetuning of Quantized LLMs论文解读" link