跳到主要内容

1 篇博文 含有标签「LLM」

查看所有标签

· 阅读需 61 分钟

最近看了openai大佬Andrej Karpathy分享的视频,受益匪浅。本文是对视频内容的总结。 1.LLM是什么

Llama 2 模型 7b/13b/34b/70b,可能是当今最强大的开放权重模型。权重、架构和论文都是由meta发布的 什么是大语言模型? 一个大语言模型只是两个文件:参数和某些可以运行这些参数的代码。 [1]参数基本上是权重或参数 这个神经网络就是我们稍后会讨论的语言模型 因为这是一个 700 亿参数模型 每个参数都存储为2个字节,因此参数文件有140GB 2个字节,是因为数据类型是float16 [2]运行参数的代码,可能是一个c文件/python文件或任何其他编程语言

你可以拿着你的MacBook,这是一个完全自包含的套件,这是所有必要的东西,你不需要任何连接到互联网或其他东西,你只需要这两个文件,编译你的C代码,得到一个可以指向参数并与这个语言模型交互的二进制文件。 例如,你可以发送文本,比如让它写一首关于公司Scale AI的诗,这个语言模型将开始生成文本,在这种情况下,它将按照指示为你创作一首关于Scale AI的诗歌。 所以运行这个模型所需的东西并不多,这是一个非常小的包,但计算复杂性真正体现在当我们想要得到这些参数时。我们如何获取这些参数,这些参数是来自哪里的? 因为在C文件中的任何东西,神经网络架构和网络的前向传播等,所有这些都是通过算法理解和公开的。但真正的魔力在于这些参数,我们如何获得它们。 2.训练模型 2.1 模型训练简介

基本上模型训练(我们称之为训练)比模型推理(我之前展示的部分)要复杂得多。模型推理只是在你的MacBook上运行模型,而模型训练是一个非常复杂的过程。 模型训练是一个非常复杂的竞争过程,所以基本上我们正在做的事情可以最好地排序,可以理解为对互联网大块的压缩。 所以因为 Llama 2-70b 是一个开源模型,我们对它的训练过程了解得相当多,因为 Meta 在论文中公开了这些信息。以下是一些与训练相关的数据: 基本上你会获取大约10TB的文本,这通常来自于对互联网的爬取,就想象一下从各种不同的网站收集大量文本并将其汇总在一起。然后你会获取一个GPU集群,这些是用于非常重型计算工作负载(比如训练神经网络)的专用计算机。你大约需要使用6,000个GPU,并运行大约12天,才能得到一个 Llama 2-70b 模型,这将花费你大约 200 万美元。 其基本原理是将这一大块文本压缩成一种类似于zip文件的形式。所以我之前展示给你看的这些参数,最好可以看作是互联网的一个“zip文件”。在这种情况下,输出的就是这些参数,大小为 140GB,因此可以看出,这里的压缩比大约是100倍左右,粗略地说。但这并不完全是一个zip文件,因为zip文件是无损压缩,而这里使用的是有损压缩,我们只是获得了文本的一种整体印象,不是它的完全相同副本,可以这样理解为有损压缩。 再指出一件事情,按照当今标准,这些数字在最先进的水平上是相当初级的,如果你想想现在最先进的神经网络,比如你可能在ChatGPT、Claude或Bard中使用的,那么这些数字要高出一个数量级或更多。 因此,你只需开始逐步增加,这就是为什么今天这些训练运行的成本很高,需要非常大型的集群和非常大型的数据集,获取这些参数的过程非常复杂。 一旦你获得了这些参数,运行这个神经网络的计算量就相对较小。 2.2 原理

那那么这个神经网络究竟在做什么呢?我提到了有这些参数,这个神经网络基本上只是试图预测一个序列中的下一个单词,你可以这样理解。你可以输入一个单词序列,例如“cat sat on a”, 这个输入进入神经网络,这些参数分散在整个神经网络中,有神经元彼此相连并以某种方式激活。 最后输出的是对接下来的单词的预测。例如,在这个例子中,这个神经网络可能会预测,在这个四个词的上下文中,下一个词很可能是“Matt”,可能有97%的概率。 所以基本上,这个神经网络所进行的任务就是这样一个问题,你可以从数学上证明预测与压缩之间有着非常密切的关系,这就是为什么我将这个神经网络称之为对互联网进行压缩的一种训练, 因为如果你可以非常准确地预测下一个单词,你可以用来压缩数据集。它就是一个下一个单词预测神经网络,你输入一些单词,它给你输出下一个单词。但是,训练得到的结果为什么会是一个非常神奇的产物呢? 因为基本上,下一个单词预测任务你可能认为是一个非常简单的目标,但它实际上是一个相当强大的目标,因为它迫使你在神经网络的参数中学习很多关于世界的知识。 2.2.1 预训练

