GPT-4理论篇-1GPT-4核心技术探秘

Posted Jcloud

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GPT-4理论篇-1GPT-4核心技术探秘相关的知识,希望对你有一定的参考价值。

在本文中,我将结合GPT-4的技术报告、GPT-4相对于GPT 3.5/ChatGPT的提升、GPT-4和ChatGPT的对比、OpenAI的近期工作,大语言模型(Large Language Model,LLM)模型的科研进展,多模态模型的科研进展等多方面的信息,深入分析GPT-4的技术细节。

前言

GPT-4已经发布有一段时间了,但是出于安全性等各种原因,OpenAI并没有公布GPT-4的技术细节和代码,而是仅仅给出了一个长达100页的技术报告[1]。

这个技术报告着重介绍了GPT-4的强大之处,仅仅给出了几个技术方向的概括,对于想了解技术细节的我们远远不够。

在本文中,我将结合GPT-4的技术报告、GPT-4相对于GPT 3.5/ChatGPT的提升、GPT-4和ChatGPT的对比、OpenAI的近期工作,大语言模型(Large Language Model,LLM)模型的科研进展,多模态模型的科研进展等多方面的信息,深入分析GPT-4的技术细节。

因为并没有明确的证据证明GPT-4就是这么做的,所以我们在这里主要讨论要实现GPT-4的这些能力,OpenAI可能使用了哪些技术。所以如果我的推测有所错误,也欢迎各位读者在评论区探讨。接下来让我们一起化身福尔摩斯,开始分析GPT-4背后的原理吧。

1. GPT-4的提升

GPT-4是在ChatGPT基础上迭代出来的,关于ChatGPT的原理我再这里就不再赘述,需要了解的移步我在《ChatGPT/InstructGPT详解》一文中给的介绍。这篇文章中,我们先讨论GPT-4相对于ChatGPT做了哪些改进,即GPT-4相对于ChatGPT有哪些功能上的提升。接下来我们讨论OpenAI为了做到这些提升,在GPT-4中可能应用了哪些技术。最后我们讨论其它大语言模型以及使用GPT-4的一些感想。

1.1 zero-shot及few-shot的学习能力

当我们在使用GPT-4进行文本生成时,我们会惊喜的发现GPT-4几乎可以非常完美的回答你各种***钻的问题,这说明了GPT-4具有非常强大的无监督学习的能力。

此外,GPT-4的技术报告中也给出了大量的无监督学习的例子,甚至在有些场景逼近甚至超过了有监督的SOTA方法。例如在HumanEval[3]的代码生成数据集上,甚至超过了著名的代码生成工具CodeX[3]。此外,在评估正确性的问答数据集TruthfulQA [26]上,GPT-4逼近了SOTA的 Anthropic-LM[4]。

1.2 逻辑推理能力

GPT-4的技术报告中着重强调的是它相对于ChatGPT在诸多学术考试上的提升,如图1。学术测试评估反映的是GPT-4比ChatGPT有更强的逻辑推理能力。@岳玉涛 Max通过19个问题横向对比了GPT-4和ChatGPT的逻辑推理问题[2],其中ChatGPT的正确率是37%,GPT-4的正确率是100%,从对比的例子中我们明显可以看出GPT-4在逻辑推理上有着质的飞跃。

图1:GPT-4与ChatGPT在诸多学术考试中的成绩对比

我这里也找了一个简单的逻辑推理问题,可以看出在这个过桥的例子中ChatGPT虽然给出了过桥顺序,但是时间计算错误,而GPT-4则简单又清晰的解决了这个问题。

问题:四个人 ABCD 过桥,一次最多能过两个人,他们的手电能维持十七分钟,每个人所需的时间分别为 1、2、5、10;求最快可以多长时间全部过桥?

ChatGPT:为了让四个人尽快过桥,我们需要让速度最慢的人尽快过桥。因此,我们可以先让速度最慢的两个人 A 和 B 过桥,然后让 A 返回,再让速度次慢的人 C 和 D 过桥,最后让 B 返回,这样就完成了全部过桥的过程。

具体来说,我们可以按照以下步骤进行:

A 和 B 过桥,花费时间为 10 分钟。

A 返回,花费时间为 1 分钟。

C 和 D 过桥,花费时间为 5 分钟。

B 返回,花费时间为 2 分钟。

A 和 B 过桥,花费时间为 10 分钟。

因此,总共花费的时间为 10 + 1 + 5 + 2 + 10 = 28 分钟。这就是最快可以多长时间全部过桥的时间。

GPT-4:为了使四个人 ABCD 最快地全部过桥,我们可以采取以下策略:

A 和 B 一起过桥,用时 2 分钟。

A 返回,用时 1 分钟。

C 和 D 一起过桥,用时 10 分钟。

B 返回,用时 2 分钟。

A 和 B 一起过桥,用时 2 分钟。

总共用时:2 + 1 + 10 + 2 + 2 = 17 分钟。

所以最快可以在 17 分钟内使所有人过桥。

1.3 理解图表能力

GPT-4的一个重大提升是开始涉及多模态,鉴于GPT-4的图像接口还未开放,我们这里借用GPT-4的技术报告中给的例子。在图2中,GPT-4能够精确的理解VGA口Lightning口的不协调之处。这个例子说明GPT-4不仅仅是简单的理解图像中的内容,它最厉害的点在于能够识别图像中的特殊点。

图2:GPT-4具有强大的图、表理解能力

1.4 更安全的文本生成能力

GPT-4的技术报告中重点讨论了GPT-4和之前的模型一样有安全问题,但GPT-4的安全性已经大幅提升。技术报告中指出,ChatGPT生成有害内容的概率大概是GPT-4的10倍。图3举了大量的早期GPT-4和成熟GPT-4在有风险提示下生成的内容,可以看出成熟GPT-4的危险性大大降低,但这并不意味着GPT-4就是一个完全无害的模型。

图3:早期GPT-4和成熟GPT-4在生成内容安全性上的示例

GPT-4做了大量的工作来保证模型的安全性,首先它们聘请了50余位不同方向的领域专家进行对抗测试和红队测试,二是训练了一个基于规则的奖励模型(Rule-Based Reward Models, RBRMs)来辅助模型的训练,关于这一部分的实现细节,我们将会在后面详细展开。

1.5 更强的编程能力

GPT-4的技术报告中另外一个重要的对比项是它和ChatGPT在LeetCode上易中难三个不同难度上的代码生成能力。在无监督的情况下,GPT-4在HumanEval数据集上的评估准确率由ChatGPT的48.1%提升至67.0%。GPT-4的技术报告中指出,ChatGPT在LeetCode的166道编程题中仅对了20道,而GPT-4则回答对了55道。表1是GPT-4和ChatGPT在LeetCode的这166道编程题的具体分布。

GPT-4 GPT-4 (no vision) ChatGPT
LeetCode(easy) 31 / 41 31 / 41 12 / 41
LeetCode(medium) 21 / 80 21 / 80 8 / 80
LeetCode(hard) 3 / 45 3 / 45 0 / 45

