QLoRA: Efficient Finetuning of Quantized LLMs
QLoRA: Efficient Finetuning of Quantized LLMs - 中文验证版
英文原始依据卡片:qlora_2023.md
状态:已翻译。
元数据
- 阅读状态: read complete
- 年份: 2023
- 计算范式: 高效推理与边缘部署 (
efficient_edge_inference) - PDF: 2023-qlora_2023.pdf
- 抽取文本: 2023-qlora_2023.txt
- PDF URL: https://arxiv.org/pdf/2305.14314.pdf
- OpenAlex:
- 引用计数来源/日期:
- 引用计数:
- 阅读卡创建日期: 2026-06-15
计算设置
论文明确以极大型语言模型的单 GPU 微调为目标。它声明 QLoRA 将内存缩减到足以在单个 48GB GPU 上微调 65B 参数模型,同时保持完整的 16 位微调性能。它还声明 33B 模型可以在单个 24GB 消费级 GPU 上训练,并且最佳 33B Guanaco 模型可以在不到 12 小时内训练完成。对于最大模型,论文报告使用单个专业 GPU 在 24 小时内达到 ChatGPT Vicuna 基准性能的 99.3%。
基线内存问题非常严重:LLaMA 65B 的常规 16 位微调需要超过 780GB 的 GPU 内存。QLoRA 将其减少到微调不到 48GB,并在 Vicuna 表中报告 Guanaco 65B 的推理/训练内存条目约为 41GB。Guanaco 33B 列出为 21GB,Guanaco 13B 为 10GB,Guanaco 7B 为 5GB。论文还通过 paged optimizer 使用 NVIDIA 统一内存,在瞬态尖峰可能导致内存溢出时将优化器状态页在 CPU RAM 和 GPU 内存之间移动。
瓶颈
瓶颈是 GPU 内存,而不仅是算术吞吐量。LoRA 已经减少了可训练参数,但在大模型微调中,冻结的基座仍然主导内存。激活、输入梯度、优化器状态、量化元数据和梯度检查点尖峰都竞争同一 GPU 内存。一个 16 位形式的 65B 模型远远超出单个 48GB 卡。
约束不仅是 65B 参数数量。冻结的 LLaMA 65B 基座在激活或优化器状态之前的 BF16 存储约为 130 GB,而常规 16 位微调被报告为超过 780 GB,因为梯度、优化器状态、可训练权重、激活和瞬态检查点峰值都计算在内。QLoRA 通过以 4 位形式存储冻结基座来改变约束,将 LoRA 适配器保留为可训练路径,并对原本超过 24GB 或 48GB 设备限制的尖峰使用 paged optimizer。
论文强调先前量化方法主要是推理工具。通过量化模型进行训练更难,因为梯度必须通过冻结基座流入适配器而不损害质量。长序列长度和更大的 mini-batch 在检查点期间产生临时内存尖峰;这些尖峰足以打破本可适配的配置。因此,挑战在于使基座模型在内存中变小、保持适配器训练准确,并处理罕见的内存峰值事件而不显著拖慢整个运行。
方法适配
QLoRA 围绕一个冻结的 4 位基座模型适配参数高效微调。基座权重以 4 位 NormalFloat(NF4)存储,这是一种为服从正态分布的权重设计的数据类型。在计算期间,权重被去量化为 16 位计算数据类型,梯度通过冻结的量化模型反向传播到 LoRA 适配器中。适配器保持为可训练路径;量化基座提供大型预训练表示而不需要高精度存储。
Double quantization 针对元数据开销。较小的量化 block size 提高精度,但每个 block 需要量化常数。使用 32 位常数和 block size 64,常数本身成本为每个参数 0.5 比特。QLoRA 也对这些常数进行量化,将平均元数据成本降低到每个参数 0.127 比特,每个参数节省 0.373 比特,对 65B 模型约 3GB。
Paged optimizers 处理峰值内存而非平均内存。它们在 NVIDIA 统一内存中分配优化器状态,并在 GPU 内存耗尽时让页面在 CPU 和 GPU 之间移动。这是专门为长序列的梯度检查点尖峰设计的。论文报告 paged optimizers 对在单个 24GB/48GB GPU 上的 33B/65B 调优至关重要,同时也测量了在 48GB GPU 上的 65B 运行,batch size 16 给出与常规优化器相同的训练速度。
证据
论文直接报告了主要的内存结果:65B 微调从常规 16 位微调下的超过 780GB 降至 QLoRA 下的不到 48GB。chatbot 模型的内存表列出 Guanaco 65B 为 41GB,Guanaco 33B 为 21GB。附录内存分解显示 QLoRA 设置下的 LLaMA 基座占用约 7B 为 6.9GB、13B 为 11.3GB、33B 为 24.7GB、65B 为 45.0GB,paged optimizers 需要用于在激活尖峰时使紧张情况适配。
质量证据同时来自学术和 chatbot 评估。在 GLUE、Super-NaturalInstructions 和 MMLU 适配器比较中,论文报告使用 NF4 和 double quantization 的 4 位 QLoRA 匹配 16 位全微调或 16 位 LoRA 性能,而 FP4 落后于 NF4。在 Vicuna 上,Guanaco 65B 达到 ChatGPT 分数的 99.3%,Guanaco 33B 达到 97.8%。该表还显示了使此结果引人注目的内存比较:Guanaco 33B 在 21GB 下超过 Vicuna 13B 的分数,而 Vicuna 13B 被列为使用 26GB 的 16 位模型。
训练规模证据是具体的。论文使用 OASST1、HH-RLHF、FLAN v2 和 Longform 数据集,配合 LLaMA 7B 到 65B 模型。对于 OASST1,超参数表在 7B、13B、33B 和 65B 上使用 batch size 16 和 1,875 步;对于"All"混合,65B 的 batch size 增加到 64,共 2,500 步。
历史影响
QLoRA 改变了谁可以适配大型开源模型。在此之前,全量微调 33B 或 65B 模型意味着多 GPU 高内存基础设施。通过将冻结基座移到 4 位存储、保留 LoRA 适配器可训练、并用 paged optimizer 处理尖峰,QLoRA 使指令调优成为之前感觉集群绑定的模型的单机任务。
从历史上看,这帮助将开源 LLM 开发转变为更广泛的生态系统。拥有一块 24GB 或 48GB GPU 的实验室和个人可以运行有意义的微调、比较指令数据集,并生成如 Guanaco 的 chat 模型。它还澄清了一个在高效 LLM 工作中变得核心的区别:训练内存可以被大幅减少而不必然牺牲最终任务性能,只要基座表示被保留且可训练适配器路径具有足够容量。
局限
QLoRA 主要解决微调内存问题,而非所有推理或训练成本。一个 65B 模型可能适配在单个 48GB GPU 上进行微调,但吞吐量、延迟和生产推理经济学仍是独立问题。paged optimizer 依赖 CPU-GPU 分页;论文报告了某些 65B 设置的有利测量,但在不同硬件、序列长度和工作负载上的更广泛开销留待未来表征。
质量也高度依赖于基座模型、数据和基准。作者指出强劲的 Vicuna chatbot 分数并不意味着强劲的 MMLU 性能,反之亦然。Guanaco 在生僻事实、数学、心理理论可靠性和拒绝行为方面有观察到的弱点。论文执行了有限的责任 AI 评估,其核心比较使用 GPT-4 或人类对特定 chatbot 基准的判断。该方法是重大的内存突破,但并非鲁棒对齐、事实性或高吞吐量部署的保证。
链接
- 计算范式:
history/compute_regimes/efficient_edge_inference/README.md - 来源 PDF 和抽取文本见上方元数据。
- Queue 状态:
read_complete。 - 方法索引:parameter_efficient_finetuning、quantization
- 对照更新:compute bottlenecks