← 返回资讯
苏晴
资深编辑
已审核

大语言模型LLaMA, ChatGLM, BLOOM 的

去年,我信心满满地搞来原版LLaMA-7B,想在中文指令上练练手。

大语言模型LLaMA, ChatGLM, BLOOM 的

大语言模型LLaMA, ChatGLM, BLOOM 的


第一次微调大模型,我差点把机器砸了

去年,我信心满满地搞来原版LLaMA-7B,想在中文指令上练练手。

结果你猜怎么着?模型生出来的句子,连我自己都看不懂!

“男儿何不带吴钩”——它给我拆成了四五个乱码token,读起来像外星文。

我盯着屏幕愣了三秒,心里只有一个字:靠!

后来我才知道,LLaMA的词表才32k,基本上就服务拉丁字母语言的。中文一个字它能拆成火车那么长,不乱码才怪。

那一刻我明白了:选基座模型,第一个坑就等着你跳。

所以今天,我就把这些踩过的坑、翻过的车,一个一个摊开讲给你听。

不绕弯子,直接上实操——顺便吐吐槽。


你肯定也在纠结这几个问题

1. LLaMA、ChatGLM、BLOOM……搞中文到底选哪个?

2. 全量微调跟高效微调,哪个更容易把人搞疯?

3. LoRA、prompt tuning、prefix tuning……一大堆方法,实战到底用哪个?

别急,下面每一节都有我的实测数据和血泪教训。


选基座?第一个坑就是LLaMA

说到基座模型,当初全网都在吹LLaMA,我也跟风上了。

结果中文输出像加密电报,气得我差点换行当。

后来换了Chinese LLaMA,人家扩了词表,同一个“男儿何不带吴钩”,token从24个直接干到14个。

差距肉眼可见,懂的自然懂。

所以我的建议很简单:

纯中文任务?ChatGLM-6B上手就顺,词表130k,天生中英文混训,出来的回复像正常人说的。

BLOOM词表250k,但中文效果一般,算是折中选择。

原版LLaMA?不扩词表直接放弃。

但如果你搞英文或者跨语言迁移,BLOOM的多语言能力绝对香。

说到结构,ChatGLM是Prefix Decoder,输入双向注意力,输出单向;

LLaMA和BLOOM是纯Causal Decoder。

这俩生成行为不一样,咱们后面还会扯到。


全量微调?你以为牛,其实容易崩

我之前也不信邪:什么参数高效微调,花里胡哨,哪有全量微调来得猛?

于是拿ChatGLM-6B在2万条中文指令上跑了10个epoch。

结果呢?训练损失降得漂亮,一路阶梯式下滑,我差点高兴得跳起来。

可验证损失从第3个epoch就开始反弹,第5个epoch测生成效果——

模型把训练集里的格式错误全背下来了,还吐出了一堆特殊符号。

那一刻我懂了:这叫过拟合,而且翻车翻得明明白白。

后来换成LoRA和prefix tuning,只调新增参数,预训练权重冻住。

验证损失和训练损失几乎重合,再也不跳了。

你看,全量微调除非数据量百万级且分布差异巨大,否则分分钟崩溃

现在我标配LoRA——不改原模型参数,换任务直接换权重,方便到哭。


高效微调方法,我一个一个测给你看

LoRA:稳得像老狗

我用PEFT库搞LoRA,三个基座模型都跑过。

配置简单:r=8,alpha=16,target modules加Q和V。

显存消耗比全量降了很多——7B模型全量微调,光模型权重就14GB,加上梯度和优化器,单张12GB卡根本塞不下。LoRA就能在我的3080Ti 12GB上跑起来。

效果呢?生成流畅度吊打我自己瞎写的LLaMA-adapter。

一句话:闭眼选LoRA,基本不出错。

Prompt Tuning和Prefix Tuning:看模型脸色

我在LLaMA上试prompt tuning,句子死活不通顺,经常卡住。

Prefix Tuning好一点,但也一般。

可换到BLOOM上,两个方法都活了,而且prefix tuning更香。

ChatGLM-6B上也能用,但有个毛病——回答偏短,你加“请详细回答”它还是三句话完事。

所以结论来了:图省事、通用性强,直接上LoRA;

如果模型原生支持某种prefix(比如BLOOM的ALiBi对prefix tuning友好),也可以试,但得花时间调参数。

词表扩展,别踩错节奏

Chinese LLaMA扩词表后,微调效果飞升。

但训练策略有讲究:第一阶段只训新embedding,冻结所有transformer层;第二阶段用LoRA训embedding和adapter。

我照做后,模型中文能力上了一台阶,英文能力还没掉。

你说这坑踩得值不值?


工具链里的坑,我帮你填了几个

现在有PEFT库和LLaMA-Factory,确实方便了。

前期我手写adapter代码,调shape调到秃头。后来直接上PEFT(0.5.0),一行代码拆装LoRA权重。

LLaMA-Factory也用了,支持500多种模型,YAML写配置,命令行跑。

但注意版本兼容!有一次我升级transformers到4.37,旧版LLaMA-Factory立刻罢工,排查了半天才找到原因。

而且它对自定义数据集格式要求严格,建议先用自带数据集跑通流程,再换自己的。


还有几个你可能没想过的问题

数据量要多大才管用?

我觉得高质量指令数据1万条以上就见效。LIMA论文说“Less is More”,我亲自试过:5000条精挑细选的数据,效果比2万条凑数的好太多。

学习率怎么调?

全量微调一般2e-5,LoRA从1e-4起步,预热后线性衰减。

不同模型最优值差别大,建议先跑几个小实验探路。

训练时间感受一下

LLaMA-7B用LoRA,batch size=8,序列长度512,单张3080Ti 12GB跑1个epoch约2小时。

全量微调同样配置显存直接爆,得梯度累积加更小batch size,时间翻倍。

位置编码的影响

RoPE(LLaMA/ChatGLM)微调后外推性好,ALiBi(BLOOM)在长序列上效率高。

哪个更好?看你的场景——没有绝对。


最后,给你一句能截屏带走的话

大模型虐我千百遍,我待微调如初恋。
坑踩完了,剩下的全是爽!

现在,你上手吧。

要是也碰到什么奇奇怪怪的坑,别客气,来找我聊聊——

反正,咱们都是一路被模型虐过来的朋友。

27
1366 阅读
4 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月22日 12:30

苏晴

资深编辑

科技媒体从业 8 年,曾就职于多家科技媒体。关注 AI 创业和投资赛道,采访过 50+ 位行业从业者。

读者评论 4

数据分析师 5天前
数据引用很扎实,建议补充一下近三个月的最新数据。
回复 点赞 (9)
产品经理阿杰 1周前
从产品角度看,这个方向确实有机会,但商业化路径还需要验证。
回复 点赞 (15)
张工 1周前
写得很实在,特别是实测对比那部分,跟我自己的使用感受一致。
回复 点赞 (12)
前端工程师 2周前
代码示例很清晰,直接用到项目里了。
回复 点赞 (6)