比如,我在做这个演讲时随机选了一个网页,我只是从维基百科的主页上抓取了一个关于 Ruth Handler 的页面,想象一下作为神经网络,你得到了一些单词,试图预测序列中的下一个单词,在这种情况下,我用红色标出了一些包含很多信息的单词,例如在这里,如果你的目标是预测下一个单词,那么你的参数可能就必须学习到这么多的知识,你必须了解关于 Ruth 和 Handler 的信息,她的出生日期和去世日期,她是谁,她做过什么等等。 所以在下一个单词预测的任务中,你就会对世界学到很多东西,而所有这些知识都被压缩到了神经网络的权重中,即参数中。

那么我们实际上如何使用这些神经网络呢?一旦我们训练好了,我向你展示了模型推理是一个非常简单的过程,基本上我们生成接下来的内容,从模型中采样,选择一个词,然后继续将其反馈回去,得到下一个词,以此类推。 我们可以迭代这个过程,这个网络就会“梦见”互联网的文档。例如,如果我们只是运行这个神经网络,或者说进行推理,我们会得到一些类似于网页的“梦境”,你可以将其看作是网络梦想的结果。因为这个网络是在网页上训练的,你可以想象一下 所以在左边我们有一种类似Java代码的梦境,中间我们有一种几乎像是亚马逊产品的梦境,右边有一些看起来几乎像是维基百科文章的东西, 稍微关注一下中间的那个作为例子,标题,作者,ISBN号码,其他的一切都是网络完全虚构的,网络是从它训练的分布中进行文本的构想,它只是模仿这些文件,但这都是一种幻觉。比如ISBN号码,这个号码可能我猜几乎肯定是不存在的,模型网络只知道ISB和冒号后面大致是某种长度的数字,有这么多位数,然后它就随意放进去了,放入了看起来合理的任何东西。

所以它分开了训练数据集,右边的分布是black nose dace,我查了一下,它实际上是一种鱼,嗯,这里发生的是,这段文字原封不动地不在训练集文档中,但是如果你真的查找,关于这种鱼的信息大致上是正确的。所以网络对这种鱼有了一些了解,它对这种鱼了解很多,它不会完全复制它在训练集中看到的文件 但再次,它是互联网的某种损失压缩,它记得这个东西,它对这个知识有所了解,然后它会创造出正确的形式,并填充上一些它的知识,但你永远不会百分之百确定它想出来的是所谓的幻觉还是不正确的答案还是正确的答案,因此一些东西可能是记忆的,一些可能不是记忆的,你不确定哪个是哪个。 但在大多数情况下,这只是对互联网文本进行幻想或者说是梦境,来自于它的数据分布。

现在让我们转换一下,看看这个网络是如何工作的,它是如何执行这个下一个单词预测任务的。它内部发生了什么呢? 嗯,这里事情有点复杂,这有点像神经网络的示意图,如果我们放大这个神经网络的玩具图,这就是我们称之为transfomer神经网络架构的东西,这是它的图表。 现在这些神经网络的显著之处在于,我们实际上完全了解这个架构,我们确切地知道在它的不同阶段发生了什么样的数学操作,问题是,这些1000亿的参数分散在整个神经网络中,所以基本上这些数以亿计的参数散布在神经网络中,我们只知道如何迭代地调整这些参数,使得网络作为一个整体在下一个单词预测任务上变得更好。 所以我们知道如何优化这些参数,我们知道如何随着时间的推移调整它们以使得下一个单词的预测更好,但我们实际上并不真正知道这1000亿个参数在做什么,我们可以衡量它在下一个单词预测方面变得更好,但我们不知道这些参数是如何协作来执行这个任务的。我们有一些模型可以尝试从高层次来思考网络可能在做什么,所以我们有点理解它们构建和维护了某种知识数据库,但即使这个知识数据库也是非常奇怪和不完美的。 一个最近的病毒性例子是我们称之为“倒转课程”的东西,举个例子,如果你去和Chat GPT交谈,然后问GP4,目前最好的语言模型,你会问谁是汤姆克鲁斯的母亲,它会告诉你是梅丽莉·黎佛,这是正确的, 但如果你问梅丽莉·黎佛的儿子是谁,它会告诉你它不知道,所以这种知识很奇怪,它有点单一, 你必须从某个方向来问它,这种知识不是存储并且可以以各种不同的方式被访问,你几乎必须从某个特定的角度来问它。所以这真的很奇怪和奇特,基本上我们真的不知道,因为你只能衡量它是否有效,以及以什么概率。长话短说,把LLM想象成大多数是难以捉摸的工艺品。

