AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大模型训练方法论及Yi-Large的实践
发布日期:2024-07-27 08:27:34 浏览次数: 1926 来源:大模型生态圈



夸夸Yi-Large

第一个part肯定是要夸一夸自己的模型,这里用了LMSYS的成绩。现在处于各个benchmark都被刷爆的状态,LMSYS似乎成为了相对客观的一个评价标准。它会更接近大多数用户的真实体感评测(可能有人会觉得它和自己的体感不一致,所以这里是大多数,肯定很难和每个人的体感是一致的):
  • 1. 由用户自己提出问题,因此题目不是静态的,理论上想进行刷题刷分是不可能的;

  • 2. 由用户在两个匿名模型回答中选择更优的一个,尽可能保证了公平性;

  • 3. 用类似天梯的Elo评分机制,会考虑不同水平模型间的评价区分度

下面贴几个Yi-Large的成绩(直接用了ppt里的图都是5.21的截图,最近掉到第9了,不过应该还是国内第一,国际上也仅次于openai,anthropic和google)

最近也有很多人对LMSYS有一些疑问,这里也有一个我自己一直在思考的问题,大多数用户的偏好应不应该是模型优化的方向?LMSYS和我们自己在实际产品中做的A/B测试有很多的相似点,在两个答案质量相似的情况下,用户会偏向于选择答案长的那个。从我个人而言,是更喜欢简洁的答案的,但如果大多数用户都喜欢长的,模型是不是就应该回答长的?

除了LMSYS以外,让我们对自己的模型更有信心的一个signal是我们在自己的产品中对Yi-Large和GPT4做了A/B测试,用户指标(留存、付费)都没有下降,对Yi-Large和GPT3.5进行A/B测试,用户指标上升20%以上。后续针对应用对模型进行了优化,与GPT4做A/B测试,用户指标均有所上升。这也许就是应用公司有能力训练自己模型的价值吧。

这里顺道回答一下关于Yi-Large常见的问题:

  1. LMSYS里面的Yi-Large-Preview和Yi-Large有什么区别,怎么差了20多分?Yi-Large-Preview是模型的原始版,更能反映模型的真实能力;Yi-Large是API platform上的版本,为API serving做了一些优化,牺牲了一些模型性能。这里可以期待一下下一个版本,应该比Yi-Large-Preview还能有所提升

  2. 为什么Yi-Large的体感比较一般?零一万物之前主要市场是global market,在预训练中没有配足够的中文数据,所以很多问题中文可能答不对,用英文问就能对了。这个在下一版本中也会有比较大的提升。

然后就进入正题吧。

Scaling Law

没有找到Scaling Law的官方定义,就让Yi-Large写了一个。

“Scaling laws in the context of machine learning, particularly in the field of deep learning and AI, refer to empirical relationships that describe how certain performance metrics scale with various resources, such as the amount of data, the size of the model (number of parameters), or the amount of computational power. These laws are often derived from experimental results and are used to predict and guide the design of large-scale AI systems. “

简单来说,就是资源越多,模型能力越强。这个看起来是一个很显然的事情。当模型结构固定时,肯定是消耗算力多的模型能力更强。所以很多人质疑scaling law是没有道理的,质疑仅依靠scaling law就能通向agi是有可能的。

在过去几年,我们已经看到了大量模型能力随算力上升的例子了,随便放两张图:

回到论文里Scaling Law的定义,这里被最广泛引用的文章是OpenAI的Scaling Laws for Neural Language Models(其实有更早的Scaling Law的文章,来自百度研究院,但这篇的认可度更高)。

“We study empirical scaling laws for language model performance on the cross-entropy loss. The loss scales as a power-law with model size, dataset size, and the amount of compute used for training, with some trends spanning more than seven orders of magnitude. Other architectural details such as network width or depth have minimal effects within a wide range. Simple equations govern the dependence of overfitting on model/dataset size and the dependence of training speed on model size. These relationships allow us to determine the optimal allocation of a fixed compute budget. Larger models are significantly more sample efficient, such that optimally compute-efficient training involves training very large models on a relatively modest amount of data and stopping significantly before convergence.“

为了真正理解Scaling Law,最好把这篇文章反复阅读几遍,并阅读里面的大部分引用,特别是openai之前的工作,类似critical batch size这些关键定义的前置论文。

为了简化理解,主要记住文章中的公式1-5就可以。

这个公式有N多用处,这里主要讲了三个:

首先,这个公式在形式化上对广义scaling law进行了建模,这里这有两个变量N和D,其他都是需要拟合的参数,所以N越大,Loss越小(模型能力越强);同理,D越大,模型能力越强。

其次,在给定compute(算力)条件下,可以根据该公式选择最优的数据和模型参数分配。这里还要用到一个简单的compute估计公式C=6ND。当给定训练flops的时候,就可以根据这两个公式得到loss最小的组合。

