开源+共训,双轮驱动基础大模型创新普惠 |浪潮信息吴韶华@MEET2024

编辑部 整理自 MEET2024
量子位 | 公众号 QbitAI

相比GPT-3,GPT-4 (包括GPT-3.5) 的能力有了非常巨大的进步。

这背后其实得益于一个很重要的过程引入:微调。

在给定模型结构的情况下(即Transformer结构),随着模型参数量增大、投入算力规模和数据规模越大,模型的精度往往会更高。

但此类扩展率的研究是基于预训练的范式下开展。随即,训练模式的变化让我们也不得不重新思考:

在“预训练+微调”的范式下,尤其在微调的重要性越来越高的情况下,如何改进算法、数据以适应预训练与微调不同阶段的特性?

在MEET 2024智能未来大会现场,浪潮信息AI软件研发总监吴韶华博士便抛出了这样一个问题。

他介绍,浪潮信息的“源1.0”大模型和“源2.0”大模型正是基于以上角度出发,从算法、数据、计算三个层面入手打造而成,最终在代码、数据逻辑等方面都取得了很出色的表现。

那么,具体都有哪些实践和经验?

为了完整体现吴韶华博士对GPT-4时代大模型训练模式的见解和思考,量子位在不改变原意的基础上,对他的演讲内容进行了编辑整理。

关于MEET 智能未来大会:MEET大会是由量子位主办的智能科技领域顶级商业峰会,致力于探讨前沿科技技术的落地与行业应用。今年共有数十家主流媒体及直播平台报道直播了MEET2024大会,吸引了超过300万行业用户线上参会,全网总曝光量累积超过2000万。

演讲要点

从GPT-3到GPT-4,最值得关注的是大模型训练模式的变化。
在训练模式变化之后,微调在人类意图对齐上起到更重要作用的情况下,我们需要重新思考:如何改进算法、数据以适应预训练与微调不同阶段的特性?
要想获得非常强的专业模型/行业模型,基础大模型的能力是最为核心的。
如何提升提升基础大模型的能力?浪潮信息源2.0大模型的亲身实践:从算法、数据和计算三个层面入手,以“开源+共训“的策略,双轮驱动基础大模型创新普惠。

(以下为吴韶华演讲全文)

从GPT3到GPT4,训练模式变了

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

如果我们回顾这次大模型的浪潮,就会发现从GPT-3到现在的GPT-4,里面有一些非常重要的变化。

当时GPT-3推出来的时候,主要还是一种预训练的大模型。

模型训练完成之后,我们怎么用它?主要是通过一种所谓的小样本提示词,或者是零样本提示词的方式。

这里面我用到了一个说法,叫做提示词。

所谓的提示词就是在使用这个模型的时候,把我们给出的指令,比如说在一些请求在前面追加一些示例,然后通过这种组合的形式送给模型,让模型产生我所期望的结果。

后来,到了GPT-4的阶段,我们都看到了,模型能力有着非常巨大的变化。

它的多模态能力、对人类意图理解能力、编程能力等等非常让人惊艳。

当我们从技术层面去审视它为什么能达到这么好效果的时候,我们首先看了一下过往大模型的训练模式。包括它的历史是什么?现在又发生了什么样的变化?以及在这个过程中有哪些方面需要增强。

从我个人的角度来说,这里面最值得关注是GPT-3到GPT-4大模型训练模式的变化。

所谓训练模式,在2020年GPT-3刚发布的时候,事实上它只是一个预训练模型,模型训练出来之后直接可以用了。大家不太关注微调。

而到了GPT-4阶段,这里面引入了一个很重要的过程:微调,也就是我们通常常说的指令对齐。

在GPT-3时代,包括OpenAI以及后续的DeepMind,他们都在大模型扩展率上做了很多工作,比如提出在给定模型结构的情况下(现在业界通常用的Transformer),有一个共识是:

模型参数量越大,随着投入的算力规模越大,模型的精度往往会越高。

但这种认识的前提,是在预训练的范式下所做的研究。
切换到GPT-4之后,模型训练范式新增了人类意图对齐,再加上强化学习,在这种新的情况下,是否依旧还是我们投入的算力规模越大,模型的效果就越好?我们投入的数据规模越大,模型效果就越好?

以及,在预训练+微调的范式下,尤其在微调在人类意图对齐上起到更重要作用的情况下,如何改进算法、数据以适应预训练与微调不同阶段的特性?

事实上,这些都是需要重新思考的问题。

基础大模型是生成式AI的能力核心

我们在做大模型的时候,也站在上面的这些角度审视思考,并步步构建,无论是源1.0还是源2.0,浪潮信息一直在开展基础大模型的创新,包括我们的算法数据,以及相关的计算方法。

基础模型的重要性毋庸置疑,以OpenAI为例,从GPT3->GPT3.5->GPT4,他们走出了一条清晰的基础模型能力提升路线,下图我们可以看出GPT-4表现得非常出色。

当基础模型应用在对话领域的时候就形成了ChatGPT;当其应用在代码领域会生成类似于Copilot、Code-Interpreter等面向代码的应用;当其应用在搜索领域的时候,又形成了对搜索引擎的赋能。

由此可见,如果想要获得非常好的行业模型的能力,或者获得非常好的专业模型的能力,基础模型的能力是其中最核心的部分。

源1.0的工作是我们在2021年发布的,当时这个模型是2457亿参数,这是当时世界上最大的自然语言处理大模型。