它们与工程学科中可能构建的任何其他东西都不相似,它们不像汽车,我们对所有零部件都有一定的理解。它们是经过长时间的优化过程得到的神经网络,所以目前我们并不完全了解它们是如何工作的, 尽管有一个称为可解释性或机械解释性的领域,试图去了解这个神经网络的所有部分在做什么,你可以在某种程度上做到这一点,但现在还不能完全理解。但目前我们基本上将它们视为经验性的工艺品,我们可以给它们一些输入,然后测量输出,基本上我们可以测量它们的行为,我们可以在许多不同的情况下查看它们生成的文本。 所以我认为这基本上需要相应复杂的评估来处理这些模型,因为它们主要是经验性的。那么现在让我们来看看我们到目前为止如何获得一个助手。 2.2.2 微调

我们目前只谈到了这些互联网文档生成器, 是训练的第一阶段,我们称之为预训练阶段,现在我们要进入训练的第二阶段,我们称之为微调。 在这个阶段,我们得到了我们所谓的助理模型,因为我们实际上不只是想要一个文档生成器,对于许多任务来说这并不是很有帮助,我们希望给出一些问题,然后让它根据这些问题生成答案,所以我们实际上更想要一个助理模型。 获得这些助理模型的方法基本上是通过以下过程: 我们基本上保持优化的方式相同,训练过程也是相同的,只是一个下一个单词预测的任务,但我们要交换训练所用的数据集。 之前我们试图在互联网文档上进行训练,现在我们要把它换成手动收集的数据集,我们收集数据的方法是通过许多人,通常一个公司会雇佣人员,他们会给他们标注说明,并要求他们提出问题,然后为这些问题写答案。这里是一个可能进入你的训练的单个示例,有一个用户,他说类似“你能写一个关于单一买方市场在经济学中相关性的简短介绍吗?”然后有一个助理,再次填写理想的回应应该是什么,理想的回应和如何规定以及它应该是什么样的,都来自于我们提供给这些人的标注文档,像OpenAI或者Anthropic等公司的工程师们会创建这些标注文档。而预训练阶段则涉及大量文本。

在第一个阶段,也就是预训练阶段,我们只是从互联网中获取了大量文本,可能有数十或数百TB的数据,但并不都是高质量的内容。 在这个阶段,我们更注重质量而非数量,因此我们可能只有很少的文档,比如10万份,但所有这些文档都是对话,应该是非常高质量的对话。 人们基本上是根据标注说明来创建这些对话的。我们现在替换了数据集,并在这些问答文档上进行训练,这个过程被称为微调。 一旦完成微调,你就得到了我们所说的助理模型。

现在这个助理模型符合其新训练文档的形式。例如,如果你给它一个问题,比如“你能帮我解决这个代码吗,似乎有一个bug,打印出Hello World”,即使这个问题在训练集中没有明确出现过,但在经过微调后,模型明白它应该以帮助解答这类问题的方式回答,并且会这样做。它会逐字逐句地从左到右、从上到下地对这个查询做出回应,这有些了不起,也有些经验性,并不完全理解,这些模型能够改变它们的格式,现在成为了有帮助的助手,因为它们在微调阶段看到了如此多的这种文档,但它们仍然能够访问并某种方式利用在第一阶段预训练阶段积累起来的所有知识。 2.3 总结

大致来说,预训练阶段是在互联网上获取大量文本,你需要一组GPU,这些是专门用于这种并行处理工作负载的特殊目的的计算机。这不是你可以在百思买购买到的东西,这些都是非常昂贵的计算机,然后你把文本压缩到这个神经网络中的参数中。通常这可能需要几百万美元,然后这给你带来了基础模型,因为这是非常计算密集型的部分,所以这只会在公司内部偶尔进行,可能一年一次或者在多个月后进行,因为这实际上是非常昂贵的过程。 一旦有了基础模型,你进入微调阶段,这个阶段的计算成本要低得多。在这个阶段,你撰写一些标注说明,基本上规定了你的助理应该如何行为,然后你雇佣人员,比如Scale AI是一家公司,他们会与你合作,根据你的标注说明实际上创建文档,你收集10万份高质量的理想问答响应,然后你将基础模型在这些数据上进行微调,这会便宜得多,可能只需要一天左右,而不是几个月左右,然后你得到了我们所说的助理模型,然后你进行评估、部署,并监控收集不良行为,对于每一个不良行为,你都想要修复它,然后重复上述步骤。 修复不良行为的方式大致是,你有一个对话,助理给出了一个错误的回应,于是你拿这个回应向人类询问正确的回应,然后这个人类用正确的回应覆盖错误的回应,这个例子被插入到你的训练数据中,下一次进行微调阶段时,模型在这种情况下会得到改进。