表1:GPT-4和ChatGPT在LeetCode编程题上的表现效果

1.6 处理其它语言的能力

GPT-4在英语以及非英语上都有了大幅提升,在大多数语种上都超过了ChatGPT在英语上的表现,这里我们分别让ChatGPT和GPT-4分别应《让子弹飞》中汤师爷的要求写一首诗,要求是“要有风,要有肉;要有火锅,要有雾;要有美女,要有驴!”。对比两首诗,ChatGPT写的像是没有什么文采的现代诗,而GPT-4生成的内容除了前面两居字数过多之外,基本像一首中国古诗了,甚至还在一定程度上保证了押韵。

ChatGPT:

风吹过山岗,肉香四溢
火锅热气腾腾,雾气缭绕
美女婀娜多姿,驴儿欢快奔腾
这是一幅独特的画卷,让人心旷神怡
风肆意地吹拂,肉香扑鼻而来
火锅里的食材,让人垂涎欲滴
雾气弥漫,让人感到神秘
美女的容颜,让人陶醉其中
驴儿的欢快,让人感受到生命的活力
这是一幅充满生命力的画卷,让人心驰神往

GPT-4:

翻滚的风肆意掠过山涧,
火锅涮肉锦上添花。
炊烟袅袅绕雾缠,
美女佳驴共同游。

美女翩翩拂驴背,
吹散烦忧与世界。
嬉戏胭脂笑颜醉,
驴儿踏歌奔山外。

火红蘑菇热情翻,
辣椒牛肉峰水澹。
鸳鸯火锅欢歌笑,
时光荏苒留梦间。

雾濛濛涤净尘缘,
蓑衣柴扉任风险。
驴蹄踏碎人间俗,
飞鸿蹄印留辉煌。

1.7 处理更长序列的能力

ChatGPT能处理的最大序列是4K个token,而OpenAI开放了8k和32k的两个模型,其中每个汉字大概占用2到2.5个token。GPT-4的token根据指示和回应分别计价(表2),其中32k的价格是8k的两倍,对比ChatGPT的每1000token的0.02美元,GPT-4要贵了15倍左右。

模型 Prompt Completion
8K context $0.03 / 1K tokens | $0.06 / 1K tokens
32K context $0.06 / 1K tokens | $0.12 / 1K tokens

表2:GPT-4的收费细节

关于GPT-4的更多能力的探测,微软雷蒙德研究院机器学习理论组负责人Sébastien Bubeck在他们最新发布的长达155页的文章[25]中进行了广泛的讨论。

他们指出GPT-4表现出了远超文本生成模型理论上能表现的效果,成为了点燃通用人工智能(AGI)烈焰的星星之火,GPT-4已经具备了非常强的推理、计划、解决问题、抽象思考、理解复杂想法、快速学习以及从经验中学习的能力。


2. GPT-4技术方案猜测

有了我们发现的GPT的这些提升,我们便可以结合当前LLM的进展以及OpenAI的工作猜测GPT-4可能的技术方案。因为我们只能依靠公布的算法进行推测,不排除OpenAI内部使用未开放的算法作为解决方案,所以如果我的猜测有误,您就姑且当做学习到了几个独立的算法。

  1. zero-shot及few-shot的学习能力:这个提升的理论依据很大可能是因为大模型的涌现能力(emergent ability)[5];
  2. 逻辑推理能力:用到了大模型的思维链(Chain of Thought,CoT)[6]以及自提升能力(Self-Improve Ability)[7];
  3. 理解图像能力:推测借鉴了OpenAI著名的多模态模型CLIP[8]或者是微软的多模态模型KOSMOS-1[12];
  4. 更安全的文本生成能力:这一部分技术报告中介绍的比较多,主要是专家测试,幻觉检测以及RBRM;
  5. 更强的编程能力:推测这一部分借鉴了OpenAI的著名的代码生成模型:CodeX;
  6. 处理其它语言的能力:推测可能借鉴了XLM [9]等跨语言预训练模型的思想,或是因为涌现能力强化了GPT-4在其它语种上的表现效果;
  7. 处理更长序列的能力:推测这一部分用到了处理长输入的模型Transformer-XL [10]或者OpenAI提出的可以降低长数据复杂度的Sparse Transformer [11];

下面我们介绍我们的推测依据以及对这些推测的技术进行简单的介绍。

2.1 涌现能力

涌现能力(emergent ability)是LLM取得突破性进展最重要的核心技术,涌现能力指的是一种模型在训练过程中,自动地学习到一些高级的、复杂的功能或行为,而这些功能或行为并没有被直接编码或指定。

这种能力可以使得模型在处理新的、未知的任务时表现更加出色,因为它可以自适应地学习到新的功能或行为,而不需要重新训练或修改模型。图4展示了包括GPT-3在内的诸多LLM都展现了非常强的涌现能力,即模型的参数量等指标突破某个指标后,它的性能会快速提升。这里我们可以断定GPT-4的zero-shot和few-shot的学习能力是源自大模型的涌现能力。

模型产生涌现能力主要是取决四点,它们分别是:

  • 模型超大的参数量;
  • 模型的架构;
  • 高质量的训练数据;
  • 更先进的训练策略。

其中模型的参数量是最为重要的因素。

图4:GPT-3等诸多大模型在多个任务上都展示出了涌现的能力

2.1.1 模型参数量

GPT-4的参数量是一个大家都在讨论的话题,考虑到GPT-4比ChatGPT更强的涌现能力以及额外添加的图像编码模块,GPT-4的参数量应该不会比ChatGPT小。图5是方舟投资(ARK Invest)统计的ChatGPT Turbo和GPT-4的预测每个token的时间,其中GPT-4的时间大概是ChatGPT的4倍左右。而且GPT-4很有可能使用了一些策略加速模型的推理速度,所以GPT-4的文本模型参数部分大概是千亿级别但是非常接近万亿。

如果GPT-4使用了CLIP做图像编码,据OpenAI论文公布,目前最大的图像编码器是扩大了64倍的残差网络,那么GPT-4的图像编码大概有16亿。当然,我们无法排除GPT-4采用了其它图像编码结构,例如同样是利用Transformer的KOSMOS-1[12]就是一个不错的选择,那么图像部分的参数量如何就只能等更多相关内容公开了。

图5:ARK Invest统计的ChatGPT和GPT-4在预测每个token上的时间占比

2.1.2 模型的架构

我们可以确定的是,GPT-4的技术报告中指出GPT-4采用了以Transformer为基础的架构,即核心架构还是采用了GPT系列的Decoder-only的结构。对于GPT-4模型的内部细节,我们可以确认的点不多,考虑到GPT-4的速度以及处理长文本的能力,它的内部结构但有这两种可能性:

  1. 因为GPT-4大幅提升了对长文本的能力,GPT-4有一定概率使用了Transformer-XL或者Sparse Transformer;
  2. 因为GPT-4更有可能是在ChatGPT基础上迭代出来的,它可能还是使用了原生的Transformer,并增加了更多的层数,head数以及隐层节点数。

