QA-LoRA:在你的GPU上对一个量化的大型语言模型进行微调

QA-LoRA:在您的GPU上微调量子化大型语言模型

量化感知微调

作者插图 - 使用Pixabay图片制作(1,2)

最先进的大型语言模型(LLM)预先训练了数十亿个参数。尽管预先训练的LLM可以执行许多任务,但通过微调可以显著提高其性能。

由于LoRA,微调成本可以大大降低。LoRA在冻结的原始参数之上添加了低秩张量,即一小部分参数(数百万个)。只有添加的张量中的参数在微调过程中进行训练。

LoRA仍然需要将模型加载到内存中。为了降低内存成本并加快微调速度,一种新的方法提出了量化感知LoRA(QA-LoRA)微调。

在这篇文章中,我将解释QA-LoRA,并与之前的工作(尤其是QLoRA)进行性能比较。我还会展示如何使用QA-LoRA来微调你自己的量化感知LoRA,用于Llama 2。

QLoRA有什么问题?

在已经可以使用QLoRA对量化LLM进行微调。在我的以前的文章中,我经常使用它来微调LLMs,例如,Llama 2和GPT-NeoX,在我的台式计算机上或使用Google Colab的免费实例。

使用QLoRa和TRL在计算机上微调Llama 2

在Guanaco上和正确的填充方式

kaitchup.substack.com

在深入研究QA-LoRA之前,了解QLoRA的当前限制是很有意思的。

NormalFloat4(NF4)量化

LLM量化算法通常使用INT4数据类型将参数量化为4位精度。使用这种数据类型的计算在最新的GPU上越来越优化。

QLoRA默认情况下不使用INT4,而是使用NormalFloat4(NF4)这种数据类型。你可以将其看作是一种压缩的浮点数。根据QLoRA的作者,NF4优于INT4。使用NF4量化的LLMs可以获得更低的困惑度。

然而,NF4的计算对于快速推断来说不是最优的。这就是为什么……