这就是通过迭代过程改进的方式,因为微调的成本更低,你可以每周、每天进行一次等等,公司通常会在微调阶段进行更快的迭代,而不是在预训练阶段。 另一个要指出的事情是,比如我提到的Llama 2系列,实际上当Meta发布Llama 2系列时,包含了基础模型和助理模型,它们同时发布了这两种类型。 基础模型并不是直接可用的,因为它不能用答案回答问题,如果你给它问题,它会给你更多问题,或者做一些类似的事情,因为它只是一个互联网文档采样器,所以它们并不是非常有帮助。它们的帮助之处在于Meta已经完成了这两个阶段中非常昂贵的部分,他们完成了第一阶段,并为你提供了结果,所以你可以自己去做微调,这给了你很大的自由度。 此外,Meta还发布了助理模型,如果你只是想问问题并得到答案,你可以使用那个助理模型,然后和它交谈。所以这就是这两个主要阶段

现在看看在第二阶段,我说的结束或者比较,我想简要地再详细解释一下,因为还有一个第三阶段的微调,你可以选择进入或者继续进行。在微调的第三阶段,你将使用比较标签,让我给你展示一下它是什么样子的,我们之所以这样做是因为在许多情况下,比较候选答案要比自己写答案更容易,如果你是一个人类标注员的话。考虑下面这个具体的例子,假设问题是写一个关于回形针之类的haiku(一种日本的短诗形式),从标注员的角度来看,如果要求我写一个haiku,这可能是一个非常困难的任务,对吧,我可能无法写出来。 但是假设你得到了几个由第二阶段助理模型生成的候选haiku,作为一个标注员,你可以看看这些haiku,并挑选出最好的一个。因此,在许多情况下,进行比较要比进行生成更容易。 还有一个第三阶段的微调可以使用这些比较进一步微调模型。我不会详细介绍这个过程的全部数学细节,在OpenAI这个过程被称为从人类反馈中进行强化学习或者RLHF,这是一个可选的第三阶段,可以在这些语言模型中获得额外的性能,并利用这些比较标签。

我也想简单地向你展示一张幻灯片,展示一些我们给人类的标注说明。这是OpenAI的一篇论文《Instruct GPT》的节选,它向你展示了我们要求人们要有帮助、真实和无害。虽然这些标注说明可能会变得很复杂,可能会有几十页甚至几百页,但大致上就是这个样子。

我想要提到的另一件事是,我简单地描述了这个过程是人类进行所有手动工作,但这并不完全正确,并且越来越不正确,因为这些语言模型同时正在变得更加优秀 你基本上可以使用人机协作来创建这些标签,而且效率和正确性都在不断提高。 例如,你可以让这些语言模型生成答案,然后人们从答案中挑选最好的部分,形成一个最佳答案,或者你可以让这些模型尝试检查你的工作,或者尝试要求它们创建比较,然后你只是对其进行修饰。 这是一个你可以确定的滑动条,越来越多的模型正在变得更好,向右移动这个滑动条。

最后,我想向你展示一下当前主要大型语言模型的排行榜。比如这个聊天机器人竞技场,由伯克利团队管理,他们在这里根据ELO评分对不同的语言模型进行排名。计算ELO的方式与国际象棋的计算方法非常相似,不同的国际象棋选手相互对弈,根据彼此的胜率可以计算出他们的ELO分数。你可以用同样的方式来计算语言模型,你可以在这个网站上输入一些问题,从两个模型获取回答,你不知道这些回答来自哪个模型,然后你选择一个赢家。根据谁赢谁输,你可以计算出ELO分数,分数越高越好。你可以看到排在最顶端的是专有模型,这些是封闭模型,你无法访问它们的权重,它们通常在一个网络界面后面,比如OpenAI的GPT系列和Anthropic的claude系列 还有其他一些公司的系列模型。这些目前是性能最好的模型,然后在下面你将开始看到一些开放权重的模型,关于它们已知的更多,通常有相关的论文可用。例如Meta的Llama 2 Series,或者底部你看到的Zephyr 7B beta,它基于法国的另一家初创公司的Mistol系列 但大致上,你今天在这个生态系统中看到的是封闭模型的工作效果更好,但你不能真正使用它们来微调、下载等,你只能通过网络界面使用它们,然后在这些封闭模型的后面是所有开源模型和整个开源生态系统,所有这些东西的效果都不如封闭模型好,但根据你的应用,这可能是足够好的 目前我可以说的是,开源生态系统正在努力提高性能,并且追赶专有生态系统,这大致是你在行业中看到的今天的动态。 3.模型的未来