这里常常会有人argue说llama3用了远超过8B模型所能承载的数据,是不是说明scaling law不work了。首先,最优参数估计只是在给定计算条件下的loss最优,当参数量固定,数据量上升的时候,根据scaling law,loss肯定是会更小的,只是compute变更大了(不满足compute optimal中compute固定的假设)。其次,训练compute和推理compute是不一样的概念。训练中的compute optimal,举个简单的例子,如果有4倍算力,扩两倍的数据和两倍的模型参数效果比单纯扩4倍数据要好。但推理中的compute optimal则是模型越小越好。但训练是一次性消耗,推理是长期的消耗。因此,现在的模型越来越考虑推理效率,通过数据量来弥补模型小带来的差距,花更多的compute在训练上,来保证推理时又有好的性能又有低的成本。

最后,是这个公式在预训练中最大的作用,预测loss。因为除了N和D之外,其他都是需要拟合的参数,我们只需要在N和D都比较小的时候无限打点,用一点点算力就可以得到一个可以预测比较大模型loss的scaling 函数了。要注意这里的loss是收敛loss,不是所有数据训练完的loss。再分享两个小tricks,1. 实践中我们的做法会固定数据来进行拟合,这样loss可比性更强;2. 拟合的时候通常会做到最后要训练的模型十分之一的size,不然用特别小的模型打点拟合出来的系数放大几千倍以后容易失真。

基于scaling law 的可预测性又可以做很多模型结构探索,训练方法探索的比较。比如大家非常关注的Mamba,RWKV,transformer,只要比较拟合的时候哪个系数更大,模型loss就更小,效果就更好。再比如我们做结构变化的时候,不同的normalization,不同的optimization方法都可以用scaling law拟合来比较,就不用担心小模型的结论不能推广到大模型上了,因为scaling law比较的是趋势,很多在小模型上比较好的方法由于斜率低,当模型变大就不管用了。

The Bitter Lesson

对The Bitter Lesson就不用多说了,建议反复阅读,全文背诵。用一句话总结就是能有效利用计算能力的方法通常会有好的效果。

在OpenAI研究员Jason Wei的一天工作的时间表中两次出现了和bitter lesson相关的内容。和OpenAI的很多员工交流的时候也多次提到了要全文背诵bitter lesson。

这里第二条还挺有意思的,每天只花5分钟思考算法的改动,然后觉得算法改动比较risky,就选择更安全的scale计算和数据的方案。

顺道分享了一个和ex-MSRA研究员讨论的斜率理论。之前的研究大多是在小算力条件下开展的,所以对一个算法,我们会更加关心算法的起点,研究的核心目标是通过各种算法、模型结构改进来提高模型的性能。在同等算力条件下,改进后的模型通常会有比较好的效果,而且扩大一些算力规模效果也都还行。但大家通常忽略了为了提高模型的起点,这些改动通常相当于给模型加入了一些prior,这些prior往往会损失算法在scale up时的斜率。当算力扩大10倍,100倍的时候,起点该来的performance gain已经远远比不上斜率带来的performance损失了。这也是为什么在scaling law时代最简单的结构往往会有更好的效果。

讲到这儿就可以说一些去年沸沸扬扬的Yi-34B抄袭llama的事情了。首先,先区分一下套壳(直接用llama模型改个名字),CPT(基于llama模型做continue pretraining)和借鉴“llama architecture”(用和llama一样的架构,用自己的数据和训练方法训练模型)。两个变量名没有改回来导致大家都以为Yi模型抄袭了llama,还故意改了名字,其实只是实验需要(谁改名字改的这么简单粗暴?),但还是要为我们开源不规范道歉。所以,Yi-34B是用自己的数据和训练方法从头开始训练的模型(这边用过的人都知道,模型参数和回答风格和llama没有半毛钱关系)。解释完这些,可以展开讨论一些借鉴“llama architecture”的事情。我自己从来不认可“llama architecture”的说法,可以看llama的paper关于“llama architecture”的部分,follow transformer结构做了三个改动:pre-normalization(from GPT3),SwiGLU(from PaLM),RoPE(from GPTneo)。也都是其他之前模型改动的组合。

所以,我更认同Yi Tay的观点,与其说是“llama architecture”不如说是“Noam architecture”,因为大多数改进和Noam都有关系。

从Yi-34B以后,大家开源模型的时候也都统一在配置文件里面用“llama architecture”来定义模型了,比如qwen、deepseek、mistral,发现这样开发者迁移成本低,模型适配简单,也算是那次争论的一个贡献吧。

