大模型、超大模型与 Foundation Model 技术精要
目前 Foundation Model(基础模型)或者大模型非常火热。本文将介绍什么是大模型及其基本概念,分析其实际作用与应用场景,并介绍支持大模型训练的 AI 框架。
在深入之前,思考几个问题:
- 为什么预训练网络模型变得越来越重要?
- 预训练大模型的未来的发展趋势,仍然是以模型参数量继续增大吗?
- 如何预训练一个百亿规模的大模型?
Foundation Model
2021 年 8 月,李飞飞和 100 多位学者联名发表了一份 200 多页的研究报告《On the Opportunities and Risk of Foundation Models》,深度综述了当前大规模预训练模型面临的机遇和挑战。
在文章中,AI 专家将大模型统一命名为 Foundation Models,可翻译为基础模型或基石模型。论文肯定了 Foundation Models 对智能体基本认知能力的推动作用,同时也指出大模型呈现出「涌现」与「同质化」的特性。
所谓「涌现」代表一个系统的行为是隐性推动的,而不是显式构建的;「同质化」是指基础模型的能力是智能的中心与核心,大模型的任何一点改进会迅速覆盖整个社区,但其缺陷也会被所有下游模型所继承。
回到大模型的发展,2017 年 Transformer 结构的提出,使得深度学习模型参数突破了 1 亿。从最初的 LeNet、AlexNet、ResNet 开始,模型参数一个比一个大。到了 BERT 网络模型的提出,使得参数量首次超过 3 亿规模;GPT-3 模型超过百亿;鹏程盘古实现千亿稠密的规模;Switch Transformer 的问世还一举突破万亿规模。
以 GPT 系列为例:
- GPT-1 是上亿规模的参数量,数据集使用了 1 万本书的 BookCorpus,25 亿单词量;
- GPT-2 参数量达到了 15 亿规模,其中数据来自于互联网,使用了 800 万在 Reddit 被链接过的网页数据,清洗后约 40GB(WebText);
- GPT-3 参数规模首次突破百亿,数据集上将语料规模扩大到 570GB 的 CC 数据集 (4 千亿词) + WebText2(190 亿词) + BookCorpus(670 亿词) + 维基百科 (30 亿词)。
可以看到,数据上面,每一代均相比前一代有了数量级的飞跃,无论是语料的覆盖范围、丰富度上都是绝对规模的增长。可以预测到,下一代万亿模型,使用的数据如果相比 GPT-3 在质量、来源和规模上没有量级的变化,很难有质的提升。大模型在产学各界掀起一阵阵巨浪,背后彰显的除了分布式并行和对 AI 算法的掌控能力,还是一次大公司通过 AI 工程的创举,利用大规模 AI 集群来进行算力竞争的故事。
随着网络模型越来越大,单机单卡、一机多卡、甚至多机多卡的小规模集群,只要网络模型参数量一旦超过十亿以上的规模,就很难用现有的资源训练了。于是有的研究者就会提出质疑:
- 一味的让模型变大、让参数量爆炸式增长,真的能让 AI 模型学习变得更好吗?
- 真的能带来真正的智能吗?
- 生成的文字内容不合逻辑?
- 给出的医疗建议不靠谱!
这里值得澄清的一点是,目前类似于 GPT-3 这样的大模型,在零样本和小样本的学习能力,主要来源于预训练阶段对海量语料的大量记忆,其次是语义编码能力、远距离依赖关系建模能力和文本生成能力的强化,以及自然语言进行任务描述等设计。而在训练目标方面,并没有显式的引导模型去学习小样本泛化能力,因此在一些小众的语料、逻辑理解、数学求解等语言任务上出现翻车的现象也是能理解的。
虽然大模型刚提出的时候,质疑的声音会有,但不可否认的是,大模型做到了早期预训练模型做不到、做不好的事情,就好像自然语言处理中的文字生成、文本理解、自动问答等下游任务,不仅生成的文本更加流畅,甚至内容的真实性也有了显著的改善。当然,大模型最终能否走向通用人工智能仍是一个未知数,只是,大模型真的是有希望带领下一个很重要的人工智能赛道。
大模型的作用
有了大模型的基本介绍,我们来看看大模型的具体作用。
虽然深度学习使得很多通用领域的精度和准确率得到很大的提升,但是 AI 模型目前存在很多挑战,最首要的问题是模型的通用性不高,也就是 A 模型往往专用于特定 A 领域,应用到领域 B 时效果并不好。
1) 模型碎片化,大模型提供预训练方案
目前 AI 面对行业、业务场景很多,人工智能需求正呈现出碎片化、多样化的特点。从开发、调参、优化、迭代到应用,AI 模型研发成本极高,且难以满足市场定制化需求,所以网上有的人会说现阶段的 AI 模型研发处于手工作坊式。基本上一个公司想要用 AI 赋能自身的业务,多多少少也得招聘懂 AI 的研发人员。
为了解决手工作坊式走向工场模式,大模型提供了一种可行方案,也就是'预训练大模型 + 下游任务微调'的方式。大规模预训练可以有效地从大量标记和未标记的数据中捕获知识,通过将知识存储到大量的参数中并对特定任务进行微调,极大地扩展了模型的泛化能力。例如,在 NLP 领域,预训练大模型共享了预训任务和部分下游任务的参数,在一定程度上解决了通用性的难题,可以被应用于翻译,问答,文本生成等自然语言任务。