所以现在我要转换话题,我们来谈谈语言模型以及它们的改进方向 3.1 缩放定律

关于大型语言模型领域非常重要的一点是所谓的“扩展(缩放)定律”。 事实证明,这些大型语言模型在下一个单词预测任务的准确性方面是一个非常平稳、表现良好且可预测的函数,只涉及两个变量:你需要知道的是网络中的参数数量n和你将要进行训练的文本量D。 仅凭这两个数字,我们可以预测非常精确、非常有信心地预测你在下一个单词预测任务中会达到什么样的准确性。 值得注意的是,这些趋势似乎没有显示出任何达到顶峰的迹象。如果你在更多文本上训练一个更大的模型,我们有很大的信心下一个单词预测任务的表现会提升。 所以算法进步并不是必要的,虽然是一个非常好的额外奖励,但我们可以无偿地获得更强大的模型,因为我们可以只是获取一台更大的计算机,我们可以有一定的信心会得到这台计算机,并且我们可以训练一个更大的模型更长时间,我们非常有信心会得到更好的结果。 当然,在实践中我们实际上并不在意下一个单词预测的准确性,但根据经验我们发现这种准确性与我们真正关心的许多评估是相关的。

例如,你可以对这些大型语言模型进行许多不同的测试,你会发现,如果你训练一个更大的模型,比如在GPT系列中从3.5升级到4,所有这些测试的准确性都会提高。 所以,随着我们训练更大的模型和使用更多的数据,我们几乎可以免费地期待性能的提升。这基本上是推动当今计算领域的淘金热的根本原因,每个人都在努力获取更大的GPU集群,获取更多的数据,因为人们非常有信心,通过这样做,你将获得一个更好的模型。 算法进步是一种很好的奖励,许多组织都在大量投入其中,但从根本上来说,规模化提供了一条通往成功的保证路径。 3.2 Agent

现在我想谈一下这些语言模型的一些功能以及它们如何随着时间的推移而发展。 我不想用抽象的术语来讲,我想用一个具体的例子来说明,我们可以一步一步地进行。我去了chatgpt,然后输入了以下查询,我说收集关于Scale及其融资轮次的信息,包括时间、金额和估值,并将其组织成一个表格。 chatgpt基于我们收集的大量数据以及我们在微调阶段教给它的知识,理解到在这种查询中,它不能单独作为一个语言模型直接回答问题,而是需要使用能帮助它完成任务的工具。 在这种情况下,一个非常合理的工具可能是浏览器。如果你和我面临同样的问题,你可能会进行搜索,对吧,这正是chatgpt所做的。 它有一种方法生成我们可以查看的特殊词汇,我们可以看到它试图执行搜索,在这种情况下,我们可以获取那些查询,转到Bing搜索,查找结果,然后我们可以像你和我可能浏览搜索结果一样,将这些文本返回给语言模型,然后根据这些文本,让它生成回答。 它的工作方式非常类似于我们使用浏览器进行研究,它将信息组织成了以下内容,并以这种方式回应:它收集了信息,我们有了一个表格,有A、B、C、D和E系列,有日期、筹集的金额和暗含的估值,在系列中,然后它提供了可以验证这些信息是否正确的引用链接。 在底部,它说实际上抱歉,它无法找到A和B系列的估值,它只找到了筹集的金额,所以你看到表格中有一些信息是“无法获取”的。