有个非常有意思的点,关于“llama architecture”的三个改进,是不是也在模型上增加了prior。首先,pre-normalization在模型变大变深的时候是不如post-normalization的,我们在训练Yi-34B之前就得到了这个结论,只是在34B的size上pre-normalization还是更好一些。然后,SwiGLU是以牺牲计算效率为代价得到的训练效率的提升,在更大size的模型上是不是依然如此不是很确定(至少我们实验的size上SwiGLUE还是更优一些)。最后,RoPE其实在现在的训练中会使用5%-10%的额外算力,因此也不是free lunch,在更大size的模型上还是会慢慢变成bottleneck的。

最后,可以用OpenAI的研究员jbetker的blog来总结一下这部分。不同的模型结构在同样的数据上训练足够长的时间,都会收敛到相同的位置,diffusion,convnet,autoregressive都会收敛在一个点,唯一的区别是计算效率。所以模型的能力本质上和模型结构、超参数、优化方法都没有关系,只和数据有关,所以“ChatGPT”,“Bard”,“Claude”这些模型名字只和他们的训练数据相关。简单地说就是,数据决定了模型的智能,算法是在优化达到收敛的效率,因为算力有限,优化目标是单位算力下能产生的最大智能水平

High quality data is all you need

上面的分析其实引出了另一个重要的topic,优化数据质量。这里用了两张Yi的tech-report里描述的我们处理训练数据的流程。实际处理中,比图上看起来要复杂地多。说实话,这样的标准流程已经成为了各个大模型公司处理数据的标准流程。随着大家越来越重视数据,大家的数据质量和模型performance也都越来越高。这里面的差距更多在每一步处理的细节,每一步的细节都是魔鬼。像llama3这种用15T token才训练出这样水平的模型,肯定是忽视了很多细节。这里顺便吹个牛,给我训练llama3.1 403B四分之一的算力,就能训练出更强的模型。另外有一个小tip是一定要让训练模型的同学亲自看数据,很多大模型公司数据团队和模型团队是分开的,这个是非常不合理的。零一在初期没有启动模型训练,都是让所有算法同学亲自看数据,每个人至少看了上万条训练语料,算法同学和数据同学一起迭代了很多个版本的数据,不断提升数据质量。这应该是Yi-34B模型比其他模型效果要好的最重要的原因。

谈到数据很多人都关心数据会用尽的问题,其实这个似乎不是个问题。首先,由于llm出现,现在互联网上的数据比之前要多很多;其次,有大量的合成数据的方法;最后,多模态数据也可以提供更多的数据源。

关于合成数据有一个很有意思的现象,在用不同年份的数据训练llm的时候,发现最近几年的效果明显要好,原因就是这两年的数据中有大量llm生成的数据(比如知乎回答)。这是不是说明模型学习到的知识已经比平均水平的人要强了?

多模态数据也会是有效的数据补充,“The Platonic Representation Hypothesis”提供了一个很有趣的视角,不同模态的数据会共享表示空间。我们在多模态模型的实验中证明了,多模态数据是可以增加智能水平的,但可能不如语言数据效率那么高。比如用2T language token训练模型A,2T language token + 500B image token训练模型B,2.5T language token训练模型C,最后的performance C>B>A。

Talents

最后,讨论一些人才的问题。很多人一直以来都有一个误区大模型的核心差距在人,国内的人不如硅谷的人。但如果论智力水平、研究能力,国内的人和硅谷的差距非常小,之前大家只是缺少在大规模集群上进行分布式机器学习的经验。但随着大模型公司的投入,这方面迅速补齐以后,国内的人才和硅谷的人才其实很接近。这里可以quote deepseek的一句话“前50名顶尖人才可能不在中国,但也许我们能自己打造这样的人”。之前,国内缺少的是算法、infra、工程三位一体的人才,现在大量的new graduate,刚毕业没多久的年轻人在llm时代,在各个公司实习的时候经过了算法、infra、工程三位一体的培养,综合能力越来越强,可以说这一代人是AI native or LLM native的。还有一个很重要的点是要人均GPU数量,零一一直没有扩大算法团队的规模,就是未来保证每个算法同学能有超过1000张卡的使用量,这样才能保证研究顺利开展。

写在最后

上面的分享更多是对上一阶段LLM工作的一个总结吧,在未来的工作中也不一定适用。随着技术的发展,很多模型上的low hanging fruits已经被摘的差不多了,比如数据数量、数据质量、合成数据。我自己最近有特别强的feeling已经到了要去take比较大的risk做fundamental算法研究的时候了。上一个阶段更多的是工程能力的红利,下一阶段可能比拼更多的是研究和工程结合的红利了吧。某种意义上说,现在已经是agi的雏形了,scaling law也必然能实现agi,但效率不一定特别高,fundamental research可能能探索出一条效率更高的实现AGI甚至是super intelligence的路径。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询