浪潮吴韶华|源2.0在大模型算法、数据与算力上的探索与实践演讲全文

浪潮吴韶华|源2.0在大模型算法、数据与算力上的探索与实践演讲全文

大家好,很荣幸今天能在这里跟大家一起分享源2.0在大模型算法、大模型数据、分布式训练方法上面的一些思考和实践。

如果我们回顾这次大模型的浪潮,我们会发现从GPT-3到现在的GPT-4,事实上里面有一些非常重要的变化,因为GPT-3当时推出来的时候,主要还是一种预训练的大模型,在这里面是模型训练完成之后,我们怎么用它,主要是通过一种所谓的小样本提示词,或者是零样本提示词的方式来用。这里面我主要用到了一个说法,叫做提示词,所谓的提示词就是在使用这个模型的时候,只是把我的一些指令,比如请求在前面追加一些事例,通过组合的形式送给模型,让模型产生我所期望的结果。后来到了GPT-4我们都看到了,从GPT-3到GPT-4,模型能力有着非常巨大的变化,对我们来说当GPT-4推出来的时候,我们看到它的多模态能力对人类意图理解能力,它的编程能力等等非常让人惊艳,当我们去反思为什么能达到这么好效果的时候,我们首先看了一下过往大模型的训练模式历史是什么,现在又发生了什么样的变化,以及在这个过程中有哪些方面需要增强。

从我个人的角度,这里面最值得关注是GPT-3到GPT-4大模型训练模式的变化,所谓训练模式,是在2023年GPT-3刚发布的时候,事实上只是一个预训练模型,模型训练出来之后直接可以用了。但是大家不太关注就是微调,到了GPT-4阶段,包括ChatGPT,这里面引入一个很重要的过程就是微调,也就是我们通常常说的指令对齐。在GPT-3时代,包括AI' >OpenAI以及后续的DeepMind,他们都在大模型扩展率上做了很多工作,比如提出在给定的模型结构的情况下,现在业界通常用的Transformer结构。有一个共识是,“模型参数量越大,随着投入的算力规模越大,模型的精度往往会越高,但这种认识的前提,是在预训练的范式情况下所做的研究。但是从预训练切换到GPT-4预训练之后,加上人类意图对齐,加上强化学习,在这种新的情况下,是否依旧还是“我们投入的算力规模越大,模型的效果就越好?我们投入的数据规模越大,模型效果就越好?事实上这是我们需要重新思考的问题。

因此,在我们在做大模型的时候,我们也是从这些角度来出发。从源1.0到源2.0我们的算法数据,以及相关的计算方法。这里面给出的是GPT-4表现出了非常出色的能力。对于我们来说,我们在开展工作的时候,始终聚焦在基础模型层面,GPT-4是一个很好的代表,当我们有了基础模型之后,基础模型如何落地到具体的行业里面,在这里面OpenAI的GPT-4给了一个很好的事例,比如说基于GPT-4构造了ChatGPT非常惊艳的应用,以及基于GPT-4又打造了Copilot、Code Interpreter之类既对人类意图有着非常好的理解、同时又在代码领域有着非常好的性能的专业模型或者技能模型。在这里面我们认为如果想要获得非常好的行业模型的能力,或者获得非常好的专业模型的能力,基础模型的能力是其中最核心的部分。

源1.0的工作是我们在2021年发布的,当时这个模型是2457亿参数,我们发布的时候是当时业界最大规模的大模型。1.0模型的模型结构是经典的Transformer结构,这里面给出了具体的模型结构的示意,里面的Attention结构,也是非常经典的Attention的结构。

从源1.0发布之后,我们也推出了开源开放计划,赋能了很多开发者,这些开发者基于源1.0的API构建了一些很有趣的应用。源2.0的工作是我们在今年11月底刚刚发布的,这里面包含了三组模型参数,1.0主要训练数据集都是中文,大概95%以上都是中文,所以能力主要体现在中文领域,源2.0是中英双语的大模型。除了中文之外,能够支持英文,同时在代码、数据逻辑方面有着很出色的表现。

从源1.0到源2.0,最主要的工作体现在三个方面,也是影响模型能力最核心的三个方面,首先是算法层面,在源2.0里面,我们提出了一种新的Attention结构,这种Attention结构我们定义成所谓的局部过滤的自注意力的结构,这个结构是针对经典的Attention,在这里面给出了一个示例,句子是非常典型的自然语言的描述,这里面分词之后,会分成不同的词,这些不同的词,如果我们分析这句话,比如说中国是修饰菜的,事实上这些修饰之间会存在先验的局部关系,但是对于经典的Attention结构来说是被动的学习这种局部关系。如果我们在构建模型结构的时候能够主动考虑这种局部性的话,大家都知道,如果你在构建模型,在模型里面引入一些先验,或者哪怕我们自己在学习的时候,我们主动结合学习的特征进行有意识的增强,往往会得到比较好的效果,这个模型结构在构建的时候也是类似的,把局部的关系引入到整个模型结构的构建里,进而获得了一个新的模型结构。这里面给出了模型结构详细的示意,我们论文里面有详细的解释,这里就不再展开赘述。