好的,我们现在可以继续这个互动了,我说好,让我们尝试根据我们在CD和E系列中看到的比例来猜测或推断A和B系列的估值,你看,CD和E系列中筹集金额与估值的比例是一定的。如果我们试图推断这个值,我们不会仅仅在脑海中计算,这样很复杂。 因为你和我在数学方面都不是很擅长,而就像 chatgpt(语言模型)本质上也不太擅长数学一样,所以实际上 chatgpt 理解到它需要在这类任务中使用计算器。 它会再次发出特殊的单词,表明它想使用计算器。我们想要计算这个值,实际上它的做法是基本上计算了所有的比率,然后根据这些比率计算出 A 轮和 B 轮的估值应该是,你知道的,大约是 7000 万和 2.83 亿。

所以现在我们想要做的是,我们有不同轮次的估值,所以让我们将其组织成一个二维图表。我说的是 x 轴是日期,y 轴是 Scale AI 的估值,使用对数刻度作为 y 轴,使其看起来很专业,并使用网格线。而 chatgpt 实际上可以再次使用,比如,它可以编写使用 Python 中的 Matplotlib 库来制作这个数据图表的代码。所以它进入一个 Python 解释器,输入所有的值,然后生成一个图表。这就是这个图表,所以它在底部显示了数据,它完全按照我们用纯英语要求的方式完成了工作,你可以像与人交谈一样与它交流。

现在我们正在看这个图表,我们想做更多的任务,例如,让我们现在在这个图表上添加一个线性趋势线,并且我们想将估值外推到 2025 年底,然后在今天创建一个垂直线,并根据拟合告诉我今天和 2025 年底的估值。 而 chatgpt 进行了所有代码编写(未显示),然后进行了分析。所以在底部我们有了日期,我们已经外推了,这就是估值。所以根据这个拟合,今天的估值似乎大约是 1500 亿,而到 2025 年底,Scale AI 预计将成为 2 万亿美元的公司。所以祝贺团队,但这正是 chatgpt 非常擅长的分析类型。 我想要在这一切中展示的关键点是,这些语言模型的工具使用方面以及它们的发展,不仅仅是关于在头脑中工作和采样单词,现在它们是关于使用工具和现有的计算基础设施,并将所有事物联系在一起,并与单词交织在一起,如果有意义的话。 所以工具使用是这些模型变得更加强大的一个重要方面,它们基本上就像人类一样能够写出大量的代码,进行所有的分析,查找互联网上的东西,等等。

还有一件事,根据上述信息,生成一个代表公司 Scale AI 的图片。所以基于大型语言模型的上下文窗口中的所有内容,它对 Scale AI 了解很多,甚至可能记得关于 Scale AI 以及网络中所掌握的一些知识,并使用另一个工具,比如 OpenAI 开发的 DALL 工具,它采用自然语言描述并生成图像。所以这里DALL 被用作生成这个图像的工具。所以希望这个演示清楚地说明了在解决问题中涉及大量的工具使用,这与人类解决许多问题是非常相关和相关的。 你和我不仅仅试图在脑海中解决问题,我们使用大量工具,我们发现计算机非常有用,同样的情况也适用于更大型的语言模型,这是这些模型越来越多地被利用的方向。 我在这里向你展示了chatgpt可以生成图像,现在多模态实际上是使得大型语言模型变得更好的一个重要方向,所以我们不仅可以生成图像,还可以看到图像。

在OpenAI的创始人之一Greg Brockman的一个著名演示中,他向chatgpt展示了一个用铅笔草绘的小笑话网站的示意图,chatgpt可以看到这张图片,并基于它写出了这个网站的一个功能性代码,所以它写了HTML和JavaScript,你可以访问这个我的笑话网站,你可以看到一个小笑话,你可以点击揭示一个笑话的结尾,这一切都可以实现,这是非常了不起的,这基本上就是工作原理,基本上你可以开始将图像与文本一起插入到语言模型中,chatgpt能够获取这些信息并利用它,而且更多的语言模型也将在未来获得这些能力。

现在我提到了这里的一个主要方向是多模态,所以不仅仅是关于图像,看到它们和生成它们,还有关于音频 所以chatgpt现在既可以听到又可以说话,这使得语音之间的交流成为可能,如果你去你的IOS应用,你实际上可以进入这种模式,在那里你可以与chatgpt交谈,就像电影《她》中一样,这就像是一个人工智能的对话界面,你不需要输入任何东西,它就可以回答你,这感觉非常神奇,也是一种非常奇特的感觉,我鼓励你去尝试一下。

