Dettmers 提出了一种高效的微调方法 QLoRA,它能够在保持完整的 16 位微调任务性能的同时,将内存使用量降低到足以在单个 48GB GPU 上微调 65B 参数模型的程度。
QLoRA 通过在低秩适配器(LoRA)中将梯度反向传播到一个冻结的、4 位量化的预训练语言模型。我们最优秀的模型家族,我们将其命名为 Guanaco,在 Vicuna 基准测试中胜过之前所有公开发布的模型,达到了 ChatGPT 性能水平的 99.3%,而仅需要在单个 GPU 上进行 24 小时的微调。QLoRA 在不牺牲性能的前提下采用了许多创新技术来节省内存:
(a)4 位 NormalFloat(NF4),一种对于正态分布权重来说,从信息理论角度具有最优性的新数据类型;
(b)双重量化,通过量化量化常数来减少平均内存占用;
(c)分页优化器,以管理内存峰值。我们使用 QLoRA 对超过 1000 个模型进行微调,在 8 个指令数据集中,对多种模型类型(LLaMA,T5)以及在常规微调中难以运行的模型规模(例如 33B 和 65B 参数模型)进行了详细的指令跟随和聊天机器人性能分析。
结果表明,QLoRA 在小型高质量数据集上的微调可以达到最先进的结果,即使使用比之前 SoTA 更小的模型。我们根据人类评估和 GPT- 4 评估结果,对聊天机器人性能进行了详细分析,结果表明 GPT- 4 评估是一种廉价且合理的人类评估替代方案。此外,当前的聊天机器人基准测试并不可靠,无法准确评估聊天机器人的性能水平。已发布了所有模型和代码,包括用于 4 位训练的 CUDA 内核。
artidoro/qlora: QLoRA: Efficient Finetuning of Quantized LLMs (github.com)