[NeurIPS 2023] QLoRA: Efficient Finetuning of Quantized LLMs ContentsIntroductionMethodNormalFloat Quantization (NF4)LoRA Fine-tuningExperimentsMemory FootprintQLoRA vs. Standard FinetuningReferencesIntroduction作者提出了4-bit PEFT 方法 QLoRA通过将权重量化到 4-bit (NF4 weight only quantization)进一步降低了 PEFT 的内存开销能将微调 65B LLM 的显存开销从 780GB 降低到 48GB不足QLoRA 仅仅是将原始权重量化到了 4-bit但新增的 LoRA 权重仍然是 16-bit无法和原始量化权重合并到一起此外NF4 的数据格式没有硬件支持量化对训练时间没有节省主要目标是节省训练显存MethodNormalFloat Quantization (NF4)4-bit NormalFloat Quantization (NF4). QLoRA 提出了新的 non-uniform 标量量化器定义为NF4格式. NF4 基于Quantile Quantization目标是通过分析待量化输入分布的分位数保证 quantization grid 中的每个 bin 都分配到相同数量的待量化值。作者假设权重服从高斯分布(当然其实这种假设并不成立后续的工作例如 HIGGS 会先用归一化 RHT 强制分布服从标准高斯分布)可以由高斯分布的 CDF 推导出最优的量化格点其中Q X ( ⋅ ) Q_X(\cdot)QX​(⋅)为标准高斯分布的 quantile function. 我们可以根据 quantile function 等距离切分出2 k 1 2^k12k1个 quantiles取相邻 quantiles 的中点可以得到2 k 2^k2k个量化格点。为了保证量化格点覆盖 0正数部分 (包含正数 0) 取2 k − 1 1 2^{k-1}12k−11个格点负数部分 (包含负数 0) 取2 k − 1 2^{k-1}2k−1个格点最后正负数格点合并去掉一个 0 后得到最终的量化格点所以 NF4 正负轴的数值分布并不是对称的。这些格点归一化到[ − 1 , 1 ] [-1,1][−1,1]后即为 NF4。量化时将权重也先归一化到[ − 1 , 1 ] [-1,1][−1,1]再量化即可[-1.0,-0.6961928009986877,-0.5250730514526367,-0.39491748809814453,-0.28444138169288635,-0.18477343022823334,-0.09105003625154495,0.0,0.07958029955625534,0.16093020141124725,0.24611230194568634,0.33791524171829224,0.44070982933044434,0.5626170039176941,0.7229568362236023,1.0]Double Quantization. QLoRA 中权重用 NF4 格式量化 (g64)NF4 的量化参数c 2 c_2c2​使用 FP8 进一步量化(g256). 由于c 2 0 c_20c2​0量化前可以先对c 2 c_2c2​减去均值再做对称量化LoRA Fine-tuningDefault LoRA hyperparameters do not match 16-bit performance. 作者发现按照惯例只将 LoRA 用在 query and value attention projection matrices 上并不能 match 全精度微调将 LoRA 用在所有线性层上才能 match 全精度微调ExperimentsMemory FootprintQLoRA vs. Standard Finetuning4-bit NormalFloat yields better performance than 4-bit Floating Point.k-bit QLORA matches 16-bit full finetuning and 16-bit LoRA performance.ReferencesDettmers, Tim, et al. “Qlora: Efficient finetuning of quantized llms.” arXiv preprint arXiv:2305.14314 (2023).code: https://github.com/artidoro/qlora and https://github.com/TimDettmers/bitsandbytes