第四章 深度学习的核心技术
很多人发现ChatGPT在自然语言处理的系列任务中,比如在文本理解和生成、对话问答、机器翻译、程序代码生成方面都有很大的进步。这是怎么做到的呢?从技术层面讲,这其实是近几年深度神经网络、大型语言模型的研究不断深入带来的成果,通俗点讲就是海量的数据加上巨大的算力催生了这样一个大型语言模型,使其落地应用。
也就是说,ChatGPT背后的关键技术离不开大模型的算法、算力、数据(见图4-1)。
图4-1 ChatGPT的技术支撑
算法
ChatGPT由GPT-3.5模型提供支持。GPT是一种基于互联网可用数据训练的文本生成深度学习模型。在算法方面,该模型使用了“利用人类反馈强化学习”(RLHF)的训练方式,包括人类提问机器回答、机器提问人类回答,并且不断迭代,让模型逐渐有了对生成的答案的评判能力。
RLHF的训练过程可以分解为三个步骤(见图4-2)。
阶段1:预训练语言模型
首先,将一个经典的预训练语言模型作为初始模型。在预训练模型出现之前,深度学习之所以不够成功,主要原因来自两个方面:一方面是匹配给某个具体任务的训练数据总量不够多。随着模型容量的增加,其需要靠大量训练数据来支撑,否则即使能把深度做起来,任务效果也不佳,因此这成为自然语言处理领域一个无法解决的难题;另一个方面是深度学习的特征抽取能力不够强,就算有再多的数据也没用,因为模型不能有效地吸收数据里蕴含的知识。这两个原因,阻碍了深度学习在自然语言处理领域成功突围。而GPT预训练模型的出现,无论从学术研究角度看,还是从场景应用角度看,都代表了自然语言处理领域的一个技术飞跃,并带来了整个领域研究范式的转换(见图4-3)。
图4-2 RLHF的训练过程
图4-3 预训练语言模型(LM)
阶段2:训练打分模型
之后,要基于这个初始语言模型产出的数据来训练一个打分模型。打分模型的目标是评估模型的输出是否在人类看来表现不错。即输入[Prompt(提示),模型生成的文本],输出一个评估文本质量的标记数字。用于训练打分模型的Prompt数据一般来自一个预先富集的数据集,ChatGPT的Prompt数据主要来自那些调用GPT API的用户。这些提示词会被放进初始的语言模型(第一阶段的模型)以生成文本。打分模型可以看作一个判别式的语言模型,因此可以从一个预训练语言模型出发,而后在[x=(Prompt,模型回答),y=人类满意度]构成的标注语料上微调,也可以直接随机初始化,在语料上直接训练(见图4-4)。
图4-4 收集数据并训练奖励模型(RM)
阶段3:基于RL进行语言模型优化
有了一个初始的语言模型来生成文本,以及用一个打分模型来判断模型生成的文本是否优质(迎合人类偏好)之后,就可以使用强化学习(RL)基于打分模型来优化初始语言模型。
将初始语言模型的微调任务建模为强化学习问题,因此需要定义策略(Policy)、动作空间(Action Space)、观察空间(Observation Space)和打分函数(Scoring Function)等基本要素。所谓策略,就是指基于该语言模型,接收Prompt并将其作为输入,然后输出一系列文本(或文本的概率分布);动作空间就是词表所有标记在所有输出位置的排列组合;观察空间是可能的输入标记序列(Prompt),是词表所有标记在所有输入位置的排列组合;打分函数是基于训练好的RM模型,配合一些策略层面的合约进行的打分计算。有了这个打分模型,便可以根据策略优化算法来更新模型参数了(见图4-5)。
图4-5 通过强化学习微调
通过以上过程,完全可以迭代式地更新打分模型和策略模型,让打分模型对模型输出质量的评估愈加精确;策略模型的输出则不断地与初始模型拉开差距,使得输出文本变得越来越符合人类的需求和认知。
算力
ChatGPT成为新一代人工智能里程碑的背后,是算力发展和数字经济时代形成的大数据所共同支持的大型语言模型训练。在算力方面,ChatGPT所使用的GPT-3.5模型是在微软云计算服务Azure AI超算基础设施(由V100 GPU组成的高带宽集群)上进行训练的,总算力消耗约3640 PF-days(每秒一千万亿次计算,运行3640天)。
这就带来了两个问题:巨大的算力需求与资金消耗(见图4-6)。训练和运行模型都需要庞大的算力,有研究估测,训练1750亿个参数大型语言模型的GPT-3,就需要有上万个CPU/GPU 24小时不间断输入数据,所需能耗相当于开车往返地球和月球,且一次运算就要花费450万美元。
图4-6 巨额的算力
在大模型的框架下,ChatGPT所使用的GPT模型的每一代参数量均高速扩张,预训练的数据量需求和成本亦快速提升。ChatGPT官网在2023年1月27日至2023年2月3日吸引的每日访客数量高达2500万。假设以目前的稳定状态,每日每位用户提出约10个问题,则每日约有2.5亿次咨询量。
根据国盛证券计算机分析师刘高畅、杨然发表于2023年2月12日的报告《ChatGPT需要多少算力》,2023年1月平均每天约有1300万独立访客使用ChatGPT,其对应的芯片需求为3万多个英伟达A100 GPU图形处理器,初始投入成本约为8亿美元,每日电费在5万美元左右,GPT-3训练一次的成本约为140万美元,对于一些更大的LLM,训练成本介于200万美元至1200万美元之间。这对于全球科技大企业而言并不便宜,但尚在可接受范围内。
对于ChatGPT的技术,Google、Meta等头部互联网巨头迟早都会掌握,但是科技公司之间的军备竞赛依旧会展开。一方面,ChatGPT的推理成本高昂,而且消耗的算力与用户体验高度正相关;另一方面,搜索引擎用户黏度小,用户永远会去用体验最好的那个,这将大幅推高搜索算法的成本,使得Google赖以生存的搜索广告业务再也无法“躺着赚钱”。微软的营收将会更加多元化,因此受到的冲击会更小,能享受到Edge浏览器,甚至Windows系统市场份额增加的好处。说得直白一点,现在的微软相当于开启了大模型军备竞赛,想要“卷死”竞争对手。
早些年,企业通过自行发电来满足运营的电力需要,不仅耗资巨大而且还需具备某些与企业业务关联不大的特殊能力。电网基础设施的运行,使供电成为一项公共事业,这也使得企业能用购电代替自行发电,就其实质而言,企业将自行发电变为购买发电服务。集中发电可以使电力的使用更为高效,这意味着更多企业,甚至是个人可以根据自身的需要买电,而不用为其他电量支付任何费用。电力供应的公共化,提高了各部门的生产力,改善了社会生活的质量,并为新兴产业创造了发展机会。
信息和通信技术行业也正经历着类似的演进过程。几十年来,机构和个人通过投资计算机软件和硬件,像购买商品一样购买信息和通信技术。在过去十年中,信息和通信服务的供给方式快速更新,随着高速宽带基础设施的普及,通过网络我们可以将信息和通信技术作为一项服务来购买。
如今,算力就像被大家广泛使用的电力一样,同时具有潜在破坏性与变革性。如果将AI比作电力,那么大模型算力则相当于发电机,能将智能应用在更大的范围中进行普及。大模型的智能能力在未来将成为一种公共基础资源,像电力或自来水一样随取随用。未来,每个智能终端、每个App、每个智能服务平台,都可以像接入电网一样,接入由IT基础设施组成的算力网络,让AI算法与技术能够更广泛地应用于各行各业。各行各业的用户若想使用服务,却不想购买、安装和运行昂贵的计算机硬件,就可借助无处不在的有线或无线网络,从云端获取算力,这与使用其他公共服务没有区别(见图4-7)。
云计算尽管也将算力比作随取随用的资源,但目前仍然不像用电那样方便。这是因为云计算本质上需要云和用户进行双向的资源交换,用户需要经过烦琐的数据准备、定义计算过程等环节,将数据和算法转移到云端,再由云端完成任务后传回本地。相对于云计算模式,基于大模型算力形成的大规模智能网络能够更加方便地被调用。基于大模型算力的大规模智能网络不需要用户定义计算过程,只需要准备好数据,大模型算力就能够在少量微调甚至不微调的情况下直接完成用户所需的工作。这一智能能力生产和消费的网络,未来或将成为人类社会产业发展的主流模式。
图4-7 从电力到算力
未来,大模型算力在能力泛化、技术融合、研发标准化等方面的优势让其有能力支撑各种应用,成为人工智能技术及应用的新基座。正如发电厂和高速公路一样,大模型算力将成为各行各业应用人工智能技术的底座和创新的源头。
数据
资料显示,ChatGPT有着多达1750亿个参数的模型,并在2023年初训练完成。模型训练的背后离不开大数据的支持,OpenAI所使用的主要公共爬虫数据集有着超过万亿个单词的人类语言数据库。正是这些海量数据,使得ChatGPT展示出了强大的三种能力:
● 语言生成:遵循提示词(Prompt),然后生成补全提示词的句子。这也是目前人类与语言模型最普遍的交互方式。
● 上下文学习(In-context Learning):遵循给定任务的几个示例,然后为新的测试用例生成解决方案。值得一提的是,GPT-3虽然是个语言模型,但它的重点不是语言建模(Language Modeling),而是上下文学习。
● 世界知识学习:包括事实性知识(Factual Knowledge)和常识(Commonsense)。
以上三种能力都来自大规模预训练:在有3000亿个单词的语料上预训练拥有1750亿个参数的模型(训练语料的60%来自2016—2019年的Common Crawl语料库,22%来自WebText语料库,16%来自书籍和报刊,2%来自维基百科)。其中的Common Crawl语料库是2008年至今一个网站抓取的大型数据集,数据包含原始网页、元数据和文本提取,它的文本涉及不同语言、不同领域。重点研究实验室一般会首先选取它的纯英文过滤版(C4)作为数据集。其中的WebText语料库是一个大型数据集,它的数据是从社交媒体平台Reddit所有输出链接网络中爬取的,每个链接至少有三个赞,代表了流行内容的风向标,对输出优质链接和后续文本数据具有指导作用(见图4-8)。
图4-8 ChatGPT的数据来源
关于ChatGPT上下文学习的能力来源及为什么上下文学习可以泛化,目前尚未有明确的剖析。有些人工智能领域专家推测,这种能力可能来自同一个任务的数据点在训练时按顺序排列在同一个batch(批处理)中。未来,语言模型预训练促进上下文学习的原理,以及上下文学习行为与微调的协同原理值得进一步深入研究。
目前的ChatGPT在有3000亿个单词的语料上预训练拥有1750亿个参数的模型,据说GPT-4将是一个拥有超过100万亿级别参数的大模型(见图4-9)。根据学术界的经验,深度神经网络的学习能力和模型的参数规模呈正相关。人类的大脑皮层有140多亿个神经细胞,每个神经细胞又有3万多个突触。所以,大脑皮层的突触总数超过100万亿个。所谓的神经细胞会通过这些突触相互建立联系。一旦GPT-4实现100万亿个参数规模,那么它就可以堪比人的大脑,这意味着它将达到与人类大脑神经触点规模同等的水平。如果这样,不仅意味着GPT-4可以改造人类的思想和具备创作能力,具有形成超越人工智能的专业能力和大众化的趋势,而且意味着它开始具备人类的思维能力,并有可能在越来越多的方面替代人类。
图4-9 大量的数据
