谢清驰
我们真的是读懂论文以后,就可以直接去看这些研究员的分享和视频。如果论文能读懂,或者能够大概读懂,这些研究员的分享就能看懂,我们就可以直接和世界上最聪明的头脑进行交流。
张小珺
所以,发现一个好问题,核心问题很关键。
谢清驰
对,而且你会发现,如果我们回过头来看,这些好问题好像没有那么难。
谢清驰
如果我们反过去看,Big Lesson,它的意义在于说会在有些时刻手工特征是有用的,直到算力再增长一个量级,彻底把手工特征打败。
张小珺
那清驰,先给听众朋友们打个招呼,并且做一个简单的自我介绍。
谢清驰
大家好,我是光年之外的谢清驰。我虽然不是技术出身,但大学本科和研究生读的都是计算机。毕业以后,我就去了豆瓣做产品,中间有9年时间一直在创业,做过O2O,也做过消费。
在2022年GPT出现的时候,我感觉整个技术行业发生了很大的变化。然后我就开始自己摸索和学习这个行业的基础知识。
对我来说,我很关心很多事情的边界。因为对于产品经理来说,产品就是在给定边界里面去求最优解。很多时候,边界的变化会影响产品最优解的变化。我们有些时候能够更好地了解边界,从而推动产品的变革;有些时候,我们甚至能够推动边界的变化,从而推动产品的变革。
所以对我来说,读论文是探索边界的一种方式和方法。从2022年、2023年开始,我就想把论文系统地读一遍,通过了解基本原理,了解这个新世界的一些边界。同时,我也感觉到AI在高速变化,所以希望通过了解基础知识,掌握一些3到5年都不会变的知识。
张小珺
你一共读了多少篇论文?中间遇到过什么障碍吗?
谢清驰
1. 读论文改变学习方式
我读了200多篇、不到300篇论文,自己存下来的论文有100多篇。
确实碰到过一些障碍。我可以简单分享一下。最核心的障碍是,整个论文阅读过程,首先它是一个比较晦涩的理论学术领域。AI领域属于计算机理论科学,所以很多内容比较难。
我在正式开始读论文之前,体系化地把线性代数、概率论、随机过程以及偏微分方程等数学基础,重新用国外材料学了一遍。我大学学过类似的专业课,但很多内容确实已经过去十几年,也都忘了。这个过程其实收获很大。
然后还有一个挑战:论文是英文的。我刚开始直接读英文,读着读着会发现,我本质上不是在学习AI,而是在学英语。很多时候,一个你熟悉的单词,在一篇论文里面有完全不同的含义。
我大概花了一个星期,发现这样不对。我不是来学英语的,我是来学AI的,所以就开始想办法解决英语问题。后来我找到一个工具,叫沉浸式翻译,很多人也用过。现在我看论文,基本上都是先让AI帮我翻译过。随着AI的发展,它翻译论文的能力也越来越强,越来越好用。
所以我碰到的这个门槛,是用AI解决掉的。在整个学习过程中,我大量使用AI来帮我学习AI,这里面也很有意思,待会儿可以和大家分享。
张小珺
你最早为什么会自己开始读论文?你周围有读论文的环境吗?读论文的人多吗?
谢清驰
我周围和我同龄的产品经理里面,读论文的朋友不算多,但是身边很多人会觉得论文是应该读的。
我天生不觉得读论文是产品经理不应该做的事情。因为我也是技术出身,本科和研究生都学计算机,所以对我来说,写代码、读论文都不是很陌生的事情。做一些科研工作,以及了解技术边界,我觉得是产品经理很底层的一项能力。
所以我自己不觉得读论文是不应该做的事情。身边也有一些朋友,光年之外也有几个同事是很系统地读过论文的。
张小珺
在互联网时代,做产品经理需要读论文吗?为什么互联网时代好像不太需要,但是AI时代需要呢?
谢清驰
互联网时代我也读过。我们在豆瓣做产品的时候,当时做的是社区。我做过一个产品叫阿尔法城,是当年一个很前沿的社区探索。
那个时候我们会系统地读城市规划和建筑学论文,通过城市规划以及城市发展的历史脉络,得到一些关于社区治理实践的启发。所以那个时候,我系统性地读过国外关于城市规划的论文。
有一位很有名的大师叫扬·盖尔,是丹麦的城市规划教授。他的论文和著作我基本上都读过。
张小珺
但是互联网时代,没有这种技术变革性的论文需要阅读,对吧?
谢清驰
对,互联网时代这种技术型论文比较少。Google当时有Bigtable、Hadoop这样的论文,有些同事会读,但实际上,互联网特别是移动互联网,本质上已经是一种技术的应用,那个时候技术已经比较成熟了,我觉得和现在不太一样。
现在AI技术还处于早期,还没有那么成熟。所以我们需要通过读论文来了解它的边界,并且跟踪它的演进。
张小珺
今天在你的带领下,我们将开启一段怎么样的旅程?
谢清驰
当时在光年之外内部,我们想给同学们分享一下怎么读论文。但读论文确实是一件比较枯燥的事情。
后来我找到了一个角度,就是把论文的前因后果和历史脉络梳理出来。因为我读论文的时候觉得,最难的不是某一个单点花时间以后读不懂,而是不知道为什么要这么做。
后来我意识到,作者写一篇论文,本质上跟我们做一个产品或者处理一项工作是一样的。他也是为了解决一个问题,所以他会告诉你:我的问题是什么,为什么要解决这个问题,用什么方法解决。
当然,现在时间已经过去很久了。当时的问题是什么,以及那个历史时期为什么会碰到那些问题,都在逐渐淡化。很多人就找不到历史背景的信息了。
所以我把深度学习历史上比较重要的一些节点性论文的历史背景找了出来,还原给大家看:当时的作者和科学家碰到什么挑战,他们想解决什么问题,又是怎么解决的。
这是第一个角度。
另外一个角度是人的角度。我们会发现,这些著名科学家也有自己的学术发展生涯。他们从很年轻的时候开始推动深度学习的发展,后来又能够引领工业界的发展。
这些作者在一篇篇论文里面也会留下自己的轨迹。所以我就把这些作者的信息也串起来。看上去很像《封神演义》这样的视角:我们可以看到这些作者开始做学术,进入工业界,开始影响大家的生活。他们做过什么样的工作,这也是很有意思的一个角度。
同时,还有一个范式更新的角度。本质上,我们并不是从零开始发现世界,所有科研工作都是在原有范式的框架里面往前走的。
一个范式要发展,通常有两种情况:原有范式碰到危机,遇到一些解决不了的问题;或者一个支线范式突然崛起,取得了非常好的效果。
整个深度学习领域本质上也是一种新的计算范式。在这个大的计算范式变化里面,还有很多小的范式更新和变化。我们也会从这个角度跟大家讲:一篇论文在一个范式里是什么样的工作。有些时候,它驱动了范式的变迁;有些时候,它是某个范式里的代表性工作。
大概就是从这3个视角,跟大家分享这些论文。
张小珺
清驰这次也准备了一个非常详尽的PPT,这个PPT会放在哔哩哔哩平台上。好的,下面的时间交给清驰。
谢清驰
在读论文之前,我先跟大家分享一下,如何用AI来学习AI,来应对整个读论文过程中的一些挑战。
第一个推荐的小软件,是一个浏览器插件,叫沉浸式翻译,用AI来解决英文阅读问题。因为Transformer这篇论文原本的初衷就是解决翻译问题,所以现在的翻译问题,大语言模型也能解决得很好了,非常推荐大家使用。
它不但能翻译英文论文和文章,也可以翻译YouTube。大家看视频的时候,也可以翻译字幕。
第二个推荐的工具就是AI本身。不管是ChatGPT、Claude,还是豆包,AI都是你身边最好的老师。你要熟悉它,然后学会提问,它会给你很多惊喜。
关于论文,大部分我们不知道的领域知识,都可以去问AI,AI会给你讲得很清楚。当然,如果你担心它讲得不正确或者有幻觉,可以多试几个模型。这个时候还可以分辨模型和模型之间的差距。
在一些比较难的学术问题下,好的模型和一般模型之间的差距还是比较大的。大家可以自己去试,感受模型之间的差距以及它们迭代的变化。
另外,要充分利用Claude、Artifacts这样的可视化工具。我读论文的时候还没有这些工具,但现在已经有了。大家甚至可以把一些不太理解的原理告诉Claude或者豆包,让它做一个可视化网页来讲解这个原理,效率会非常高。
如果大家用的是Dia这样的AI浏览器,就可以一边看论文,一边划词,然后直接问Dia,效率也很高。这两个工具是我读论文以后才诞生的,但现在都非常好用。
同时,我也推荐一些体系化的学习资料,主要有两种内容:视频和书籍。
先说视频。有几个视频教程非常好,建议大家尽量都看完。
一个是吴恩达的机器学习和AI课程,它们是分开的,机器学习有机器学习的课程,AI有AI的课程。
还有李宏毅教授的《生成式AI时代下的机器学习》。大家可以看2025年的版本。B站上有一个UP主拿到了李宏毅教授的授权,所以可以看到比较完整的视频,目前应该还在连载。台大网站上也可以下载他的PPT。
另外是Andrej Karpathy的YouTube账号,视频质量非常高,非常建议大家看。
B站有李沐老师的论文精读系列,也非常好。我基本上每一个精读系列的视频都看过两三遍。如果大家想精读论文,李沐老师挑选的论文非常合适。
我们的论文选择和李沐老师选择的论文有很大重叠。如果大家对某篇论文感兴趣,但今天这里只是快速带过,想看更详细的论文精读,可以去看李沐老师的系列。
B站上还有一个UP主,其实也是YouTube的UP主,叫3Blue1Brown。他是做科普的,会介绍很多数学、物理和神经网络知识,并且做了非常好的可视化。他的可视化插件后来也开源了,在GitHub上是一个很著名的项目。
我非常建议大家把他关于数学、神经网络以及Transformer的内容都看一遍。B站上有中文翻译,大家也可以看英文YouTube原版,用沉浸式翻译翻译字幕。
B站上还有一个UP主叫王木头学科学。他会讲自己在学习机器学习和AI过程中遇到的问题,以及如何解决、如何思考,也会分享一些学习方法,我觉得分享得很好。
如果大家对Infra、GPU这些基础计算设施感兴趣,B站上有一个UP主叫周敏。他非常高产,会介绍很多GPU、CPU和网络相关的内容。这个UP主是华为昇腾的工程师,技术功底非常深厚,讲得也很好,大家有兴趣可以去看。
这些是视频。视频的好处是入门门槛比较低,对大家比较友好。
然后是书籍。书籍比较成体系,我推荐几本。
第一本叫《一站式LLM底层技术原理入门指南》,其实是一个飞书文档,回头我们可以放在shownotes里。这是一位中国VC从业者写的指南,讲得比较深入浅出,大家可以用作入门材料。
还有一本书叫《动手学深度学习》,可以看PyTorch版本。这本书是开源的,网上可以下载,也有官网。官网是全英文的,大家可以用沉浸式翻译翻译成中文。
李沐本人就是这本书的作者之一,他还有配套的中文讲解视频,非常适合大家观看,也可以顺便运行一些PyTorch模型。
关于数学,如果很多同学没有学过概率论、线性代数,特别是概率论这样的数学课程,可以看一本书叫《深度学习中的数学》。这本书会比较简洁地介绍概率论。
我觉得读论文读到后面,还是需要一些数学功底,否则有些公式推导会让你觉得没有底气。但实际上,那些公式并不复杂,特别是很多概率公式,更多是符号和标记的含义。只要能够看懂这些含义,就足够了。
还有一个小建议:AI领域英文内容的质量其实比中文内容高很多,所以大家可以多花一些时间在英文内容上。英文内容现在已经不难了,用AI帮你翻译就可以。
大部分时候,我觉得现在这个时代已经可以不受语言阻碍了,特别是文字。再过一两年,语音和外语之间的阻碍,可能也不会再是限制。
再补充一下刚才的分享结构。我们有3个视角。
第一个是历史视角,既有编年体,也有纪传体。我们会讲论文的背景,当时行业或领域碰到了什么变化和挑战,作者如何解决这些问题,以及它对后续技术路线产生了什么影响。
第二个是范式变迁的视角。我们并非从零开始发现世界,而是在原有的范式框架里前行。我们会讲原有范式碰到什么问题,新的范式有什么大的变迁和跃进,以及一个支线范式如何走到舞台中央。
第三个是人的视角。这些作者是如何登上舞台的,又在后续发展中扮演了什么样的角色。
2. 深度学习依赖四个支柱
好,我们先简单介绍一下深度神经网络的发展。
深度神经网络的发展,一般随着4个要素的发展而发展。第一个是芯片,芯片是算力的载体。第二个是Infra,大家可以把Infra理解为操作芯片的软件系统,所以有些时候我们会把芯片和Infra合称为算力。
第三个是数据,第四个是模型结构。我们会从这4个方面,分别按照时间顺序展开论文分享。
第一部分是模型的范式变迁,重点讲模型结构的变化。第二部分是Infra和数据的变迁,分享Infra和数据变迁过程中比较重要的论文。第三部分是语言模型的发展,从最早的论文讲到后面的论文,梳理一个时间脉络。最后一部分是多模态模型的发展,和语言模型一样,也会按照时间线进行梳理。
好,我们开始第一个部分:模型范式的变迁。
3. GPU打开深度学习时代
在开始模型范式变迁之前,先给大家讲讲GPU的故事。
从1999年开始,第一颗GPU问世。第一颗GPU是英伟达发明的,GPU也是英伟达的商标。1999年,GeForce 256上市,这是第一颗能够独立处理三维图像几何计算的计算单元。它把三维计算从CPU中彻底脱离出来,形成了现代意义上的GPU。
2年以后的2001年,GeForce 3上市。这个GPU引入了可编程的顶点着色器和像素着色器,也就是我们通常所说的Shader。
大家可能在玩游戏的过程中会看到一个载入页面。那个载入页面的意思就是说,着色器正在载入。这里面的着色器,就是我们现在说的Shader。
可编程Shader允许开发者通过编写着色器,控制整个图形和图像的渲染过程。这个时候你可以理解为,GPU可以被编程了。
于是就有一群人开始研究,如何通过GPU编程利用它的并行计算能力。这就有了我们分享的第一篇论文:《Brook for GPUs: Stream Computing on Graphics Hardware》。
先介绍一下这篇论文的历史背景。
2004年,也就是20多年前,人们发现,如果以FLOPS为衡量单位,GPU由于高度并行的处理结构,计算能力正在快速超过CPU,并且不断拉大差距。
大家可以看右下角的图,那是Brook的作者Ian Buck在2009年GTC大会上的一页分享幻灯片。从2003年年初开始,不管是英伟达还是ATI的GPU,FLOPS都在快速上升。黑色的线是奔腾CPU,CPU算力增长没有那么快。
这就是当时的背景:GPU是算力快速增强的一种硬件。同时,科学家发现,很多科学计算、数据处理任务,包括早期的神经网络,本质上都是数据并行的。这种计算方式,和GPU在图形渲染时处理成千上万像素或顶点的方式非常相似。
也就是说,我们确实可以尝试用编程Shader的方式来做计算。问题是,能不能以及如何利用GPU的计算能力,把计算任务映射到GPU上,让这些并行单元为我们进行计算?
答案是能,但还是太难用了。
给Shader编程虽然提供了编程语言,但那个编程语言非常底层,接近汇编,缺乏高级语言的便利性。它没有很好的数据结构,没有标准函数库,也没有很好的抽象,所以编程非常痛苦,效率很低。
同时,在一个地方写好以后,这段代码还依赖特定硬件。换到新的GPU上,可能就无法运行,可移植性非常差。这就是当时的历史背景。
Ian Buck和他的导师所在的团队做了一件事:给GPU开发了一种高级语言。准确地说,他们把当时用于超级计算机的Brook语言改造了一下,移植到了GPU上。
Buck后来毕业以后加入英伟达,成为CUDA的创始成员之一,至今仍然负责CUDA相关工作。
他的导师是Pat Hanrahan,也非常有意思。他获得过图灵奖,凭借在计算机图形学方面的贡献,于2019年获得图灵奖。他也是Pixar动画工作室的创始员工之一,获得过3次奥斯卡金像奖,同时还是著名商业智能软件Tableau的创始人之一。2019年,Tableau被Salesforce以157亿美元收购。
所以这是非常典型的硅谷精英,横跨产学研三界。
当时Buck还在实验室里做过一件事情:把很多张GPU连接在一起,玩高清游戏。2004年,他们已经可以用连接起来的GPU玩4K分辨率的《Doom》了。
这就是当时人们想用GPU进行计算的历史背景。
这篇论文的核心工作是什么?本质上,它做的就是我们现在CUDA的前身。它把底层图形硬件的复杂细节进行了抽象和虚拟化,开创了GPU计算的一些基本框架。
它把GPU抽象成一个流式处理器,开发者可以使用更高级的Brook语言进行编程。Brook接近C语言,编程效率更高,同时具备跨平台能力。
论文作者还专门提到,用这种语言编写的代码,性能和手写GPU代码是相当的。
它开发了一种新的语言,完成了抽象,引入了我们现在熟悉的数据并行基本框架,包括流、核函数和规约,并设计了配套的编译器和运行时体系。
最终,它将GPU从一个很难编程的计算单元,转变成了一个可以用高级语言编程和驱动的计算单元。这就是后来CUDA诞生的基础。
这是2004年的事情。
4. AlexNet打破旧范式
8年以后,也就是2012年,开始有人用GPU做深度学习。这就是今天要分享的第二篇论文:AlexNet。
这篇论文是深度学习的开端。作者有3个人:Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton。
如果用现在的话来说,Alex是一个GPU高手。他的核心工作就是把GPU搞定。虽然当时已经有Brook和CUDA,但早期CUDA仍然比较难用。要把CUDA写得很好、效率很高,需要专门的人。
当时Hinton和Ilya都不太能搞定,就找了Alex。Alex做得很好,他们当时的模型使用了2张GPU一起进行训练。
Ilya大家很熟悉了,是OpenAI的联合创始人和首席科学家。Hinton是诺贝尔奖获得者,也是深度学习的先驱。
后来,他们3个人发表论文以后创立了一家公司。那家公司后来被Google收购,成为Google Brain的前身。
张小珺
余凯老师之前在节目里讲过他见这3个人的印象。他说对Ilya的印象最差,觉得他夸夸其谈;觉得Alex非常靠谱、比较少言,别人搞不定GPU的时候,他可以搞定。
谢清驰
对,这3个人非常有意思。
我们再说一下当时的历史背景。
2012年以前,李飞飞老师的团队创建并维护了一个很有趣的数据集,叫ImageNet。它提供了一个前所未有的大规模图像数据库,里面有1400多万张标注好的图像,涉及2万多个类别,并且按照WordNet的语义层次组织。
数据集做好以后,他们还举办了竞赛。大家可以用这个数据集进行图像识别比赛。
2010年是第一届比赛,应该有13支队伍参赛。当时NEC的团队,包括余凯老师他们,就是参赛队伍之一,而且是冠军队。他们使用的是传统方法,一种基于特征提取的机器学习方法。
我记得余凯老师上次分享时说过,他参加第一届比赛并拿到第一名以后,后来就没再关注了,因为他觉得已经做到顶了,没什么好关注的。
这就是我们说的范式变迁。在手工特征提取的范式里,他们确实已经做到极致,后来者很难做得更好。
但是到了2011年,第二届比赛大概有7支队伍;到了第三届,只剩6支队伍。这个比赛并没有大家想象得那么火热,而是一届比一届人少,眼看就办不下去了。
2012年发生了很大的变化。我们可以看一下当时Ilya在论文里引用的一段话。
他说,整个机器学习范式被手工特征提取的方法主导,所有人都在这个范式下思考问题。Yann LeCun的论文还曾经被拒过,因为论文提到了神经网络,大家觉得神经网络不靠谱。
当时所有人都认为,视觉系统需要通过对任务本质的详细理解,精心地进行手工设计。换句话说,我们需要加入很多先验知识,模型才能学到东西。
如果我们只向神经网络展示自然图像中的对象实例和对应名称,也就是只提供数据而不提供人的抽象,网络是无法学会这些知识的,永远无法解决图像分类任务。这是当时Ilya在论文里写的原话。
但他还提到,现在我们知道问题出在哪里了:要让深度神经网络发挥作用,需要更多标注数据和更多计算量。
也就是说,整个神经网络的发展过程,就是不断地进行Scale。
AlexNet是那个时代第一篇同时扩展数据、计算量和模型规模的工作,并取得了巨大突破。
它扩展的数据,得益于李飞飞团队创建的ImageNet。它需要的计算量,来自Alex这样的人把GPU搞定,也依赖GPU这些年的发展。
它的模型规模也很大。它训练了当时最大的卷积神经网络,有6250万个参数和65万个神经元,在那个时代已经是很大的神经网络了。
但在我们现在看来,它还不到0.1B,是0.06B的神经网络。现在看起来非常小,但它当时确实因为做得足够大,取得了最好的结果。
它最核心的贡献,就是同时Scale了数据、计算量和模型规模,带来了范式变迁的结果。如果我没记错,它比之前第一名、第二名的效果好十几个百分点,是非常明显的突破。
因为它的优势太多,吸引了整个行业的关注,开启了深度学习时代。
Google关注到以后,余凯老师还去参与了他们公司的拍卖。余凯老师还给《深度学习革命》写过序。
张小珺
对,那本书非常建议大家看,可以了解整个深度学习发展的历史脉络,里面也讲了Google收购这家公司的故事。
谢清驰
对,确实很神奇。余凯老师是其中的历史参与者。
2012年,深度学习的突破实际上是从视觉开始的。
5. 序列模型开始理解语言
然后我们来到2014年。2014年有两篇重要论文:一篇是《Sequence to Sequence Learning with Neural Networks》,另一篇是Bahdanau等人的注意力机制论文。
这两篇论文都是关于过去所说的NLP,也就是自然语言处理,核心要解决的是翻译问题。
大家会发现,整个深度学习领域在那个时期其实很分散。图像有图像领域,视频有视频领域,语言也有很多子领域。大家各自做研究、各自开会,彼此往来很少。
随着Transformer诞生和后续发展,整个神经网络领域乃至AI都被统一起来了。我们现在会觉得它们都是一个领域,但当时其实相差很大。
我们现在讲的是机器翻译领域的两篇论文。
在机器翻译领域,当时主流范式是一种基于统计的方法,叫SMT。它需要复杂的特征工程和多个子系统协同工作,里面有很多人工操作。
这其实很像ImageNet当时的工作,也有很多特征工程。
NLP领域的作者们开始想:图像领域已经可以用深度神经网络和大模型解决问题,不需要复杂的特征工程,那么语言领域是不是也可以?
于是他们开始尝试。
《Sequence to Sequence》的作者有Ilya、Oriol Vinyals和Quoc Le。Ilya就是AlexNet的作者,也是OpenAI创始人之一。
这篇论文后来在2024年被评为Test of Time论文。Ilya还做过一次十周年回顾,那个视频很有名,叫“预训练时代的终结”。
论文的二作是Oriol Vinyals,他有欧洲学术背景,现在是Gemini预训练负责人。Quoc Le是Gemini后训练负责人,也是Google Brain的创始成员之一。
我们说一下,他们当时为什么要做这件事情。
《Sequence to Sequence》和Bahdanau的注意力论文,解决的问题都是对序列进行建模。
翻译的本质是把一串中文转换成一串英文,也就是把一个序列转换成另一个序列。我们需要对中文序列进行建模,学习序列内部的规律和知识,才能把它转成英文序列。
过去的深度神经网络由于网络结构限制,只能输出固定长度的向量。比如输入5个字,就必须输出5个词。
但中文的5个字翻译成英文,大概率不是5个词。所以它无法解决翻译问题。
我们需要的是一种输入序列长度可变、输出序列长度也可变的结构,这就是序列到序列问题。
很多NLP问题都是序列到序列的问题,包括翻译、语音识别和问答。
当时的另一个问题,是我们现在熟悉的Encoder-Decoder结构。Encoder会把原序列编码成一个固定长度的向量,也就是隐藏状态。
这个向量的空间是有限的。随着输入序列越来越长,隐藏向量的空间就不足以存储所有信息,会出现压缩和信息丢失。
如果我把一整段话放进去,隐藏向量可能无法存储所有信息。再用这个隐藏向量进行Decoder,翻译出来的英文也会损失信息。
序列越来越长以后,模型可能不认识很早以前的词,或者无法建立很早以前的词和后面指代之间的关系。
比如我先说“小张”,中间说一大段话,后面再说“他”。当序列很长时,模型就不太能建模“他”和“小张”之间的关系。
这些问题在这两篇论文里都得到了解决,只是方法不太一样。两篇论文的发表时间非常接近,也互相引用,所以可以把它们看成同一个时代的类似工作。
另一篇论文讲的是Attention,也就是注意力机制。
Transformer论文的标题叫《Attention Is All You Need》。我当时读这篇论文时就想,Attention究竟是从什么时候开始的?后来查资料,找到了注意力机制的源头,就是Bahdanau等人的这篇论文。
这是第一次提出注意力机制。后来这个机制也以作者Bahdanau的姓氏命名。他的导师是Yoshua Bengio,也是2018年的图灵奖得主。
这两篇论文有几个核心贡献。
首先,它们使用纯粹的机器学习方法,不再需要领域相关知识,只需要通用方法,就能够超越之前基于统计的翻译系统。
原来的主流范式是基于统计、需要手工特征的方法;现在变成了纯粹的深度神经网络,只要学习足够多的数据、把模型做得足够大,就能超越过去的方法。
这相当于一个原本处于支线的范式,超越了主流范式的能力,推动了范式更新。两篇论文的效果都超过了当时基于统计的方法。
第二个重要贡献,是复兴了Encoder-Decoder结构,并借助长短期记忆网络解决了序列到序列的建模问题。
我先找到一个中间载体,也就是固定长度的隐藏状态,把输入Encode进去,再Decode出来。这样,输入和输出序列的长度关系就可以解耦。
Encoder-Decoder结构应该是在20世纪70年代到80年代被发明的,后来被重新复兴。现在不管是Diffusion还是Transformer,我们都很熟悉这个结构。
第三个核心贡献,是引入注意力机制,解决隐藏状态的性能瓶颈。
Encoder-Decoder结构中间有一个状态,由于空间有限,特别是输入序列较长时,会带来性能问题。注意力机制解决了这个问题,也为Transformer诞生埋下了伏笔。
它的做法可以简单理解为:先把输入句子编码成一系列向量,为每个词生成一个表示;解码时,计算每个词和当前要生成的目标词之间的注意力权重,再用这个权重计算上下文向量。
我们可以简单理解为,有一个向量能够存储词和词之间的关系。建模的本质,就是寻找序列中词和词之间的关系,让神经网络学到这些关系。
注意力就是提供了这样一种机制。神经网络如何学习这些关系,是在整个降低Loss的过程中自己学的,我们不需要关心具体过程。
核心是,我们给了网络一个空间,让它能够对序列之间的关系进行建模。得到的关系就是上下文向量,也就是注意力。它和原来的隐藏状态一起,用于Decoder,解码出下一个目标词。
这样,解码结果就能包含更多序列之间的关系,更好地解决翻译中的长序列问题。
统计机器翻译解决短语和短句还不错,但碰到长句时,经常搞不清楚上下文,丢失信息。这是它们解决的核心问题。
从深度学习开始,最早是图像领域,后来进入语言领域,引入了序列建模。我们现在所有的Transformer,本质上都是对序列进行建模的模型。
所以后来有人把图像领域的建模方法,也用到序列建模上。我们后面会讲一篇用Transformer处理图像的论文,本质上就是把图像强行变成序列,再用Transformer对序列进行建模和输出。
张小珺
上一期论文里,Ilya和Alex都是Geoffrey Hinton的学生。这一篇里,Ilya为什么会和现在Gemini预训练和后训练的两位负责人合作?他们之间有什么师兄弟关系吗?
谢清驰
2012年,Ilya、Alex和Hinton因为AlexNet,后来Google把他们的公司收购了,于是他们都去了Google上班,成为Google Brain的员工。
Quoc Le也是Google Brain的员工。Oriol当时可能还在学校,也可能已经在DeepMind。至少Quoc Le和Ilya是Google Brain时期的同事。
到2015年,2012年和2014年的工作已经奠定了深度神经网络的基础。过去的机器学习模型,到这个时间点,大部分已经变成深度神经网络模型,都是比较大、比较深的神经网络,手工特征越来越少。
新的范式确立以后,也会出现新的问题。模型变得越来越大,推理成本和计算成本很高,部署不容易,而且推理有延迟。
工业界希望有一种计算成本较低、相对容易部署、推理速度较快的模型,能够服务更多用户。
一个范式确立以后,需要发展辅助技术,帮助这个范式解决它带来的新问题。蒸馏就是在模型变大的过程中发展出来的辅助技术。
我们后面也会分享几篇论文。很多辅助技术解决了模型变大过程中的问题,才有了今天这样大的模型。那时候,0.1B可能就是一个很大的模型了。
这篇蒸馏论文的作者有Hinton、Oriol Vinyals和Jeff Dean。Hinton作为一作的论文,后期其实比较少见。
Jeff Dean是Google Fellow,也是美国国家工程院院士。他在Google是一个很能代表工程师的人物。Google内部流传着很多关于Jeff Dean的段子,他的工程能力极强。
Google搜索的很多核心技术,是他带领团队奠基的。他也是Google Brain的创始人之一,设计了MapReduce这样的云计算和大数据框架,TensorFlow也是由他领导开发的。
这3个人合作完成了这篇论文。我们可以看到,这些作者其实很早就认识,有过很多合作,后来又去了不同的公司。
蒸馏的核心贡献,是提出了一种方法,把知识或者规律从一个复杂的大模型转移到一个更小的模型上,同时不损失太多性能。
这样既能得到大模型更好的表现,也能得到小模型容易计算、容易部署、推理速度快的优势。
它的核心方法是设计两个模型:学生模型,也就是小模型;教师模型,也就是大模型。
可以理解为学生向老师提问,老师给学生答案。硬标签是最终答案,但这篇论文定义的蒸馏,会把大模型输出的整个概率分布都交给小模型。
比如我们和GPT聊天时,GPT会把一堆候选结果中概率最高的那个输出给我们,但还有很多概率较小的结果不会直接输出。
教师模型教学生模型时,会把这些软标签,也就是概率分布中那些不是最大概率的结果,也交给小模型,让小模型去模拟教师模型,拟合出一个模型。
这样可以让学生模型的泛化能力更强。
2015年,知识蒸馏技术被开创,确立了教师和学生的学习范式。这是现在用小模型学习大模型能力的一种常见方法。
现在如果有团队说GPT被蒸馏了,通常是拿GPT的很多模型输出,给自己的学生模型学习。但这不是完整蒸馏,因为GPT不会向外界输出模型的概率分布。
所以即使是不完整的蒸馏,也可能有效果。这是神经网络很神奇的地方。
这有点像大家学过的傅里叶变换。傅里叶变换的核心思想,是用很多规则的函数,去模拟一个很复杂的函数。不断拟合,越来越像;如果无限拟合下去,就会一模一样。
被拟合的东西很复杂,但用来拟合的东西很简单,所以很好处理。这里面的数学思想其实是类似的。
这是我后来用国外材料学数学时的一个很大收获。上学时学傅里叶变换,老师通常不会讲它究竟是什么,只会说傅里叶变换是傅里叶在处理热传导方程时发明的一种数学方法。
但如果去看3Blue1Brown的视频,他会讲傅里叶当时碰到了什么样的热传导方程,如何解决,以及背后的数学思想。我觉得这非常有意义,也非常推荐大家学习。
好,我们来到下一篇。
2015年有一个非常重要的工作,叫ResNet。我给它起了一个名字,叫“比深更深”。
当时我们说深度学习,特点就是网络层数很深、模型规模很大。但在2015年,人们发现,模型做到一定程度,比如超过100层以后,不但不会变好,反而会变差,这叫模型退化。
所以我们现在熟悉的Scale,在当时其实是不奏效的。人们就在想,怎么才能让它奏效。
ResNet的工作,也是我们在让模型变大的过程中开发出的辅助技术。一方面希望模型变大以后得到更多收益,另一方面希望避开模型变大带来的问题。
蒸馏是通过教师模型解决一部分问题,而ResNet的解决办法是引入残差。引入残差以后,网络加深至少不会带来性能下降,彻底解决了模型退化问题。
ResNet的几位作者都是中国人:何恺明老师现在是MIT教授;二作是张祥宇,他之前上过我们的节目,是Tenyks的联合创始人和首席科学家;三作是陈少青,少青是未来自动驾驶的负责人;四作是孙剑,去世之前是旷视首席科学家。
他们当时都在微软亚洲研究院。这篇论文的引用量接近30万,比Transformer的引用量还高。现在几乎所有网络都还是残差网络,包括Diffusion和Transformer。
我们可以看论文里的图。上面是X,可以理解为输入;下面写着ReLU的是输出;中间是一个神经网络层,旁边有一条连接,把输入和输出桥接起来。
如果没有这条桥接,就是从输入到输出的网络,模型需要学习的是一个复杂的函数。复杂网络可能不容易学习。
引入残差以后,学习的东西变成了:在X上做一些增加或减少,让它变成Y。后者的学习难度比直接学习如何把X变成Y更低。
这就是残差网络的核心思想。引入短接以后,也解决了梯度消失和梯度爆炸问题。
它本质上改变了学习目标:原来学习的是F(X),现在学习的是F(X)+X。今天看来这是很小的网络变化,但当时对模型训练效果影响极大。
它缓解了梯度消失和梯度爆炸,基本消除了退化问题,使我们可以训练非常深的网络,几百层甚至几千层。在此之前,神经网络通常只能做到几十层。
所以直到今天,我们熟悉的网络仍然是残差网络。
接下来,我们继续把模型网络做得越来越大。
6. Transformer赢得硬件彩票
2017年,最重要的工作当然是Transformer,它拉开了一个时代的序幕。
先介绍Transformer的背景。
每篇论文都在解决一些问题。残差网络主要解决的是CNN网络的问题;Transformer要解决的是RNN的问题,或者说要解决序列建模的问题。
过去在图像领域更多使用卷积网络,因为图像有像素,比较适合卷积。在NLP领域,更多使用RNN。
《Sequence to Sequence》和注意力机制论文开创的范式,已经成为序列建模领域的主导范式。它典型地使用RNN,有Encoder和Decoder,还有注意力机制。
但RNN有一个问题:相比CNN,它不容易做并行计算。RNN天生具有时序性,后面的结果必须等待前面的输出,是一种串行结构。
有一篇论文叫《The Hardware Lottery》,我没有选进来,但非常值得大家读。它大意是,总会有一些算法特别适合当时主流的硬件,也就是GPU。适合主流硬件的算法,会被硬件天然筛选出来,成为主流算法。
RNN就不是很适合CPU、GPU处理的算法。CNN虽然容易被GPU处理,但有一个缺点,就是很难捕捉长距离依赖。它需要不断进行卷积,经过很多层以后才能获得远距离依赖,所以很多信息会丢失。
当时作者们就想:既然注意力机制这么好用,能不能只要注意力机制,不要其他东西?连RNN也不要,只保留Encoder-Decoder结构和注意力机制。
后来整个模型演进到今天,Encoder也不要了,只要注意力和Decoder。现在的主流模型也都是Decoder-only。
Transformer有8位作者,当时都在Google,后来也都离开了Google。其中最有名的应该是Noam Shazeer,他后来创立了Character.AI。
Noam是一个工程能力和算法能力都很强的人,所以能够做大量工程和算法的联合创新。作者团队把他拉进来,帮助解决很多问题。
Noam说过一句话:很多人会问他,为什么这个模型结构有用,为什么是这样而不是那样。
我刚开始读论文时也很好奇。论文会突然给你一个64×64的隐空间,却不解释为什么是64×64。
后来我专门问过几个研究员,发现大家其实确实不知道为什么,很多结构都是试出来的。
Noam有一句话大概消解了我的疑问:我们不提供任何关于模型为什么有效的解释。如果它有效,我们就把它归为“神的仁慈”。
张小珺
神的仁慈。
谢清驰
对,神的仁慈。
也就是说,在这个阶段,我们对神经网络的理解仍然很浅。我们不知道模型为什么是这个结构,也无法解释为什么它这样就最有效,但我们已经能够应用它了。
模型在这个阶段就是黑盒,具有很强的黑盒属性。
这有点像天文学里面的一段时期:托勒密观察星星,记录它们的轨迹,但不知道背后的数学原理。即使如此,也能解释一些自然现象,解决生活中的问题。
于是就有了这篇论文,标题非常简单:《Attention Is All You Need》。我们只要注意力机制会怎么样?
注意力的核心是对序列关系进行建模。如果只要注意力机制,就可以保留序列中每个词的关系。
但序列是有顺序的东西。如果只有注意力机制,其实会丢失顺序。比如“我打你”和“你打我”是完全不同的意思,但如果丢掉顺序,它们就一样了。
所以需要引入位置信息,让模型有能力感知序列,这就是位置编码。位置编码后来有一个改进,叫旋转位置编码,是苏剑林做的改进,也被大量使用。
我们简单解释一下Transformer。它的核心是提高模型捕捉规律的能力。
论文原文说,模型关联来自两个任意输入或输出位置的信号所需要操作的数量,被减少到固定数量。
举个简单的例子:“一只猫趴在垫子上”,后面又说“它很可爱”。翻译时,我们需要知道“它”究竟指猫还是垫子。
本质上,模型需要建模“它”和猫、垫子之间的关系。如果直接让它和猫、垫子做计算,计算结果就可以告诉我们它们之间的关系。
我们现在把这种计算叫作点积。点积越大,可能代表关系越强。这是一种解释,本质上是给了“它”、猫和垫子彼此进行点积计算的机会。
注意力机制的好处是,它可以直接和前面上下文窗口中的词进行计算,不需要经过很多层。它就像一个窗口,窗口内的词可以直接感知彼此,计算相关关系。
卷积需要经过很多层才能捕捉长距离关系,而注意力提供了一种直接建模序列关系的机制。
我们输出的是Token,每个输出Token都有机会获得输入中所有上下文的信息。
还有一个概念叫自注意力。自注意力就是输入的句子内部,对自身的相关关系进行建模。刚才猫和垫子的关系,就是句子内部的关系。
简单来说,模型会把原始Embedding进行线性映射,得到Q、K、V。用Q和K计算相关关系,再进行缩放、Softmax,得到注意力权重,最后和V进行加权求和,得到上下文向量。
多头注意力会把多个头的结果拼接成原来的Embedding维度,再用它进行Decoder,得到最终结果。
因为注意力可以直接计算,所以Transformer非常适合GPU并行。比如“它”和猫做乘法,“它”和垫子做乘法,可以分开计算,彼此不依赖,可以在不同GPU单元里同时进行。
所以它抽中了硬件彩票,特别适合GPU。
当然,它还需要绝对位置编码和Mask。完成这些以后,它就是非常适合现代计算硬件的算法。
张小珺
算法和硬件匹配。
谢清驰
对。它的注意力机制让它有很强的建模能力,又和GPU很匹配,适合在计算上Scale。
它建模能力强,可以在数据上Scale;适合GPU,可以在计算上Scale。这为后面“大力出奇迹”埋下了伏笔。
张小珺
算力、数据、算法。
谢清驰
对,算力、数据和模型。
从Transformer开始到现在,主流模型结构的变化其实非常小,几乎没有发生太大变化。
7. 模型扩展能力边界
2017年,回过头来看,有3个非常重要的工作:Transformer、AlphaGo Zero和MoE。
先看AlphaGo Zero为什么重要。
AlphaGo Zero的标题很有意思,叫《Mastering the Game of Go without Human Knowledge》,也就是“不借助人类知识掌握围棋”。
当时的AlphaGo已经击败了李世石,但仍然有局限,它依赖人类知识。
第一,它需要从人类专家棋谱中学习,模仿人类下法。第二,神经网络输入除了棋子位置,还包含一些人类设计的特征,比如气、眼。
所以它不是纯粹的强化学习,更像SFT。
最近Richard Sutton有一个视频,他也讲到,现在的语言模型其实不是纯强化学习,因为语言模型仍然是在语言语料库中学习,有点像AlphaGo从人类专家棋谱中学习。
对人的依赖有两个问题。
第一,如果模仿人类,就意味着AI的上限是人的上限。AI不太可能超越人类,会有认知瓶颈。
第二,很多我们想解决的问题,如果要泛化到AGI,可能是新问题。它们不存在现成数据,甚至是人类也不知道的问题。
如果不解决这些问题,AI就无法探索世界,也无法开拓知识边界。
所以AlphaGo Zero的工作是,让模型学习围棋知识,同时不依赖人类。
作者中有一位叫Karen Simonyan,后来是Inflection的联合创始人之一,Inflection后来并入微软;Koray Kavukcuoglu也是作者之一,后面讲多模态时还会提到他。
深度学习有两个大本营:一个是以牛津、剑桥为代表、后来以DeepMind为代表的欧洲学术圈;另一个是硅谷。Ilya、Hinton他们组建Google Brain以后,硅谷也形成了一个偏工业界的圈子。
这两个圈子后来合并到一起,形成了Gemini团队。两边的人理念不完全一样。Google硅谷一侧可能更偏Infra和工程,英国一侧更偏算法和模型结构。
两边互相之间有些不服气,这也体现在Google整合Gemini的第一年并不是很顺利,模型表现也没有那么好。但现在他们已经做得很好了。
AlphaGo Zero有两个核心贡献。
第一个是强化学习。它完全使用强化学习训练,不但效果突破,训练效率也大幅提升。
原论文说,相比击败李世石的AlphaGo Lee,它用了更少的卡,训练36小时以后就取得了超越。
第二个影响更深远:它启发了OpenAI开发Thinking模式,也就是在Test Time做Scaling。
AlphaGo Zero每走一步棋,都会思考,并执行1600次MCTS,也就是蒙特卡洛树搜索。
事实上,如果不做Test Time Scaling,没有哪个围棋模型能够击败人类。这是一个很有意思的特点:如果模型不进行Test Time Computing,能力可能没有我们想象得那么强。
OpenAI发布o1以后有两个视频,其中一个作者之前用强化学习打扑克。他发现,人类无论打德州扑克还是下围棋,思考以后都会变强,于是也举了AlphaGo Zero的例子,启发他们做o1。
AlphaGo Zero的核心是强化学习。它没有给模型任何先验知识,模型只知道围棋的格子和规则,不知道棋谱,也不知道什么叫气、什么叫眼。
张小珺
是不是说明,在这种领域就不需要预训练,主要做强化学习?
谢清驰
我理解,规则比较明确、目标可以清晰表示的领域,就可以不需要预训练,主要做强化学习。
玩游戏、下棋都是规则清晰、目标清晰的领域,可以从零开始,不需要经验知识。
2017年还有第三篇重要论文,是现代MoE的开端。
MoE其实是Hinton在20世纪90年代提出来的。你会发现现在很多结构和概念,早在20世纪70年代、80年代、90年代就被提出了,但受算力限制没有奏效。
2017年,大家又重新发明了MoE。
作者之一是Noam Shazeer。他既是算法能力很强的人,也是工程能力很强的人。Character.AI流传着很多Noam亲自手写模型、把推理成本降得很低的故事。
Character.AI的模型基本上都是Noam自己写的,模型代码可能只有一个很大的Python文件,里面既包含Infra,也包含算法结构,所以这是一个非常强的人。
MoE的背景和模型变大趋势有关。
大家意识到,模型越大,特别是ResNet解决深度问题以后,更大参数量的模型一定能够从更大规模的数据中提取更多规律。
但是模型变大以后,训练成本会增加。训练成本是一次性投入,可以摊销;但推理成本也会上升,而且推理成本是线性的,每用一次就要多花钱。
所以大家希望,有没有可能训练一个很大的模型,让它学到足够多的规律,但推理时比较便宜。
这个想法很直接:能不能只激活一部分参数?
人脑是分区的,每个区域负责不同的事情。我们每次思考并不会激活所有区域。用模型的视角来看,人脑是稀疏且专业化的。
如果训练一个超大参数量、但每次只激活小部分区域的模型,就能够同时获得很好的效果和较低的成本。
这就是MoE工作的初衷。
MoE需要解决大量训练中的技术挑战,说白了,这种模型不太好训练,到现在也不容易。能够训练MoE的团队,通常都需要工程和Infra能力很强。
国内代表就是DeepSeek。DeepSeek是一个工程能力非常强的团队,有些算法改进也是工程团队提出的。
他们能够在CUDA下面一层工作。CUDA是一种抽象,抽象带来便利,也会降低效率。使用CUDA不能把GPU所有性能都榨出来,所以CUDA本质上是牺牲部分GPU性能换取便利的软件。
2010年前后,黄仁勋为了推动CUDA,曾经让显卡性能没有明显提升,但成本几乎翻了一倍。那段时间英伟达股价跌得很厉害,甚至差一点被恶意并购。
CUDA早期没有什么用,因为GPU主要用来玩游戏。加了CUDA以后,游戏性能没提升,成本却上升了。
黄仁勋坚持了大概10年,才看到科学计算领域巨大的产出和效果。
张小珺
那它真正翻盘是什么时候?
谢清驰
明显的变化就是2012年的AlexNet。
如果看2009年的GTC大会分享,当时英伟达对CUDA的设想里基本没有神经网络。他们认为GPU可以做图像边缘检测、识别、矩阵运算,并没有想到现代意义上的AI。
2012年以后,AlexNet让大家知道GPU能做这么重要的事情。
这并不是说黄仁勋当时有远见,看到了未来。那时候ATI也做了类似CUDA的东西,所有GPU厂商都做了类似的方案,只是英伟达坚持了下来,其他公司慢慢退出了市场。
如果看Brook那篇论文,赞助商里还有ATI。
张小珺
所以那时候ATI也参与了,只是没有坚持住。
谢清驰
对。
我们再看MoE。论文里说,它获得了超过1000倍的模型容量提升,同时只在计算效率上略有损失。
换句话说,计算成本可能没有明显变化,但模型容量增强了1000倍;或者说,在同样计算性能下,成本只有原来的千分之一。
这是MoE带来的非常显著的成本变化,也是DeepSeek选择MoE路线的原因。
它的技术路线是成本优先。何俊贤老师讲DeepSeek论文时提到过,DeepSeek会优先优化成本,因为成本在未来AI被人类使用的过程中会非常重要。
所以它选择MoE。
OpenAI很早可能就转向了MoE,但中间似乎没有训练成功。Llama转MoE也不是很顺利,MiniMax当时选择MoE以后,应该是训练了3次才做成。MoE确实是很有挑战的模型结构。
到了2022年,有一篇非常重要的论文叫Chain-of-Thought,大家都知道。
它有意思的地方在于,当时大家已经开始拼命扩大模型规模。虽然模型变大带来了很多好结果,但在算术、常识和符号推理领域,收益没有那么明显。
不是所有领域都会随着模型变大而得到同样收益。
SFT可以解决推理问题,但构建推理数据集的成本很高,需要很多人,甚至博士来构建。传统微调方法在推理任务上的效果又不好。
所以大家开始想,怎么解决这些问题。
我们现在回过头来看,很多能力其实已经蕴含在模型里,只是当时没有把它激发出来。Chain-of-Thought把模型能力激发出来,让大家意识到模型原来有这么多能力。
某种意义上,它是后训练的开端。
此前大家都在猛做Pre-training,以为Pre-training做得足够好,模型能力就会变强。后来发现,模型可能在Pre-training过程中已经变得很强,只是没有被很好地使用,需要通过Post-training把它用好。
这篇论文非常建议大家读,因为它一点都不晦涩,难度几乎相当于一篇博客文章。
作者是Jason Wei。他是OpenAI里面少数只有本科学历的研究员之一。OpenAI里还有一些研究员可能只有高中学历。
Jason Wei毕业于达特茅斯,是华人,也是一位知名网红,很善于表达。他的博客和公开视频都不错,Twitter也很值得关注。
他的导师或者Sponsor叫Danny Zhou,现在是Gemini推理方向的负责人。他之前在斯坦福有过一次分享,非常值得看,专门讲大模型为什么有推理能力。
斯坦福CS25课程也非常值得看,每年都会请很多优秀研究员做分享。
读论文的一个好处是,真正读懂论文以后,就可以直接看这些研究员的分享和视频。如果论文能读懂,或者大概读懂,就可以直接和世界上最聪明的头脑交流。
Chain-of-Thought的核心贡献是发现,只要向模型展示推导的中间步骤,告诉模型可以一步一步思考,就可以大幅提高模型在推理任务上的表现。
GPT-3.5时代有一些很神奇的Prompt,每句话都加一句“请一步一步思考”,模型效果就会提高。很多Prompt里现在还可以看到这种痕迹。
这篇论文展示了,原来模型有这么多能力,只是没有被充分利用。所以它推动整个行业的重心从预训练转向后训练,后来也影响了Thinking模型的诞生。
Jason Wei后来从Google去了OpenAI。他对Thinking模型的诞生有很大影响。
同时,Chain-of-Thought让大家意识到,语言模型的输入会影响输出。于是大家越来越关注输入的构建,从Prompt Engineering到Context Engineering,越来越关注上下文工程,模型输入也越来越工程化。
我看过一位和Jason Wei合作很紧密的韩国研究员的视频。他说有两种研究员:一种擅长解决问题,能够解决很多重要问题;另一种擅长找到这个时代最重要的问题。
我觉得Jason Wei属于第二种研究员。这篇论文的学术难度很低,像一篇博客,但提出了一个非常重要的问题。
如果看他的Google Scholar引用量,会发现o1、R1出现以后,大家开始关注后训练,于是疯狂引用他的论文。引用量增长非常快,去年比前年快很多,今年到七八月份,可能已经相当于去年全年;去年全年又是前年的5到6倍。
他定义了一个时代最重要的问题,后面的人都会围绕这个问题继续解决。
张小珺
但你回过头来看,这些好问题好像没有那么难发现。
谢清驰
对。强化学习是一种学习范式,和SFT非常不一样。监督学习本质上更接近连接主义,强化学习更接近行为主义,是机器学习里面两种很不一样的信仰。
Chain-of-Thought本质上是一种监督学习,主要影响后训练。
AlphaGo Zero则是强化学习从零开始学习的先驱,同时也做了Test Time Scaling,也就是Thinking。
所以AlphaGo Zero既启发了强化学习,也启发了Thinking。可以理解为,AlphaGo Zero启发了DeepSeek-R1-Zero,也启发了o1,因为o1没有Zero版本,而R1有Zero版本。
它们都在尝试:如果不做SFT,会怎么样?
2021年还有一篇论文叫LoRA,这是我们每天都在用的东西。
LoRA是大家非常熟悉的概念,但很少有人知道这篇论文究竟是为了解决什么问题。
这也是在把模型做大的过程中,用来解决模型变大带来负面收益的一项工作。
大模型的缺点,一是使用成本很高,二是训练成本也很高。如果想对大模型做SFT,进行微调来适应特定任务,会发现微调虽然比训练模型容易,但对很多人来说仍然不容易。
而且每个任务都存一个微调副本非常占空间。模型越来越大,存储空间也越来越大;如果有很多微调副本,就更占地方。
于是大家想,能不能不动模型本身,也能完成微调,只给它增加一些东西。
比如增加一个Adapter层。但Adapter会引入延迟,因为推理时要先经过大模型,再经过Adapter。
如果直接优化输入层,难度又很高。
LoRA想到的方法是利用模型的低秩特征,在旁边增加一个同步的、平行的小模型。这个小模型在计算上可以和原模型融合,不会带来新的延迟,而且很小、很好训练。
这就是LoRA诞生的初衷。
LoRA的作者是Edward Hu,也是华人,生活在西雅图,曾经是Yoshua Bengio的学生,也在微软研究院工作过,后来去了OpenAI。
他有一个YouTube账号,录过视频讲解为什么做LoRA以及LoRA的原理。一般来说,作者自己讲论文讲得最好,大家有机会可以看。
LoRA的核心贡献,是用一个简洁高效的方法,提供接近全量微调的性能,所以迅速成为微调领域最主要的方法。
有意思的是,它最初是为Transformer设计的,但真正落地使用更多是在Diffusion Model里面。现在图像领域想训练一种风格,基本上都会训练一个LoRA。
现在很多人希望模型有记忆能力。一种方法是,模型本身不直接记忆,但定期拿人类信息或数据训练一个LoRA。LoRA本身包含记忆,叠加到模型以后,就让模型拥有记忆。
LoRA相当于在模型旁边增加两个特殊矩阵,存储微调信息。推理时,这两个矩阵可以和原来的矩阵合并,进行部署和训练。
它的逻辑有点像ResNet。ResNet只学习残差,也就是增量部分。LoRA也是只学习模型需要适应新场景的增量信息。
就像人学习新场景,大脑结构不会发生变化,只需要学习一些新信息。LoRA把这些增量信息挂在外面,像一个外挂,只训练这部分,所以更容易训练。
2022年10月,还有一篇论文叫ReAct,作者是姚顺雨,之前也是我们节目的嘉宾。
姚顺雨是清华姚班毕业的。我当时看他的履历和采访,觉得很有意思。一般我们会觉得研究员严肃、古板,但他居然是说唱联合社的创始人,非常有意思。
这篇论文发表在GPT-3.5和ChatGPT之前。
它的历史背景是,Russell和Norvig在1995年提出了非常经典的Agent定义:Agent是能够通过传感器感知环境,并执行动作、对环境产生影响的实体。
Agent被定义时,并没有说一定由大语言模型驱动。只是语言模型发展以后,大家开始用语言模型驱动Agent。
Chain-of-Thought论文发表以后,大家发现大模型能够做推理,如果引导得恰当,它有很好的推理能力。
但模型和现实世界没有交互,会产生幻觉,也无法影响现实世界。
ReAct做的事情是,让模型不但能够推理,同时还能观察现实世界。
原来大模型要么只Reason,只推理;要么只Observe或只Act,行动以后观察。ReAct把两个行为结合起来:一边思考,思考以后行动,行动之后观察,观察之后再思考。
现在看这是非常符合直觉的做法,但当时很有开创性。
在ChatGPT出现之前,Chain-of-Thought、ReAct这些影响上下文工程和Agent推理过程的关键概念都已经出现了。它们是在AI火起来之前就被提出的。
那时候语言模型还是比较偏门的科学领域,用语言模型做Agent就更偏门。
姚顺雨的导师也是GPT-1的作者之一。这些作者的特点是,他们定义了一个时代的重要问题,后面几年整个世界才开始关注这些问题。
他们的论文引用量从2024年开始暴涨,因为大家开始关注OpenAI和Thinking,才开始引用他们的工作。
所以,发现一个好问题,核心问题很关键。
而且回过头来看,这些好问题好像没有那么难。比如PPO这样的强化学习论文,全是公式和推理,确实很复杂;但从影响力来看,Chain-of-Thought、ReAct这些工作,影响力并不比那些复杂工作差多少。
张小珺
我听到这里还挺好奇的。你也研究了这些作者的背景,你觉得他们学术成果比较丰盛的时期通常是什么时候?还是不一而足?
谢清驰
我觉得不一而足,但多数时候还是年轻的时候,年轻作者比较多,因为他们没有历史包袱。
比如姚顺雨,读博时就开始研究,那个时候已经有GPT了,他可以直接用GPT做研究,没有浪费研究生涯。
当然也有一些老师傅,比如Noam Shazeer,他经历过很多时代,所以工程能力和算法能力都很强。Noam应该是90年代美国奥赛金牌得主,分数可能还霸榜了十几年,是很传奇的人物。
多数情况下还是年轻研究员。
我觉得这是中国和美国不一样的地方。美国确实有一些工程师和行业从业者,能够通过不断学习一直跟住行业前沿。
这些研究员还有一个特点:走上管理岗位以后,仍然会花很多时间写代码。
张小珺
我去年在硅谷时也发现,很多工程师仍然很Hands-on,还在写代码,所以还能跟上技术发展。
谢清驰
以他们的聪明程度,跟上并不难。我相信,以现在中国互联网从业者的聪明程度,能够读懂论文的人肯定是多数,只是愿意去读的人比较少。
随着年龄变化,学习新东西的时间会越来越少。
张小珺
为什么他们走上管理岗位以后,还会自己写代码?
谢清驰
我觉得和湾区工程师文化有关系。他们比较崇尚技术,也确实是美国科技公司的管理精细度不如中国。我们在商业和管理上管得更细,他们更多是创新驱动。
张小珺
管得更细,不是应该自己更Hands-on吗?
谢清驰
我们管得更细,主要是在管理和商业上;并不是技术上管得更细。
他们更多是通过底层创新的方式来协作,比如一起写代码。
其实写代码本身的时间很短,很多时间是在开会讨论怎么写。
如果我们自己做新产品,很多时候产品前端也是自己写,就不需要写PRD,也不需要画原型图,因为脑子里已经有产品构想,不需要中间过程。
中间过程其实是一种压缩:把想法压缩成PRD和原型图,再交给设计师和工程师,之后他们再解压,写成代码。这个过程中会有损失。
硅谷一直比较崇尚全栈,岗位不像国内分得那么细。硅谷更多就是软件工程师和硬件工程师,国内会分成前端、后端、算法、产品等。
现在一些AI创业公司也倾向于招全栈。
我们也希望有更全栈的工程师和更全栈的产品经理。这也是之前我们在光年之外内部推荐大家读论文、帮助大家读论文的原因。
8. 通用方法终将胜出
模型范式部分的收尾,是一篇很有名的文章,叫《The Bitter Lesson》,中文可以叫《苦涩的教训》,是Richard Sutton写的。
我本来想把这篇文章浓缩一下,后来发现它非常精华,没有必要浓缩,就把它翻译在后面了。
这篇文章原本是Sutton的一次演讲,大家可以在YouTube上搜到。他在2018年8月的一次演讲中讲了这个观点。
文章里的图,上面画的是摩尔定律,纵轴是以美元计价的算力,横轴是时间。随着时间推移,以货币为分母的算力呈指数级增长,也就是算力越来越多、越来越便宜。
他讲的观点是:人工智能研究了70年,最终发现,利用计算的通用方法最为有效且优势显著。根本原因在于摩尔定律,或者更广义地说,计算单位成本持续指数级下降。
本质上,如果能够Scale计算,就不需要做很多手工特征。
手工特征是什么?比如做图像识别时,手工标记“这是人脸”“这是人眼”,这些就是手工特征。
下围棋时,气、眼、棋谱也是手工特征。语言领域也有很多手工特征。
现在仍然保留的手工特征,比如我们做Agent工程时,用Cursor或者Claude Code,很多时候就是在用工程方法解决计算问题。
张小珺
所以Claude Code本身没有模型吗?
谢清驰
不是。它的意思是,在某些时刻,手工特征是有用的,直到算力再增长一个量级,把手工特征彻底打败。
《苦涩的教训》里也提到围棋。他说,按照我们自以为是的思维方式构建系统,长远来看最终会失败。
比如我们构建Agent工程,用自己的想法给Agent安排工作流:先查资料库,再做RAG,然后做什么。模型本身可能可以学会这些,也可以搜索到这些,只是可能需要更多算力,甚至要等10年以后算力出现。
到了那个时候,它就能工作,而且会有更好的效果。
AI研究者试图把知识编码进智能体,短期内总是有效,也会让研究者个人获得满足;但长期会陷入平台期,甚至阻碍进展。
突破性进展最终来自相反路径:通过搜索和学习实现计算规模扩展。
这种成功会带着苦涩,因为它战胜了人类偏爱的、以人为中心的研究范式。
OpenAI有一个段子,说研究员上班前会喝一杯咖啡,先读一遍《苦涩的教训》,然后才开始工作。
Sutton会觉得,很多现在的方法都不是强化学习的方法,而是他在《苦涩的教训》里批评的那类方法。
长期来看,使用通用方法,不依赖先验知识的方法,最终能够成功。强化学习本质上就是这样一种通用方法。
但在短期内,人工工程操作、手工特征会有收益。
如果从工业角度来看,需要平衡两者。用户不关心你使用的是手工特征还是机器学习,用户只关心好不好用。
你会看到,GPT或者Claude的能力越来越接近Manus。模型可以学习我们人工构建的路径和方法。
这就是杨植麟说的“模型产品化”或者“模型最终会学会一切”的观点。往前看很长时间,模型最终能够学会,梯度下降能够找到我们所有的方法,只要相信梯度下降就可以了。
Dario Amodei有一次采访时说过:在我们不做假设的时候,梯度下降比我们所有人更聪明。
这当然是AGI的方向。但如果你去看Claude Code的System Prompt,会发现里面也有很多手工特征。
比如它会告诉模型,计算6位数以内的加减乘除可以直接推理;超过6位数,请使用工具、Python或代码。这就是典型的人为干预。
如果从AGI的角度看,模型应该自己知道什么时候用什么工具:什么时候心算,什么时候用计算器。人类会自己判断,不需要别人告诉。
可能现在模型还没有那么强,所以手工特征仍然有收益。这就是文章所说的:短期内总是有效,且让研究者个人满足。
Sutton认为,我们应该从这个苦涩的教训中认识到通用方法的强大力量,选择能够随着计算力增长持续扩展的方法。即便计算资源变得极其庞大,也应该如此。
目前看来,能够这样无限扩展的两种方法正是搜索和学习。
搜索是Test Time,也就是AlphaGo Zero中的搜索;学习是Pre-training阶段。
第二个普遍要点是,心智的实际内容极其复杂且无法简化,我们应该停止寻找理解心智内容的简单途径。
空间、物体、多智能体、对称性,这些都是外在世界中本质复杂的一部分,不应该被内置,因为它们的复杂性无法穷尽。
相反,我们应该只内置那些能够发现和捕捉复杂性的原始方法。
比如Transformer用注意力来建模。猫坐在垫子上,它可以让“它”和猫、垫子发生关系。什么时候发生连接、怎么发生连接,可以让模型自己发现。
这就是原始方法。它们之间是否发生连接,我们定义了计算方式,比如点积。但未来也可能不是点积,而是另一种计算方式,形成新的模型结构。
这些方法的核心是,它们能够找到良好的近似解;但寻找近似解的过程应该由方法完成,而不是由我们亲力亲为。
我们需要的是像我们一样有能力发现的人工智能体,而不是装载了我们已有发现的智能体。内置我们的发现,只会让理解发现过程如何实现变得更加困难。
我自己大概每个月会读一次这篇文章,还是觉得很振聋发聩。
模型部分就到这里。
张小珺
刚才提到张祥宇、余凯和姚顺雨,大家可以去听《张小珺商业访谈录》的第102集张祥宇、第108集余凯和第115集姚顺雨。
谢清驰
9. 基础设施与数据扩张
下面来到第二个部分:Infra和数据的变迁。
这部分相对简单,有两个原因:一是Infra和数据对我们理解模型、使用模型的影响相对小;二是我对Infra的理解和了解确实少一些。
第一篇推荐的文章叫ZeRO,是2019年的论文,已经相对接近现在了。ZeRO是第三代机器学习Infra。
第一代是李沐他们当时参与的参数服务器。
当时的背景是,模型越来越大,参数从亿级增长到千亿级。GPT-1大约有1.2亿参数,GPT-2有15亿参数,GPT-3有1750亿参数。
参数增长了1000倍,但GPU显存只从16GB增加到80GB,显存跟不上。单个计算单元的能力和边界遇到瓶颈,一张卡装不下一个模型。
最早AlexNet就是用两张卡放模型和训练。ZeRO做的事情,是把上千张卡放在一起训练。
当时模型并行、数据并行和流水线并行都有一些问题。ZeRO解决了这些问题,后来成为开源框架DeepSpeed的一部分。这个框架是微软做的,余教授他们参与了相关工作,也支持了OpenAI早期的模型训练。
OpenAI有一段时间把参数规模做得很大,资源有些吃不住,得到了微软的云计算和其他支持。
ZeRO的核心贡献,是做了一个数据并行框架,在数据并行框架内优化和动态管理训练过程,尽量消除模型训练中的内存冗余,让内存利用最大化。
它让可训练模型大小和GPU集群总显存成正比,理论上可以无限扩展。
过去如果方法和优化不够好,增加集群不一定会带来训练效率提升,有时反而会降低效率,甚至把训练训崩。
这个工作后来在DeepSpeed里开源,是一个著名的开源框架。
接下来是一个大家很熟悉的概念:Scaling Law。
Scaling Law其实对应两篇文章,一篇是《Scaling Laws for Neural Language Models》,另一篇是Chinchilla。
当时的背景是,2020年前后,人们已经相信模型越大越好,但数据和计算资源有边界。
语言类数据基本上已经接近耗尽,计算资源也不是无限的,因为计算资源意味着钱。即使做到最大的集群,也可能只有10万张卡,实体集群很难再大。
在这些边界下,怎么分配资源?给定计算资源以后,参数量和数据量如何分配,才能优化模型效果和训练效果?
OpenAI和DeepMind都做了实证研究,形成了今天指导模型训练的Scaling Law。
OpenAI那篇论文的图里,纵轴是Test Loss,横轴是计算量。随着计算量增加,Loss下降,效果变好。
不同参数规模的模型,在计算量增加时,Loss都会下降。随着数据集规模增加,Loss也下降;随着参数量增加,Loss同样下降。
它们之间存在明显的对数线性关系,取对数以后是线性的。
第二篇论文也发现,随着计算量增加,Loss会降低。不同颜色代表不同模型规模。在相同计算量下,参数更大的模型有机会把Loss降到更低。
这两篇论文的核心,是发现语言模型训练和Loss之间存在对数线性关系。
如果其他因素没有成为瓶颈,模型性能和每个单独因素之间都存在密切关系。这样就可以用小模型实验的数据点,预测模型规模扩大后的性能。
训练一个大模型非常昂贵,不可能每一个实验都在最大规模上做。一个实验可能要做3个月,不管时间还是金钱都承受不起。
所以只能在小规模数据上做实验。如果每个实验随着模型扩大都保持这样的线性关系,就可以通过小模型实验预测放大后的效果,提前决定要不要采用某种变化。
之后可以把数据、模型结构和训练方法等变化一次性整合起来,进行完整预训练。
这时候Scaling Law是否准确就非常重要。它会影响3个月以后是不是像开盲盒一样,投入这么多钱到底有没有效果,还要避免训练崩溃。
模型公司经常会说Loss炸了。Loss炸了,就需要回到Checkpoint。训练模型时可以理解为每隔一段时间就要存档,出问题以后读取存档,重新训练。
有些模型训练3个月,可能炸几百次。比如Llama训练过程中,可能每两个小时就会炸一次。模型炸了以后,就读取存档重新训练。
做训练的人有时候手机必须开机,半夜模型炸了,也要起来修复。
做得好的团队,比如DeepSeek,训练非常稳定,Loss漂亮地下降,很少出现崩溃,几个月就能拿到结果。这是工程能力很强的体现。
OpenAI发现Scaling Law以后,认为在给定计算预算下,应该训练尽可能大的模型,即使这意味着提前停止训练。
DeepMind则提出不同看法:OpenAI的策略会导致很多模型训练不足,模型没有吃够数据。
DeepMind认为,计算最优的训练应该让模型规模和训练Token数等比例扩展。模型参数翻倍时,数据量也应该翻倍。
这就是后来常说的数据墙:模型到一定程度以后,如果数据跟不上,训练就会受限。
DeepMind的Chinchilla证明,用更多数据训练更小的模型,可能比用更少数据训练更大的模型效果更好。
小模型有一个好处,就是推理成本低,使用成本低。现在很多小模型会用过量数据训练,把Loss降到很低。
模型训练通常会在性价比开始下降的时候停止,但继续训练仍然可以降低Loss,只是训练性价比不高。对于小模型来说,训练性价比不好,不代表推理性价比不好,因为推理是长期现金成本。
这就是Scaling Law。
接下来讲数据。
我们推荐的数据集叫LAION-5B。这是一个开源社区做的数据集,是现在Diffusion Model的基础和基石。
OpenAI在2021年发布了CLIP模型。它证明,通过对比学习,可以在4亿规模的图文对上进行预训练,训练出很好的视觉和语言联合表示模型。
什么叫联合表示?比如我们说“特朗普”,脑海中会出现特朗普的形象。训练得好的模型,可以让“特朗普”这个词和特朗普照片的两个向量,在某个空间里非常接近。
也就是学到了一个既包含语言信息、又包含图片信息的表示。
如果能找到一个世界模型,这个表示应该包含世界中各种模态的信息。
当特朗普的照片和文字向量靠近以后,就可以通过文字向量找到对应图片;也可以通过图片找到文字。这些对应不同的下游任务,比如图像识别和文生图。
OpenAI开放了CLIP模型,但没有开放数据集。
开源社区认为,如果AI领域一直闭源,对人类不利。如果少数工业巨头垄断,让他们决定人类发展方向,会有很大风险。大家认为AI应该开源。
LAION项目的发起人是Christoph Schuhmann,一位德国高中物理和计算机老师。很难想象,一位德国老师会有这样的Vision。
他给学生上机器学习课程。我看过他的采访,AI让我们过去只能看英文材料的人,也可以通过翻译去看德语材料。
这个数据集怎么做?他们用开源方式号召一批人,使用OpenAI的CLIP模型过滤Common Crawl数据集。
Common Crawl是定期爬取互联网数据的开放数据集。它每年会把互联网上的数据爬下来并存档,对外开放下载。因为很多网页会消失,所以Common Crawl保存了过去的历史数据,是现在训练模型非常重要的数据集。
他们用CLIP过滤Common Crawl,构建了LAION-5B,也就是大约50亿图文对的数据集。
LAION-5B是继ImageNet以后,多模态领域影响力最大的一个数据集。ImageNet有1400多万张图像,它有50亿图文对,大了几个数量级。
它催生了很多AI领域创新,整个Diffusion Model都在上面训练。
我推荐大家读这篇论文,是因为只有论文会讲他们如何清洗数据。看数据清洗过程,才能知道其中很多小技巧和原因。
比如多模态模型需要审查图片是否包含色情内容。为什么模型能够生成色情图片?因为训练数据里包含这些内容。
LAION-5B对Not Safe For Work图片没有简单删除,而是做了人工标记。训练时可以选择使用或不使用这个标签。
如果不用这些数据训练,模型可能失去对人体结构的理解。就像国外很多雕塑家和画家需要研究解剖学,一个好的画家需要看过人体,才能理解人体结构。
模型也是一样。如果把这类数据彻底去掉,模型可能就无法理解人体结构。但如果告诉模型这是Not Safe For Work,就可以在输出阶段关闭相关能力。
所以现在多数多模态模型不会在训练阶段彻底删除这些数据,而是在输出阶段关闭相关能力。
这些知识是我读论文时才意识到的。公众号文章通常不会讲这种很小的细节,但对研究员可能很有用。
另一篇论文叫FineWeb,也就是精炼互联网,是2023年的数据集工作。
GPT出现以后,大家研究Scaling Law,已经意识到模型和数据需要同步Scale,甚至可以用更多数据和算力对小模型进行过度训练。
但当时大家发现,高质量语料库已经掌握在大公司手里。只有OpenAI这类公司有能力和资金购买书籍、技术论文、社交媒体以及各种网页,并把它们清洗干净。
人们以为,精心策划、人工准备的语料库,是训练强大模型必不可少的。但这种语料库很难获取,也可能被垄断。
FineWeb的工作证明,不需要精心制作的人工语料库,只要把互联网语料库Common Crawl清洗干净,也可以训练出很好的模型。
它详细介绍了如何清洗Common Crawl,得到大规模高质量数据集RefinedWeb,然后用它训练模型,效果甚至可以超过人工制造的数据集。
这个方法很容易Scale,不需要雇很多人,只需要用计算机完成工作,解决了数据获取和清洗的问题。
如果大家对数据清洗感兴趣,可以看Hugging Face的系列博客。我只看了前两篇,第一篇讲如何清洗数据,也会引用FineWeb;第二篇讲Infra设施,是了解Infra非常好的指南。
还有一篇工作叫MegaScale,是字节在2024年发表的论文。
2022年底以后,OpenAI几乎不再发表论文,因为它的工作开始闭源。
大家都知道OpenAI用上万张卡训练,但当时很少有人知道如何把上万张卡用于一次训练。
2020到2022年间,全世界可能只有OpenAI、Google和DeepSeek有这样的经验。
DeepSeek很早就搭建了大型GPU集群。它们搭建萤火二号时,集群规模已经很大,一度用不完,后来大学老师和学生可以凭学术理由申请使用。
MegaScale应该是第一篇市面上公开发表的、把1万张卡连接起来训练的论文。
GPT-3这样的模型有1750亿参数,需要在大规模GPU集群上做单个Job训练。不是把卡连起来就结束了,而是要让1万张卡同时运行一个任务。
这里面有很多挑战,包括训练效率和训练稳定性。
如果做得不好,1万张卡的效率可能还不如1000张卡,花的时间甚至更多。卡越多不一定越好。
第二个是稳定性。在1万张卡的规模上,GPU会损坏。可能是物理损坏,也可能是比特翻转,由于电磁干扰,某些比特从0变成1,卡没有坏,但数据坏了。
所以系统需要识别问题,衡量训练指标,发现异常以后定位到具体GPU,把它踢出去,补进一张新的卡,继续训练。有时重启就能恢复,有时需要维修。
MegaScale建立了一套深度可观测系统,对训练进行监控和可视化,诊断Infra问题、归因、自动定位故障并自动恢复。
当集群规模达到这个程度,算法必须和Infra一起迭代,也就是算法系统的协同设计。
现在甚至还会做算法和数据的协同设计,以及数据和Infra的协同设计,尤其是在多模态训练中。
这需要非常复合型的人才,既懂算法,也懂工程,甚至懂数据。这样的团队非常少。
DeepSeek就是典型的团队。它的3000张卡,可能能达到Meta 2万张卡的效果。
这也说明,硅谷在不停砸钱时,可能忽视了一些能提高效率的方法。中国的卡比较少,所以更关注效率,被资源不足逼着创新。
张小珺
你刚才说算法、Infra和协同设计,在DeepSeek之前的工作里有体现吗?
谢清驰
有。看DeepSeek-V3的论文会发现,DeepSeek使用的是H800,它的特点是带宽比较窄。
带宽窄时,如果做张量并行,需要把模型传过去,就不能传太多。比如带宽只有80GB,模型有20GB,可能只能传4张卡,传5张卡就会堵住。
DeepSeek做了一个很好的设计:它的并行方式正好贴着H800的限制。大概是一个模型切到4张卡,它按照硬件限制设计,所以实现了计算和通信的平衡。
计算就是把数据拿进来进行计算;通信是把数据传回去或传给其他卡。
设计得好时,计算的时间可以完成传输。一次计算结束,传输也结束,下一次计算再开始,不需要互相等待。
如果设计不好,计算完成以后数据还没传完,就只能等待,GPU计算单元会空置。或者传输完成了,计算还没结束,传输单元也只能等待。
做好以后,可以更饱和地使用计算资源和带宽资源。
现在训练中MFU,也就是GPU的利用率,可能只有50%,甚至不到。50%已经是非常好的实践了,很多计算资源都被浪费。
理论上,如果能做到100%,就可以少用一半的卡。
10. 语言模型成为通用专家
接下来讲语言模型的发展。
第一篇论文叫Word2Vec。
它做的事情,是用机器学习方法把单词向量化。
当时人们认为单词是语言的最小单元。现在我们不这么想了,现在使用Token,但那个时候仍然认为单词是最小单元。
大家觉得,把单词的语义搞清楚,对理解句子含义很重要,所以试图寻找单词在向量空间里更好的表示。
现在回头看,这里面包含了很多人类理解世界的方式。人类依靠单词,但机器可能有更好的方式。
在此之前,大家把单词视为孤立的原子,单词之间没有语义联系。
比如“我用苹果手机买了一个苹果”。苹果手机里的苹果和水果苹果不是同一个语义。
如果把它们孤立地视为原子,它们都只有“苹果”这个意思。如果把它们向量化,手机语境中的苹果品牌和水果语境中的苹果,就可以是两个不同的向量。
Word2Vec的想法,就是让“苹果”这个词包含语义,能够区分不同语境。这个过程叫Embedding。
过去人们尝试用神经网络捕捉语义表示,并且希望这种表示是连续的。
Word2Vec找到了一种连续且包含语义的单词表示。
比如King减去Man,再加上Woman,就会接近Queen。它发现了向量空间里的这种关系。
又比如,意大利到罗马的关系,和法国到巴黎的关系可能比较接近。也就是说,国家和首都之间的关系可以在向量空间中体现。
如果得到这种向量,拿去训练神经网络做初始化,或者直接做NLP任务,都可以大幅提升效果。拿去做搜索也有很大收益。
这项工作是作者在Google搜索部门做出来的。一作是Tomas Mikolov,作者中还有Jeff Dean。
Word2Vec是第一次尝试用机器学习把单词向量化,也是后来Embedding的基础。
Transformer里有一个环节要做Embedding,也就是把一个词或Token变成向量。现在Embedding是什么、怎么表示,都是模型自己学习;过去Word2Vec则是提前学好的。
过去的Embedding对象是单词,现在对象是Token。
GPT-4这类模型的Token数量大概在10万左右,所有文字加在一起只有10万个Token。Token比文字更少,是一种很抽象的、模型识别的颗粒度。
所以模型数不清“strawberry”里有几个字母r,原因很简单:模型认识的是Token。训练时它根本不知道什么是字母,可能没有单独的“r”这个Token,但可能有“ry”和“store”这样的Token,它们可能是两个Token合在一起的。
网上有工具可以把单词拆成Token编号。
现在的过程是,单词先变成有限数量的Token,再把Token变成向量,向量之间的表示由模型自己学习。
o1之前的秘密代号就是Strawberry。
还有一篇Google搜索和翻译相关的论文,是一个偏工程的工作,也是神经网络第一次大规模线上部署。
论文作者包括吴永辉、Quoc Le、Oriol Vinyals和Jeff Dean。吴永辉是Google Fellow,曾经负责Gemini相关工作,现在是字节的C的负责人,也是整个字节的预训练负责人。
在Transformer出现之前,这篇论文是翻译领域工业界的SOTA。Transformer论文也引用并比较了这篇工作。
在Google Translate之前,主流机器翻译技术基于统计。2014年以前,学术界和工业界都主要使用统计方法。2014年以后,学术界开始出现神经网络方法,但工业界还在使用统计方法。
当时大家已经意识到神经网络方法可能更好,但在生产环境里,基于神经网络的NMT准确率一度不如基于短语和统计的方法。
它训练和推理速度慢,处理偏门词汇的效果不好,也不能很好地翻译原句中的所有词汇。
这篇论文的核心贡献,是把学术界验证有效的神经网络范式,在工业界真正走通了,引领了工业翻译场景的范式转移,诞生了现在使用的Google Translate。
它构建了生产级神经网络翻译系统,解决了训练、推理和部署问题。工程中大量采用了学术界最新成果,包括ResNet、Encoder-Decoder、序列到序列建模、注意力机制、低精度计算、数据并行和模型并行。
这是工程领域的集大成者,也是吴永辉的特点。他是从工程路线上走出来的科学家,工程能力非常强。Quoc Le则更偏科学家和算法能力。
吴永辉在Google靠这篇论文和后续工作一路晋升,最后成为高管。工业界有一个现成场景,他把学术问题解决掉,并进行了大规模、稳定的部署。
2018年,GPT系列出现。
先看GPT-1。论文标题是《Improving Language Understanding by Generative Pre-Training》,提出了生成式预训练的概念,也是GPT这个名字的来源。
当时深度学习已经在多个NLP任务上取得进展,比如翻译、语音识别、完形填空和分类任务。但这些模型都依赖专门的数据和专门的训练,耗时耗资源,使用范围也不能扩展。
如果某个领域没有标注数据,这些方法就不奏效。
CV领域一直有迁移学习和预训练范式:先学习通用知识,再微调适应特定任务。NLP领域虽然有类似方法,但并不明显。
Word2Vec也是一种预训练,但它以Embedding为核心,没有学到语言本身的规律,只学到了单词之间的关系。
大家开始想,能不能像CV那样,先学习通用知识,只做少量调整,就能适应不同任务。
GPT-1的作者包括Alec Radford。Ilya在2015年就尝试寻找无监督学习的数学证明,并且当时独立发现了它,认为可以通过预训练学习数据中的规律。
2018年Transformer出现以后,他有机会把这个想法实现。
GPT-1的核心贡献,是提出了NLP领域新的范式:无监督预训练加监督微调。它第一次用通用数据预训练,学习语言的内在规律。
后来大家发现,数据量继续扩大以后,不仅能学到语言规律,还能学到世界知识。
它把Transformer里的Encoder去掉,成为Decoder-only结构,训练目标是Next Token Prediction。这是NLP领域重新确立Next Token Prediction范式,后来成为大语言模型的主导范式。
GPT-1使用的数据集是BookCorpus,大约5GB训练语料,参数量只有0.1B。
但GPT-1出来以后,很快就被BERT压过了。
2018年Google发布BERT。BERT继承了GPT的预训练加微调范式,同时使用双向表示,也就是完形填空:把句子中间的词遮住,让模型根据前后文预测被遮住的词。
BERT能够同时看到前面和后面的句子,所以在语言学习上,当模型规模没有那么大时,能力更强。BERT基础版大约0.11B,大型版0.34B。
BERT发布以后,横扫几乎所有测试集。GPT当时已经不太行了。
BERT论文里还评价GPT说,OpenAI的GPT使用从左到右的架构,每个Token只能关注先前的Token。这种限制对于句子级任务不是最优的,在问答等需要双向上下文的任务中可能非常有害。
如果历史停留在那个时刻,OpenAI可能就没有后来的故事。它既不是SOTA模型,也不是SOTA方法。
当时BERT主导了整个NLP领域。它学习的不是Next Token Prediction,而是完形填空。
这时候体现出OpenAI和Ilya的信仰:他们没有转向BERT范式,而是坚持自己的GPT范式。
BERT适合把语言进行建模。GPT则更像大型隐式多任务学习,开放性更强,但前提是需要更多数据和更大参数规模。
如果只把AI限制在语言领域,BERT仍然是很好的模型。现在很多Embedding模型仍然基于BERT。
GPT的好处是能够泛化到语言以外,因为它进行了大型多任务学习,能够学到更一般的规律。
比如让模型学习很多数学和编程数据,它可能只学会数学。如果同时让它预测数学问题和地理问题的下一个Token,它可能会被迫学习更本质的世界知识。
比如用数学方法计算行星轨迹,它可能最终学到天体运动规律。这只是一种解释,目前并没有共识。
OpenAI研究员在分享中提到,Thinking本质上是一种大型多任务学习,会逼迫模型学习尽可能通用的技巧和知识。只有通用技巧和知识才能解决所有问题,专用技巧只能解决某个领域的问题。
BERT并没有这个特点。
2018年,BERT是更主导、更强的范式,很多研究员和学术界、工业界都转向了BERT,只有OpenAI坚持GPT。
GPT-1有一个问题:预训练和微调的范式意味着模型还没有真正学会世界知识。它更像一个狭窄专家,而不是一个通用专家。
OpenAI猜测,可能是因为GPT-1的数据集过于单一,主要是书籍,而且只有5GB。
他们相信,只要在足够大、足够多样的数据集上做Next Token Prediction,也就是无监督多任务学习,Transformer就能学到丰富的语言规律。
他们训练了一个1.5B的Transformer模型,比此前大了10倍左右。数据则通过爬取Reddit构建了WebText。
他们保留Reddit上点赞数较高的内容,去掉点赞数很低的内容,希望得到质量较高、足够多样化的网络数据集。
GPT-2的论文标题是《Language Models are Unsupervised Multitask Learners》。它提出了零样本学习的概念。
GPT-2无需针对不同任务进行微调或修改架构,就能泛化到不同NLP任务。这给了OpenAI很强的正反馈,模型开始具备通用专家的特征。
之后他们继续做GPT-3。
GPT-2是2019年发布的,GPT-3是2020年5月发布的。GPT-2之后,OpenAI开始快速推进GPT-3。
最早OpenAI是非营利组织。2019年3月,也就是GPT-2发布一个月后,Sam Altman推动成立新的有限营利公司。
2019年7月,微软向这家公司注资10亿美元,并提供云计算支持。
这个时候微软已经有DeepSpeed等Infra能力。OpenAI发现,GPT-2之后的资源已经不足以支撑更大规模,于是调整组织结构,获得更多资金和资源。2019到2020年期间,他们还砍掉了很多团队,包括玩魔方、玩游戏的强化学习团队,几乎所有人都押注在GPT这一个方向上。
GPT-1和GPT-2的论文作者都比较少,只有6到8人,偏研究性质。GPT-3作者增加到30多人,加入了数据工程、Infra、评估等角色,变成团队作战。
OpenAI把GPT-3视为一个大型工程项目,而不是单纯的研究工作。
他们一定是在GPT-2的Scaling过程中观察到了重要信号,所以开始坚决投入。
GPT-3把模型规模扩大到1750亿参数,数据规模扩大到570GB。GPT-1有1.17亿参数、12层、5GB数据;GPT-2有15亿参数、48层、40GB数据;GPT-3有1750亿参数、96层。
GPT-3开始使用经过清洗的Common Crawl数据,也加入了书籍、Wikipedia等数据。
这解释了为什么它需要数据团队、评估团队和Infra团队。清洗Common Crawl是细致工作,大规模GPU并行训练也需要专门团队。
GPT-3的核心想法是,人类不需要大量监督数据就能学习语言任务,最多只需要少量示例。它试图通过上下文学习实现对语言的理解。
OpenAI注意到,随着Transformer参数量提升,上下文学习能力可能随着模型扩大而显著提升,这和Scaling Law一致。
GPT-3验证了Scaling Law,也获得了很强的上下文学习能力。只要提供任务描述和少量范例,就能引导模型执行任务,不需要重新训练。
当然,从后来的观点看,GPT-3训练并不充分,参数规模和数据规模没有同比例扩张。这也是后来OpenAI继续调整训练方式的原因。
2022年还有一个非常重要的工作,叫InstructGPT。
GPT-3单独使用时,会产生不真实、有毒或无助于用户的输出,指令遵循能力也很差。这些问题并没有随着Scaling自动改善。
GPT-3在字面完成任务方面很强,但无法理解用户真正的意图,也不会拒绝有害任务,不会澄清模糊需求。
那时模型很强,但不好用。
InstructGPT的一作是Long Ouyang,二作还有John Schulman,他是强化学习专家,也是PPO论文作者之一,是较早在语言模型领域把强化学习做出效果的人。
他们雇佣了40多名合同工,构建所需数据,论文致谢中还列出了这些人的名字。
核心工作是基于人类反馈的强化学习。
简单来说,他们先对GPT-3做SFT,再训练一个Reward Model。SFT数据由合同工构建,规模不大,可能是几千到上万条。
同时,他们让合同工对模型输出进行排序。比如对不同结果打分,或者标注哪个更好、哪个更差。
通过排序数据,可以得到大量偏好对。一个“好、中、差”的排序,可以两两组合,放大监督信号的数量。
他们用这些数据训练Reward Model,再把Reward Model作为奖励信号进行强化学习,让模型学会人类的偏好和意图。
数学和编程领域有时可以构建明确的对错奖励信号,但很多其他领域目前很难构建,只能通过人工构建偏好信号。
InstructGPT让模型学会响应指令,也学会根据人类偏好调整行为,生成更符合期望的输出。
它的效果非常好:1.3B的GPT-3经过调整以后,在遵循指令方面比175B的GPT-3更好。
也就是说,模型参数量缩小100多倍,效果反而变得更好。
这对行业冲击很大。除了扩大模型,优化训练方法、优化后训练,同样可以带来巨大提升。
这是一个承前启后的工作,让大家意识到AI距离理想助手近了很多。GPT-3还无法很好地作为助手,但InstructGPT以后,模型开始像标准助手。
语言模型领域还有一个值得看的模型,叫Tülu 3。
到2024年,整个行业都意识到后训练很重要。但后训练比预训练更加闭源,几乎没有人公开如何做后训练。
公开的知名工作只有InstructGPT。
艾伦人工智能研究所推出了Tülu 3。它使用Llama 3.1做后训练,并且公开了整个后训练流程,包括数据、代码和训练配方。
训练完成以后,它的结果超过了原始Llama 3,也超过了Qwen2.5和Mistral,并且可以和GPT-4o比较。
如果大家想了解后训练过程,可以看这篇论文。
作者之一是Nathan Lambert,他是Substack上很知名的通讯作者,大家有兴趣可以关注他的通讯。
11. 多模态走向统一
下面进入多模态模型阶段。
多模态模型我们还是从李飞飞团队的工作开始。
2014年,Andrej Karpathy做了一个视频理解相关工作。李飞飞团队构建了ImageNet,并影响了深度学习范式,所以他们会想:如果图像可以用深度学习解决,视频是不是也可以?
视频和图像一样,在此之前也由手工特征范式主导。既然图像可以用深度学习,视频是否也可以?
如果要做视频深度学习,需要一个大数据集,而构建数据集正是李飞飞团队擅长的事情。所以他们构建了一个大型视频数据集,并训练模型。
从计算角度看,视频的计算量远大于图像。一秒钟视频至少有24帧图像,对模型训练是挑战。
同时,视频信号的信噪比比图像差。一秒钟视频有24帧,相邻帧之间的信息差其实很小。所以很多视频处理方法会抽帧,间隔性地取一些帧来理解视频。
这项工作的核心贡献,是构建了当时最大的视频数据集:100万个YouTube视频,并进行分类。
它使用ImageNet预训练好的CNN模型作为基础。CV领域当时已经有很强的预训练范式:先学习ImageNet图像,再迁移学习到视频分类。
它还探讨了不同融合方式。多模态的表征应该什么时候融合,是一开始就把文字和视频Embedding放在一起训练,还是先在各自领域训练到一定程度再融合,影响很大。
多模态领域什么时候融合,到现在也没有收敛。
理论上,早融合的天花板更高。人类就是早融合的,一说“特朗普”,可能会同时激活关于特朗普的文字、图像和声音表征。
但早融合的挑战也很大。现在有些团队坚持更早融合,也有些团队选择晚融合,让一个模型挂在另一个模型上,工程上更容易,但效果可能差一些。
10年前,多模态领域就在讨论什么时候融合;10年以后还在讨论,说明融合仍然是很大的挑战。
Andrej Karpathy后来成为OpenAI创始成员之一,也曾经担任特斯拉AI总监。他是视觉出身,主导了特斯拉用Transformer处理视觉。
特斯拉很早就开始使用Transformer做视觉处理,包括BEV等方案。后来他又回到OpenAI工作了一段时间,现在主要做教育和在线分享,讲解语言模型的视频非常好。
李飞飞老师是斯坦福教授,也是ImageNet的主要推动者,后来担任过Google Cloud首席科学家。
早期视频工作其实没有做得特别好。它发现,看视频和看单帧图像相比,改进幅度并不大。
比如正确率从59.3%提高到60.9%,只提高了1.6个百分点。这说明它有提升,但很弱,还没有真正利用好视频信息。
接下来是双流网络的工作,由Karen Simonyan和Andrew Zisserman完成。
它解决了用深度学习做视频的挑战,但最初效果还不如最好的手工特征模型。同时,多帧模型也没有明显优于单帧模型。
双流网络把视频分成两个流:一个是空间流,一个是时间流。
时间流可以取第一帧、第二帧,或者间隔抽取的帧,学习运动变化。同时,它引入了光流。
光流可以理解为,相邻两帧做差以后,得到物体移动的轨迹。它包含了运动信息,因为视频本质上是运动的图像。
过去模型只能对空间信息建模,现在通过光流,也可以对空间中的运动信息建模。
本质上,我们给了模型一种新的原始方法,就像《苦涩的教训》里说的那样。模型工具变多以后,就能学出更好的能力。
双流网络第一次在视频理解上超过了当时最好的手工特征模型,可以理解为视频领域的AlexNet时刻。
双流架构和融合方式后来成为多数视频理解工作的基础框架。
Karen Simonyan也是AlphaGo Zero的作者之一,可以看到这些作者在不同领域都有很好的贡献。
2014年还有图像生成领域最重要的模型之一:GAN。
现在我们会觉得生成式模型发展得很好,生成可能比理解容易。但过去人们倾向于认为,生成比理解更难。
从规律上讲,我们需要先理解,才能生成。我要先理解人体结构,才能把人体画好。
判别任务相对容易、封闭、容易收敛。比如判断照片里是不是花,比生成一朵花更容易。
所以有人想,能不能用一个简单任务,模拟或训练一个更困难的任务。数学里经常用简单对象刻画复杂对象,从傅里叶变换到Diffusion和GAN,都有类似思想。
GAN提出了一个新的范式:把生成任务建模成生成器和判别器之间的二人零和博弈。
生成器像一个盗版画家,希望画一张假图骗过警察;判别器像警察,尽可能区分假图和真实图。
判别器的任务更容易,所以可以用一个相对更强的判别器,逼着生成器不断成长,直到判别器分不出真图和假图。
本质上,GAN用判别模型的Loss来简化生成模型的训练,把判别器的差异作为生成器的优化方向。
这是非常大开大合的想法:不再训练一个神经网络,而是训练两个,让它们互相对抗,最后训练出更强的生成模型。
作者是Ian Goodfellow,他通常被认为是GAN的主要发明者。他后来和Yoshua Bengio、Aaron Courville合著了《Deep Learning》,中文一般叫“花书”,因为封面上有花。
GAN从2014年到2019年底,主导了生成图像领域大约5到6年。
实际上,Diffusion在2015年就已经被提出,但一直活在GAN的阴影下,就像GPT曾经活在BERT的阴影下一样。
Diffusion论文提出,机器学习的核心问题之一,是使用高度灵活的概率分布家族建模复杂数据集。
也就是用一个简单的东西刻画复杂的东西,本质上和用三角函数、傅里叶变换刻画复杂函数类似。
同时还要保持学习、采样、推理和评估的计算可行性。很多模型要么灵活性强但计算困难,要么容易计算但刻画复杂数据的能力不足。
GAN的优点是生成样本锐利,但训练不稳定,容易崩溃。VAE训练稳定,但样本比较模糊。
Diffusion希望找到一个既稳定、又好训练、效果也不差的基础模型。
它受到物理扩散过程的启发,先建模一个前向扩散过程:拿一张图,逐渐加噪声,破坏数据分布中的结构,最后变成白噪声。
然后学习逆向过程,把噪声逐步还原成原来的图像。
如果正向过程用高斯分布刻画,逆向过程也可以用机器学习学习。高斯分布容易计算,所以可以得到一个既灵活又容易处理的生成模型。
Diffusion最初的问题是效果差,和GAN没法比,所以发出来以后被冷落了。
这篇论文的作者是Jascha Sohl-Dickstein。他说自己最不知名的工作就是发明扩散模型,因为很多人以为扩散模型是DDPM作者发明的,其实不是。
Jascha后来去了Anthropic,之前在Google Brain和DeepMind工作。他的学术背景是加州大学伯克利分校的神经科学博士学位,攻读博士学位之前还做过向火星发射探测器的物理工作,背景非常复合。
Diffusion被提出以后沉寂了大约5年,直到2020年才重新被点亮。
重新把它带回主流的是《Denoising Diffusion Probabilistic Models》,也就是DDPM。
2020年,生成模型主要还是GAN。GAN生成效果很好,Deepfake换脸就使用了GAN。它的模型较小、速度快,但训练不稳定,容易发生模式坍塌。
当时还有VAE,效果比较模糊但训练稳定;还有基于Transformer的自回归模型,效果不错,但生成速度很慢。
DDPM的工作把Diffusion从边缘范式带回主流。
它简化了模型设计和训练目标。过去Diffusion需要直接学习反向过程的均值和方差,或者直接预测去噪后的图像。
DDPM改成只预测添加到图像中的噪声。预测噪声以后,把噪声去掉,就是下一步图像。
看上去区别很小,但很像残差网络:从学习完整过程,变成学习过程的增量,所以更容易学习,训练也更稳定。
它还使用U-Net作为预测噪声的骨干网络。U-Net原本是图像里面用来做图像边缘检测的,很适合预测噪声。
经过这两个改进,Diffusion效果很快提升。大家发现它既好训练,效果也好。
短短两年内,有接近10篇重要工作不断改进Diffusion:把原来需要1000步的去噪减少到10步,加入隐空间,提高效率,在高分辨率图像上也更快。
作者Jonathan Ho后来加入Google,并创立了Ideogram。Ideogram的图像生成模型现在仍然很主流,经常排在前几名。
他的导师是Pieter Abbeel,是伯克利著名教授,做机器学习、强化学习和机器人。他们做过仓库拣货机器人。
2020年,Transformer已经主导几乎所有NLP领域。原来NLP有ACL等会议和不同流派,后来逐渐被Transformer统一。
大家开始想,能不能用Transformer统一图像领域。
当时CV领域主要由CNN主导。有人尝试把注意力和CNN结合,但这些方法对GPU不够友好。Transformer之所以成功,很大程度上是因为它抽中了硬件彩票。
如果CV领域作者修改Transformer前面的结构,就无法享受NLP领域庞大的库和生态支持,也难以充分利用GPU。
Transformer本质上是处理序列、建模序列内部规律的架构。但图像是二维数据,不是天然序列。
所以要用序列模型处理图像,需要解决两个问题:把图像序列化,以及把图像Token化。
ViT论文的作者做了一个非常有意思的创新。如果模型不能适应数据,就让数据适应模型。
论文标题叫《An Image Is Worth 16×16 Words》。它把图像切成16×16像素的小块,每个小块叫一个Patch。
按照从左到右、从上到下的顺序,把这些Patch取出来,它们就变成了序列,再给它们添加位置编码。
这就完成了Token化。
过去我们理解的Token,和Word比较接近;ViT里的Token则非常抽象。一张花的照片被切成很多16×16的小卡片,经过Embedding以后,模型可以用它们建模各种图像。
它把这些Patch打散成序列,再用Transformer处理,几乎和处理文字一样。
像素本质上也是一堆数字,先把它们Embedding,然后就可以享受Transformer完整的算法和Infra生态,不需要修改整个库。
它可以把规模做大,因为Transformer已经能够扩展到很大的网络。
但如果训练数据不够大,ViT并不一定比CNN好。只有在大量数据上预训练,再迁移到小数据集时,它才会超过最先进的卷积网络。
它的核心优势是Scale能力更强,可以扩展到更高的天花板。因为使用Transformer生态,计算资源也更容易利用。
DiT也是类似逻辑。视频包含多个图像,也可以通过某种方式把视频变成序列,塞进模型训练。
Transformer最初只是为翻译而发明的,翻译天然是序列到序列,但后来它开始建模图像、视频和整个世界。
接下来回到多模态融合。
如果要识别一个视频,视频有文字信息,也有视觉信息。文字可以Embedding,图像也可以Embedding。
如果一开始就融合,比如视频里特朗普的画面和字幕中的“特朗普”从一开始就一起建模,模型就有机会理解它们之间的关系。
但这也很抽象,因为图像被切成Patch以后,特朗普的眼睛、鼻子可能已经被拆散,模型仍然要自己找到识别这些信息的方法。
2021年,OpenAI发布了CLIP。
文本领域可以使用大量无监督数据训练,得到很好的效果,典型结果是BERT和GPT。大家开始想,图像领域能不能也进行无监督学习?
ImageNet是标注数据集,创建成本高、覆盖概念有限。世界上的概念可能有数百万个,但ImageNet只覆盖了有限类别,而且不具备Zero-shot能力。
从AGI角度看,没有Zero-shot能力,就不具备通用智能。
于是OpenAI在互联网上寻找大量图文对,比如Instagram和微博里的图片及文字说明。
一张夕阳照片旁边写着“今天的夕阳好美,有一只鸟飞过”,图片里有夕阳、晚霞和鸟。通过大量这样的图文对,模型居然学会了什么是夕阳、什么是鸟。
CLIP使用对比学习,第一次把这种方法用于视觉和语言两个模态。它证明可以用互联网上的自然语言作为监督信号,学习通用的多模态表示空间。
模型把“鸟”这个词的Embedding和鸟的图像Embedding映射到同一个空间,并让它们彼此接近。
这样可以用通用表示做图像识别,也可以做文生图。
Diffusion原来只能生成图像,却不能控制生成什么。CLIP让文字信息能够控制图像生成,这才有了文生图。
CLIP还可以直接做Zero-shot图像分类,不需要额外标注数据,效果就超过ImageNet上训练出的模型。
它还可以做OCR、地理定位、动作识别等任务,因为它学习的是一种通用表示。
作者之一是Alec Radford,Ilya也参与了这项工作。
接下来是Stable Diffusion。
当时Diffusion有两个问题:很耗资源,控制能力弱。
早期生成一张图可能需要一天,一张普通显卡也要很长时间。OpenAI还有一个工作叫GLIDE,把类似CLIP的图文表示模型作为条件,放到Diffusion的U-Net噪声预测网络中。
文字信息可以影响噪声预测,从而生成符合描述的图像,但控制力仍然较弱。
Stable Diffusion最重要的贡献之一,是引入潜空间。
过去Diffusion工作在像素空间。如果图像是1080×720,像素空间就是这么大的维度;如果变成4K,空间更大,训练和推理都会带来很大计算负担。
Stable Diffusion把图像压缩到一个低维潜空间,比如128×128的空间,在潜空间里做扩散,再还原到像素空间。
这样可以节省至少两个数量级的计算资源,也解决高分辨率图像计算量很大的问题。
更神奇的是,引入潜空间不仅提高了计算效率,有时还提高了效果。
压缩可以产生智能。就像费曼学习法,把一本书从厚读薄,是一个抽象和学习的过程。
模型也一样,从高维空间压缩到低维空间时,会丢掉噪声,保留更本质的信息。
人看到一张分辨率不高的玫瑰花照片,仍然能判断是玫瑰,也能想象并补充细节。这说明描述玫瑰不需要无限多像素,低维空间已经足够包含它的规律。
Stable Diffusion在潜空间里学习表示,再解码回像素空间,从而提高效率并支持更高分辨率。
第二个重要贡献是引入交叉注意力,让模型可以通过条件输入控制输出。
它把CLIP的能力加入扩散模型,把文字Prompt编码后作为条件,输入到潜空间的噪声还原网络,也就是U-Net中,引导图像生成。
这样Stable Diffusion就具备了文生图能力。过去它只能生成图像,现在可以根据文字生成图像。
两个工作结合起来,得到了一个可以被人类语言控制、同时高效的文生图模型。
Stable Diffusion发布以后,点燃了整个AIGC产业链,至今仍然是重要模型。
现在也出现了新的范式变化,自回归模型重新回到舞台中央,有可能在未来超越Diffusion,成为文生图的重要参与者。
接下来是DiT。
Transformer出现以后,人们开始用它统一很多领域,从文本到视觉再到视频。
扩散模型有一个骨干网络,用来预测噪声。大家就想,能不能把这个骨干网络换成Transformer。
过去Diffusion依赖U-Net这样的CNN架构。CNN的Scale潜力有限,全局建模能力也比较弱。如果换成Transformer,理论上可以提升性能,特别是在数据集变大的时候。
ViT已经证明Transformer可以用于图像领域。于是有团队把Stable Diffusion中的U-Net换成Transformer,大幅提高扩展性。
论文标题是《Scalable Diffusion Models with Transformers》,意思很直接:一个可以用Transformer扩展的Diffusion模型。
把架构统一到Transformer以后,可以使用其他领域的最佳实践和训练配方,也可以使用PyTorch里大量现成的Transformer代码和优化方案。
Transformer抽中了硬件彩票,所以Diffusion和Transformer结合以后,也能享受生态带来的可扩展性、鲁棒性和效率。
统一架构也为跨领域研究带来新的可能性。
这是2022年底的工作。主要作者是谢赛宁和William Peebles。谢赛宁后来加入Meta AI,William后来和另外一个作者一起加入OpenAI,生成了Sora。
大家对Sora的猜测,也认为它使用了很多DiT的思想和能力。
这些就是今天分享的论文。
张小珺
12. 从论文走向未来
听你讲完,我的一个感受是,以前我们经常问,Transformer之后接下来的架构创新会是什么样。但听完以后我意识到,架构创新需要很强的硬件适配性,可能还需要同步的硬件创新才能实现。
你一直在讲Transformer抽中了硬件彩票。
谢清驰
是的。有一种可能是,硬件先发展到一定程度,形成一个很好的计算平台和系统,新的算法才会应运而生,才能占有硬件的性能。
现在也有科学家在探索新的计算范式,比如存算一体。如果这些范式成功,未来也有可能诞生新的模型结构。
但截至目前,Transformer仍然是非常主导的模型结构,而且这些年它的超参数调整都很小。
张小珺
同时它也在统一江湖。
谢清驰
对,在统一江湖,而且越来越统一。
在图像生成领域,未来一两年它可能也会超过Diffusion。
张小珺
我还有另外一点感受:AI研究其实是一步一步带领我们走向新世界的。上一期姚顺雨也说过,我问他最有影响力的论文是哪篇,他觉得没有哪一篇是单独最重要的,因为它们彼此一步一步推进,是共生关系。
谢清驰
对。我觉得这也是整个科技领域创新的特点:我们并不是从零开始发现世界,而是一步一步构建。
这也是为什么当时我想和同事分享,通过读一些论文了解深度学习历史。但后来我发现,想找10篇论文让大家了解整个深度学习很困难,最后找了30多篇,才比较完整地还原GPT和ChatGPT出现之前的历史。
这些论文里去掉几篇,整个故事就不完整了。它确实是一个循序渐进、逐渐发展的过程,是众多研究员共同推进的工作。
张小珺
我很好奇,是什么毅力让你读几百篇论文,然后做这样一个总结?你通常用什么时间做这件事?
谢清驰
我读论文花掉了过去两年所有的休息时间,包括出差住酒店的时间、下班后的时间和周末。
很大一个原因是好奇心。我很想了解AI的边界到底在哪里。可能和我做产品有关,我倾向于先了解边界,再去寻找最优解。
刚开始非常痛苦,因为没有找到成体系的框架和脉络。一开始学习得很散点。
我也曾经试图直接读Transformer论文,但后来发现,不太可能通过直接读Transformer论文读懂它,因为需要的背景知识太多。
一开始我像陷入汪洋大海,后来逐渐找到脉络。那些视频对我帮助很大,尤其是李沐老师的论文精读系列。我一篇篇看下来,又读了一些书,让自己建立比较完整的框架。
之后才会思考,为什么科学家在那个时候想解决那个问题。
我最初只知道他们做了什么,并不知道为什么这么做。于是我又开始问模型,为什么他们当时做这些事情,一步步把信息拼起来。
比如读Attention论文时,我就想知道Attention从什么时候开始,于是在网上找资料。找到以后,就会理解这个事情的前因后果。
我觉得这种学习方法也适合学习陌生领域:不但知道它是什么,还知道它为什么,以及从哪里来。
研究员写论文、做工作,和我们做产品、处理工作也是一样的。他在当时有明确目标,有明确问题,希望通过一个工作把过去这里不好、那里不好的地方解决掉。
有些出色论文能够开创范式,做到既要、又要、还要,成为非常著名和重要的工作。
也有些研究员很擅长找到时代最重要的问题,成为重要问题的提出者,后面很多人都会跟随他们的工作。
刚开始读论文的头两三个月,我有很强的平台期感受,读得不是很懂,云里雾里,一知半解。
论文很晦涩,我晚上看论文时,有几次甚至看着看着睡着了。上一次有这种经历,还是大学考研的时候。
但如果度过平台期,读懂论文以后,就会享受读论文的快乐。
读论文能让你了解生活中使用的AI工具的原理,知道它为什么好、为什么不好,也知道某些东西为什么不好用。
比如我通过了解Token,知道为什么模型不太能数清字母,因为模型训练时最小单元不是字母,和人非常不一样。
知道这些边界以后,会更熟悉模型,也能把模型用得更好。
我发现身边使用模型最好的人,很多都是研究员。他们甚至会告诉我,某种方法属于训练数据集的分布,所以他们觉得这样使用是可行的。
我后来也会这样思考:模型有没有这样的能力?这些东西模型见过没有?有没有被训练到?有没有可能泛化?
这样我能开发出很多有意思的模型使用方式。
比如过去会议会有纪要,但内部转录模型做得不好,很多词识别错误,也有很多语气词。
我自己整理重要会议或经历的转录手稿时发现,虽然语音转录有错别字,但结合背景知识,还是能够猜出原本的词是什么。
于是我想,一个训练得很好的多模态模型应该也能做这件事。我试了一下,告诉Gemini:你是一个很好的同声传译员,拥有某个领域的背景知识,请帮我纠正这份转录手稿中的语言错误。
张小珺
你是一段段给它,还是整个给它?
谢清驰
整个给它。效果非常好,好到让人觉得,会议纪要整理工作不再需要人工完成。
有些重要会议,整理纪要可能需要一整天。现在我只要用一句话交给Gemini,不花什么钱,等30秒就能得到结果。
这种反馈非常正向,是一种纯粹探索的快乐。
后来为了给大家分享,我又重新学习了一遍。我从3月开始准备内部分享,7月准备开源,又把论文重新读了一遍,做了严谨校准,把以前没有核实的点全部核实,再重新写了一遍PPT。
这是一个重新加深学习的过程。
整体而言,度过高原期以后,对我来说就形成了很大的正反馈。这种由好奇心驱动的正反馈,激励我继续往前读。
好处是,读懂论文以后,我可以读第一手材料,获取AI行业发展的信息,也可以直接和研究员交流,阅读他们的材料、视频和分享。
这样获得的信息是最新的、最一手的,也是最原生态的,对未来工作有很大帮助。
张小珺
你获得想知道的答案了吗?现在AI技术的边界在哪里?
谢清驰
我获得了一部分。有些部分我没有获得,有些部分可能人类也没有获得,我们都还处于技术发展浪潮的早期。
张小珺
你能不能模糊地告诉我们,现在大概能探索到的边界在哪里?
谢清驰
我大概知道一个模型能做什么、不能做什么,能不能解决一个固定任务。
如果它解决不好,我能猜到原因,也能找到一些方法干预。如果有模型训练资源和SFT资源,也可以做一些纠正。
有时候也可以使用手工特征。
更重要的是,对AI和模型的了解让我觉得,等待是有意义的。
有些团队在模型能力不够时,会非常努力地使用手工特征和SFT。收集数据、做SFT、评估,整个流程可能花3到4个月,确实能让模型能力提升一些。
但两个月以后,开源模型或公开模型可能已经提升了。
现在我愿意等待。我大概知道这个问题现在解决不了,但可能5个月或6个月以后,模型就能解决,不需要我们自己手动解决。
我们可以心安理得地等待,甚至说服同事和老板,不要做任何事情,先躺平,等待世界变好。
你会发现,世界确实会变好。
每个团队都有自己的节奏。如果熟悉模型,就大概知道什么时候能力会出现提升。
这会让人有一种踏实感。你不会担心,如果不努力解决问题,问题就不会被解决。你会发现,问题自然会被解决。
张小珺
有一个例子吗?
谢清驰
我们当时做客服类模型时,手里没有端到端语音模型,所以使用Pipeline连接多个模型。
国外模型能力够,比如GPT-4o能力够,但延迟无法接受,因为距离太远。
国内当时是DeepSeek-V3和千问2.5,可能80%的情况下够用,延迟也可以,但20%的情况无法覆盖。
你可以预期,千问和DeepSeek可能会在年底发布新版本。我们等了两三个月,千问3出来以后,最大的模型解决了当时的问题。
现在的千问3已经可以做客服类工作,没有太大问题,比2.5好很多,而且它还是MoE模型,性能很好。
张小珺
所以读论文反而让你没有那么焦虑了。
谢清驰
对。AI新闻每天都在变化,是一个日新月异的行业。读论文让我了解一些更长期的东西,不用担心每天变化很大。
如果能读懂论文,变化可能没有那么大。
比如我看过DeepSeek关于稀疏注意力的论文,就知道有一群很强的人在解决注意力机制的固有问题。我可以心安理得地等待,也许再过一年,上下文窗口会增长10倍甚至100倍,推理成本会下降一个数量级。
那时候很多事情就可以做了。
现在我可以接受模型的不完美,也可以为未来构建产品。因为产品构建也需要时间,理想情况下,产品开发完成时模型能力也提升到位,就会形成很好的切合。
张小珺
关于模型能力是不是已经到了Scaling Law的尽头,一直有争论。你对这个问题的答案是什么?
谢清驰
我比较乐观。我觉得人类总有办法继续Scale。
如果了解行业发展,会发现很多地方还做得很粗糙。我们现在只是在拼命堆效果、堆资源,而且资源还没有枯竭。
预训练时大家觉得数据枯竭了,但其实没有,生成数据也可以做得很好,数据并没有完全枯竭。
Test Time Computing还有很大空间,也许还能找到更多可扩展的方向。
读完这些论文以后,我反而变得乐观,因为过去更糟糕。
10年前,0.1B模型可能是超大模型;现在我们觉得0.1B很小。技术发展仍然很快,还没有碰到明显的天花板。
张小珺
我们录制节目的时间是国庆期间。最近OpenAI有很多新闻,你能不能稍微解读一下?
谢清驰
我昨天还没来得及看完Sam的发布会,但首先是Sora 2,效果很好,而且有新的产品形态,看上去已经被很多人使用了,这是一个值得关注的点。
我觉得OpenAI可能在尝试构建新的操作系统。
我们看到,它可以让一个模型连接很多应用,通过MCP把很多现实世界的API连接起来,这是非常不一样的。
过去的操作系统,是通过确定性软件向CPU索取算力。现在如果GPT向操作系统发展,我们只需要和GPT对话,就能获取算力,不再通过编写好的软件,而是通过一堆参数操作物理世界的API,并获得GPU算力。
我个人感觉,OpenAI在做下一代操作系统。操作系统是非常大的事情,而且它和过去的操作系统很不一样。
张小珺
今天的论文节目和之前也不完全一样,其中包括了很多人的故事。你从这些人的故事里总结出一些规律吗?
谢清驰
我觉得有成就的研究员,都愿意去Bet一件不一样的事情,而且很多时候非常坚定。
我研究GPT发展历程时,能够感受到Ilya非常强烈地Bet了一些东西。他可能在2012年或2014年就已经相信这个方向,然后不停努力,甚至要等到Transformer发明,才有机会把构想实现。
这是很重要的事情。神经网络在过去一直处于边缘位置,在2012年以前经历过很多周期,并不是特别被人待见。
所以他们重要的Bet和坚持很关键。
张小珺
最后,能不能给一些在AI行业还不资深,但想进入AI行业的人一些建议?可能主要是年轻人。
谢清驰
我有3个层面的建议。
第一个层面,多使用AI。把AI用好也是一种稀缺技能,需要熟悉模型,经常使用才会熟悉。
更进一步,可以学习编程,具备一定工程能力,最好有生产环境里的工程能力。
这个时代,特别是想进入AI行业的人,以后可能不会再有那么细的分工。国内分成产品经理、设计师、交互设计师、平面设计师,前端、后端和算法工程师。
以后可能更多是Builder,为端到端的结果负责。至少能够负责一个产品,解决一个问题。可以用前端或后端的方式解决,只要能够把问题解决好,再让专业的人去打磨。
如果有一定工程能力,就能很快把自己的想法实现出来。
计算机语言也是一种语言。未来可能用自然语言对计算机进行更复杂的操作。
但即使可以用语言编程,了解编程的技术原理和细节,对把它用好仍然有帮助。
所以第二个层面,建议年轻人学习一些工程知识。现在的语言也比较简单,Python和JavaScript都是相对简单的高级语言。
第三个层面,还是建议大家读论文。
我知道读论文很难,也知道它很耗时间,但AI是一场长周期的技术浪潮,我们还处于很早期。
了解技术原理,有机会和它一起成长,是一件有意义的事情。读论文对算法同学有意义,对工程同学和产品同学也有意义。
至少它能让你了解这个新世界是什么,并持续跟踪它的发展。
技术变化发展很快,我很难想象3年或5年以后会出现什么,AI会对生活、人类组织结构和组织形式产生什么影响。
了解技术、读论文,是给自己打开一扇门。进入这扇门以后,你会看到一个不一样的世界,对它有更好的理解。
所以如果有可能,读论文是有必要的。
我自己实践下来发现,它有挑战,但没有那么难。做这次分享,也是希望降低大家读论文的门槛,让更多人去读。
张小珺
刚才说的是站在AI门口张望的人。如果是已经在大型公司、在某个职能上工作的人,你有什么建议?刚才也提到,AI时代可能更需要全栈的人,需要Builder。
谢清驰
我的建议是,大家承担更多职责。
产品同学做一些工程事情,工程同学做一些产品工作,彼此融合,了解对方的工作方法、工具和目标。
我确实认为未来的趋势是全栈。大公司里分工可能很细,进入别人的领域会有挑战,但我觉得值得尝试。
自己做完一件事情以后,得到的反馈会更直接。端到端反馈非常直接,也能让人更快获得成长。
张小珺
超级个体和一人公司会成为趋势吗?
谢清驰
我不知道。
在一些问题和服务上,小团队已经可以做好,比过去有更大机会。
比如我们自己的团队,希望每个人首先是工程师,然后才是产品经理或其他岗位。
过去能做到这一点的公司可能只有Google,而且主要是在湾区。现在条件更好,提出这种要求可能比当年的Google容易10倍。
公司不需要很大的团队,也可能做得更好。人少以后沟通成本降低,又会进一步推动团队变小。
但复杂的生意仍然需要更多人。所以公司人数一方面和技术、组织发展有关,另一方面也和商业模式有关。
一些非常好的商业模式,公司人数本来就很少。比如WhatsApp、Instagram和微信,这些有网络效应的公司,不管国内国外,人数都相对少。
Telegram只有40个人,却能服务10亿用户。
但像美团这样的公司,在现阶段可能很难用这么少的人服务这么多客户。
张小珺
这些领域里有很多人在OpenAI和Google做出了重要贡献。你觉得OpenAI会超越Google吗?
谢清驰
这是个很难回答的问题,但Google的表现比我想象中好。
我去年在湾区和很多Google的人聊天时,他们还没有那么有信心。原因可能是Google人才太多,反而容易互相牵制,出现踩脚的问题。
现在看,Google正在逐渐梳理这件事情。它有很好的人才底蕴、工程能力和Infra设施,所以在这个时代很有机会。
OpenAI看上去在做一个超级App,这是一个非常不一样的Bet。
如果它能做成超级App,至少有机会和Google比肩。因为它已经不只是一个Lab,单纯作为Lab和Google比肩会有挑战;如果它有一个超级App,情况就很不一样。
如果它有一个操作系统,就会非常不一样。
张小珺
今天还属于早期。
谢清驰
对,仍然处于行业非常早期。
如果类比计算机发展,从大型机到中型机、小型机,最后到个人电脑,我们现在可能还处于个人计算的早期,甚至前期,还在小型机时代。
张小珺
好了,今天的节目就是这样。这里是《商业访谈录》,是一档由语言即世界工作室出品的深度访谈节目。你可以到公众号关注我们的工作室,获取更多信息。我们的公众号是语言及世界language is world,我们希望和你一起从这里探索新的世界。