源1.0模型的模型结构是经典的Transformer结构,这里面给出了具体的模型结构的示意,里面也是非常经典的Attention结构。

从源1.0发布之后,我们也推出了开源开放计划,赋能了相当多的开发者,这些开发者基于源1.0的API孵化了一批极具特色的应用。

源2.0的工作是我们在今年11月底刚刚发布的,这里面包含了三组模型参数:1026亿、518亿和21亿。

源1.0主要训练数据集都是中文(大概95%以上),所以能力主要体现在中文领域。

源2.0是中英双语的大模型。除了中文之外,也能够支持英文,同时在代码、数据逻辑方面有着很出色的表现。

三方面入手提升基础性能

从源1.0到源2.0,最主要的工作体现在三个方面,也是影响模型能力最核心的三个方面。

算法层面

首先是算法层面,在源2.0里面,我们提出了一种新的Attention结构。

这种Attention结构我们定义为局部过滤增强的注意力机制(LFA:Localized Filtering-based Attention)。

在这里面给出了一个示例:

我想吃中国菜。

这个句子是非常典型的自然语言的描述,对它分词之后,可以看到 “中国”是修饰“菜”的。

自然语言中存在的这些局部关系在经典的Attention结构中是被动学习的。

如果我们在构建模型结构的时候能够主动考虑这种局部性,引入一些先验,往往会得到比较好的效果。

这个模型结构在构建的时候就是类似的,把局部的相关性引入到整个模型结构的构建里,进而获得了一个新的模型结构。

这里面给出了模型结构详细的示意,我们论文里面有详细的解释,这里就不再展开赘述。

围绕新的模型结构,我们做大量的试验,来验证它到底有多大的精度提升。

在这张表中,最上面的Attention(Basic)代表着LLaMA的结构,上面所有实验列出来的数据,模型都是具有完全相同的结构,唯一区别在于Attention的不同。

我们可以看到当我们从基本的LLaMA结构对Attention做一个基本改变,在这里面引入EMA的方法考虑局部性的时候,最右侧那一列的Test Loss(我们用它衡量模型的精度,这个数值越低意味着模型精度越好)就会有提升。

像EMA这种结构在计算过程中,内存开销很大,计算也很耗时。

所以对于一个大模型,尤其是千亿规模的来说,如果基于EMA结构,会对算力、分布式计算方法产生非常大的挑战。

接下来模型结构的优化,我们主要的考虑是怎么简化结构,让它既能考虑局部相关性,内存占用量也比较少,同时计算性能又比较高。

我们基于以上的思路在这里面做了更进一步模型结构的探索,生成了最终的模型结构。

下图给出了最后训练模型的Loss曲线,我们同时列出了源1.0和源2.0在训练过程中Train Loss的对比。

源1.0的模型是2457亿参数模型,参数量比源2.0要大两倍多,然而从最终训练的Loss可以看到,从源1.0到源2.0,Train Loss降低了28%。

其实数据集的体量是足够大的,源1.0与源2.0模型在训练过程中并没有完整遍历数据集,训练过程中的Loss值可以用它来衡量模型对于整个训练数据学习的好坏程度。

在这里面源2.0的表现明显是出色很多的。

数据层面

接下来是数据方面,事实上数据方面的工作是我们在构建源2.0模型的时候面临的一个非常大的挑战。

因为中文相关的数学、代码数据是非常少的。

举个例子,对于中文的数学数据,我们清洗了互联网上从2018年一直到2023年所有的网页,它的体量是12PB左右,然而我们提取出来跟数学相关的体量只有不到10GB。

而且提取出来的10GB数据,它的质量还有很多可以改进的地方。

如果我们想让模型获得比较好的数理逻辑、代码能力,我们必须考虑如何高质量地构建这方面的数据。

因此,我们还采用了基于大模型的数据生产及过滤方法,保证数据的多样性的同时也在每一个类别上提升数据质量,获取了一批高质量的数学与代码预训练数据。

通过这两类数据的引入,重点补充了模型在代码和数学里面这部分数据的数量和质量。

计算层面

另外一部分在计算方面,当考虑多元算力时,我们发现GPU之外的某些芯片,芯片之间P2P互联的带宽很低,远低于GPU。

当大模型在这些多元芯片上做训练的时候,受限于芯片之间的互联带宽,往往得不到很好的性能。

针对这种情况,我们提出了一种非均匀流水并行的方法,并且结合优化参数并行,可以大幅度降低大模型训练过程以及微调过程中对于芯片之间互联带宽的需求。

这里面我们给出了一些具体评估的数据:

如果采用这个表格里面经典的方法,可以看到随着带宽的降低,从400GB/s降到100GB/s,时间开销增加得非常大,性能损失约37%。

但是对于源2.0提出的分布式训练方法来说,性能基本上是无损的。

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

下方展示的是源2.0对于数学问题的解决能力:

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

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

最后一部分,我想重点与大家分享一下,我们也发布了源大模型的开源共训计划。

在这个计划里,我们诚邀广大开发者一同改进模型,使源大模型之更满足用户具体的应用需求。针对广大开发者、伙伴、用户使用源大模型时遇到的问题,欢迎在Github上进行反馈。

针对这些问题,源大模型研发团队会快速响应需求,收集数据,对源大模型进行增强训练。

欢迎大家参与到我们共训计划里,训练完成后的基础模型将持续在开源社区进行开源。

以上是我所有的内容,谢谢。

​ 

Read More 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *