机器之心原创

编辑:杜伟

语言大模型的终极目标是什么?

在自然语言处理(NLP)领域,暴力美学仍在延续。

自 2018 年谷歌推出 BERT(3.4 亿参数)以来,语言模型开始朝着「大」演进。国内外先后出现了参数量高达千亿甚至万亿的语言模型,比如谷歌的 T5(110 亿)、OpenAI 的 GPT-3(1,750 亿)、智源研究院的 WuDao2.0(1.75 万亿)……

有人不禁会问,语言模型的参数越来越大,它们究竟能做些什么,又智能到什么程度了呢?

9 月 28 日,浪潮人工智能研究院推出了中文巨量语言模型——源 1.0,让我们看到了语言模型超强的创作能力。

除了轻松应对大多数语言大模型都能完成的对话、故事续写、新闻生成和接对联等任务,源 1.0 还具备风格约束的诗歌创作能力,比如给出李白、杜甫或诗经风格的诗句,模型便能输出相应风格的诗句。堪称诗界的百变大师!

最新gpu架构(用更少GPU完成更多计算量)(1)

不仅如此,源 1.0 还具备强大的模仿能力,输入一个不存在的词语以及给出它的定义和示例。模型便能依葫芦画瓢,造出符合这个词语定义、逻辑和语境的语句。

最新gpu架构(用更少GPU完成更多计算量)(2)

这些只是源 1.0 一小部分创作能力的展示,一切都要归功于这个巨量中文模型具有的参数量——2,457 亿,以及它的全球最大中文数据集——5.02TB。并且,源 1.0 并不是由多个小模型堆砌形成,而是单体模型。因参数量巨大,所以称其为「巨量模型」。

最新gpu架构(用更少GPU完成更多计算量)(3)

相较于 GPT-3 的 1,750 亿参数,源 1.0 是其参数量的 1.404 倍。面对如此巨大的参数量,浪潮 1.0 在 2,128 个 GPU 集群上跑上 16 天完成了训练,每个 GPU 的实际训练性能达到 140 TFlops,消耗的总算力大约为 4,095 PetaFlop/s-day

相比之下,GPT-3 使用 10,000 块 GPU、花了 30 天才训练完了 1,750 亿参数,单 GPU 计算性能为 12TFlops,消耗的总算力为 3,640 PetaFlop/s-day。

从更直观的计算效率来看,GPT-3 完成训练需要 10,000 块 GPU,大约为 355 GPU 年。而源 1.0 使用 2,128 张 GPU,16 天就完成了训练,大约为 93 GPU 年。(GPU 年代表一张 GPU 跑 1 年能完成的工作量)

最新gpu架构(用更少GPU完成更多计算量)(4)

源 1.0 与 GPT-3 的参数量、算力对比。

与此同时,在训练数据方面,源 1.0 不仅爬取了 2017 至 2021 年的网页数据,还使用了开源语料、中文百科和中文书籍等多个数据源,又通过粗筛和精筛,最终得到了一个 5.02TB 的全球最大高质量中文数据集。

训练出来的源 1.0 成功「兑现」了自己的能力,不仅在中文语言理解测评基准 CLUE 中刷榜文献分类、长文本分析等多项任务,更在零样本学习榜的成语阅读理解任务上超越人类水平。

更难能可贵的是,不同于 GPT-3 少量开放 API 的商用思路,浪潮的「源 1.0 开源开放计划」将包括模型 API、高质量中文数据集以及模型训练、推理和应用代码在内的资源向社区开放,还将开展面向国产 AI 芯片的模型移植开发。第一批计划合作对象包括大学或科研机构的 AI 研究团队、元脑生态合作伙伴和智能计算中心等。

开源开放计算官网:https://air.inspur.com/

源 1.0 在模型架构、训练数据、计算能力和训练策略等诸多方面做了哪些与众不同的探索呢?本文将带你深入了解浪潮如何解决源 1.0 背后的技术挑战。

训练源 1.0 解决的二三难事

对于一个语言模型而言,特别是具有千亿级别参数的中文巨量语言模型,首先要考虑它要采用哪种网络结构。在中文 NLP 研究社区,中文巨量语言模型是比较新的工作,因此无法获得有益的借鉴。

