【LLM系列之踩坑记】你训练的大模型生成长度真的变短了吗

最近在忙着对LLama做中文增强训练,结果中文词表扩充继续预训练以及指令数据有监督微调之后,与知识库、检索内容结合的时候发现了一些有意思的现象,也在群里大家简单交流过,那么接下来笔者结合一些训练经历分享一些经验之谈,因为大家训练策略不同、数据不同,所以建议大家作为训练前的参考经验。

首先,检索问答的提示是这样的:

问题:北京高考真的更容易吗?\n
请结合以下支撑信息,回答上述问题:
支撑信息:\n
[1]考到较低和中等分数(<660)很容易;考到较高分(670-680)高分(680-690)和极高分(690-710)不会比全国I卷容易。(本人做过全国I,II,III,江苏,上海,天津等卷,较为客观)xxx
...
[n]是的,更容易,但不是因为某些人吹的什么“北京卷简单”“人大附中的学生转学来衡水月考当场崩溃(这条拿肚脐眼想都知道是假的)”。xxxxxxx

然后输入到大模型去做回答,想必这里如何检索知识结合的提示是容易构造的,或者结合我们sft数据的模式去构造也可以。

然后发现的问题是检索模型召回出的知识对大模型的生成效果是有影响的,那么直观就是自己训练的大模型生成的答案太短了。想到这里我们是不是崩溃了,花了算力和精力,废了老大劲训练xxxgpt效果这么差,怎么交差呢。

别慌!我们还有补救措施,首先你可以想到的是sft的数据是不是比较短、指令是否单一、是否涵盖一些续写生成的场景等,然后我们可以筛选一下数据,比如根据输出答案长度保留出字符个数比较多的,其实500字已经满足我们视觉效果了。其次,我们也可以构造一些搜索+生成的指令数据,这个需要注意的是答案怎么得到,可能检索文档基于本地检索系统或者搜索引擎去召回就可以,答案尽量是高质量的gpt4生成的,因为到时候我们是学习第一名的效果,那么我们近逼第一名的能力的,这个毋庸置疑。

好了!假设基于上述一些筛选后的“高质量”数据微调之后,我们发现效果还是不理想,模型输出的长度还是倾向比较短,相比chatgpt、百亿级的模型效果还是弱,那怎么办?这个时候我们还是得分析底座的能力。首先我们选用底座的上下文窗口是多大,像前期第一波涌现的LLama-7b,bloom、chatglm等都是2048,那么相比chatglm2-6b、baichuan-7b以及最近的llama2-7b都是4096,足足差了一倍。另外llama-7b在中文增强训练后效果未必那么差,经过一些测试发现:
(1)检索的知识很垃圾的时候,chatgpt或者百亿级别以上的大模型回答的照样很好,是直接大模型学习过的视野内输出出来的
【LLM系列之踩坑记】你训练的大模型生成长度真的变短了吗_第1张图片

(2)检索知识不好的时候会影响7b大模型的效果,生成长度就比较短,这方面可能还没训练好,怎么让大模型有拒绝的能力
【LLM系列之踩坑记】你训练的大模型生成长度真的变短了吗_第2张图片

(3)大模型不受检索知识影响的情况下,生成长度还是可以的,下面是测试效果

非洲土地肥沃,为什么很多非洲人宁可挨饿也不种地?

1. 缺乏知识和技能:许多非洲农民没有受过农业培训或专业教育。他们可能不知道如何种植作物、管理土壤和灌溉系统等基本知识。
2. 经济条件不佳:由于贫困和不良基础设施等原因, 一些农户无法获得必要的种子、化肥和其他农业生产工具。
3. 文化因素:一些传统文化认为耕作是女性责任,男性则专注于狩猎采集活动。
4. 政府政策问题:政府往往未能提供足够的支持来帮助农民提高生产效率并改善他们的生活水平。
5. 农业技术落后:在非洲的一些地区,传统的农用机械设备已经过时且难以维修维护,这限制了农田的产量和质量。

(4)模型解码超参数对生成性能有影响
下面是两组解码参数,配置2相比配置1可以使模型生成更加多样灵活,随机性更强,生成文本偏长
【LLM系列之踩坑记】你训练的大模型生成长度真的变短了吗_第3张图片
用自由度更高的解码参数可以提升gogpt-7b文本生成的长度,本身去做问答应该没问题。
【LLM系列之踩坑记】你训练的大模型生成长度真的变短了吗_第4张图片
然后总结一下就是:
(1)知识注入对大模型的影响有好有坏,这个和底座基础效果、检索准确性、数据质量有关系
(2)训练大模型的时候尽量去拟合比较好的数据,这个好的数据可以是高昂成本人工标注的数据,也可以是chatgpt生成的数据
(3)训练后的模型效果要细致分析,不要着急下结论,在同等量级下70亿左右的模型表现算是正常的。有算力的情况下 尽量训练大上下文窗口和大参数量的模型

你可能感兴趣的:(人工智能)