LoRA 是一种参数高效微调(PEFT)方法。它会在冻结的大型语言模型(LLM)基础上添加少量可训练参数。由于只需训练新增参数,LoRA 能大幅节省内存。
QLoRA 是更节省内存的方法,它在添加可训练参数前会对基础 LLM 进行量化处理。
通常在进行 QLoRA 训练时,仅保存适配器的参数。之后我们有两种不同的方法来使用适配器进行推理:
- 将其加载到基础 LLM 之上
- 将其合并到基础 LLM 中
在加载适配器的同时保留基础模型非常方便,因为我们可以轻松地几乎无缝地用另一个适配器替换当前适配器。此外,由于适配器体积小,它们易于存储和分发。
我们也可以将 LoRA 适配器合并到基础 LLMs 中,例如,为了使模型更易于使用、隐藏适配器,或者便于在合并后的模型上训练另一个适配器。LoRA 的作者们证明,将 LoRA 适配器合并到基础模型可以完美实现,即不会造成性能损失。
然而,对于 QLoRA 和量化 LLMs 的情况,这种方法效果不佳。
我们发现这些方法都存在缺陷。撰写本文时,若要将适配器直接合并到经 QLoRA 微调的 4 位量化 LLM 中尚不可行,必须对模型进行反量化处理才能实现合并操作。
如今随着 PEFT 库最新版本的发布,我们已经能够直接将 LoRA 适配器合并到 4 位 LLM 中。这看似非常便捷...
但这样