为了确定哪种模型结构更适合面向中文的巨量语言模型,浪潮考虑了领域内已有的三种不同类型的预训练模型结构,分别是谷歌 T5 采用的 Encoder-Decoder、OpenAI GPT-3 采用的 Language Model(LM)和 Encoder-Decoder 的变体 Prefix LM。一般来说,Encoder-Decoder 比较适合自然语言生成(NLG)任务,LM 和 PLM 则对自然语言理解(NLU)任务的效果更好。

最新gpu架构(用更少GPU完成更多计算量)(5)

浪潮先是选定了 LM 和 PLM 这两种模型结构,然后又进一步比较了它们在不同下游任务上的表现。结果发现,LM 模型结构在零样本(Zero-Shot)和小样本(Few-Shot)学习方面表现更好,而 PLM 结构在微调(Fine-tuning)方面表现出色。虽然微调通常会在大多数任务上带来更高的准确性,但会消耗大量的计算资源。此外,大模型已经发展到了不需要针对特定任务的微调环境,具有更好的泛化能力和适用性。

种种考量之下,浪潮最终选择将 LM 作为源 1.0 的基础模型结构。但是,选定了模型结构只是第一步,训练巨量语言模型还要面临数据和算力的挑战。

用自研数据过滤系统,获得 5TB 高质量中文数据集

人工智能领域有这样一种说法,「模型是大数据、高算力和强算法结合的产物,三位一体」。其中,大数据是成功构建模型的基础,数据量的多少决定了我们可以训练模型的规模以及最后的效果。以 OpenAI 的 GPT-3 为例,它采集了 Common Crawl、WebText2、Books1、Books2 和 Wikipedia 等数据源中的 45TB 数据,数据量之大可见一斑。另外,质量高和关联性强的数据对模型训练也大有裨益。

对于源 1.0 这个具有 2,457 亿参数的巨量中文语言模型而言,获取一个足够大的高质量中文数据集非常困难。为此,浪潮开发了一套大数据过滤系统(Massive Data Filtering System, MDFS),它主要使用 Spark 进行清洗和过滤,然后基于 BERT 的模型来筛选高质量语料。此外,为了清洗这些原始语料,浪潮更是在 36 台高性能服务器集群上运行 MDFS。

具体地,MDFS 系统包含了数据采集、粗筛和精筛三个阶段,每个阶段又分别做了大量工作。

最新gpu架构(用更少GPU完成更多计算量)(6)

MDFS 系统的流程图。

首先在数据采集阶段,源 1.0 主要基于 Common Crawl(爬取 2017 至 2021 年的网页数据,866,304GB)、开源语料(包括 SogouT 和 SogouN,16,797GB)、中文百科(百度百科和维基百科,37GB)和中文书籍(哲学、历史、人文、小说等书籍,4,020GB)等数据源,共采集了 846TB 的数据;

接着进入语料粗筛阶段,使用到了一系列清洗和筛选手段:

  • 文章抽取:即从爬取的网页数据中抽取正文,并去除 WARC 标题、超链接等内容;
  • 删除空文章;
  • 过滤中文文本:删除少于 30 个汉字的文章以及汉字比例小于总体文字量 60% 的文章;
  • 将繁体中文转换为简体中文;
  • 删除包含敏感词的段落或文章;
  • 删除垃圾符号,如不可见的 Unicode 字符、ASCII 字符以及特定标点符号。

粗筛后的数据量为 6TB,但为了从中筛选出高质量的语料,依然需要走完最后一步——精筛。浪潮训练了一个基于 BERT 的模型对这些语料进行文本质量分类和评估,分为高质量文本(比如新闻、散文和小说)、广告数据(比如网站提示、产品广告和特殊提示)和低质量文本(语义残缺、名片信息和导航目录)。这里的策略是保留高质量数据集以及有价值有意义的广告数据,剔除低质量文本

最终,源 1.0 收获了一个 5.02TB 的全球最大高质量中文数据集。

最新gpu架构(用更少GPU完成更多计算量)(7)

精筛后数据大小与原始语料大小对比。

用「三合一」并行训练策略,解决模型的巨大算力需求

足够大的高质量中文数据集有了,源 1.0 迎来了它的最大挑战:如何构建出规模如此巨大的模型并使它行之有效地完成训练。要知道,当前 GPU 显存最高为数十 GB 左右,而训练 2,457 亿参数量的大模型需要的 GPU 显存将高达几个 TB,显然无法在单个显卡或一台 GPU 服务器上完成。