因为GPT-4还支持图像输入,那么其中一定有关于图像编码的部分,我们将这部分内容放在2.3节详细展开。

2.1.3 训练策略和训练数据

GPT-4的基本保持了和ChatGPT相同的训练策略,即基本遵循了预训练+提示+预测的范式,如图6。我们这里主要介绍GPT-4的改进,主要有三点。

  • 引入了基于规则的奖励模型(Rule Based Reward Model,RBRM);
  • 引入了多模态的提示学习;
  • 引入了思维链。

图6:ChatGPT的模型训练步骤

1. RBRM

GPT-4的第一个改进则是引入了RBRM,RBRM是根据规则编写的一个四分类模型,它的四个类别是:

  • 期望样式的拒绝;
  • 不期望样式的拒绝;
  • 包含了不允许的内容;
  • 安全,不拒绝的响应。

GPT-4被用在了图6中Step 3的PPO阶段。为了提升模型的安全性,ChatGPT在Step 3使用了人工反馈的强化学习(Reinforcement Learning with Human Feedback,RLHF)来训练模型。ChatGPT的这部分数据来源于GPT-3的API用户,GPT-4则在这里添加了RBRM,目的是通过正确的奖励引导模型的训练,来拒绝生成有害的请求以及不拒绝无害的请求。

使用规则构建NLP模型由来已久,其实NLP的最早期的模型就是基于规则的模型,然后才是基于概率的模型以及基于神经网络的模型。

例如香农把离散马尔可夫过程的概率模型用于描述语言的自动机,以及我们经常使用的正则表达式都是典型的基于规则的文本模型。基于规则的模型的优点是我们不需要训练数据,缺点是它往往是需要领域专家来设计规则,并且往往只能解决一定领域内的问题。我在这里猜测RBRM是由领域专家设计的,由一系列例如正则表达式,有限状态机等文本规则编写的一个零样本分类器。

基于规则的强化学习在近年来也被广泛提及,强化学习的一个重要优化目标是减少搜索空间的范围,而这项工作恰好可以交给规则的约束来完成。在经过规则的约束后,再通过强化学习在剩余的空间中进行搜索,这样就减少强化学习的搜索空间,可以有效提升收敛速度。GPT-4的RBRM的工作原理大致如图7。

图7:RBRM的工作原理

2. 多模态提示学习

GPT-4并没有对它的多模态能力的技术细节进行详细介绍,而且它的图像接口没有开放公测。但是我们可以看下多模态领域有没有类似GPT-4的报告中类似的工作。巧合的是微软在今年年初公布的KOSMOS-1[12]拥有非常强的多模态QA的能力,它的思想也和GPT-4非常类似,我们这里可以推测GPT-4使用了和KOSMOS-1类似的多模态提示方法。

KOSMOS-1支持三种类型的数据集,分别是文本生成,图像描述(Image Caption)生成以及多模态QA,图8是KOSMOS-1在图像描述生成以及QA生成上的例子。在图8.(a)的图像描述生成中,模型的输入是图像的Embedding,输出是预测的图像描述。在图8.(b)的多模态QA中,KOSMOS-1将图像嵌入与文本嵌入共同作为输入,然后用于预测问题的答案。

图8:KOSMOS-1的多模态输入示例

3. 思维链

GPT-4的拥有比ChatGPT明显强的逻辑推理能力,在训练模型时应该是使用思维链的方式构建提示样本。思维链不仅支持纯文本输入,还支持图文多模态输入,我们接下来用一节的篇幅来介绍这个重要的内容。

4. 能力预测

在我们在某个特定任务上训练一个模型时,我们希望能够预测模型在这个任务上的最终表现,这就是模型的能力预测(Capability Prediction)。在自然语言处理和大型语言模型领域,能力预测通常是指预测和评估一个模型在特定任务、领域或场景下的表现能力。

能力预测的目的是为了更好地了解模型的性能,以便优化、调整或改进模型。通过对模型的能力预测,我们可以更好地理解模型的优势和局限,从而为模型的进一步发展和改进提供有价值的反馈。GPT-4在训练时也使用了能力预测,这让他们能够更准确的评估模型的效果,节约了训练成本。

2.2 逻辑推理能力

OpenAI为了提升GPT-4的推理能力,很有可能使用了近年来LLM非常重要的思维链以及自提升能力。它们可以看做是提示学习在逻辑推理能力上的针对性优化,下面我们分别介绍它们。从GPT-4的技术报告中,我们可以发现很多GPT-4的训练使用了思维链或者自提升的证据。

2.2.1 思维链

思维链(Chain of Thought)是指人们在进行思考时,由于某个观点、想法或感知刺激而引发的一系列相关思维联想和关联。这些关联可以通过人们的记忆、经验、知识、情感和意识等方面来建立和加强,最终形成了一个有机的思维链,帮助人们理解和解决问题,做出决策和行动。思维链是人类思维活动的重要组成部分,它反映了人们的思考方式、思考习惯和思考效率。通过构建和加强思维链,可以帮助人们更好地理解和把握事物的本质和规律,更加有效地解决问题和做出决策。

在人工智能领域,研究人员也在探索如何利用机器学习和自然语言处理等技术,来模拟人类的思维链,建立机器的思维链,帮助机器更好地理解和处理人类的语言和行为,实现更加智能化的应用和系统。OpenAI的论文[6]是思维链方向具有重要意义的一篇文章,也是GPT-4很有可能使用的技术方案,在这篇文章中,他们提出了通过构建思维链提示的方式来提升模型的推理能力。思维链也是一种涌现能力,它可以通过仅提供少量的样本便大幅提升模型的逻辑推理能力。

思维链的与传统提示学习的不同点是在提示中增加一个推理过程,构建一个由输入,思维链,输出构成的三元组。图9是传统提示和思维链提示的实例。

图9:传统提示学习和思维链提示学习,思维链会在输入中给出推理过程来帮助模型学习推理的能力

思维链也支持多模态的输入,GPT-4的技术报告中也指出了GPT-4使用了多模态的思维链。图13的GPT-4的例子便是一个经典的因为使用思维链训练了模型而产生的包含推理过程的预测结果。图10是上海交大和亚马逊最新发表的一个多模态思维链的框架:Multimodel-COT [14]。

它包含两个阶段,两个阶段共享参数。在第一个阶段,他们将图像和文本输入到模型中来生成理由,也就是思维链。在第二个阶段,他们将原始输入和生成的理由合在一起,输入到模型中来生成答案。

图10:Multimodel-COT的推理过程

2.2.2 自提升

谷歌在2022年发布的一篇文章[7]中指出,LLM和思维链的结合可以让模型使用无监督的数据进行自我提升(Self-Improve),它的核心方法如图11所示。GPT-4也指出他们使用了[7]的方案来提升模型的遵循用户意图的能力。