我们围绕新的模型结构做大量的试验,验证这个模型结构到底有多大的精度提升。最上面的Attention(Basic)代表着一种LLaMA的结构,上面所有实验列出来的数据,模型都是具有完全相同的结构,唯一区别在于Attention结构的不同。我们可以看到当我们从基本的LLaMA结构对Attention做一个基本改变,在这里面引入时序平均的方法,改变局部性的时候,最右侧那一列的Test Loss,我们用它衡量模型的精度,loss这个数值越低意味着模型精度越好,它的Test Loss会有提升。因为EMA这种结构在计算过程中,内存开销很大,计算也很耗时。所以对于一个大模型来说,尤其对于一个千亿规模的大模型来说,如果基于EMA结构,会对硬件还有计算过程产生非常巨大的挑战。

接下来模型结构的优化,主要的考虑是怎么简化这种结构,在局部既能考虑局部性,计算上又是比较优的,具有比较好的参数特性也具有比较好的内存特性,在这里面做了更进一步模型结构的探索,生成最终的模型结构。

这里给出了最后训练模型的Loss曲线,我们同时列出了源1.0和2.0在训练过程中的Train Loss的对比。1.0的模型是2000多亿参数模型,参数量比源1.0要大两倍多,训练数据的体量差异没有那么大,最终训练的Loss可以看到,从源1.0到源2.0,Train Loss降低了28%。,因为数据集中体量是足够大的,模型在训练过程事实上并没有完整遍历数据集,所以训练过程中的Loss值可以认为把它看作是模型对于我们整个训练数据学习的好坏程度。在这里面源2.0的表现明显是出色很多的。

接下来是数据方面,事实上数据方面的工作是我们在构建源2.0模型的时候面临的一个非常大的挑战的工作。因为当我们切入到数理逻辑,切入到代码方面的时候,我们会发现中文的相关的数学、代码相关的数据是非常少的,也是非常稀缺的。举个例子,对于中文的数学数据,我们清洗了从互联网上,从2018年一直到2023年,互联网里面所有的网页,我们把里面包含数学公式的网页提取了出来,我们清洗的原始网页的体量是12PB左右,我们提取出来跟数学相关的数据的体量只有不到10GB,从12PB到10GB是中文的数据,跨了两个量级。而且提取出来的10GB的数据,它的质量还有很多可以改进的地方。如果我们想让模型获得比较好的数理逻辑的能力,同时代码也是类似的,我们必须考虑如何高质量地构建这方面的数据。

在这里面除了典型的互联网数据来源之外,我们通过大模型生成了一批兼顾了多样性和质量的这样一类合成数据,重点是针对代码和数学,通过这两类数据的引入,重点补充了模型在代码和数学里面这部分数据的数量和质量。

另外一部分在计算方面,当开展大模型工作从GPU芯片应用到更多元的计算芯片上的时候,我们发现GPU之外的某些芯片,芯片之间P2P互联的带宽很低,远低于GPU。当大模型在这些多元芯片上做训练的时候,受限于芯片之间的互联带宽,往往得不到很好的性能。针对这种情况,我们也在分布式训练方法上做了一些工作,我们提出了一种非均匀流水并行的方法,并且结合优化参数并行,可以大幅度降低大模型训练过程以及微调过程中对于芯片之间互联带宽的需求。

这里面我们给出了一些具体评估的数据,如果采用这个表格里面经典的方法,以及源2.0的方法,如果采用经典的方法,可以看到随着带宽的降低,如果带宽从400GB/s降到100GB/s,,时间开销增加得非常大,性能差不多要损失30%多,接近40%。但是对于2.0提出的分布式训练的方法来说,性能基本上是无损的。

接下来是一些具体的精度,这里面不再多说了,我们论文里面都有很详细的数据。

这里面有一个源2.0对于数学的问题,这个难度是高考的数学,这里面所有公式都是以LaTeX格式的代码生成的,它不仅能够理解这些问题,能够以代码的形式生成这些公式,同时也能够给出非常合逻辑的求解过程。

目前源2.0模型已经全面开源了,这里面给出了开源的链接,还有论文的链接,欢迎大家追踪

这里面最后一部分,我想重点跟大家讲一下,我们有一个大模型的开源共训计划。 

在这个计划里,我们面向所有的开发者,开发者提出自己的应用或场景的需求,我们会基于数据清洗平台开展相关的数据的清洗、收集,随后我们会把这些数据用到模型训练里,训练完成之后的模型会持续开源到社区来反馈给开发者,给开发者提供更好的模型能力支持。

欢迎大家参与到我们共训计划里。训练后的模型依然在社区开源,以上是我所有的内容,谢谢。

元宇宙投融邦 元宇宙投融邦
0
0
发布评论
后可评论
0/1000
全部评论

暂无评论,来抢沙发

猜你喜欢 换一批
数据加载中,请稍候...