在我们最近的几篇文章中,我们一直在提到围绕大型语言和生成 AI 模型的炒作,以及如何减少推理和训练时间。随着我们的用户开始使用这些模型并对其进行微调,他们自然希望微调和部署包含数千亿参数的模型,以提高其特定用例的性能。
通常,这是一项要求非常高的任务,需要大量计算和 40GB 检查点的存储。这在普通计算机硬件上是不可行的。除了所需的电力和存储之外,这种性质的微调模型需要很长时间才能运行,而且本质上非常昂贵——直到现在。
介绍Huggingface的PEFT库,该库支持LoRA、Prefix Tuning等Parameter Efficient Fine-tuning方法,无需对所有模型参数进行微调,即可使预训练语言模型高效适配各种下游应用。这些不同的技术实现了与完全微调相当的性能。
PEFT方法
自然语言处理的一个重要范例包括对一般领域数据的大规模预训练和对特定任务或领域的适应。在进行微调时,我们会更新目标任务的整套模型参数。虽然微调获得了良好的性能,但它在训练过程中会消耗内存,因为必须存储所有参数的梯度和优化器状态。此外,在推理期间为每个任务保留模型参数的副本是不方便的,因为预训练模型通常很大。
目前 PEFT 库支持 4 种方法,LoRA、Prefix Tuning、P-Tuning和Prompt Tuning。尽管这些方法有细微差别,但它们都围绕着相似的范例展开。他们冻结预训练的模型权重,只更新参数权重的一个子集。以前,现有技术通常通过扩展模型深度或减少模型可用序列长度来引入延迟。因此,这些方法以前无法匹配微调基线,从而在效率和模型质量之间进行权衡。
例如,使用LoRA,它冻结了预训练的模型权重,并将可训练的秩分解矩阵注入Transformer架构的每一层,大大