好的,现在我想转换话题,谈谈更大型语言模型未来发展的一些方向,这是该领域广泛感兴趣的。所以,如果你去学术界,看看正在发表的论文以及人们普遍感兴趣的内容,我这里不是为OpenAI或其他任何公司做产品发布,只是一些人们正在思考的事情。 第一件事是系统一和系统二思维模式的概念,这是由《思考,快与慢》一书所推广的。区别在于,你的大脑可以以两种不同的模式运行,系统一思维是你大脑的快速、本能和自动化的部分,所以例如,如果我问你2加2等于多少,你实际上并不需要进行数学运算,你只是告诉我是4,因为这个答案是可得的、缓存的和本能的。 但是,如果我问你17乘以24等于多少,你没有准备好这个答案,于是你会启动大脑的另一个部分,一个更加理性、更慢、执行复杂决策的部分,更加有意识,你需要在脑海中计算出答案。

另一个例子是,如果你可能玩国际象棋,当你进行快棋时,你没有时间思考,所以你只是根据看起来正确的着法进行本能的移动,这主要是由你的系统一来完成大部分工作,但是如果你处于比赛状态,你有更多时间来思考,你会感到自己在构思可能性树并努力工作和思考,这是一个非常有意识、需要努力的过程,这基本上就是你的系统二在做的事情。现在事实证明,目前大型语言模型只有系统一,它们只有这种本能的部分。

它们不能像思考和推理出各种可能性的树状结构之类的东西一样。它们只是有单词以序列输入,并且基本上这些语言模型有一个神经网络,可以给出下一个单词。 所以就像右边的这个卡通一样,在这个模型中你就像是在轨道上行进,这些语言模型基本上就像是在消耗单词,它们就像是“咚、咚、咚、咚”的样子在序列中采样单词,每一个这样的“咚”都花费大致相同的时间。 所以,这基本上是大型语言模型在系统一的环境中运作。

我认为很多人对能够给大型语言模型加入系统二的能力感到兴奋,直觉上我们想要的是将时间转化为准确性,所以你应该可以来到chatgpt并说:“这是我的问题,我需要30分钟,可以吗?没关系,我不需要立刻得到答案,你不必马上开始输入单词,你可以花时间思考。” 目前,这不是任何一个语言模型具备的能力,但这是很多人感到激发的并且正在努力实现的目标。 那么,我们如何实际上创建一种思维树来思考问题,反思和重新表述,然后再给出模型更有信心的答案呢?你可以想象将时间作为X轴,而Y轴将是某种响应的准确性,当你绘制出这个函数图像时,你希望它是单调递增的。但今天并非如此,但很多人正在考虑这个问题。

我想给出的第二个例子是自我提升的概念,我认为很多人受到了AlphaGo所发生的事情的启发。在AlphaGo中,这是DeepMind开发的一个围棋程序,实际上有两个主要阶段。在第一个阶段中,它通过模仿人类专家玩家学习。所以你获取了大量由人类玩家下的棋局,筛选出由真正优秀的人类玩家进行的棋局,然后通过模仿来让神经网络模拟这些优秀的玩家。这很有效,并且可以给出一个相当不错的围棋程序,但它不能超越人类,它只能达到提供训练数据的最好人类的水平。因此,DeepMind找到了一种方法来实际超越人类,这是通过自我提升实现的。 在围棋的情况下,这是一个简单的封闭的沙盒环境,你有一个游戏,你可以在这个环境中玩很多游戏,并且你可以有一个非常简单的奖励函数,就是赢得游戏。所以你可以查询这个奖励函数来告诉你,你所做的是好还是坏,你是否赢了。这是一种非常便宜、自动的评估方式,因此你可以玩数以百万计的游戏,并且根据获胜的概率来完善系统。所以没有必要模仿,你可以超越人类,实际上这正是这个系统最终所做的。在右边的图中显示,AlphaGo用了40天的时间来超越一些最优秀的人类玩家。所以我认为很多人都对大型语言模型的类似第二步是什么感兴趣。 因为今天我们只在进行第一步,我们正在模仿人类,正如我之前提到的,有人类标注者在书写这些答案,我们在模仿他们的回答,我们可以有非常优秀的人类标注者,但从根本上说,如果我们只是在人类上进行训练,要想超越人类的响应准确性将是困难的,所以这是一个重要的问题,在开放语言建模领域中的步骤二相当于什么呢? 主要挑战在于,在一般情况下缺乏奖励标准,因为我们处于语言空间中,一切都更加开放,并且有各种不同类型的任务,从根本上来说,没有一个简单的奖励函数可以告诉你,无论你所做的采样是好还是坏,没有一个易于评估的快速标准或奖励函数。但在狭窄的领域中,这样的奖励函数可能是可实现的,所以我认为在狭窄的领域中,自我改进语言模型是可能的,但这在该领域还是一个开放的问题,很多人正在思考,如何在一般情况下实现某种形式的自我改进。 3.3 定制化/LLM OS

