赞
踩
以上对硬件资源+数据 的消耗也是不同的:
目前很多没有技术团队的大模型解决方案,会以【基础达模型微调】+【向量知识库】为主。
以下是垂直领域可能会覆盖的任务:
如果选择【重新训练大模型】那要面临的资源需求变得异常苛刻:
垂直领域最难的应该就是准备数据,现在基本上都是这样的指令数据结构:
{"instruction": instruction, "input": input, "output": output}
如果你只有5k数据,建议你在Chat模型上进行微调;
如果你有10w数据,建议你在Base模型上进行微调。
同时在训练的时候,如果是chat需要保持与之前chat模型一致的数据结构
【重新训练的训练数据配比很重要】
BloombergerGPT,就会发现模型的能力其实很差,比通用大模型会差很多。这里面犯的最大的错误就是数据配比,他们应该是用1:1的比例混合通用数据和金融数据。
首先,不知道他们对金融数据是如何清洗和保证数据质量的,个人觉得他们500B的金融数据质量可能是低于500B的通用数据的质量的,这个对模型最后能力的局限有比较大的影响,通用数据和金融数据必须是用同样的标准做了高质量清洗和质量控制的。
其次,1:1的数据比例大概率是一个很差的选择。对于复现chatgpt3.5来说,数据配比应该是OpenAI最核心的秘密和比别人领先最后的地方。和很多OpenAI的人员交流下来,他们在这块做了大量的实验并积累了大量的经验。
【二次预训练】领域数据比例要在15%以下
对continue pretraining来说,如果要让模型不丢失通用能力,比如summarization,qa等,「领域数据的比例要在15%以下」,一旦超过这个阈值,模型的通用能力会下降很明显。
和不少同行交流下来,感觉大家的范围都在10%-15%左右。而且,该阈值和预训练模型的大小,预训练时原始数据的比例等条件都息息相关,需要在实践中反复修正(这个时候就能看出scaling law的重要性了)。
这个结果其实和ChatGPT大概用不到10%的中文数据就能得到一个很不错的中文模型的结果还挺相似的。
这个经验也告诉我们不要轻易用continue pretraing或者from scratch pretraining的方法做行业大模型,每100B的领域数据,需要配上700B-1000B的通用数据,这比直接训练通用大模型要困难多了。
【基础大模型微调】大概领域数据和通用数据比例在1:1的时候还是有不错的效果的
对sft来说,这个比例就可以提高不少,大概领域数据和通用数据比例在1:1的时候还是有不错的效果的。当然,如果sft的数据量少,混不混数据的差别就不太大了。所以说,做pretraining不仅耗资源,需要大量的卡和数据,还需要大量的实验去调数据配比。每次有人和我说通过pretraining的方法做了行业大模型的时候,我通常是不信的。做sft不是香多了吗?
领域数据训练后,往往通用能力会有所下降,需要混合通用数据以缓解模型遗忘通用能力。
如果仅用领域数据进行模型训练,模型很容易出现灾难性遗忘现象,通常在领域训练过程中加入通用数据。那么这个比例多少比较合适呢?目前还没有一个准确的答案,BloombergGPT(从头预训练)预训练金融和通用数据比例基本上为1:1,ChatHome(继续预训练)发现领域:通用数据比例为1:5时最优。个人感觉应该跟领域数据量有关,当数据量没有那多时,一般数据比例在1:5到1:10之间是比较合适的。
现有大模型在预训练过程中都会加入书籍、论文等数据,那么在领域预训练时这两种数据其实也是必不可少的,主要是因为这些数据的数据质量较高、领域强相关、知识覆盖率(密度)大,可以让模型更适应考试。当然不是说其他数据不是关键,比如领域相关网站内容、新闻内容都是重要数据,只不过个人看来,在领域上的重要性或者知识密度不如书籍和技术标准。
大模型的训练成本,以GPT-3为例:GPT-3需要400-500个A100/年(用400-500张A100训1年),假设不买显卡,租公有云,现在8张A100包年的价格大概一年80万,一次性走量打五折40万,训练GPT-3的成本大概是2500万人民币。
上面的讨论是按照GPU跑满100%的使用率来计算,实际上GPU永远是有被浪费的时候,浪费的原因可能是:
上一条先在在小模型上做实验的方法,又会遇到在小模型上的实验挺好,但一到100B这个级别就会发现各种loss的不收敛/猛增/飞掉的问题。采用的策略可能是回退几步,或者扔掉这一部分数据,然后接着往前走。
FP32/FP16/BF16的选择问题:更倾向于BF16,因为看起来更好收敛。
在硬件的选择上,尽可能用最先进的显卡进行训练,因为:第一,性能上的差异巨大,以A800和H100为例,算力差了六倍,然后通信带宽也差了两倍;第二,在落后的显卡上去训练,需要考虑更多的分布式问题,而将来迁移到高端显卡上的时候,在老显卡上累积的经验能直接用上的不多。
并行计算方案的选择:Megatron-DeepSpeed是现在比较SOTA的一个方案。
团队组织上:算法研究员们更喜欢用Pytorch去反复调它的模型架构,但最后还需要工程人员把这些调整翻译到Megatron这套框架上,因此现阶段更倾向于算法人员和工程人员大家彼此知识是交融的,坐下来一起去讨论如何去实现。
通过人工标注,然后纯做finetune,可以达到八成效果。但是想走的更远的话,那只能靠强化学习。
奖励模型(RM)训练叫做reward hacking的现象,开放的决策对于模拟打分环境来说难度太大了,对奖励模型的泛化程度有极其高的要求。最终大概率你的模型学习到了输出一堆没什么用的东西,但是RM分数很高。这就是reward hacking(来自 【大模型训练的一些坑点和判断】 )
评估的问题:同时模型的评估也是一个可能会有坑点的地方:
评估做不好 = 费钱费时;所以你做实验慢了,相当于比别人少了GPU
过拟合的问题:只用领域数据非常容易过拟合到领域数据上,对OOD的处理会表现的非常差。对各个环节的数据配比要求会很高,最好是在原来规模程度的数据上,增加额外的场景数据,重新走部分流程。但是困难的是,原有数据保持分布的采样,你拿到的模型是个黑盒,别人并没有给你原始的数据分布,更何况海涉及到了惊细的清洗。有可能整体要付出的成本不下于重新塑造一个通用大模型。
有这么三种大模型训练的方式:无参、少参数、全参数
无参数:
全参方法
少参数:
大模型训练团队的人员配置:
大模型项目团队和传统的大项目团队最大的不同在于:传统的大项目需要堆一大批人;而大模型的特点是极少量的idea要指挥的动极大的资源,因此团队必然精简,不可能使用人海战术。
根据BigScience的经验,可以总结出几种类型的团队人员配置:
【播客笔记】大模型是如何炼成的-训练篇
大模型训练的一些坑点和判断
垂直领域大模型的一些思考及开源模型汇总
大模型LLM微调经验总结&项目更新
领域大模型-训练Trick&落地思考
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。