图11:LLM可以通过大模型进行自我提升

它的计算过程如下:

  1. 首先我们基于思维链构建提示;
  2. 根据不同的温度系数,模型生成多个不同的包含推理过程的Path;
  3. 我们使用投票的方式选择最有可能的正确答案;
  4. 将包含这个正确答案的所有Path用来优化LLM。

你可能已经发现这个方法得到的答案并不一定是正确的答案。作者通过实验得出了两个重要结论:

  1. 答案的正确率和它的置信度是高度相关的,也就是说通过投票得到的答案很有可能是生成的答案中最正确的那个;
  2. 即使答案是错误的,将它们加入到训练数据中也有助于模型的训练。

在得到了推理Path之后,作者根据这个Path构建了四种不同的输入数据,它们分别是:

  1. 标准的思维链提示,即构建(问题,思维链,答案)三元对;
  2. 传统的提示学习,即只有问题和答案;
  3. 输入是问题,添加“Let\'s think step by step”提示,让模型预测推理步骤;
  4. 传统的QA,即输入问题,预测答案。

最后,为了丰富数据集,作者提出了两个方案来扩充数据:一是随机组合两个问题,然后让模型生成新的问题;二是让模型生成推理步骤,并将它加入到训练集中。

2.3 理解图表能力

因为GPT-4是支持图像格式的图表输入的,OpenAI著名的多模态算法CLIP[8]讲的是我们可以通过对比学习将图像和文本映射到同一特征空间,如图12。那么结合CLIP的图像编码器便可以实现GPT-4的图像输入,这时我们需要训练一个可以和GPT的文字特征对齐的图像编码器,然后将CLIP的图像编码器的输出作为图像token,最后再加一个embedding层将这个token编码为GPT-4的特征向量。

图12:CLIP的结构,它通过对比学习将图像和文本投影到相同的特征空间

GPT-4除了可以理解图2中这种照片的例子,最神奇的是GPT-4还可以理解图13这种包含了很多细节的学术图片。因为在一个学术图片中,图中代指的符号,目标之间的位置关系都是十分重要的,如果GPT-4仅仅通过一个图像编码就能捕获这些细节信息,那么这个图像编码器一定也展现出了非常强的涌现能力,这个图像编码器也大概率是千亿规模的参数量。

图13:GPT-4具有理解学术图像中具体细节的能力

GPT-4的多模态能力还有一种可能是类似多模态大语言模型(Multimodel Large Language Model,MLLM)。其中微软的KOSMOS-1展示了和GPT-4类似的多模态语言模型的能力,KOSMOS-1在多模态问答上也展示出了非常强的涌现能力,如图14。

KOSMOS-1是一个基于Transformer解码器的多模态模型,它将不同模态的数据拼接到一起,例如表示文本输入,和<\\image>表示图像输入,其中图像嵌入使用的是微软的METALM[13]计算得到的特征向量。我们推测GPT-4有可能借鉴了KOSMO-1S的思想,然后结合了OpenAI自身的一些多模态的工作。

图14:微软的KOSMOS-1涌现出了非常强的图像理解能力

关于GPT-4的多模态的更多技术细节,我们可以等GPT-4的图像接口开放之后多多测试才能发现。

2.4 更安全的输出

现有的深度学习模型的思想均是使用大模型拟合训练集,对于一个生成模型来说,它的输出内容并不是完全可控的,GPT-4也不例外。GPT-4的技术报告中指出文本模型会存在下面几类的风险输出,例如幻觉、有害内容、歧视、虚假信息、暴力、隐私、网络安全等。GPT-4做了大量工作来缓解这个问题。

GPT-4的第一个缓解风险输出的问题是聘请了50余名来自不同领域专家扮演红队进行对抗测试。红队的工作是提出有危险性的问题,以测试GPT-4给出的输出,并尝试攻克它。通过领域专家的对抗,OpenAI也采集了大量不同方向的领域专家数据来提升GPT-4的安全性。

2.4.1 幻觉

幻觉(hallicination)是生成模型都非常难以解决的问题,它指的是模型产生的荒谬的或者不真实的内容,也就是一本正经的胡说八道。随着模型生成的内容语句越来越通顺,内容越来越具有说服力,那么这种幻觉行为将是特别有害的。模型产生幻觉可以归纳为下面几个原因:

  1. 数据偏差:训练集可能存在某些偏差,例如数据的确实,错误可能会影响模型对于自然语言的理解;
  2. 数据稀疏:训练集可能在某一方面数据比较少,导致模型在这一方面生成的能力不可控;
  3. 模型结构:模型的结构以及参数量可能会影响模型的泛化能力和表示能力,导致模型在某些方面产生幻觉的现象。

GPT-4采用了两个策略来解决这个问题:

第一种方法是利用ChatGPT的数据进行训练。 这个方法的优点是ChatGPT在当时已经具有了一定程度拒绝生成有害内容的能力,比在网上爬取的数据具有更高的可靠性。但它的问题是可能会将ChatGPT的问题继承到GPT-4中。而且依靠一个模型的生成内容作为另一个模型的训练数据,可能会导致模型的过拟合。

第二种方法是采用NLP技术来检测模型产生的幻觉样本,包括自动评估和人工评估。 这个方法的优点是可以有效的检测和纠正模型产生的幻觉问题。它的缺点是依靠自动评估的方法可能会因为评估模型的缺陷漏掉一些幻觉样本,而人工评估的最大问题是人工成本是非常高昂的。

在幻觉检测方面,Meta有着非常重要的贡献。一方面他们提出了幻觉检测任务并制作了针对这个任务的幻觉检测数据集HADES[15],另一方面他们提出了一个幻觉检测方法 [16],这个方法通过合成幻觉数据来对预训练模型进行微调。该模型可以检测一个句子中出现的幻觉词,来对生成内容的真实性进行评估,从而减轻幻觉出现的概率。图15是该方法在机器翻译中的一个例子,标签为1的部分对应了生成的幻觉内容。这里猜测OpenAI可能采用了和Meta类似的方法或数据。

图15:FAIR提出的幻觉检测方法在机器翻译中的示例

具体的讲,OpenAI设计了一个多步骤的过程,使用GPT-4本身来生成是否有幻觉的比较数据,并将它们并入到图6步骤2的奖励模型的训练集中:

  1. 将提示p输入到GPT-4中并得到一个响应r1;
  2. 将p和r1输入到GPT-4中,并指示它列出所有的幻觉token。如果没有幻觉,则继续生成,直到有它列出幻觉h1;
  3. 将p,r1和h1输入到GPT-4中,并指示它生成一个没有幻觉的响应r2;
  4. 将p和r2输入到GPT-4中,让它列出所有的幻觉token,如果没有检测到幻觉,则可以将r1和r2作为一个对比样本对放入奖励模型的训练集中了。