因此,浪潮需要将完成源 1.0 训练所需的巨大算力并行分布到几千张 GPU 上。模型训练时最常采用的是数据并行分布式计算策略,但这只能满足小模型的训练需求。对于像源 1.0 这样的巨量模型而言,需要专门设计算法来解决训练中的显存占用问题,同时还要兼顾训练过程中的 GPU 计算性能的利用率。

为此,浪潮采用了张量并行、流水线并行和数据并行的「三合一」并行策略

最新gpu架构(用更少GPU完成更多计算量)(8)

图上左为张量并行,上右为数据并行,图下 为流水线并行。

在张量、流水线和数据「三合一」并行训练过程中,源 1.0 还遵循了以下几项基本原则:

  • 尽可能增加序列长度,这将有利于张量并行、流水线并行和数据并行。由于内存占用与序列长度的平方成正比,因此有必要在反向传播时重新计算激活函数,以节省内存开销;
  • 减少模型层数,这是因为语言模型中层数太多会对性能产生负面影响,增加在流水线气泡上的时间消耗;
  • 增加隐藏层大小用于提升张量并行和流水线并行的性能;
  • 增加节点中微批次大小提升流水线并行效率,增加全局批次大小提升数据并行效率。

最终,浪潮在 2,128 个 GPU(40G 显存)上完成源 1.0 的模型训练,训练了 1,800 亿个 tokens,整体耗时 16 天,单 GPU 计算性能达到 140TFlops。对比之下,烧了 10,000 张 GPU 的 GPT-3,它的单 GPU 计算性能仅为 12TFlops。

最新gpu架构(用更少GPU完成更多计算量)(9)

源 1.0 的模型训练损失(training loss)曲线如下,可以看到,loss 值在前 10B 个 tokens 期间迅速下降,之后下降较慢并趋于稳定,形成一个长尾。并且,源 1.0 的训练损失数值(1.64)小于 GPT-3(1.73)和 PanGu-α(2.49)。

最新gpu架构(用更少GPU完成更多计算量)(10)

用概率校准和标签扩充,提升零样本和小样本下模型效果

解决了数据集和算力两大挑战,源 1.0 在训练过程中还特别关注在零样本和小样本学习设置提升模型效果。我们知道,预训练语言模型中,基于文本上下文进行学习会因种种因素产生偏差,这些偏差主要源于数据集中不同类别数据的分布不平衡、小样本学习时样本表达顺序固定以及标签在训练语料中出现的频率差异。这些外部偏差将不可避免地制约模型在 NLP 任务上的表现。

针对这一问题,浪潮在充分考虑可能偏差来源的基础上,提出从两个方面对上下文学习进行校准,分别是基于概率计算的校准和标签扩充,进而提升模型在下游任务上的性能表现。

一方面,对于概率校准,源 1.0 采用「在模型中加入空文本」的方法来修复偏差,计算公式如下:

最新gpu架构(用更少GPU完成更多计算量)(11)

以 Tnews 任务为例,计算 sentence-lable 中 label 的概率。

  • 原始:新闻:sentence。这条新闻是关于 label。
  • 校准:新闻:N/A。这条新闻是关于 label。

代入上述计算公式后,如下所示:

最新gpu架构(用更少GPU完成更多计算量)(12)

通过这种空文本替换的方式,源 1.0 能够避免在固定句式表达学习上出现过拟合现象,实现小样本学习效果。

另一方面,在零样本或小样本设置下,标签在语料中出现的频率差异会对模型预测结果产生影响。理想状态下,所有标签在词表中的位置,即在语料中的出现频率,应该大致相同,但手动选择符合条件的标签非常困难。源 1.0 使用了一个涵盖 800 万个中文单词和短语的嵌入语料库,基于相似度为每个标签扩展 5 个同义词,从而扩充数据集,缓解标签分布不平衡问题,消除单个标签词带来的偏差。

概率校准和标签扩充提升了源 1.0 在零样本或小样本学习设置下的精度。以 Csldcp 和 Tnews 多分类任务以及 Eprstmt 情感分类任务为例,概率校准和标签扩充为模型带来了精度的提升。

最新gpu架构(用更少GPU完成更多计算量)(13)

源 1.0 到底有多强大?

2,457 亿参数、5TB 高质量中文数据集、2,128 张 GPU 上训练 16 天……,这些都为源 1.0 强大的语言智能打好了基础。源 1.0 也不负众望,在中文语言理解测评基准 CLUE 中取得了优异的表现。

