当前位置:首页|资讯|ChatGPT

【AI杂谈】如何对“废物”模型进行再利用

作者:花师小哲-中二发布时间:2023-12-19

最近真的没什么特别想法专栏的好玩的论文,有些论文挺有趣的但是三两句话就能讲清楚,所以还是杂谈下一个问题,就是模型怎么做废物利用。

这好像是我的第200篇专栏了,也当做是个小的年度大模型小感悟吧。


1.数量极其庞大的模型

虽然我们说像GPT-3那样千亿级参数的模型训练起来就是烧钱工程,但实际上还是有很多公司是能够烧的起来的,实在不行就做7B(70亿参数)嘛,一两个GPU就能训练起来的模型。

所以虽然ChatGPT其实是去年11月底的东西了,但2023年才算是大模型元年,这一年不管国内还是国外都出现了一大批模型。其实国内模型很多还挺强的,例如文心已经迭代到4.0了,现在是能碰碰ChatGPT的,甚至谷歌Gemini都是用了文心模型或者文心数据(下图是我自己昨天的实测,顺便分享下一个插曲,在Gemini刚出来的时候有朋友在朋友圈发Gemini推送,配文“谷歌领头羊回来了”,然后昨天导师回复“好像没回来哈哈”),Qwen-72B也算是70B这个规模下最强的模型之一了,甚至可能比著名的LLaMA 2还强。

但这就带来一个问题,训练过程中其实一定会出现很多性能不佳的模型,或者说性能不佳的checkpoint(后面就称为CP了),这些CP怎么用。


2.模型参数融合

其实早在BERT时代,甚至更早,就有人试过各种模型参数融合的方法了,最简单的就是加权平均。

假设我们训练过程中有三个存档点:CP1、CP2、CP3,而按照一般的逻辑我们还需要继续训练到CP4才能获得满意的模型,但有方法指出我们可以直接对CP1、CP2、CP3平均一下,得到一个模型,这个模型往往性能还很不错,且具有不错的泛化性能。

当然,我们可以尝试从理论上解释,虽然我们追求泛化,但性能还是第一目标,因为这两个实际上是有矛盾的,因为最泛化的情况实际就是随机。这个不难理解,就像做选择题,随机那真的是一视同仁,不管是任何问题表现都是一样的,真正的泛化的真谛。而我们追求的泛化实际上依然是某个领域上的泛化,并且某种程度上来说只是性能的附属。从这个角度来说,最终增强泛化的途径可能就剩下往死里堆任务量,也就是现在大模型预训练和多任务微调的路了。

回到正题,因为CP1相对于CP3来说泛化性能会更好,所以平均一下确实可能会增强模型的泛化能力,不过至于为什么很多时候还能提升性能,这可能就和集成、蒸馏、自蒸馏一样,稍微成谜了。


除了上面简单的平均,还有加权平均,例如最近的LM-Cocktail: Resilient Tuning of Language Models via Model Merging,就是根据几个模型在目标任务上的表现赋予权重。


初次之外,还有做加权和的,例如Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch,不过这个是要求德尔塔参数(就是微调模型后的参数与原始参数的差)尽可能稀疏。


当然还有更“邪门”的,Knowledge is a Region in Weight Space for Finetuned Language Models,研究发现在同一个数据集上训练的不同模型在权重空间中组成一个紧密的簇,而在相同基础任务的不同数据集上进行微调的模型则形成一个较松散的簇。此外,通过在模型之间遍历该区域,可以得到在原始模型未经微调的任务上表现相当甚至更好的新模型。可惜用的模型不大,不知道大模型会不会也有这种情况。


3.MoE

最近比较火的开源MoE模型——Mixtral 8x7B实际上也可以看作是废物利用,MoE是可以把多个性能并不是最好的模型做初始化,在此基础上预训练的。这里的“并不是最好”并不意味着每个模型在所有方面都不如别人(很正常,包括ChatGPT的各个版本,实际上不同任务上的性能都是动态变化的,实际上并没有出现所有任务都有普遍提升的情况),相反,可以让MoE保持多样性。


4.结语

总的来说,一些训练过程中的“废品”模型并不一定没用,我们是可以想一些办法把它们用起来的,毕竟这“废品”的成本也都不低。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1