gpt-3的实际意义,是他通过”接口申请制“,成功地在现有的学术体系下,搞出了一个”隔离中国研究者”的平台。
所有研究者都可以申请,但中国研究者的申请几乎不会通过。这样,欧美的独立研究者可以随手申请用gpt-3的api,把gpt-3作为自己应用的baseline,而中国的研究者就没有办法,做什么都得自己train,门槛过高直接拦住了绝大部分的研究者。
这样,美国就可以在基础教育和创新能力不如中国的情况下,依托这种“接口申请制”的学术平台,整合欧美各实验室分散的科研能力,以无数通过平台获得接口的实验室,来碾压中国少数的几个有资源自己train大模型的实验室,依然实现保持对中国学术界的领先。
源1.0 训练出来这件事,本身意义并不大。阿里、华为什么的也都训练了类似的模型。
如果有人能够提供接口,让分散的中国研究者可以以不高的成本来以各种方式运行这个大模型,利用这个模型做出更多的研究,更多的实际应用,才是真正的利国利民之事。
请允许我先用较大篇幅阐述利益相关情况。对于“源1.0”的这个工作进行讨论,缘起于浪潮人工智能研究院朋友的推荐,但很幸运的是它与我的研究方向有千丝万缕的关系。
如果长期关注我,或者与我相熟的朋友,经常会对我说一句话“小鱼,你怎么又换研究方向了啊”。一方面是因为课题组项目需求,有些身不由己,另一方面也是因为我始终没有扎根于一个方向深入研究,所以换换的危害也没那么大。
不过兜兜转转一圈,半年前我突然想通了一个事情,就是我的研究方向始终与“资源受限”相关,那不如就把我的研究方向叫做“资源受限的人工智能”吧。我曾调研过小样本学习(标注数据受限),边缘智能(算力受限,通信受限),联邦学习(数据位置受限,隐私保护)。在我认知范围内,现在正处于人工智能研究(甚至是应用)的第三次浪潮,而这得益于本世纪初前后的硬件算力的增长,等到后面算力发展水平起来了,人们发现AI真好用之后,大数据时代的数据驱动AI模型又成为了本世代的研究主流。在大算力和大数据的加持下,大模型也应运而生,我们现在有了非常多的巨量模型研究。
不过正如十九大所述,我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾,在人工智能领域,大算力、大数据和大模型同样不是每个领域都能有的,在实际落地场景中,因为预算等现实因素,我们不得不应对算力和数据受限等困境。
本次“源1.0”在CLUE(中文语言理解测评基准)的小样本学习和零样本学习赛道中取得了亮眼的成绩(小样本学习榜中他们是F1_Score首个超越0.70的研究团队,零样本学习至今还优于第三名20%),那什么是小样本学习[1]呢?
我们可以回顾一下标准图像分类任务,将图像集分两组,一组特定类图像来训练模型,然后用同类的另一组图像进行测试。
小样本分类在此基础上更进一步,在测试时将训练成果泛化至全新的类(训练中未见过的新分类)。
具体而言,在小样本分类中,训练集包含的类与测试时使用的类完全没有交集。因此,训练目的是学习模型以便仅使用少量样本便可将其用途转变为区分新的类别。每种测试任务都会在已提出的测试集中展现先前未出现的类之间存在的分类问题,每个测试任务包含一个由若干带标签图像组成的支持集(模型可通过这些图像学习新的类),以及一个完全无交集的样本查询集(模型随后需要对该集进行分类)。
我非常喜欢Meta-Dataset[2]这篇论文的工作,它提出了一个大型数据集,还在此基础上测试了小样本学习的两类学习范式(预训练和元学习)的效果。
预训练仅使用监督式学习在训练集上训练分类器(神经网络特征提取器与线性分类器的组合)。然后,可以通过微调预训练特征提取器和训练新的任务特定线性分类器,或通过近邻比较(对每个查询样本的预测是其毗邻的支撑样本的标记)来对测试任务样本进行分类。
另一方面,元学习模型构建一些“训练任务”,其训练目标明确反映了使用关联支持集调整任务后,在每个任务的查询集上表现良好的目标,从而捕获了测试时解决每个测试任务所需的能力。每个训练任务皆通过对训练类的子集和某些类的部分样本(这些类充当支持和查询集)进行随机采样创建而成。
在我看来,如果要用通俗语言描述这两种方法的话,预训练有点像题海战术,书读百遍其义自见,而大规模预训练模型颇有种杀鸡用牛刀的感觉,就好像穷尽了毕生努力然后去做小学入学测试;元学习有点像张三丰教太极,忘掉了就是学会了,不需要记忆具体的内容,领会具体招式背后的真谛就能克敌制胜。当然,前面这段话都是胡说当不得真,但我们可以知道,这两种学习范式在特定场景下会有不同的表现[3],需要根据问题场景选用具体的算法。
CLUE 这个中文自然语言基准的小样本学习赛道 FewCLUE 也设定了类似的任务[4]。
一共九个任务,分三组:
仅以分类任务为例,Eprstmt 是二分类任务,包括带有正面和负面产品评论。 Tnews、Iflytek和Csldcp是多分类任务,分别有15、118和67个类别。
1. EPRSTMT(EPR-sentiment): 电商产品评论情感分析数据集
电商产品评论的情感分析,根据评论来确定情感的极性,正向或负向。
数据: 训练集(32),验证集(32),公开测试集(610),测试集(753),无语料标签(19565)
例子: {“id”:23, “sentence”: “外包装上有点磨损,试听后感觉不错”, “label”: “Positive”}
2. CSLDCP 中文科学文献学科分类数据集
中文科学文献学科分类数据集,包括67个类别的文献类别,这些类别分别属于13个大类,范围从社会科学到自然科学,文本为文献的中文摘要。
数据: 训练集(536), 验证集(536), 公开测试集(1784), 测试集(2999), 无标签语料(67) 例子: {“content”: “通过几年的观察和实践,初步掌握了,…”, “label” : “园艺学”, “id”:1770}
3. TNEWS 今日头条中文新闻(短文本)分类数据集
该数据集来自今日头条的新闻板块,共提取了15个类别的新闻,包括旅游、教育、金融、军事等。
数据: 训练集(240), 验证集(240), 公开测试集(2010), 测试集(1500), 无标签语料(20000) 例子: {“label”: “102”, “label_des”: “news_entertainment”, “sentence”: “江疏影甜甜圈自拍,…”}
4. IFLYTEK 长文本分类数据集
App应用描述的长文本标注数据,包含和日常生活相关的各类应用主题,共119个类别。
数据: 训练集(928), 验证集(690), 公开测试集(1749), 测试集(2279), 无标签语料(7558)
例子:{“label”: “110”, “label_des”: “社区超市”, “sentence”: “朴朴快送超市创立于2016年,专注于打造移动端30分钟即时一站式购物平台”}
5. OCNLI 中文原版自然语言推理数据集
OCNLI,即原生中文自然语言推理数据集,是第一个非翻译的、使用原生汉语的大型中文自然语言推理数据集。
数据:训练集(32), 验证集(32), 公开测试集(2520), 测试(3000), 无标签语料(20000)
例子: {“level”: “medium”, “sentence1”: “身上裹一件工厂发的棉大衣,手插在袖筒里”。 “sentence2”: “身上至少…”, “label”: “entailment”, “genre”: “lit”, “id”: 0}
6. BUSTM 小布助手对话短文本匹配数据集
对话短文本语义匹配数据集,根据短文本query-pair,预测它们是否属于同意语义。
数据: 训练集(32), 验证集(32), 公开测试集(1772), 测试集(2000), 无标签语料(4251)
例子: {“id”:5, “sentence1”: “女孩子是不是你”, “sentence2”: “你不是女孩子吗”, “label”: “1”}
7. ChID 成语阅读理解填空
以成语完形填空形式实现,文中多处成语被mask,候选项中包含了近义的成语
数据: 训练集(42), 验证集(42), 公开测试集(2002), 测试集(2000), 无标签语料(7585)
例子: {“id”:1421, “candidates” : [“巧言令色”, “措手不及”, “风流人物”, “八仙过海”, “平铺直叙”, “草木皆兵”, “言行一致” ], “content”: “当广州憾负北控,….”, “answer”:1}
8. CSL 论文关键词识别
中文科技文献数据集(CSL)取自中文摘要及其关键词, 任务目标是根据摘要判断关键词是否全部为真实关键词
数据: 训练集(32), 验证集(32), 公开测试集(2828), 测试集(3000), 无标签语料(19841)
例子: {“id”:1, “abst”: “为解决传统均匀FFT,,,”, “keyword”:[“水声学”, “FFT”,…], “label”: “1”}
9. CLUEWSC WSC模式挑战中文版
代词消歧任务,判断句子中的代词指代的是哪个名词,题目以真假判别的方式出现。
数据: 训练集(32), 验证集(32), 公开测试集(976), 测试集(290), 无标签语料(0)
例子: {“target”: {“span2_index”:37, “span1_index”:5, “span1_text”: “床”, “span2_text”: “它”}, “idx”:261, “label”: “false”, “text”: “这时候放,…” “true” 表示代词确实是指代span1_text中的名词的,“false” 代表不是}
那么浪潮针对上述任务有什么表现呢?首先他们采取了不同的参数选择准则,构建了三个不同规模的“源”模型(Yuan LM-13B, Yuan PLM-13B 和 Yuan 245B)用以进行实验。详细的参数配置见表2。
下表7(a)和(b)表明 LM 和 PLM 在 Zero-Shot 和 Few-Shot 上都具有优异的表现能力。LM和PLM的零样本平均得分都优于已往的最优结果。在 Csldcp、 Tnews 和 Iflytek 任务上,模型的得分大大超过了以往零样本学习的最优结果。在 Ocnli 上也取得了不错的成绩,比以往零样本学习的最优结果高出 6-8 个点。
那么是怎么做到这一点的呢,我认为主要有两个因素,浪潮使用了自己整理的高质量大规模中文数据集以及采用了较为先进的优化方法在GPU集群上构建大规模预训练模型。
在另一个问题“为什么中文 NLP 数据集这么少”中,各位老师提到了中文领域NLP数据集数量较少和水准相对落后的现状,有能力的研究机构或企业出于成本或各种原因不太愿意开源优质数据集。在这样的情况下做研究就得自己找办法解决数据来源的问题。浪潮在训练模型前就做了一个整理,他们构建了一个5TB的高质量中文数据集(大于此前其他中文数据集开源项目CLUECorpus2020(100GB)、PanGu(1.1TB)、 WuDaoCorpus2.0(2.3TB 中文和 300GB 英文、ERNIE 3.0(4TB)的样本数)
在我看来他们的方法行之有效,且有较大的可重复性。他们开发了大数据过滤系统,采用Spark进行初步清洗和过滤,然后使用Bert模型进行进一步的精过滤。
总之经过一番辛苦操作后,留下了5T的优质中文语料数据。(对数据预处理和构建数据集感兴趣的朋友请移步论文[5]的第三节)
有了数据之后,并不是有多少张显卡,就能同时在这些显卡上训练大模型的,还需要对分布式训练大规模模型进行技术攻关。源1.0 实际使用了2128块GPU,消耗16天完成了2457亿参数的模型训练。(分布式大规模模型训练并非我所熟知的领域,但我想推荐两篇知乎上的文章 MindSpore 的 @ZOMI酱 从分布式训练到大模型训练 和 一流科技 @成诚 让每一位算法工程师都有能力训练 GPT 读完两位老师的内容,就有助于理解源1.0采用的数据并行、张量并行和流水行并行策略是将这个千亿参数的单体语言模型训练出来,并提高训练效率的)
除了在CLUE的比赛中获得好结果,源1.0还挑战了文本生成任务。
在上面的表中,我们可以看到多组任务,每一组会输入一段制定体裁的文本,然后分别由人类作者和源1.0 模型生成相对应的另一段文本。
比如在对话任务中。输入:“我好心问你吃了饭没,你又骂我”,某位人类作者会认为接下来的话是“宝贝儿我错了,再也不敢了”,而源1.0 认为接下来可能是“我又没骂你,你自己对号入座”。在我看来,人类作者构建了一个委屈巴巴的追求者形象,而源的回答就显得茶艺很高了。
那么怎么评判生成内容的质量好坏呢,根据经典的问卷调研法,浪潮团队邀请了一批实验人员评判生成的文本到底是人还是机器写作的。从收到的83份有效问卷可以得到相应准确率。我们可以很惊喜的发现,在对话、新闻等任务中,人类受试者仅有3成的几率能正确分辨人和机器的创作,换句话说,在这些任务中机器能以7成的成功率欺骗人类达到以假乱真的目的。反之,在作诗领域,机器创作的质量还是要再学习一个。
那么,回到最开始的讨论,浪潮这个超大规模中文模型的工作和我的研究有什么关系呢?首先它较好地处理了(中文自然语言)小样本学习任务,其次据我所知,它已有数据、模型和API的开源计划[6],我尽管受限于学校的数据和计算资源环境无法进行从头开始训练模型,但通过复用模型和API也可以开展相关研究。
最后,人工智能领域的前沿科研机构和企业都有对更大更快更强模型的探索,而针对落地场景,如何在资源受限的现实情况下取得较好的模型效果,这是我认为很值得思考的方向。希望各位老师多多指教。
其实这是一个趋势,这几年各大AI巨头都在搞特大模型。
2018年BERT的提出,参数3亿,将NLP模型推向新高度。当然,这个模型的灵感可以追溯到2017年在《Attention Is All You Need》提出的Transformer。
3亿参数看似挺多了。然而2020年GPT-3的提出,把模型参数带入千亿时代。甚至有人调侃,这次论文应该叫《Money Is All You Need》了吧。GPT-3比起之前的模型,创新性地在零次学习和小样本展现出强大的能力,使得自然语言模型呈现出前所未有的「智能」。
当然,长江后浪推前浪,这不,前段时间MT-NLG发布,直接达到了5300亿参数,刷新了参数数量记录。MT-NLG相比起GPT-3,展现出一定的推理能力,例如运算符推断等等。在完成预测(Completion prediction),阅读理解(Reading comprehension),常识推理(Commonsense reasoning),自然语言推论(Natural language inferences),词义消歧(Word sense disambiguation)等多个维度都有着无与伦比的表现。
不过在MT-NLG发布前几周,源1.0也发布了,思路和MT-NLG有着异曲同工之妙,例如张量、数据和管线并行思维很相近。中文NLP能力超强,ZeroCLUE零样本学习榜和FewCLUE均第一(除了人类)。
总的来说,源1.0和MT-NLG有着相近的思路,但从论文看起来,推理能力可能比不上MT-NLG,当然,这是我主观的感受,也许是论文没描述清楚,具体如何得两者都向开发者开放使用后才能测评。
不过GPT-3的论文分析太多了,我就不再赘述了;MT-NLG仅仅出了博客,论文还没出,所以我们就先看看源1.0的论文吧。
这篇论文由浪潮的Shaohua Wu等人发表。
首先,论文介绍了背景。Transformer架构被广泛应用于自然语言处理,从2017年起,一系列基于Transformer的模型被提出,随着模型大小的增加,Transformer性能也在一直增加。GPT-3的提出前,业界通用做法是在大量的数据上进行无监督训练,然后在特定的任务上面微调。然而GPT-3可以直接在很多领域直接应用,在零次学习(Zero-shot learning)和小样本学习(Few-shot learning)表现得非常好。在GPT-3后,业界增加模型大小的方法有两种:
然而这两种方法在零次学习(Zero-shot learning)和小样本学习(Few-shot learning)有着不一样的表现。MoE依然是用最常用的方法,也就是在大量数据上预训练,在特定任务微调。单体模型虽然在零次学习上表现很好,但是训练起来是非常耗费资源的,例如GPT-3就使用了10000个GPU进行训练。
为了兼顾单体模型的优点(零次学习和小样本学习表现好),以及尝试克服单体模型耗费资源的缺点,浪潮提出了名为「源1.0」的模型。这里说句题外话,在9月底发布时,这个模型还是当时最大的单体语言模型,不过随着MT-NLG的提出,这个记录没保持几天。看来这个行业真的太卷了。
在这项工作中,有两个模型架构,一个是语言模型 Language Model (LM),另一个是前缀语言模型 Prefix Language Model (PLM)。其中LM是常用的架构,在NLG任务表现比较好,但在NLU任务表现相对较差;而PLM是在NLU和NLU任务上都表现不错。
在训练方法上,为了加快训练过程,在大规模分布式训练中,源1.0采用三维平行训练方法。是哪三维呢?分别是:
1.张量并行。在单个节点上,让模型的层分布在不同的设备上。管线并行。
2.对于具有千亿参数的语言模型,我们很难将其存储在一个节点内。为了解决这个问题,论文提出通过管道并行,把多个层分布到LM的多个节点。
3.数据并行。
源1.0使用的源数据包括以下:
当然,为了让训练数据质量更好,团队设计了粗筛选(Coarse Filtering)和细筛选(Fine Filtering)标准,粗筛选包括移除header,移除英文内容等等;细筛选包括移除广告内容,低质量文本,去重等等。
最终筛选出了5TB的高质量文本训练。
模型在FewCLUE和ZeroCLUE上面评估,任务包含文本分类,威诺格拉德模式(Winograd Schema),自然语言推理,阅读理解四个方面。
结果还是令人满意的。在ZeroCLUE上,总分拉开了SOTA很多。在FewCLUE上,130亿参数版本的LM和PLM模型的平均分也SOTA差不多。
2450亿参数版本的源1.0模型就更强大了。下面是Yuan 245B和其他模型在WebQA和CMRC2018上面分数的对比。
文本生成方面,源1.0的效果也是令人惊喜的,虽然准确率方面确实还离人类很远,但给人感觉还是不算生硬的,甚至还能写对联和用词造句。
首先总结下这篇论文的亮点。
首先,源1.0是目前最大的中文NLP巨量模型,在MT-NLG发布前,还当了单个月全球最大的单体模型(苦笑)。顺便一提,在中文NLP领域的工作难度要更高,源1.0模型在处理更复杂的语言结构、句子理解等方面要比其他英文巨量模型复杂得多,一个显而易见的例子是:中文不使用空格,分词比起英文确实有难度。
在训练成本方面,也是取得了不错的成绩。通过大规模平行训练,所需GPU数量大大降低了。源1.0在2128个GPU的集群训练,相比起GPT-3使用了10000个GPU的集群,前者大概是后者20%左右。但依然还是个成本颇高的模型,期待有更多的模型能把训练成本再搞下来一些。
和其他巨量模型特点相近的是,源1.0在零次学习和小样本学习里取得不错的效果,甚至在ZeroCLUE零样本学习榜和FewCLUE均拿下了除了人类之外的第一的成绩。
不过,我认为,仅仅一篇论文的概要,并不足以让正在阅读此回答的你满足。你心里应该还想知道,为啥大家都在研究巨量模型,AI在往哪个研究方向走?
最近这些年,各种新的模型论文,都有一个特点——《Money is All you need》。这背后揭示了一些规律。
从BERT,到GPT,到MT-NLG和源1.0,这类巨量的模型,现在都称为Foundation Model. 人的大脑也就100多亿个神经元,而现在的模型参数已经是千亿级别了。
为啥最近 Foundation Model成为研究的前沿?
在《On the Opportunities and Risks of Foundation Models》[1]论文中说到,巨量模型的意义在于突现和均质(Emergence and homogenization)。特别是突现,是大模型魅力所在,这意味着系统的行为是隐式诱导的,而不是显式构造;它既是科学兴奋的源泉,同时也是对意料之外的焦虑的源泉结果。展现出了从海量未标记数据中学习,且不限于某一特定任务的「通用」能力。虽然通用人工智能暂未能实现,但往这个方向探究,也许能找到一些通往强人工智能的道路。虽然边际效应在递减,但性能上限仍未知。
而且前面大家也可能注意到了,无论是GPT-3还是源1.0,只要是巨量模型,都会考察其Zero-shot和few-shot的能力。为什么呢?因为人类可以仅通过一个或几个示例就可以轻松地建立对新事物的认知,而是否拥有从少量样本中学习新的能力,是将人工智能和人类智能的区别之一,其中零样本学习和人类的「举一反三」的推理和知识迁移能力更像,换言之,就是无需新的任何训练数据就能执行新的任务。所以,要证明巨量模型足够智能,那么Zero-shot和few-shot的表现得让人信服。
这似乎和上面冲突,但其实并不,这是另一个平行的道路。虽然对于普通人来说,再怎么降低,还是难以负担训练模型的价格,但对于机构来说,随着硬件性能上升以及训练方法的优化,将成本降低到一定程度,就能达到落地的要求,向开发者开放API。
过去大家都吐槽现在的研究都是《Money is All you need》,但从MT-NLG,源1.0等模型看来,巨量模型的研究方向是大规模平行训练。GPT-3训练需要10000块GPU,约355GPU年(作者注:GPU年的意思是一张GPU跑1年能完成的工作量)。而源1.0用了2128张GPU,16天完成了训练,算下来大概93GPU年(2128*16/365≈93)。至于MT-NLG,媒体报道是用了4480张GPU,但没说具体用了多久,这里不太清楚用了多少GPU年。
我认为,是降低成本促进巨量模型落地,降低巨量模型研究和应用的门槛是未来一段时间AI的重要方向。源1.0比起GPT-3,资源利用效率方面有了数量级(几倍)的提高,不过未来的路依然很长,希望能看到未来的巨量模型在训练速度上有指数级(十倍百倍等)的提升。
顺便一说,我去年申请的GPT-3试用资格,现在都还没给我呢。看媒体报道说,源1.0据说今年年底就可以向公众开放使用了,如果顺利的话,应该是第一个向大众开放使用的巨量模型。
大家可能会想,为啥巨量模型出现的场景总是NLP领域?我个人理解有以下两点
所以我认为,相对起CV,NLP里面,由于语言和情感的复杂性,突现(Emergence)会发挥更大的作用。
总体来说,源1.0看起来应该是目前中文领域最强的模型,在零次学习和小样本学习取得不错的成绩,不过就好像它当了十几天全球最大单体模型就被超越了一样,我希望它很快就被新的中文巨量语言模型超越。希望未来在中文领域会有更多的巨量模型,以更低的成本,更强大的性能出现,超越它,使得中文巨量模型研究领域卷起来,更好的造福我们这些普通开发者以及普通使用者。