草庐IT

超越ChatGPT:大模型的智能极限

OneFlow深度学习框架 2024-06-29 原文

在此前《大型语言模型的涌现能力》、《ChatGPT进化的秘密》两篇文章中,符尧剖析了大型语言模型的突现能力和潜在优势,大模型所带来的“潜在的”范式转变,并拆解了ChatGPT演进的技术路线图。

在本文中,作者以终为始分析了大模型的智能极限及其演进维度。不同于刻舟求剑式只追求复现ChatGPT的经典互联网产品思维,而是指出了OpenAI组织架构和尖端人才密度的重要性,更重要的是,分享了模型演化与产品迭代及其未来,思考了如何把最深刻、最困难的问题,用最创新的方法来解决。

(以下内容经授权后由OneFlow发布,原文:https://yaofu.notion.site/e1cd16d1fae84f87aeddf872c838e07c)

作者|符尧
爱丁堡大学博士生

yao.fu@ed.ac.uk

2022 年 12 月,ChatGPT 横空出世。OpenAI 用一个核弹级的成果改变了科学研究和工程应用的范式。在中国,ChatGPT 受到了广泛的关注与深刻的讨论。

在过去的一个月里,我走访各大高校、研究院、大厂、创业公司和风投。从北京到上海到杭州到深圳,跟所有头部的玩家们全部聊了一遍。The Game of Scale 在中国已然拉开,风暴中心的玩家们,在已知国内技术和生态与世界前沿的巨大鸿沟下,如何做成这件事?谁能做成这件事?

秦失其鹿,天下共逐之。   

———    《史记·淮阴侯列传》

1

三种不同的答案

我每接触到一个创业公司,都会问同一个问题:”ChatGPT 在那里,你们想做什么?“ 我大概能收到三种不同的答案。

1.1 做中国的 ChatGPT

第一个答案很明确,要做中国的 ChatGPT。因为它就在那里,所以想要复现,想要国产化。这是很经典的产品导向中文互联网思维。这种思路也是过去二十年,中文互联网常见的商业模式:首先硅谷做出来一个东西,然后我们把它抄过来。

但这里的问题是,首先,ChatGPT 可不像打车软件,复现难度完全不可同日而语。光从人的角度看,GPT 的产生,是这个世界上最顶尖的科学家和工程师们从 2015 年开始就不断研究的结果。

OpenAI 的首席科学家 Ilya Sutskever 深刻地相信 AGI 一定能实现。作为图灵奖得主 Geoffery Hinton 的大弟子,从 2007 年就开始研究深度学习。他的 citation 有 37 万,发过的文章精准踩中了过去十年 Deep Learning 的所有关键节点。即使是如此强大的团队,从 GPT 2 到 GPT 3.5 也花了四年的时间,它的科学与工程的难度可想而知。

同时,初代 ChatGPT,是 OpenAI 在 GPT 3.5 的基础模型上,花了两星期时间对着 dialog 做 finetuning 之后随手扔出来的 demo。这里真正强的并不是 ChatGPT 这一个产品,而是底下的 GPT 3.5 基础模型。这个模型还在不断地演化,GPT 3.5 系列在 2022 年更新了三个大版本,每个大版本都显著强于前一个版本;同样地,ChatGPT 发布两个月一共更新了四个小版本,每个小版本都在单个的维度上比前一个版本有着明显的改进。OpenAI 的所有模型都在持续不断的演化,随时间推移越来越强。

这也就意味着,如果只盯着当前 ChatGPT 这一个产品,无异于刻舟求剑。当 ChatGPT 出现的时候,它对已有的语音助手们形成了降维打击;如果看不到基础模型的演化,即使花个一两年辛辛苦苦做出一个类似的东西,那时候 OpenAI 的基础模型也在继续变强,如果他们接着产品化,以新的更强的基础模型 finetune 到一个更强的产品,难道要再被降维打击一次吗?

刻舟求剑的做法是行不通的。

1.2 做中国的 OpenAI

第二种答案是,要做中国的 OpenAI。给出这个答案的玩家,跳出了经典中文互联网产品思维。他们不止看到单个产品,而且还看到了这个产品背后,基础模型不断演化的强大驱动力,来源于尖端人才的密度和先进的组织架构。

• 尖端人才的密度:不是一个人集资源带队然后把任务按层级打包分配给底下的人,而是一群顶级的集 science 和 engineering 于一身的人们共同协作;

• 先进的组织架构:Language 团队与 Alignment 的团队相互合作迭代,然后底下 scaling 团队和 data 团队帮忙提供基础设施,每个 team 都非常小,但目标明确路径清晰,高度集中资源,朝着 AGI 进发。

所以,如果要做这件事情,不只要看到产品,还要看到它背后的人才团队和组织架构。按稀缺程度排名的话,人 > 卡 > 钱。

但这里的问题是,不同的土壤对创新的鼓励程度是不一样的。在 OpenAI 刚创立的 2015 年,它的投资者们都相信 AGI ,即使当时看不到什么盈利的点。现在 GPT 做出来了,国内的投资者们也都信了 AGI,但相信的点或许也不一样:到底是信 AGI 能挣钱,还是信 AGI 能推动人类发展?

更进一步地,即使 OpenAI 就产生在这里,明天就出现,但他们跟微软达成的 deal,能否跟国内的云计算厂商达成呢?大模型的训练和推理都需要极大的成本,需要一个云计算引擎作为支撑。微软可以倾尽所有,让整个 Azure 给 OpenAI 打下手,这个换到国内,阿里云有可能给一个创业公司打下手吗?

组织架构很重要,只有尖端的人才和先进的组织架构才能推动智能的不断迭代与进化;但它同样需要跟所在的土壤做适配,寻找可以 flourish 的方法。

1.3 探索智能的极限

第三种答案是,要探索智能的极限。这是我听到的最好的答案。它远超刻舟求剑式的经典互联网产品思维,也看到了组织架构和尖端人才密度的重要性,并且更重要的是它看到了未来,看到了模型演化与产品迭代,思考着如何把最深刻,最困难的问题用最创新的方法来解决。

这就涉及到了思考大模型的极限思维。

2

极限思维

观察现在的 ChatGPT / GPT-3.5 ,它明显是一个中间状态,它还有很多可以加强,并且马上就能加强的点,包括:

• 更长的输入框:开始的时候,GPT 3.5 的上下文最长到八千个 token;现在的 ChatGPT 上下文建模的长度似乎已经过万。并且这个长度明显可以接着增长,在融入 efficient attention 和 recursive encoding 的方法之后,context length 应该可以接着 scale 到十万,甚至百万的长度;

• 更大的模型,更大的数据:模型的大小还没有到极限,MoE 可以接着把模型 scale 到 T 的量级;数据的大小还没有到极限,人类反馈的数据每天都在增长;

• 多模态:在增加了多模态数据(音频,图片),特别是视频数据之后,总体与训练数据的大小可以再增大两个量级,这个可以让已知的能力接着按 scaling law 线性增加,同时还有可能继续出现新的涌现能力。比如可能模型在看过各种几何形状的图片,以及看过代数题之后,或许会自动学会做解析几何;

• 专业化:现有的模型在文科上大概相当于研究生水平,但在理科上相当于高中或大一大二的学生水平;已有的工作已经证明我们可以把模型的技能点从一个方向挪到另一个方向,这就意味着即使不做任何 scaling,我们依然可以在通过牺牲其他方面能力的情况下,把模型朝着目标方向推进。比如牺牲掉模型的理科能力,把它的文科能力从研究生推到专家教授的水准。

以上四点只是现阶段可以看到的,马上就可以加强但暂时还没有加强的点,随着时间的推移和模型的演化,会有更多可以被 scale 的维度进一步体现出来。这意味着我们需要有极限的思维,要思考当我们把能够拉满的维度全部拉满的时候,模型会是什么样子。

2.1 能够拉满全部拉满

模型的输入框可以接着加长,模型的大小可以继续增大,模型的数据可以继续增多,多模态的数据可以融合,模型的专业化程度可以继续增高,所有这些维度可以继续往上拉,模型还没有到极限。极限是一个过程,在这个过程中模型的能力会怎样发展呢?

Log-linear 曲线:一部分能力的增长会遵循 log-linear 的曲线,比如说某项任务的 finetuning。随着 finetune 数据的指数增长,模型所对应的 finetune 的任务的能力会线性增长。这部分能力会可预测地变得更强;

Phase change 曲线:一部分能力会随着 scaling 继续涌现,比如说上文中的模型做解析几何的例子。随着可以被拉满的维度被不断拉满,新的,难以预测的涌现能力会接着出现;

多项式曲线? 当模型强到一定程度,与人类 align 到一定程度之后,或许一些能力的线性增长,所需要的数据,会突破指数增长的封锁,而降低到多项式的量级。也就是说,当模型强到一定程度之后,它或许不需要指数级的数据,而是只需要多项式级的数据,就可以完成泛化。这可以从人类的专业学习中观察到:当一个人还不是领域专家的时候,ta 需要指数级的数据来学习领域的知识;当一个人已经是领域专家的时候了,ta 只需要很少量级的数据就自己迸发出新的灵感和知识。

所以,在极限思维下,把所有能拉满的维度全部拉满,模型注定会越来越强,出现越来越多的涌现能力。

2.2 反推中间过程

在思考清楚极限的过程之后,就可以从极限状态往后反推中间过程。比如说,如果我们希望增长输入框的大小:

• 如果希望把模型的输入框从千的量级增长到万的量级,可能只需要增加显卡数量,进行显存优化就能实现;

• 如果希望接着把输入框从万的量级增长到十万的量级,可能需要 linear attention 的方法,因为此时加显存应该也架不住 attention 运算量随输入框长度的二次增长;

• 如果希望接着把输入框从十万的量级增长到百万的量级,可能需要 recursive encoding 的方法和增加 long-term memory 的方法,因为此时 linear attention 可能也架不住显存的增长。

以这种方式,我们可以反推不同阶段的 scaling 需要怎样的技术。以上分析不止适用于输入框的长度,也适用于其他因素的 scaling 的过程。

这样的话,我们可以得到清晰的从现阶段的技术到 scaling 极限的每个中间阶段的技术路线图。

2.3 按模型演化进程产品化

模型在不断演化,但产品化不需要等到最终那个模型完成 — 每当模型迭代出来一个大的版本,都可以产品化。以 OpenAI 的产品化过程为例:

• 2020 年,初代 GPT 3 训练完成,开放 OpenAI API;

• 2021 年,初代 Codex 训练完成,开放 Github Copilot;

• 2022 年,GPT-3.5 训练完成,以 dialog 数据 finetune 成 ChatGPT 然后发布。

可以看到,在中间阶段的每一个重要版本,模型的能力都会增强,都存在产品化的机会。

更加重要的是,按照模型演化进程产品化,可以在产品化的阶段适配市场。学习 OpenAI 的组织架构来推进模型演化本身,但产品化可以按照本土市场的特征来做。这种方式或许可以既学到 OpenAI 的先进经验,又避免水土不服的问题。

3

人工智能显著超过人类的能力

到目前为止,我们讨论了要用模型演化的视角来分析模型,要用极限的思维讨论模型的演化历程。现阶段马上可以加强的点包括了输入框的长度,更大的模型和数据,多模态数据和模型的专业化程度。现在让我们再把视野放得更长期些,思考在更大的时间和空间中,模型如何进一步地往极限推。我们讨论:

• 并行感知:一个人类研究员一次顺序地读四五篇论文已经是极限,但模型输入框变长之后,可以在极短的时间内并行阅读一百篇论文。这意味着,模型对外部信息的感知能力远超人类一个数量级;

• 记忆遗传:人类的演化过程中,子代只继承父代的基因,但不继承父代的记忆,这意味着每一次生殖都需要重启一次;在模型的演化过程中,子代可以继承父代的记忆,并且这个继承的程度可控:我们可以设置子代继承 100%,50%,20% 的记忆,或清空记忆,这意味着父代的经验和技能可以不断累积;

• 加速时间:人类相互交流的速率是受到人类说话的物理速度限制的,而模型相互交流的速率可以远快于人类,这意味着模型可以通过相互交流来解决人类数据随时间线性增长的问题;人类演化的过程受到物理时间的限制,模型的演化可以比人类的物理时间快上几个数量级,这意味着模型的进步速度可以远快于人类;

• 无限生命:一个人的生命有限,百年之后终归尘土,但模型的权重只要不丢失,就可以不断地演化。

从这些角度来说,人工智能超过人类并不是一件难以想象的事情。这就引发了下一个问题:

如何驾驭远超人类的强人工智能?

这个问题,是 Alignment 这项技术真正想要解决的问题。

4

Alignment 对齐

当前阶段,模型的能力,除了 AlphaGo 在围棋上超过了最强人类之外,其他方面的 AI 并没有超过最强的人类(但 ChatGPT 在文科上或许已经超过了 95% 的人类,且它还在继续增长)。在模型还没超过人类的时候,Alignment 的任务是让模型符合人类的价值观和期望;但当模型继续演化到超过人类之后,Alignment 的任务就变成了寻找驾驭远超人类的智能体的方法。

4.1 Alignment 作为驾驭远超人类的智能体的方法

一个显然的问题是,当 AI 超过人类之后,还可以通过人类反馈让 ta 更强 / 更受约束吗?是不是这个时候就已经管不了了?

不一定,即使模型远超人类,我们依然又可能驾驭 ta,这里的一个例子是运动员和教练之间的关系:金牌运动员在 ta 的方向上已经是最强的人类了,但这并不意味着教练就不能训练 ta。相反,即使教练不如运动员,ta 依然可以通过各种反馈机制让运动员变得更强且更有纪律。

类似地,人类和强人工智能的关系,在 AI 发展的中后期,可能会变成运动员和教练之间的关系。这个时候,人类需要的能力并不是完成一个目标,而是设定一个好的目标,然后衡量机器是否足够好地完成了这个目标,并给出改进意见。

这个方向的研究还非常初步,这个新学科的名字,叫 Scalable Oversight。

4.2 Alignment 与组织架构

在通往强人工智能的路上,不只是需要人类与 AI 对齐,人类与人类,也需要高度对齐。从组织架构的角度,alignment 涉及到:

Pretraining 团队与 instruction tuning - alignment 团队之间的对齐

这两者应该是一个相互迭代的过程,pretraining 团队不断地 scale 基础模型,alignment 团队为基础模型做 instruction tuning,同时用得到的结果反向指导 pretraning 团队的方向。

Pretraining / Alignment 团队与 Scaling / Data 团队的对齐

scaling 负责为 pretraining / alignment 做好基础设施,data 做好高质量数据与人类反馈数据。

• 创业公司与 VC 的对齐

AGI 是一个困难的事情,需要长期投入,这需要各个方面的人都有足够的耐心和足够高的视野。烧一趟热钱后催产品化然后占满市场的逻辑在大模型时代应该已经不复存在了。大模型的游戏要求 ta 的玩家们有足够高的视野与格局,模型的演化会让有足够耐心的,踏实做事人们在长期得到丰厚的回报,也会让只看短期刻舟求剑的人们一次又一次被降维打击。

5

结语

在 2017 年,我刚刚入行 NLP 的时候,花了很大的力气做可控生成这件事情。那个时候所谓的 text style transfer 最多就是把句子情感分类改一改,把 good 改成 bad 就算是完成了 transfer。

2018 年我花了大量的时间研究如何让模型从句子结构的角度修改句子的风格,一度误认为风格转换是几乎不可能完成的事情。而今 ChatGPT 做风格转换简直信手拈来。那些曾经看似不可能完成的任务,曾经极其困难的事情,今天大语言模型非常轻松地就能完成。

在 2022 年一整年,我追踪了从 GPT-3 到 GPT-3.5 的全部版本迭代,亲眼看到它一步步地从弱到强不断演化。这个演化速度并没有变慢,反而正在加快。那些原先看来科幻的事情,现在已经成为现实。谁会知道未来会怎样呢?

彼黍离离,彼稷之苗。

行迈靡靡,中心摇摇。

彼黍离离,彼稷之穗。

行迈靡靡,中心如醉。

 ——— 《诗经 · 黍离》

其他人都在看

欢迎Star、试用OneFlow最新版本:GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient. - GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.https://github.com/Oneflow-Inc/oneflow/

Disable checkingPremium suggestions

有关超越ChatGPT:大模型的智能极限的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  3. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  4. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  5. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  6. ruby-on-rails - 如何将验证与模型分开 - 2

    我有一些非常大的模型,我必须将它们迁移到最新版本的Rails。这些模型有相当多的验证(User有大约50个验证)。是否可以将所有这些验证移动到另一个文件中?说app/models/validations/user_validations.rb。如果可以,有人可以提供示例吗? 最佳答案 您可以为此使用关注点:#app/models/validations/user_validations.rbrequire'active_support/concern'moduleUserValidationsextendActiveSupport:

  7. ruby-on-rails - Rails 模型——非持久类成员或属性? - 2

    对于Rails模型,是否可以/建议让一个类的成员不持久保存到数据库中?我想将用户最后选择的类型存储在session变量中。由于我无法从我的模型中设置session变量,我想将值存储在一个“虚拟”类成员中,该成员只是将值传递回Controller。你能有这样的类(class)成员吗? 最佳答案 将非持久属性添加到Rails模型就像任何其他Ruby类一样:classUser扩展解释:在Ruby中,所有实例变量都是私有(private)的,不需要在赋值前定义。attr_accessor创建一个setter和getter方法:classUs

  8. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

    我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

  9. ruby-on-rails - Ruby 中的内存模型 - 2

    ruby如何管理内存。例如:如果我们在执行过程中采用C程序,则以下是内存模型。类似于这个ruby如何处理内存。C:__________________|||stack|||------------------||||------------------|||||Heap|||||__________________|||data|__________________|text|__________________Ruby:? 最佳答案 Ruby中没有“内存”这样的东西。Class#allocate分配一个对象并返回该对象。这就是程序

  10. ruby-on-rails - Rails 3.1 中具有相同形式的多个模型? - 2

    我正在使用Rails3.1并在一个论坛上工作。我有一个名为Topic的模型,每个模型都有许多Post。当用户创建新主题时,他们也应该创建第一个Post。但是,我不确定如何以相同的形式执行此操作。这是我的代码:classTopic:destroyaccepts_nested_attributes_for:postsvalidates_presence_of:titleendclassPost...但这似乎不起作用。有什么想法吗?谢谢! 最佳答案 @Pablo的回答似乎有你需要的一切。但更具体地说...首先改变你View中的这一行对此#

随机推荐