QLoRA:量化LLM的高效微调

05月23日发表
04月12日由 AKAK 提交
作者: Tim DettmersTim Dettmers, Artidoro PagnoniArtidoro Pagnoni, Ari HoltzmanAri Holtzman, Luke Zettlemoyer

摘要

我们提出了 QLoRA,这是一种高效的微调方法,可减少内存使用量,足以在单个 48GB GPU 上微调 65B 参数模型,同时保持完整的 16 位微调任务性能。QLoRA 通过冻结的 4 位量化预训练语言模型向低秩适配器 (LoRA) 反向传播梯度。我们最好的模型系列 Guanaco 在 Vicuna 基准测试中优于所有以前公开发布的模型,达到 ChatGPT 性能水平的 99.3%,而仅需在单个 GPU 上微调 24 小时。QLoRA 引入了多项创新来节省内存而不牺牲性能:(a) 4 位 NormalFloat (NF4),一种新的数据类型,在信息理论上对于正态分布的权重是最优的 (b) 双重量化,通过量化量化常数来减少平均内存占用,以及 (c) 分页优化器来管理内存峰值。我们使用 QLoRA 微调了 1,000 多个模型,对 8 个指令数据集、多种模型类型 (LLaMA、T5) 和模型规模(使用常规微调无法运行,例如 33B 和 65B 参数模型)的指令遵循和聊天机器人性能进行了详细分析。我们的结果表明,即使使用比以前的 SoTA 更小的模型,在小型高质量数据集上进行 QLoRA 微调也能带来最先进的结果。我们根据人类和 GPT-4 评估对聊天机器人性能进行了详细分析,表明 GPT-4 评估是人类评估的廉价且合理的替代方案。此外,我们发现当前的聊天机器人基准测试不足以准确评估聊天机器人的性能水平。柠檬挑选分析展示了 Guanaco 在哪些方面不如 ChatGPT。我们发布了我们所有的模型和代码,包括用于 4 位训练的 CUDA 内核。

评论

Omar SansevieroOmar Sanseviero

超级令人兴奋的论文!

Anubhav TiwariAnubhav Tiwari

随着大型嵌入模型推动 AI 发展,像这样的技术将在使训练更大的模型成为可能并开辟新的研究前沿方面发挥重要作用。非常令人兴奋🤗

Leandro Sehnem BortolottoLeandro Sehnem Bortolotto

恭喜这篇优秀的论文。它不仅给出了研究结果,而且信息量很大。谢谢。

mahar maybemahar maybe

(/◕ヮ◕)/

Aymeric RoucherAymeric Roucher

谢谢,很棒的阅读!

这是我的主要收获:

  • 创新:

    • 4 位 NormalFloat (NF4),一种新的数据类型,在信息理论上对于正态分布的权重是最佳的。这仅用于存储:计算数据类型仍然是 bf16,因此对于前向和后向传递,您需要解量化存储数据类型。
    • 通过量化量化常数进行双重量化:在量化时,您需要通过常数 C 重新缩放您的值,以使其适合某个范围。双重量化量化 C,因此平均每个参数节省 0.37b,这非常重要!
    • 分页优化器,通过使用 NVIDIA 统一内存(GPU 和 CPU 之间的传输)来管理内存峰值,以避免在处理具有长序列长度的小批量时发生的梯度检查点内存峰值。
  • 效果:

    • 关于计算:

      • 内存成本大大降低,但以少量计算开销为代价
    • 关于模型精度:性能没有下降。

  • 关于 bf16:这种数据类型是脑浮点 16,由 Google brain 类型引入,它以不同的方式管理尾数和指数位,以获得 fp32 级别的性能,但大小为 fp16。

  • 用于微调实验的超参数:

    • “我们发现,如果 LoRA 用于所有层,则 LoRA r 与最终性能无关”
    • LR:1e-4 或 2e-4,恒定计划。
    • 批量大小:13B 以下的模型为 16,33B 为 16 或 32,65B 为 16-64
    • 带有双重量化和 bf16 计算数据类型的 NF4。
    • LoRA r = 64,α = 16
    • 我们还对高达 13B 的模型使用 Adam beta2 0.999、最大梯度范数 0.3 和 LoRA dropout 0.1,对 33B 和 65B 模型使用 0.05。
    • 目标模块:“基础模型的所有线性层”
    • “使用按长度分组来对同一批次中长度相似的示例进行分组(注意这将产生振荡的损失曲线)”
  • 问题:论文说“我们发现 LoRA dropout 0.05 对小型模型(7B、13B)很有用,但对大型模型(33B、65B)无用。”那么为什么在微调实验中使用相反的方法呢?

KyaloKyalo
此评论已隐藏。
Julien BLANCHONJulien BLANCHON
QLoRA:大型语言模型的内存高效微调

https://cdn-uploads.huggingface.co/production/uploads/6186ddf6a7717cb375090c01/GXc4DPT076JaW9yESAs3r.mp4

链接 🔗:

👉 订阅: https://www.youtube.com/@Arxflix

👉 推特: https://x.com/arxflix

👉 LMNT (合作伙伴): https://lmnt.com/

作者:Arxflix

9t4iCUHx_400x400-1.jpg