作者: 引线小白-本文永久链接:httpss://www.limoncc.com/post/8d670d28c70bf231/
知识共享许可协议: 本博客采用署名-非商业-禁止演绎4.0国际许可证
摘要: 本文意在理清如何微调大语言模型的十个问题。若有错误,请大家指正。
关键词:如何微调大语言模型
,LoRA
,QLoRA
[TOC]
Q1: 超参数如何设定?
简单任务rank=16,alpha=32一般就ok了,Lightning AI有一篇技术分享专门讨论了,lora的参数设定问题。
Finetuning LLMs with LoRA and QLoRA: Insights from Hundreds of Experiments
LoRA超参数设定
Q2:sft微调需要多少数据
根据任务难度,设定。这句话有点废。具体点,任务难度可以根据模型计算困惑度来衡量。你可以和一般任务对比,自行摸索一个阀值。这是定量。定性,如果提示词能够解决,难度较低,如果通过提示词不能解决,难度是有点,是中等,还是高根据模型已有的先验知识来定。所以一般难度100-300条数据就ok了,中等,困难问题一般需要1000以上,这个以上可能是3000,8000,1w或者10w加。你说任务难度和数据量有没有定性关系, 如果你算力够,又想搞研究写论文,你可以探索一下任务难度指标如何定义,已经和特定模型需要的sft数据量是什么关系。也许已经有论文了,我没看到
Q3: 学习率如何调整
一般lora微调学习率都设定为1e-4,其实很多时候,你要根据loss的情况,调高,或者调低,震荡比较大就调低,太慢就调高。根据任务酌情设定。
Q4: 总是学不会,怎么办
如果你在各种超参数后,效果还是不理想。你第一个反思的应该是你的数据集和你想要的结果是否真的匹配,或者你的指令是否是模型友好的(困惑度比较低),或者你的数据存在不平衡。对,没错大模型时代数据平衡也还是很重要的。所以所谓高质量数据集并不是客户场景,或者业务场景有很多数据就够了。最后一公里其实是针对任务模型友好的数据集,能让模型快速学会。这就像一个好老师,一点就通。而差老师怎么教,你还是不会。
Q5: 听说sft微调的越多,遗忘的越多
是的,不过对于小任务,rank比较低(例如8,16)的任务,影响还是有有限的。一般很少掉点明显。如果有你可以混合一些你想保留的原子能力的数据进去。
Q6: 如何才能一次性微调想要模型学习到多个能力
肯定是可以的,注意相关性和比例,数据集必须是一个好老师,然后还要注意到我提到的以上内容。另外你也可以通过多阶段sft的方式学习多个能力。
Q7: 微调需要很久么,需要多少GPU,普通企业能不能玩
Qlora微调7b模型并不需要很多GPU,也不需要很久。一台12G显存的GPU即可,30分钟-2小时,对于中等任务而言。现在市面是4090租赁价格不过2元/小时。所以硬性成本不高。高的是针对特定能力的高质量数据集如果构建,以及能做微调的人才。我甚至和同时开玩笑说,我失业了我就去卖高质量数据集,我的广告词就是
买我的数据集,微调一小时,能力全都有!主要一个省心省力,按能力大小和数据集制作成本收费。
Q8: 处理sft微调,还能做其他微调么
有的,我们都知道RLHF,这个成本比较高,但是DPO和ORPO,针对偏好微调成本就低很多了。尤其ORPO和sft的成本几乎一样。唯一不同的是数据集需要有偏好对。而且偏好微调一个重要的特点是可以克服遗忘,sft是微调参数越多,遗忘越大。所以如果你想保留通用能力,偏好微调是比指令微调更好的选择。缺点就是数据集的制作成本高。偏好对要做到高质量是有难度的。
Q9: 微调用什么框架
如果你是大神,自己手搓trainer,如果是你高手,对模型比较懂,那就自己写peft,trl的trainer。如果你是专门做落地的,高应用的,没那么多时间手搓代码,你可以用诸如LLaMA-Factory、阿里的swift,书生xtuner、Firefly等,有很多。
Q10: 在实践中如何选择做提示词工程、RAG知识库、微调
一张图解决你的困惑
提示词工程、RAG知识库、微调
版权声明 | |
由引线小白创作并维护的柠檬CC博客采用署名-非商业-禁止演绎4.0国际许可证。 本文首发于柠檬CC [ https://www.limoncc.com ] , 版权所有、侵权必究。 | |
本文永久链接 | httpss://www.limoncc.com/post/8d670d28c70bf231/ |
如果您需要引用本文,请参考: |
引线小白. (Jun. 21, 2024). 《如何微调十问——大语言模型研究03》[Blog post]. Retrieved from https://www.limoncc.com/post/8d670d28c70bf231 |
@online{limoncc-8d670d28c70bf231, title={如何微调十问——大语言模型研究03}, author={引线小白}, year={2024}, month={Jun}, date={21}, url={\url{https://www.limoncc.com/post/8d670d28c70bf231}}, } |