ZeroCLUE 零样本学习榜中,源 1.0 在文献分类(CSLDCP)、新闻分类(TNEWSF)、长文本分析(IFLYTEKF)、成语阅读理解(CHIDF)、文献摘要识别(CSLF)和名词代词关系(CLUEWSCF)六项任务上摘得榜首。其中,在成语阅读理解单项任务上甚至超越了人类水平。

最新gpu架构(用更少GPU完成更多计算量)(14)

榜单详情参见:https://www.cluebenchmarks.com/zeroclue.html

FewCLUE 小样本学习榜中,源 1.0 在文献摘要识别(CSLF)和名词代词关系(CLUEWSCF)两项任务上摘得榜首。

最新gpu架构(用更少GPU完成更多计算量)(15)

榜单详情参见:https://www.cluebenchmarks.com/fewclue.html

此外,源 1.0 在闭卷问答任务 WebQA 和文本提取任务 CMRC2018 中也表现得非常好。在这两个任务的测试中,模型直接回答 WebQA 和 CMRC2018 的问题,并且不提供任何辅助信息。

在与 PanGu-α 和 Ernie 3.0(SOTA)的比较结果可知,在 WebQA 任务上,源 1.0 在平均分数、EM 和 F1 上均实现了显著提升;对于 CMRC2018 任务,源 1.0 刷新了最优的平均分数和 F1 分数,只在 EM 分数上稍逊于 Ernie 3.0。

最新gpu架构(用更少GPU完成更多计算量)(16)

刷榜只是语言模型性能强弱的一个侧面体现,源 1.0 的创作能力在对话、故事、新闻、诗歌和对联等多样性场景中得到了进一步验证。在这些场景任务中,浪潮创建了一场「图灵测试」,用于比较源 1.0 模型生成的文本与人类创作的真实文本,并分辨出这些文本哪些「由模型生成」哪些「由人类创作」

具体地,浪潮任意选择了源 1.0 生成的 24 篇文章,包括 4 副对联、5 首中文传统和现代诗歌、5 篇新闻文章、5 个故事和 5 段对话。其中,对联、诗歌和对话的创作被视为短文本任务,新闻和故事生成被视为长文本任务。与这些对比的人类创作的文章出自名家所作的诗歌、经典小说、搜狐新闻的新闻文章和 LCCC-large 数据集中的对话。对此,浪潮共收集了 83 份有效问卷。

结果显示,源 1.0 生成的文章只有 49.16% 的概率被正确识别为「由模型生成」,这意味着受访者难以区分人类和模型生成的文章,尤其是在对话和新闻生成这两个场景,误判率分别为 54.32% 和 57.88%。不过可以看到,由于源 1.0 的预训练语料中没有加强古汉语,源 1.0 在诗歌和对联生成场景表现相对不佳,但仍具备生成带有一定格式和格律的文本的能力。

最新gpu架构(用更少GPU完成更多计算量)(17)

目前,源 1.0 能够生成多种高质量的文本,如对话、新闻稿件、故事续写等。对于这些类别的任务,模型生成的文本与人类创作的内容相差无几,甚至达到了以假乱真的程度。

先以如下对话场景为例,受访者正确分辨出「由模型生成」答案的概率仅为 38.28 %,这意味着源 1.0 在对话任务上做到了非常情景化,回答也接近人的讲话风格。

最新gpu架构(用更少GPU完成更多计算量)(18)

再来看新闻生成场景,给出摘要,然后续写正文,受访者正确分辨出「由模型生成」新闻的概率为 34.15 %。源 1.0 生成的文本不仅较人类撰写的篇幅更多,显然也更符合新闻用语环境。

最新gpu架构(用更少GPU完成更多计算量)(19)

但应看到,源 1.0 等大模型的应用场景绝对不会止步于此。12 月 11 日,机器之心举办了 NeurIPS MeetUp China,浪潮信息副总裁、人工智能 & 高性能计算 (AI&HPC) 产品线总经理刘军做了主题为《AI 大模型时代的浪潮思考与实践》演讲。他认为,未来大模型还将可能在更多应用场景中发布作用,如运营商文本类日志和报告的提取和总结、元宇宙中 AI Robot 的语言生成、理解和对话等。

语言大模型的极限在哪里?目前似乎没有哪家科技企业能够清楚地指明。浪潮的源 1.0 中文巨量语言模型,在探索 AI 拟人能力这条路上走出了坚实的一步。

最后,对刘军演讲内容感兴趣的读者,请戳以下视频:

https://v.qq.com/x/page/e3314u8y1l3.html

,