好的,还有一个改进的方向,我想简要谈谈,那就是定制化的方向,你可以想象,经济有很多细微之处和不同类型的任务,大量多样化,可能我们实际上希望定制这些大型语言模型,让它们成为特定任务的专家。 举个例子,Sam Altman在几周前宣布了GPTs App Store,这是OpenAI尝试创建的一个定制化层面,你可以去Chat GPT,你可以创建你自己的GPT,今天这只包括沿着特定自定义指令的定制化,或者你可以通过上传文件添加知识,当你上传文件时,有一种叫做检索增强生成的方法,chatgpt实际上可以参考那些文件中的文本块,并在生成答案时使用它们,这有点像浏览的等价物,但是不是浏览互联网,chatgpt可以浏览你上传的文件,并将它们用作参考信息来生成回答。 今天这些是可用的两种定制化手段,未来可能你可以想象微调这些大型语言模型,为它们提供你自己的训练数据,或者进行其他类型的定制化,但从根本上说,这是为了创建多种不同类型的语言模型,使它们在特定任务上表现出色,并且可以成为这些任务的专家,而不是只有一个模型,你可以用来处理所有事情。

现在让我试着将一切整合到一个单一的图表中,这是我的尝试。在我看来,基于我向你展示的信息并将它们整合在一起,认为将大型语言模型视为聊天机器人或某种词语生成器并不准确,我认为更正确的想法是将其视为新兴操作系统的内核进程,基本上这个过程是协调着大量资源,无论是内存还是计算工具,来解决问题。让我们思考基于所提到的一切。 我向你展示了未来几年内语言模型可能会变成什么样子:它可以阅读和生成文本,它拥有比任何一个单个人更多的知识,涵盖了所有学科,它可以浏览互联网或引用本地文件,通过检索增强生成技术,它可以使用现有的软件基础设施,如计算器、Python等,它可以看到和生成图像和视频,它可以听到和说话,并生成音乐,它可以通过系统二长时间思考,也许在某些具有可用奖励函数的狭窄领域中自我提升,也许它可以被定制和微调为许多具体的任务,也许有很多大型语言模型专家几乎就像生活在一个应用商店中,可以协调解决问题。 因此,我认为这个新的大型语言模型操作系统与今天的操作系统有很多相似之处,这有点像一个几乎看起来像今天的计算机的图表。 所以在这个记忆层次结构中有相应之处,你可以通过浏览访问硬盘或互联网,你有相应于随机访问存储器或RAM的东西,在这种情况下,对于一个大型语言模型来说,是最大数量的词语上下文窗口,用来预测序列中的下一个单词。 我没有在这里详细介绍,但这个上下文窗口是你有限宝贵的工作内存,你的语言模型的工作内存,你可以想象这个操作系统内核进程,这个大型语言模型试图在其上下文窗口中传入和传出相关信息,来执行你的任务。 还有很多其他的联系,我认为也存在。例如,有多线程、多处理、投机执行等等的等价物。在上下文窗口中的随机访问存储器中,也有用户空间和内核空间的等价物,还有很多其他今天操作系统的等价物,我没有完全涵盖

但基本上另一个我真的很喜欢的大型语言模型有点成为一个操作系统生态系统的类比的原因是,我认为当前操作系统和今天正在崛起的操作系统之间也存在一些相似之处。例如,在桌面操作系统领域,我们有一些专有的操作系统,如Windows和Mac OS,但我们也有基于Linux的开源生态系统中多样化的操作系统。同样地,在这里,我们有一些专有的操作系统,如Google的GPT系列、CLA系列或Bart系列,但我们也有一个快速崛起和成熟的生态系统,是基于开源的大型语言模型,目前主要基于LLama系列。 因此,我认为这个类比也适用于这个原因,就是在生态系统的形成方面,我们可以从以前的计算栈中借鉴很多类比,来思考这个基于大型语言模型的新计算栈,它基本上是围绕着大型语言模型协调解决问题的工具,并且通过自然语言界面来访问

今天我们谈论了大型语言模型,它们是什么,它们是如何实现的,它们是如何训练的。 我谈到了语言模型的潜力以及它们未来的发展方向,我还谈到了这种新兴计算范式的挑战,还有很多正在进行的工作 这绝对是一个需要密切关注的非常激动人心的领域