使用LoRA和QLoRA微调LLMs:数百次实验的见解

本文围绕使用LoRA和QLoRA微调大语言模型展开,介绍评估任务和数据集,基于Lit - GPT存储库进行实验。探讨选择基础模型、评估LoRA默认值、用QLoRA节省内存等内容,还研究学习率调度、多次迭代数据集及超参数调节,发现QLoRA可节省内存,优化设置能提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  • 翻译文章《Finetuning LLMs with LoRA and QLoRA: Insights from Hundreds of Experiments》原文地址
  • 因译者水平有限,翻译过程中有错误请在评论区指出

提要

LoRA是用于训练自定义LLM的最广泛使用、参数效率最高的微调技术之一。从使用QLoRA节省内存到选择最佳 LoRA设置,本文为有兴趣应用它的人提供了实用的见解。

引言:充分利用LoRA

在过去的几个月里,我已经进行了数百次涉及LoRA的实验。几周前,我花时间深入研究了一些LoRA超参数的选择。

这更像是一本按顺序呈现的实验日记。我希望它对一些人有用。具体来说,我的目标是解决有关QLoRA的价值、是否用SGD替换AdamWscheduler的潜在用途以及如何调整LoRA超参数的问题。

实验方面有很多内容需要讨论,因此我将简要介绍LoRA

简而言之,LoRALow-Rank Adaptation的缩写(Hu et al 2021),他在模型中添加少量可训练参数,而原始模型参数保持冻结。

LoRA将权重矩阵分解为两个较小的权重矩阵,如下图所示,以以更有效的参数方式近似于完全监督微调。
在这里插入图片描述
有关LoRA的更多详细信息,请参阅我的深度解析文章Parameter-Efficient LLM Finetuning With Low-Rank Adaptation (LoRA)

我们将在本文中讨论以下主题:

  1. 评估任务和数据集
  2. 代码框架
  3. 选择良好的基础模型
  4. 评估LoRA默认值
  5. 使用QLoRA节省内存
  6. 学习率调度(scheduler)计划和SGD
  7. 多次迭代数据集
  8. LoRA超参数调节(一):训练所有层的LoRA
  9. LoRA超参数调节(二):增加R
  10. LoRA超参数调节(三):更改Alpha
  11. LoRA超参数调节(四):非常大的R
  12. 排行榜展示
  13. 结论

评估任务和数据集

本文的重点是选择最佳参数。为了保持在合理的范围内,我保持数据集固定,并仅专注于LLMs的监督指令微调(SFT

对于模型评估,我从Eleuther AI评估工具中选择了一小部分任务,包括TruthfulQABLiMP CausativeMMLU Global Facts以及具有两位数(算术 2ds)和四位数字(算术 4ds)的简单算术任务。

在每个基准测试中,模型性能得分都标准化在0和1之间,其中1是满分。TruthfulQA展示两个分数,定义如下:

  • MSC1:给定一个问题和4~5个答案选项,选择唯一正确的答案。模型选择的答案是它认为完成问题的对数概率最高的答案选项,与其他答案选项无关。得分即为所有问题的简单准确率。
  • MSC2:给定一个问题和多个真/假参考答案,得分就是分配给一组真答案的归一化总概率。

作为参考,175B GPT-3模型的TruthfulQA MC1和MC2值分别为0.21和0.33。

下面通过两个例子来说明算术2ds和算术4ds之间的区别:

  • 算术2ds:“59减38等于多少”。“21”
  • 算术4ds:“2762加2751等于多少”。“5513”

如上所述,我保持数据集固定,使用经过充分研究或相当常用的Alpaca 数据集进行监督指令微调。当然,还有许多其他数据集可用于指令微调,包括LIMADollyLongFormFLAN等。当然,探索多个数据集和数据集混合的训练将是未来研究的一个有趣的主题。

Alpaca数据集由大约50k个用于训练的指令-响应对组成,输入长度的中位数为110个token(使用Llama 2 SentencePiece tokenizer),如下面的直方图所示。

在这里插入图片描述
数据集任务本身的结构如下图所示。
在这里插入图片描述

代码框架

我在本文中使用的自定义LLM微调代码基于开源的Lit-GPT存储库。为了使本文保持简短,我不会详细介绍使用细节,但您可以在此处的Lit-GPT教程部分找到更详细的介绍。

简单来说,用法如下:

(1)克隆存储库并安装依赖

git clone https://github.com/Lightning-AI/lit-gpt 

cd lit-gpt 

pip install -rrequirements.txt

(2)下载模型权重文件

python scripts/download.py \
  --repo_id mistralai/Mistral-7B-Instruct-v0.1

python scripts/convert_hf_checkpoint.py \
  --checkpoint_dir checkpoints/mistralai/Mistral-7B-Instruct-v0.1

(3)准备数据集

python scripts/prepare_alpaca.py \
  --checkpoint_dir checkpoints/mistralai/Mistral-7B-Instruct-v0.1

# 也可以加载本地CSV文件
python scripts/prepare_csv.py 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽星_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值