提纲
1 简介
2 为什么要用大模型?
3 普通玩家玩得起大模型吗?
4 万物皆可大模型?
5 总结
1 简介
回想起自己第一次有大模型这个概念还是在接触到Bert的时候,当时还在实习的自己还分不清Bert跟GPT的区别, **短短几年时间,从曾经上亿参数量的Bert,到现在动辄千亿或者上亿的大模型,普通玩家直呼惹不起** 。但是所谓的大模型真的惹不起吗,大模型的魅力又在哪里,在这里我想站在一个普通玩家的角度上谈谈一些关于大模型的想法,仅供参考。
2 为什么要用大模型?
a) 实力至上
想起爱情公寓里的一句台词,一寸长,一寸强。 **从海量语料中训练得到的大模型,能学到强大的通用知识跟能力,在大部分下游任务中,只要使用妥当,它的效果妥妥领先,这大概就是站在巨人的肩膀上的效果吧。** 多做点NLP任务后,你会发现,不同数据集的难度不尽相同,在有的任务,有的场景下,不管你在小模型上用上多酷炫的训练技巧的,它的效果远不能令人满意。例如在阅读理解等复杂任务下,目前来看只有大模型才能可能给出答案。另外,在很多few-shot或者zero-shot的场景下,大模型具有明显优势。
b) 噱头十足
简历上写个大模型跟个MLP网络,你觉得哪个比较加分,哪个比较让人感兴趣?宣传自己的成果里,写个大模型,跟写个正则表达式,哪个更让业务满意?
3 普通玩家玩得起大模型吗?
对于普通玩家而言,重新训练大模型是不切实际的事情,大部分时候我们能做的只是在开源大模型的基础上做进一步的finutune,以适配自己的任务场景,一开始的finetune是更新训练全部模型参数,但这被证明为一种抵销的参数更新方式,目前更加主流的是只更新的部分模型参数的方法,详情可见之前
Parameter-efficient transfer learning系列 。为此需要的成本,包括训练成本跟推理成本。
a) 训练成本
大部分的finetune预训练任务都是需要标注数据的,而标注数据是需要成本的。但是随着数据增强,半监督等方法的不断改进,在标注数据不足的情况下也能保证模型性能。更有甚者,在有的任务下,通过无监督学习finetune的模型性能已经可以匹配监督学习方法。对于训练时间而言,传统的finetune是更新模型的全部参数(只更新模型最后参数的方式在很多任务下会遭遇较大的性能损失),但是包括prefix tuning, Adapter等在内的parameter-efficie t的方法在固定语言模型大部分模型参数的条件下已经达到了媲美更新全部参数的finetune,甚至超过,这样就可以大大缩短模型训练时间。另外,随着硬件设备的不断迭代,目前的模型训练算力也在不断提升。
b) 推理成本
一方面目前有很多深度学习模型部署的框架,方便普通玩家自主完成模型部署,另一方面随着蒸馏学习,量化等方式的不断优化,大模型的规模被合理压缩,推理时间也被极具的缩短。
**所以对于普通玩家而言,大模型绝对是可以用得起。**
4 万物皆可大模型?
不提倡这种无脑大模型的做法。一方面,对于有的任务,大模型不是唯一的答案。简单的任务,可以用小模型轻易的解决的,就没必要上大模型了吧。虽然大模型看起来酷炫无比,但是你用天河计算器去算1+1=2真的有必要吗?回想自己第一次使用大模型的初衷,难道不是因为使用其他方法遇到了瓶颈,把所有希望寄托于大模型才去尝试的嘛?在面试或者被面试的时候,涉及大模型的项目一般也会聊到使用它的初衷,总要有个合理的动机吧。另一方面,对于类似医学这类非常专业的领域场景,在通用领域上训练的大模型的效果也不尽人意。
我个人是蛮反感万物皆大模型的做法的,即便经过优化,目前而言大模型的成本还是高于那些非常轻量的小模型的,就跟谈恋爱一样,合适才是最终的答案。
5 总结
**随着软件跟硬件技术的不断发展,前几年的“大模型”其实已经被普遍用起来了,相信在不久的将来,超万亿的大模型也会进入寻常百姓家。但是还是要明白使用大模型的初衷,不用为了用大模型而用大模型,在正确的场景下去使用才是合理的做法。**