2.4.2 其它问题

对于可能出现的其它风险输出,OpenAI并没有详细的介绍它的技术方案,不过从他们的技术方案中,我们可以看出他们大概使用了下面几类方法:

  1. 使用RBRM来检测可能出现的风险;
  2. 通过提示学习让模型学习拒绝回答此类问题;
  3. 利用红队发现这些可能存在的问题;
  4. 过滤训练数据,删除可能出发风险问题的样本;
  5. 训练奖励模型,让模型惩罚有危害的输出内容;

2.5 编程能力

GPT-4在编程能力上比ChatGPT有了巨大的提升,一方面他可能因为思维链掌握了更强的逻辑分析能力,另一方面它很有可能借鉴了OpenAI著名的代码生成算法CodeX[3]。CodeX是GPT-3在代码生成领域的衍生版本,也是Copilot插件背后的基础算法。CodeX采用了GPT系列的Decoder-only的架构体系,模型的参数量有从12M到12B等多个不同的版本。CodeX的训练分成预训练和微调两个阶段。

在预训练阶段,OpenAI首先从Github上爬取了大量的Python文件,经过清洗后得到了一个大小为159GB的训练集。因为CodeX是一个代码生成模型,所以它并没有使用GPT-3训练好的权重,也没有完全照搬GPT-3的模型超参,而是重新训练了一个代码生成模型。

在微调阶段,OpenAI从竞赛网站,面试网站,Github的单元测试脚本中收集了大约40000条数据。在评估代码正确性上,CodeX并没有使用传统的BLEU分数,而是使用了代码能够通过多少比例的单元测试作为评估标准,并建立了评估测试集HumanEval和评估标准pass@k。

为了避免数据泄露,HumanEval的数据全部是由人类亲自构造的,总共包含164个题目和大量的测试用例。HumanEval将每个函数划分为四类,即函数签名(function signature),函数注释,函数主体以及单元测试样本组成。在进行提示学习时,函数签名和函数注释作为输入的提示,函数主体作为要求的输出,单元测试用于评估生成代码的效果。

CodeX的评估标注和Leetcode类似,即有多少比例的测试用例通过测试了,CodeX的评估标准pass@k表示从模型的所有生成答案中随机抽取k个,从这k个答案里得到正确答案的概率。它的计算方式如式(1)。其中n是每个问题生成的答案,k是从n个答案中随机抽取的k个,c是n个答案里通过单元测试的答案数。

CodeX和GPT-4都是GPT-3的下一代模型,让GPT-4使用CodeX现成的思想和数据,并提高模型的编程能力,是再合理不过的工作了。

2.6 多语言能力

关于GPT-4的在其它语种上的能力的大幅提升,OpenAI并没有给出介绍,我也没有查到相关解释。这里我根据目前的技术积累,猜测一下OpenAI可能使用的技术方案:

  1. 提升了其它语种的训练数据;
  2. 更大规模的模型让GPT-4在小语种上涌现了更多的能力;
  3. 加入了针对小语种的任务,例如利用现有平行语料构建基于提示学习的机器翻译任务,使用机器翻译引擎将部分数据翻译成小语种等。

这一部分的相关资料确实不多,也欢迎大家在评论区给出自己的猜测。

2.7 长序列能力

这里的长序列包含两个方面,一方面是GPT-4是支持多轮对话的,另一方面是GPT-4支持更长的输入数据,下面我们来讨论它们可能使用的技术。

2.7.1 多轮对话

ChatGPT和GPT-4都支持连续对话,但OpenAI一直也没有给出连续对话能力的背后技术方案。如果在每一轮对话时都粗暴的把之前的对话重新作为输入提供给模型。虽然理论上讲是行得通的,但这种方式的最大问题是随着对话轮数的增多,输入的数据也会快速增加,进而导致ChatGPT或者GPT-4的预测速度越来越慢,但是我在使用ChatGPT和GPT-4的多轮对话时并没有发现这种速度逐渐变慢的现象。

如果要从模型角度解决这个问题,我们恰好有一个算法可以解决这个问题,它就是Transformer-XL[10]。Transformer-XL的重要改进是提出了片段递归的机制,如图16。片段递归机制类似于Transformer和RNN的结合体,它的核心思想是对于一个长度不限的变长数据,在计算的时候也是固定每个片段的长度并计算这个片段的特征,然在计算下个片段时将前面片段的特征加到当前片段上,从而让模型可以处理任意长度的特征。

图16:Transformer-XL的片段递归机制

反应到ChatGPT和GPT-4的多轮对话中,我推测OpenAI借鉴了Transformer-XL的片段递归的思想。即GPT-4然后在进行第\\(t\\)轮的计算时,会将缓存的第t-1轮的特征和第t轮的特征相加,共同用于当前轮次的计算。因为第t-1轮也考虑了第t-2轮的特征,理论上这个方式可以在不影响预测时间的前提下获得之前很多轮之前的对话内容。

2.7.2 长序列输入

传统的Transformer并不擅长处理长序列问题,因为输入长度为n的Transformer的复杂度为O(n^2)。Transformer的默认输入长度是512,对于长度大于512的输入数据Transformer的解决方案是将它拆分成多个长度为512的文本块,但是这种会造成上下文碎片的问题,上一节介绍的Transformer-XL便是用来解决这个问题的。

这里我们介绍OpenAI自家的用来解决长序列输入的算法:Sparse Transformer[11],因为GPT-3就是使用的普通Transformer和Sparse Transformer的混合模式,所以Sparse Transformer也是非常有可能被GPT-4用来处理长输入文本的一个模型,但它和普通Transformer是如何混合的就不得而知了。Sparse Transformer的特点是只关注Top-k个贡献最大的特征的状态,它使用稀疏注意力机制替代了Transformer的密集注意力,将计算注意力的复杂度降到了O(n\\sqrt n)。传统Transformer的密集注意力核被分解为了跨步注意力(Stried Attention)和固定注意力(Fixed Attention),每个注意力核又分为行注意力核和列注意力核。分解后的注意力核都是稀疏的,因此大幅降低了模型的复杂度,如图17。

图17:密集注意力和稀疏注意力

因为GPT-4支持更长序列的数据,我在这里也列出了用于高效处理长数据的Transformer的两个变体。因为GPT-4的技术报告太过点到为止,到底GPT-4的网络结构如何,我们只能等待OpenAI的官方公布了。

2.8 技术方案总结

这一节我们讨论了很多技术方案,有的具有比较高的可信度,有的则猜测程度较高。下面这个表给出了各个方案的可信度(从1到5逐渐增高)。

涌现能力 思维链 自提升 CLIP KOSMOS-1 CodeX XLM Trans-XL Sparse Transf
5 5 3 3 3 4 1 1 4

