我们之前说大模型有四种玩家,其中前三种都是要做模型训练的。而大部分公司或个人,都是在第二种开源大模型的基础上来做训练。
而这种训练方式又分为两种。一种要么就是从头训练,要么就Fine-tuning接着开源模型来训练,在基座模型已经训练好的基础上去做微调。
网上有个很火开源模型,叫羊驼。
其实是这个人Vallejo利用Meta公司开源的LLama 7B的模型微调出来的全新模型,依然是开源的。他仅仅用了52KB大小的数据集,然后把Llama训练出来的能力竟然约等于GPT-3.5,而且它的训练成本很低,不到600美金,他只是在8个80G的H100 GPU上训练3个小时,这个训练费用这个花费其实才不到100美金,更费钱的其实是数据的收集,因为他只是一个研究学者,他没有数据,于是他利用OpenAI的API,相当于调用GPT-3.5一问一答,生成了一批数据,调用API花了500美金。假如他本身就有数据的话,他可能连这500美金都不用花。可见这个微调模型的成本其实是挺低的。
下面这个羊驼就是这个模型的logo,现在羊驼的变体也出了很多,也是基于不同数据训练出来的。其实对我们大部分团队来说,如果要训练一个大模型,从头开始训练的话,得考虑清楚几点,一个是周期很长,第二是数据量会要求很多,第三个也是最重要的一个就是成本很高,这个普通玩家玩不起的,所以这也是为什么更多团队现在都倾向于做这种垂直大模型的微调。
最常用的微调方式就是这种,叫LoRA,名字挺好记的,全称是Low-Rank Adaptation of Large Language Models。当然除了这个是最主流的,还有prompt-tuning, 基于提示词的微调方法,Freeze冻结部分参数的方式来做微调等等。严格上来说,LoRA属于有监督微调(SFT)的一种。
LoRA这种方法为啥这么好呢,就是因为它节省算力资源呀,它的基本原理就是可以冻结预训练模型的全部参数权重,然后只在新增的网络层去做训练,你可以理解为做一些新增的参数训练。通俗来讲,咱们拿到这个开源模型之后,原始的参数不动,只是动新增的部分,这种微调经过LoRA这种技术一处理,除了省资源,居然效果也不错,不亚于其他不能怎么冻结参数的微调方式。而我们微调的一小部分的数据就可以根据你的兴趣来,假如说我们要训练一个治安场景的问答模型,那我就把这个行业收集的大量知识,做一个知识库用LoRA喂给大模型,我只训练这一小部分,成本即低还快。这个就叫大语言模型的低级别适应方法(LoRA)。
今天大概先分享这么多,关于LoRA的更多原理,我只能找浅显得跟大家科普下,再多的就要专业的算法专家来科普了。希望我的分享能够让你知其一二。