根据我们的上述推测,我们可以猜测GPT-4的技术方案大致如下:

  • 第一阶段: 搭建多模态预训练模型,并进行微调,这一阶段主要目的是根据爬取的海量数据训练具有一定能力的初版GPT-4,训练方式类似GPT-3。它的工作重点有两个:一是仿照KOSMOS-1或是其它多模态模型搭建多模态预训练模型,使用Transformer-XL等解决长文本的高复杂度问题;二是收集数据,包含海量爬取数据,单模态,多模态,传统提示学习数据,思维链提示学习数据,代码数据等对模型进行训练。
  • 第二阶段:GPT-4行为对齐,这一阶段的主要目的是根据人工打标实现模型行为与人类行为的对齐,减弱模型的风险性。这一阶段需要产出的模型有两个,一个是根据专家知识设计基于规则的奖励模型RBRM,另一个是根据人工打标的数据,幻觉检测模型的产出数据训练基于深度学习的奖励模型RM。
  • 第三阶段:使用RBRM和RM作为奖励函数,使用RLHF训练模型。第二阶段和第三阶段的训练方式类似ChatGPT。
  • 第四阶段:模型自提升,GPT-4的训练可能是一个循环迭代,不断提示的训练过程。在这一阶段,GPT-4会自动生成更多数据,例如使用模型自提升产出的训练数据,专家红队反馈的测试案例等,使用这些数据返回第一阶段再对模型进行训练。

3. GPT-4的发展方向

最近我也将GPT-4和ChatGPT应用到了日常工作中,深刻的被GPT-4强大的能力所震撼。它不仅能辅助我完成日常的编程,文章撰写工作,也能够帮我解决一些日常琐事,大幅提升了我的工作效率。关于GPT-4的各种赞赏与批评的文章网上已数不胜数,我在这里结合我们分析的技术方案,探讨一下GPT-4为了的发展方向,或者说是预测下GPT-5可能的样子。

3.1 GPT-4的优化方向

尽管GPT-4在文本生成,代码生成,图像理解,逻辑推理能力展现了强大的能力,但它依旧有很大的进步空间的,未来的工作可能有下面几个重点方向:

  1. GPT-4现在的使用成本还是非常高的,与GPT-4进行一轮对话的成本大约在1元左右。ChatGPT的维护成本每天就有将近100万美元,我们预测GPT-4的参数量可能将近万亿规模,由此推测它的维护成本可能在500万美元左右。如何轻量化模型,让GPT-4能够被更多人使用,甚至让更多人能够训练自己的GPT-4将是未来一段时间都会研究的方向。
  2. GPT-4并不是绝对安全的,GPT-4依旧具有幻觉问题。GPT-4的幻觉检测,红队对抗,RBRM等不是解决安全问题的最终方案。虽然说没有绝对安全的系统,但OpenAI已经还会在安全性上加大投入,以减轻他们可能面临的法律风险。
  3. GPT-4还是个离线模型,GPT-4不能代替搜索引擎的一个重要原因是它的知识并不是实时更新的。它的知识水平取决于它爬取数据的截止日期,这将使得它无法解决截止日期之后出现的新闻,概念,事件等。
  4. GPT-4还是多模态的初探,多模态和LLM可能是未来几年AGI最重要的两个方向,OpenAI本身也有很多在多模态方向非常精彩的工作。如何进一步挖掘GPT-4在多模态方向的能力,涉及更多模态,更多应用将是OpenAI接下来的重点工作。

3.2 GPT-4的应用

GPT-4凭借其强大的生成能力和逻辑推理能力,能够极大的影响我们的工作方式。相信这篇文章的读者很多是从事算法相关的科研和工作的人,我鼓励每个人都用上GPT-4哪怕是ChatGPT,那么GPT-4的哪些功能对我们非常有帮助呢。这里我根据我的使用经验,列出几个我认为比较有帮助的方向:

  1. 撰写功能代码,让GPT-4编写一个满足特定功能复杂框架可能需要你向其提供复杂的提示,并且你也需要核对它生成的代码。但是如果让GPT-4实现一些难度较低的功能函数,例如搭建一个网络,或是实现一个功能性函数,GPT-4生成的代码的可用性还是非常高的。
  2. 做文本润色,作为一个技术研发人员,我们的文笔可能并不好,这时候我们可以使用GPT-4帮我们对我们写的文章做润色。尤其是当我们用英语写论文或者邮件时,GPT-4能帮我们解决Chinglish的问题。
  3. 阅读论文,GPT-4不仅是一个非常棒的机器翻译工具,经试用,它翻译的效果在专业性,连贯性等远超传统的机器翻译模型。此外GPT-4还可以做一些总结,概括,提取类的工作,能让我们快速了解一篇论文的核心技术。基于ChatGPT制作的ChatPDF是我们阅读论文有个非常得力的助手,图18是我使用ChatGPT帮助我阅读GPT-4的生成内容。
    图18:ChatPDF根据GPT-4的技术报告生成的GPT-4在提高安全性上做的工作
  4. 日常工作,GPT-4非常擅长写一些官方通告,发言稿,感谢信之类的内容,也非常擅长做一些总结概括类的工作,它可以在这些方面提高我们的人效。对于没有思路的事情,我也会尝试问一下GPT-4,它经常能够帮我打开思路。

注意GPT-4并没有彻底解决幻觉等安全性问题,面对GPT-4生成的内容,我们最好在使用之前进行严格的审核,否则可能会发生一些不可解释的问题。也是因为这个原因,GPT-4并不能取代从事这方面的专业工作人员,因为在GPT-4的安全性问题解决之前,始终需要专业人士为其把关,而GPT-4的安全性问题可能将会伴随生成模型的整个生命周期。

4. 其它LLM

随着ChatGPT和GPT-4的提出,国内外的公司快速跟进,掀起了一股LLM模型的研发热潮,也有很多公司提出了自己的LLM.

其中国内具有代表性的工作有下面这些工作。

  • 百度的文心一言:百度的文心一言(ERNIE-Bot)是国内最早跟进的预训练大模型,但是百度对他们的工作技术却一直讳莫如深。不过从他的演示demo以及很多测试人员的测试效果来看,文心一言像是百度很多AI工作的工程化组合;
  • 阿里的通义千问:通义千问是一个用Transformer-XL搭建的,拥有20亿参数的文本生成模型。根据拿到邀请码的网友反馈来看,通义千问的文本生成效果略差于文心一言。
  • 商汤的日日新:从发布会的展示效果来看,商汤的日日新是目前国内最好的LLM,甚至达到了和ChatGPT类似的效果。日日新包含“商量”,“秒画”“如影”“琼宇”“格物”五个主要功能,其中和GPT-4对齐的是“商量”。
  • 清华大学的GLM:GLM[17]是清华和智谱AI联合推出的一个使用英语和汉语训练的开源双语语言模型,最大参数规模达到了1300亿,GLM-130B的效果介于GPT-3和ChatGPT之间。GLM后续还推出了ChatGLM以及可以在单机运行和微调的GLM-6B,是目前效果最好的开源中文预训练大模型。
  • 复旦大学的MOSS:MOSS是复旦大学NLP实验室的邱锡鹏老师团队,并与近期开源了相关代码。从目前效果来看,MOSS并不非常成熟,但可喜的是邱老师的团队还一直在对MOSS进行优化。

不仅国内快速跟进,国外的头部公司也推出了自己的LLM,其中具有代表性的有:

  1. MetaAI的LLaMA:LLaMA[19]的参数量有70亿,130亿,330亿和650亿四种规模。不同于OpenAI的是,MetaAI开源了它们的代码和模型,并支持单机的部署。虽然LLaMA的效果不如GPT-4,但他开源以及单机可运行的特性也吸引了很多机构和个人的二次开发。
  2. 谷歌的PaLM和LaMDA:PaLM[20]是谷歌提出的结构类似GPT系列,总参数量达到5400亿的语言模型,谷歌在最近又推出了结合图像能力的多模态模型PaLM-E [21]。LaMDA[22]是谷歌推出的用于生成更自然,更具人性的语言模型,具有更接近人类的表达方式,LaMDA在GPT-3的基础上进行了改进,增加了更多的对话场景和情感理解能力,能更好的模拟人类的对话和思考。甚至谷歌的研究员 Blake Lemoine 在测试了LaMDA一段时间后感叹:LaMDA可能已经具有人格了。
  3. Anthropic的Claude:Anthropic是由OpenAI的离职员工成立,得到谷歌研发支持的一个人工智能公司。它们最近也推出了它们的LLM:Claude。目前Cluade的效果略强于ChatGPT,但明显弱于GPT-4。

除了上面介绍的,国外的LLM还有BigScience的BLOOM,斯坦福的Alpaca,上面介绍过的微软的METALM,KOSMOS-1等,国内的华为的盘古,腾讯的WeLM等等。除了这些通用模型,LLM也被用在细分领域,例如医学领域的HuaTuo[23],金融领域的BloombergGPT[24]等。

5. 总结

GPT-4究竟会不会带来第四次工业革命,这是一个需要时间验证的话题,我也没有资格在这给出结论,但GPT-4对与我个人的影响是巨大的。

首先,它一定程度上撼动了我对传统人工智能的理解,就像宏观物理的很多定理在微观物理上是不成立的,我在传统人工智能上积累的很多经验放在GPT-4里也是不成立的。它展现出的强大的零样本学习能力,以及更高阶的能力是远远超出我对深度学习的传统认知的。

其次,GPT-4以及ChatGPT正成为日常工作中最得力的助手,在撰写这篇文章时GPT-4也提供了非常大的帮助,它不仅可以帮助我写代码,改文章,甚至还能帮我解决一些非工作的问题。最后,如雨后春笋般涌现的诸多不同的大模型又让我对日益看衰的深度学习注入了新的信心和活力。

对于GPT-4这门技术,我建议每个人都要去了解并学会使用它。不管你的工作是否和计算机相关,它都会给你带来一些帮助,哪怕你是个厨子,它都可能给你生成一份美味的菜谱。在使用GPT-4时,我们也要理性的看待它生成的内容,只有GPT-4有一丝的风险问题,我们就不能放松对它的审核,以防幻觉问题给我们造成损失。

在未来的一段时间,GPT-4一定会给我们带来诸多的影响。首先,互联网上会快速涌现大量使用GPT-4生成的我们无法区分的内容,大众会不会被统一的GPT-4的行为模式所影响是值得深思的。其次,GPT-4将极大程度解放某些工作的生产力,甚至可以替代这些工作,我们能不能抓住这个机遇,在这个互卷的环境里看到新的机会非常重要。最后,GPT-4将以怎样的形式影响到每一个人都是不同的,GPT-4如果真的带来了AGI,我希望我的好友们你们都不要错过。

Reference

  • [1] https://cdn.openai.com/papers/gpt-4.pdf

  • [2] https://zhuanlan.zhihu.com/p/614340292

  • [3] Chen M, Tworek J, Jun H, et al. Evaluating large language models trained on code[J]. arXiv preprint arXiv:2107.03374, 2021.

  • [4] Bai, Yuntao, et al. "Training a helpful and harmless assistant with reinforcement learning from human feedback." arXiv preprint arXiv:2204.05862 (2022).

  • [5] Wei J, Tay Y, Bommasani R, et al. Emergent abilities of large language models[J]. arXiv preprint arXiv:2206.07682, 2022.

  • [6] Wei J, Wang X, Schuurmans D, et al. Chain of thought prompting elicits reasoning in large language models[J]. arXiv preprint arXiv:2201.11903, 2022.

  • [7] Huang J, Gu S S, Hou L, et al. Large language models can self-improve[J]. arXiv preprint arXiv:2210.11610, 2022.

  • [8] Radford, Alec, et al. "Learning transferable visual models from natural language supervision." International Conference on Machine Learning. PMLR, 2021.

  • [9] Guillaume Lample and Alexis Conneau. Cross-lingual language model pretraining. arXiv preprint arXiv:1901.07291, 2019.

  • [10] Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V.Le, and Ruslan Salakhutdinov. Transformer-XL: Attentive language models beyond a fixed-length context. arXiv preprint arXiv:1901.02860, 2019.

  • [11] Rewon Child, Scott Gray, Alec Radford, and Ilya Sutskever. Generating long sequences with sparse transformers. arXiv preprint arXiv:1904.10509, 2019.

  • [12] Huang, Shaohan, et al. "Language is not all you need: Aligning perception with language models." arXiv preprint arXiv:2302.14045 (2023).

  • [13] Hao, Yaru, et al. "Language models are general-purpose interfaces." arXiv preprint arXiv:2206.06336 (2022).

  • [14] Zhang, Zhuosheng, et al. "Multimodal chain-of-thought reasoning in language models." arXiv preprint arXiv:2302.00923 (2023).

  • [15] Liu, Tianyu, et al. "A token-level reference-free hallucination detection benchmark for free-form text generation." arXiv preprint arXiv:2104.08704 (2021).

  • [16] Zhou, Chunting, et al. "Detecting hallucinated content in conditional neural sequence generation." arXiv preprint arXiv:2011.02593 (2020).

  • [17] Du, Zhengxiao, et al. "GLM: General language model pretraining with autoregressive blank infilling." Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) . 2022.

  • [18] Zhao, Wayne Xin, et al. "A Survey of Large Language Models." arXiv preprint arXiv:2303.18223 (2023).

  • [19] Touvron, Hugo, et al. "Llama: Open and efficient foundation language models." arXiv preprint arXiv:2302.13971 (2023).

  • [20] Chowdhery, Aakanksha, et al. "Palm: Scaling language modeling with pathways." arXiv preprint arXiv:2204.02311 (2022).

  • [21] Driess, Danny, et al. "Palm-e: An embodied multimodal language model." arXiv preprint arXiv:2303.03378 (2023).

  • [22] Thoppilan, Romal, et al. "Lamda: Language models for dialog applications." arXiv preprint arXiv:2201.08239 (2022).

  • [23] Wang, Haochun, et al. "HuaTuo: Tuning LLaMA Model with Chinese Medical Knowledge." arXiv preprint arXiv:2304.06975 (2023).

  • [24] Wu, Shijie, et al. "BloombergGPT: A Large Language Model for Finance." arXiv preprint arXiv:2303.17564 (2023).

  • [25] Bubeck, Sébastien, et al. "Sparks of artificial general intelligence: Early experiments with gpt-4." arXiv preprint arXiv:2303.12712 (2023).

  • [26] Lin, Stephanie, Jacob Hilton, and Owain Evans. "Truthfulqa: Measuring how models mimic human falsehoods." arXiv preprint arXiv:2109.07958 (2021).

作者:京东零售 刘岩

内容来源:京东云开发者社区

UEFI+GPT引导基础篇:什么是GPT,什么是UEFI?

其实关于UEFI的几篇文章很早就写下了,只是自己读了一遍感觉很不满意,就决定重写。目的是想用最简单直白的语言把内容写出来,让每个人都能轻松读懂。当然,如果你已经对这些内容有了很深的理解的话,这篇文章除了浪费你的时间外恐怕是别无益处了,建议去UEFI官方网站下载UEFI规范文档,那里详细阐述了UEFI、GPT的每个技术细节。

其实UEFI、GPT都不是什么新鲜玩意了,只不过因为预装Win8电脑指定采用了这一标准所以仿佛是在一夜之间关于UEFI启动Windows的文章就遍地开花了,很多人大概也是头一次听说世上还有这玩意。既然UEFI、GPT是“新”技术,那么就必然有较旧技术(BIOS+MBR)更先进、更NB的地方。到底NB在哪里呢?下面来简单比较一下:

GPT及其优势

GPT和MBR是两种不同的分区方案。目前在Windows下广泛采用的磁盘分区方案仍然是MBR分区结构,但不容怀疑GPT是今后的趋势。我们可将MBR磁盘分区结构用下图简单表示(Windows下基本磁盘、4个主分区):

技术分享MBR分区结构

为了方便计算机访问硬盘,把硬盘上的空间划分成许许多多的区块(英文叫sectors,即扇区),然后给每个区块分配一个地址,称为逻辑块地址(即LBA)。

在MBR磁盘的第一个扇区内保存着启动代码和硬盘分区表。启动代码的作用是指引计算机从活动分区引导启动操作系统(BIOS下启动操作系统的方式);分区表的作用是记录硬盘的分区信息。在MBR中,分区表的大小是固定的,一共可容纳4个主分区信息。在MBR分区表中逻辑块地址采用32位二进制数表示,因此一共可表示2^32(2的32次方)个逻辑块地址。如果一个扇区大小为512字节,那么硬盘最大分区容量仅为2TB。

GPT磁盘分区结构可用下图简单表示(Windows下基本磁盘):

技术分享GPT分区结构

可以看到,在GTP磁盘的第一个数据块中同样有一个与MBR(主引导记录)类似的标记,叫做PMBR。PMBR的作用是,当使用不支持GPT的分区工具时,整个硬盘将显示为一个受保护的分区,以防止分区表及硬盘数据遭到破坏。UEFI并不从PMBR中获取GPT磁盘的分区信息,它有自己的分区表,即GPT分区表。

GPT的分区方案之所以比MBR更先进,是因为在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。在Windows中,微软设定GPT磁盘最大分区数量为128个。另外,GPT分区方案中逻辑块地址(LBA)采用64位二进制数表示,可以计算一下2^64是一个多么庞大的数据,以我们的需求来讲完全有理由认为这个大小约等于无限。除此之外,GPT分区方案在硬盘的末端还有一个备份分区表,保证了分区信息不容易丢失。

Windows操作系统对GPT磁盘的支持

因为BIOS无法识别GPT分区,所以BIOS下GPT磁盘不能用于启动操作系统,在操作系统提供支持的情况下可用于数据存储。

UEFI可同时识别MBR分区和GPT分区,因此UEFI下,MBR磁盘和GPT磁盘都可用于启动操作系统和数据存储。不过微软限制,UEFI下使用Windows安装程序安装操作系统是只能将系统安装在GPT磁盘中。

下表列出了Windows各版本操作系统对GPT磁盘的支持程度:

技术分享32位Windows对GPT分区支持情况技术分享64位Windows对GPT分区支持情况

UEFI及其优势

UEFI是BIOS的一种升级替代方案。关于BIOS和UEFI二者的比较,网络上已经有很多相关的文章,这里不再赘述,仅从系统启动原理方面来做比较。UEFI之所以比BIOS强大,是因为UEFI本身已经相当于一个微型操作系统,其带来的便利之处在于:

首先,UEFI已具备文件系统的支持,它能够直接读取FAT分区中的文件;

什么是文件系统?简单说,文件系统是操作系统组织管理文件的一种方法,直白点说就是把硬盘上的数据以文件的形式呈现给用户。Fat32、NTFS都是常见的文件系统类型。

其次,可开发出直接在UEFI下运行的应用程序,这类程序文件通常以efi结尾。

既然UEFI可以直接识别FAT分区中的文件,又有可直接在其中运行的应用程序。那么完全可以将Windows安装程序做成efi类型应用程序,然后把它放到任意fat分区中直接运行即可,如此一来安装Windows操作系统这件过去看上去稍微有点复杂的事情突然就变非常简单了,就像在Windows下打开QQ一样简单。而事实上,也就是这么一回事。

要知道,这些都是BIOS做不到的。因为BIOS下启动操作系统之前,必须从硬盘上指定扇区读取系统启动代码(包含在主引导记录中),然后从活动分区中引导启动操作系统。对扇区的操作远比不上对分区中文件的操作更直观更简单,所以在BIOS下引导安装Windows操作系统,我们不得不使用一些工具对设备进行配置以达到启动要求。而在UEFI下,这些统统都不需要,不再需要主引导记录,不再需要活动分区,不需要任何工具,只要复制安装文件到一个FAT32(主)分区/U盘中,然后从这个分区/U盘启动,安装Windows就是这么简单。后面会有专门的文章来详细介绍UEFI下安装Windows7、8的方法。

=======================

文章匆忙改就,如有错误之处望指出。

 

 

本文转自:http://www.iruanmi.com/what-is-gpt-and-what-is-uefi/

以上是关于GPT-4理论篇-1GPT-4核心技术探秘的主要内容,如果未能解决你的问题,请参考以下文章

百度工程师带你探秘C++内存管理(理论篇)

百度工程师带你探秘C++内存管理(ptmalloc篇)

百度工程师带你探秘C++内存管理(ptmalloc篇)

分布式事务——面向新金融的模型化分布式金融核心探秘之四

探秘Tomcat——启动篇

探秘HDFS —— 发展历史核心概念架构工作机制 (上)