整理 | 伊风
出品 | 51CTO技术栈(微信号:blog51cto)
刚刚,奥特曼亲自预热的那期播客,完整版视频终于上线啦!!!
这一次,OpenAI 也开始“学对手”了 —— 正式推出类似 Anthropic 风格的硬核技术播客内容。
本期嘉宾阵容豪华,全部来自 OpenAI 核心团队,首次系统揭秘 GPT-4.5 是怎么诞生的,深入探讨它在模型训练、系统架构和数据效率上的关键突破。
图片
不同于OpenAI以往的“营销味”,这个播客确实分享了前沿的训练干货,让我有一种想法:在DeepSeek的感化之下,他们也想摘掉CloseAI的帽子了!
据说,OpenAI的开源大招也提上日程了。今天外网AI博主Tibor转发了一个消息,OpenAI在为一个重磅的开源模型做听证会邀请。
图片
说回这期博客,我们先来看看参与成员。
图片
从左到右分别是:
- Sam Altman — OpenAI CEO。
- Alex Paino — OpenAI 的研究员, 负责了GPT-4.5 的预训练数据和机器学习训练工作。
- Amin Tootoonchian (@atootoon) — OpenAI 的首席系统架构师,负责系统层面和网络相关的整体架构。
- Dan Selsam — OpenAI 的研究员,参与了 OpenAI 的数学推理模型开发,主要研究数据效率和算法。
我们先给这波扎实的技术干货画个重点:
1.GPT 4.5两年前就启动了,一开始的目标就是做到比 GPT-4 聪明10倍。由于训练中涌现的意外问题,整个训练过程比预想的更为耗时。
2.大模型训练的难点,当从1 万块 GPU扩展到10万块GPU规模时,会出现各种“系统波动”,“低概率事件”会升级成“灾难级问题”。
3.GPT-4只用了5-10人规模就完成了训练,但GPT 4.5复杂得多。GPT-4o实际是在GPT-4.5 的研究过程中诞生的。
4.在 GPT-4 之前,我们基本还处于一个算力受限的时代;但从 GPT-4.5 开始,有些领域已经转变为数据受限。
5.现在最好的AI算法,距离人类的数据效率仍然有云泥之别。不过,随着数据开始成为关键资源,这方面的进步会不断追上。
6.研究员说GPT 模型训练有些“难以预料”,随着测试损失降低,模型更聪明了,但是“聪明在哪里”却很难提前知晓。
7.目前并没有发现更大的预训练模型和更强的推理能力间有明确关系,表现得更“跳跃”,只是某些维度提升得更快。
8.预训练模型其实是一个“压缩器”,即便模型权重很大,但“可执行文件”并不需要存储所有权重,这意味着数据本身可以用非常少的位数进行编码。
9.GPT 4.5证明Scaling laws依然有效,从哲学角度说它是“宇宙的属性”,训练更大的模型、它就更能“压缩”,也会获得更好的智力水平。
下面就来看看这次博客的完整内容吧,enjoy:
训练一个比GPT-4聪明10倍的模型,为啥这么难?
奥特曼:好吧,我们之前录这种视频,一般是为了介绍一个即将上线的新产品。但这次我们想做点不一样的事——聊一聊这个产品背后的研究工作。
我们发布 GPT-4.5 的时候,觉得这个模型大家应该会喜欢,我们自己也很自豪。但没想到大家比我们想象中更喜欢这个模型。
很多人会说:“我从没想过能跟一个模型有这种交流体验。” 它和 GPT-4 完全不同,不管是那些显而易见的提升,还是那些难以描述的微妙差异。
很多人都很好奇 GPT-4.5 是怎么造出来的。
所以今天我们请来了几个 GPT-4.5 核心团队的成员,一起来聊聊这个模型,也聊聊我们从中学到的东西,以及打造这样一个大模型需要什么。
我们不如就从这个问题开始吧:做出这样一个大模型,到底需要什么?
Alex Paino:很多人、很多时间,还有大量算力。
奥特曼:好,那到底需要什么才能做出这样一个模型(GPT 4.5)呢?
Alex Paino:我们这个项目大概是两年前启动的。当时我们知道会有一个更大的计算集群上线,远处就能看见这件事要发生了。
我们开始做很多工作,比如确定我们希望在训练中引入哪些功能,做了很多高风险的大型测试,制定了非常长远的训练计划,涵盖了从系统到模型的整个技术栈。
所以,从正式训练开始前,我们就经历了一整段冗长的准备过程,而训练本身则是更大规模的工程。
Amin Tootoonchian:我觉得这其实是一个从最初就由系统团队和模型团队共同推动的过程。直到我们真正确定好要训练的模型后,才启动正式训练。
而我们工作的节奏非常快,尤其是在利用最新上线的计算资源方面,这就导致我们几乎不可能做到百分百计划周全。
所以我们几乎总是带着一堆未解决的问题启动训练,不断推进中解决各种挑战。我们要不断追加算力、处理一些一开始没预料到的问题—— 即使我们在系统侧和模型侧都做了大量预测。
我们不断缩小“预测应该发生的事情”与“实际发生的事情”之间的差距。说到底,这是一个非常庞大的过程,最后阶段的执行尤其艰难,需要很多人、很多能量和长期的协作才能完成整个训练。
奥特曼:那你觉得我们对最终结果的预测和现实差距有多大?
Amin Tootoonchian:从系统角度来看,最开始我们通常距离预期还挺远的。
你总得面临选择——是推迟上线,直到更多问题解决,还是边训练边解决问题。
这始终是一种权衡,要尽量别不合理地拖延进程。但几乎总是有些问题在一开始是预料不到的。
整个过程的重点就是:尽可能解决我们已知的问题,并规划好训练流程,然后在推进中不断应对那些未知情况,比如训练是否顺利、会持续多久等变量。
Alex Paino:从最高层目标来看,GPT-4.5 项目一开始的目标就是做到比 GPT-4 聪明10倍。
这个设想是两年前我们就定下来的。当然在推进过程中,我们不断思考“能不能再好一点?”“会不会做不到?” 这是一条极其复杂的道路。但最终我们做出了一个模型,确实在有效计算量投入方面达到了“比 GPT-4 强10倍”这个目标。
Amin Tootoonchian:从执行层面看,这个过程当然远比我们最初预想的要耗时。
奥特曼:确实如此。
Amin Tootoonchian:我们的任务就是努力压缩训练周期,使之尽可能接近预期。
奥特曼:我有个二合一的问题:为什么从用 1 万块 GPU 训练,扩展到 10 万块 GPU,就会让问题变得难上十倍?
Amin Tootoonchian:问题太多了。其实,如果你观察得够仔细,那些在大规模才显著的问题,在小规模时就已经有蛛丝马迹。
只是到了大规模之后,一些“低概率事件”会变成“灾难级问题”,尤其是如果你一开始没预料到的话。
奥特曼:举几个例子?
Amin Tootoonchian:最常见的问题包括:基础设施不稳定、 故障率增高、故障类型复杂多样,我们能观察到的故障情况,连硬件供应商自己都没见过,因为我们调动的是一个巨大的样本池。
我们看到了资源执行中的全部统计分布——包括网络结构、节点间连接、甚至单个加速卡的表现。但这也是其中的美感:要想模型最终表现理想,几乎所有系统部件都必须按预期运行。我们的工作就是尽可能减少这种“系统波动”。
奥特曼:这个问题的下半部分:我们知道在“最前沿规模”上训练模型很难,但我也注意到,当一个任务不再位于最前沿时,它就会变得容易得多。
比如 GPT-4 的训练曾经几乎动用了整个 OpenAI 的资源。如果现在让你们组一个最小团队,从头重训 GPT-4,你们觉得需要多少人?
Alex Paino:我觉得现在要重训一个 GPT-4 级别的模型,大概只需要 5~10 人就够了。
Amin Tootoonchian:是的,我们确实是用这个规模训练了 GPT-4。
不过 GPT-4.5 是另一种情况——它背后有更复杂的历史,也有更多人参与,是完全不同的一次挑战。
Alex Paino:不过,既然我们已经完成了 GPT-4.5,整个技术栈其实已经提升了很多。我们也确实在 GPT-4.5 的研究过程中重新训练了一个 GPT-4 级别的模型,也就是 GPT-4o。
它用了 GPT-4.5 的很多技术积累,但这次的训练团队规模小得多。
奥特曼:那 Dan,你怎么看?为什么大模型训练这么难?
Dan Selsam:我觉得做任何“新的事”本来就难。哪怕后来别人也做成了,这事也会立刻变简单许多。
最难的是:你在最开始,必须有坚定信念去做一件没人验证过的事。一旦你知道“它是可能的”,那简直像开了金手指。
Alex Paino:确实。我们其实是在把 GPT 的预训练规模往上扩了整整 10 倍。
在这个过程中遇到的问题有很多是你事先根本想不到的。
继续Scaling没有“硬性上限”,重点是提升“数据效率”
奥特曼:那我们要继续扩展 10 倍、甚至 100 倍的训练规模,还需要什么?
Dan Selsam:数据效率。
奥特曼:什么意思?
Dan Selsam:Transformer 和 GPT 的一大优势是能非常高效地吸收数据:它能提取信息、能压缩和泛化 这几乎是它的核心特征。但也有个“天花板”——它所能从一段数据中提取出的“深层洞见”是有限的。
所以当你的算力一直增长,而可用数据量增长很慢时,就会出现“数据成为瓶颈”的问题。这时就需要在算法层面有突破:用更多算力,从同样数据中“学得更多”。
奥特曼:除了数据效率,你觉得还需要什么,才能继续扩展?
Amin Tootoonchian:从系统角度看,每一代 GPT 的训练其实都代表着我们在基础设施上的大规模升级。
GPT-4.5 之所以需要动这么多人、改这么多东西,正是因为它本身的模型规格发生了质变。
我们根本不可能用 GPT-4 的系统架构直接来训练 GPT-4.5。
Amin Tootoonchian:比如说状态管理,我们对这部分的处理方式也发生了改变。因为要扩展更多算力,而这些算力并不都集中在一个集群里,所以我们不得不采用多集群训练。你可以想象,这是许许多多不同的工作流,需要在极短的时间内拼接在一起,才能完成这件事。
当我们计划再做一次 10 倍的突破时,有些我们之前明知存在的问题,这次为了加快推进节奏选择跳过了——但下次就必须解决,没有回避的余地。
这些技术选择正是让“打造完美系统”的时间线变得更长的原因。我们一直都在妥协:在“追求完美”与“尽快搞出来”之间寻找平衡。
Amin Tootoonchian:系统本身并不是一个最终产品,它是为了支撑真正的产品存在。
所以如果我们要做下一个 10 倍突破,对我来说最重要的是“容错能力”——但不是传统意义上的容错,而是与工作负载协同设计出的容错系统,这样我们就不用再承受庞大训练任务所带来的巨大运维压力。
我们以前的系统,在训练 GPT-4.5 的时候,已经到了快跟不上节奏的极限。
奥特曼:你知道 GPT-4.5 的训练过程中,有多少百分比的训练步骤因为某些组件故障而失败了吗?
Amin Tootoonchian:我现在脑子里没有准确数字。但通常来说,问题是这样的:新一代硬件刚上线时,它的一些故障并不是大家一开始就完全理解或研究透的。
我们一边推进训练,一边解决这些问题。
Amin Tootoonchian:当然,训练早期的故障率会非常显著。
但也很有可能是:当我们找到了问题的根源并修复之后,故障数量会大幅下降。
这几乎是训练的常态。我们总是边干边学。
Amin Tootoonchian:你可以把它看作是在做系统“清洁工作”或“基础问题诊断”。
一旦这些问题搞清楚了,系统稳定性就会大幅提升。但在早期训练阶段几乎总是最痛苦的——我们在探索新故障模式、新硬件带来的影响,同时还得继续推进进度。当然,到了后期,故障率会显著降低,整体运行时间稳定性也会上升。
但问题就在于:你无法提前预测新一代基础设施在“初期阶段”的具体表现。如果你只为“稳定阶段”做设计,那在早期训练里可能就会遇到非常糟糕的可用性问题。
奥特曼:我们都知道推理类模型是未来发展的关键部分。
但如果暂时不谈推理,只讨论“经典预训练模型”这条路线:假设我们拥有无限的 GPU、无限网络资源、无限电力,但依然受限于我们当前的系统问题,比如容错机制还没搞定、数据也就这么多等等。
如果每一代 GPT 的数字代表一个“百倍飞跃”,那你觉得现在我们用现有资源,最多能训练到 GPT 多少级别?比如 GPT-5.5?
Alex Paino:从机器学习和算法角度讲,我觉得我们还没遇到什么“硬性上限”。
我们现在才刚刚开始真正挖掘“数据效率算法”的潜力,也刚刚找到更有效利用现有数据的方法。
有趣的是,在 GPT-4 之前,我们基本还处于一个算力受限的时代,研究重点全压在怎么搞到更多算力。
但从 GPT-4.5 开始,有些领域我们已经转变为数据受限,这在某些数据维度上是个重大转折点,也让这一方向的研究变得更加令人兴奋。
奥特曼:这是一个颠覆性的变化——我觉得整个世界现在还没真正意识到:我们已经不是在“算力极限”上打造最强模型了。这跟我们过去一直以来赖以生存的技术现实,完全不同了。
修bug修到崩溃,一个最不起眼的bug贯穿模型训练的40%
奥特曼:那你们在训练 GPT-4.5 过程中,有什么最有意思的 ML 方面的发现可以分享的吗?
Amin Tootoonchian:我不太确定我能分享多少细节,但我可以说:我们最有价值的经验之一就是:当模型没有沿着我们预测的“性能斜率”前进时,我们必须搞清楚为什么。
Alex Paino:对,我觉得最让我意外的一点是:我们在模型端做的很多工作,在训练过程中体现出有的能很好扩展,有的却不能。
这些我们很多都是在实战中才发现的,这个过程确实让我们学到了很多。
Dan Selsam:我觉得 GPT 模型训练最具代表性的两个特征就是:你可以预测测试损失(test loss); 而且它的扩展性非常“神奇”——测试损失降低,智能就会上升,体现在一系列不可思议、难以预料的方面。
奥特曼:你是这方面的“极致信徒”吗?你完全相信这个关系成立?
Dan Selsam:可以这么说吧。我们在 GPT-4.5 上做过重新测试,发现模型拥有很多极其细腻的能力,这些都不在任何人的预测清单里。
我们唯一的信念就是:这个模型会更聪明,但“聪明在哪里”其实很难提前定义。可一旦你上线使用,就会发现它在很多细微的地方都变聪明了—— 它的常识更强、理解更细腻、语境处理能力也更好了。
这就是“多出那一点点 test loss 带来的神奇魔法”。我觉得这种“随着 test loss 降低,能力变强”的扩展规律依然是成立的。
奥特曼:那训练过程中有没有什么最积极、最让你感动的瞬间?虽然过程充满痛苦,但总得有个美好记忆吧?
Alex Paino:我有一个瞬间印象挺深的。
我们在训练期间还持续在调模型的 ML 层设计,而且训练中期的一些改动居然效果比预期好很多。那一刻我们非常激动。
Amin Tootoonchian:对我来说,这应该是我投入“IC 时间”(独立贡献者的时间)最多的一次训练过程。
我们一边训练,一边还在并行搭建系统,为了提速而极度并行地推进各项工作。我们都相信这些努力会有结果——只要撑过某个性能瓶颈,模型就能恢复可训练性,否则训练时间会无限拉长。我们有明确的计划,每个人都在执行。但过程真的比我预想的难得多,时间也拖得更久。
最让我感动的是:当几个关键问题被解决后,性能突然跃升了一大截。那一刻你能感觉到整个团队的氛围都变了。
奥特曼:你还记得那个瞬间吗?
Amin Tootoonchian:当然,大家的精气神都不一样了,情绪被点燃了,动力更足了。那种感觉很神奇。
Alex Paino:我们的任务状态追踪器也从之前的“卡壳”,变成了“进度条疯涨”。
Amin Tootoonchian:是的,这种状态变化对士气的推动太重要了。还有一点我特别想提的是:ML 端的协同并没有在模型上线那天就结束。
很多本来打算“上线后再修”的问题,大家在上线后也持续在优化。每个人都主动出手,不再是“我做完交接就不管了”。团队协作的这种精神,非常强大。
Dan Selsam:我们刚才一直在强调这个训练过程多难、预测多不准——但其实背后是巨量的高质量规划。
Amin Tootoonchian:没错。
Dan Selsam:你们要不要展开讲讲?
Alex Paino:这确实是我们有史以来计划最充分的一次训练。我们在正式训练前就已经筹备了差不多一年时间,做了多轮超大规模的风险测试(de-risking runs)。
我们非常小心地安排每一个变更,始终从“高置信度、已验证配置”出发——
比如 GPT-4 这种我们非常熟悉的配置,在这个基础上一点点迭代、加入新功能,
而且每次都要认真评估每项变更的可扩展性。
不是说看到一个功能在小规模下有效果就够了——我们要确保这个效果在大规模下也同样成立、不会衰减。很多东西在小模型上看起来不错,但放大之后就失效了。
所以我们整个流程都极度谨慎,同时也在不断完善“扩展法则(scaling laws)”的方法论。
这也是我们未来训练更多 GPT 模型的核心参考。
Amin Tootoonchian:你刚才说的那个有趣瞬间,让我想起了另一个特别有意思的片段。
这个故事有点“Torch Do Sum”(指bug既基础又莫名其妙)的味道(笑)。你可以想象,我们上线一个这么复杂的系统,它肯定会有 bug——各种各样的 bug,这是“默认值”。
但同时我们也要继续推进,要保证整个训练流程是在正确的轨道上运行。虽然我们非常清楚有些 bug 的确很严重,但我们也构建了很多系统,来帮助我们区分问题来源:
- 是硬件故障吗?
- 是哪类硬件的问题?
- 是数据损坏?
- 还是某种潜在的机器学习 bug?比如我们代码里的某种错误?
当时,我们手上同时有好几个开放的“未解线程”,都有不同的症状,都是模型正确性相关的问题。我们当然也找到了一些 bug 并修复了它们。
我们一度陷入了一个状态:这些看似不同的问题,到底是多个 bug 造成的,还是其实只源自一个 bug?所以我们坐在会议室里,每个人投票:你觉得是哪一个因素导致了这些问题?
结果——真正的那个 bug 是得票最少的选项!
那个 bug 是在 torch.sum 函数中的一个非常简单的加法实现错误,位于上游代码中。特别搞笑的是:我们其实主要是在用 Triton 和 XLA,但在某些边缘情况、某些无关紧要的算子上,我们就会回退到 PyTorch 默认实现。
而其中一段数据刚好触发了 PyTorch 的这个错误路径,造成了一个非常低频的 bug,具体表现是非法内存访问,内存偏移计算错了。
最精彩的是:当我们工程师找到这个 bug 时,他说:“我定位到了,是这一行代码。我们打个补丁看看是不是能解决所有问题。”
结果——所有奇怪的 bug 全都解决了。
这些症状之前看起来完全不一样,结果源头是一个代码路径。我们当时还把 Slack 里几个“多假设讨论频道”都重命名成了“单 bug 理论频道”,那一刻真的特别有趣!
奥特曼:这个事是训练流程中什么时候发生的?我记不太清了。
Amin Tootoonchian:其实这个 bug 从训练早期就一直存在,大概覆盖了整个训练的 40%。
奥特曼:你们还记得是谁发现的吗?
Amin Tootoonchian:我记得当时我们在分析一连串的 kernel 执行序列,其中第 2 个 kernel 总是触发非法内存访问。
那是一个我们写的非常复杂的 kernel,大家都以为 bug 肯定在里面。于是很多很聪明的同事,一行一行看这个 kernel,最终确实找到了 bug,修复之后解决了一部分问题,但还有一些 bug 仍然存在。
结果有一天,有个工程师注意到:喂,这个 kernel 的输入之一,居然来自 PyTorch 的一个很偏门的代码路径。而我们刚好触发了这个几乎没人会触发的代码分支。
于是他说:“是这里有问题。” 我们没有什么复杂验证手段,只能“修个补丁,看崩溃还在不在”。
结果一修所有崩溃都没了。
我们才知道:这个超低频 bug,其实一直在造成非常严重的隐患—— 大概每 100 次、甚至 1000 次训练步骤才崩一次,容易被忽略。
但我们有个信条就是:不该让任何已知问题在训练中混过去。所以我们坚持追查到底。
这个故事的重点就是:坚持不放弃,哪怕是一个微不足道的 bug。
预训练人员,在正式训练后还有啥工作?
奥特曼:Alex,我知道大家可能能想象你训练前的生活很忙,但训练开始后,你的日常是什么样?是在那儿“盯着 loss curve (损失曲线:模型在训练时会不断试图最小化损失函数)看”吗?你怎么安排?
Alex Paino:对,真的有很多时间都在看 loss curve(笑),我们大家都干了很多这个事。
当然除了看 loss,还有很多工作:
- 和系统团队一起协作,把没赶上上线的一些改进尽快合入;
- 持续监控训练过程,看有没有什么异常趋势,比如某些统计指标走偏了;
- 机器学习这边也不断在想办法优化训练效果;
- 数据这块上线之后稍微轻松一点,但其他方面仍然很忙。
Amin Tootoonchian:我们在 ML 层面也承担了很多模型正确性的判断任务。
你可以想象,早期的信号往往非常嘈杂,有时候感觉就像在“读茶叶渣”预测未来一样(笑)。
有些问题,你要等很久才能验证到底健康不健康——但我们有责任提前判断。
奥特曼:那你们碰到“虚惊一场”的概率高吗?就是看上去很糟,但其实没事的情况?
Alex Paino:这种情况相当常见,我觉得大概有一半时候是虚惊吧。我们这群人真的挺焦虑的,所以我们倾向于“盯得更紧一点”。
人类的“数据效率”碾压AI,算法与人类仍有“天文数字”之差
奥特曼:好,我来几个快问快答:如果你能在下一次大训练前解决一个 ML 问题,你最希望搞清楚什么?
Alex Paino:我最想知道的是:在数据有限的特定领域里,我们该使用什么算法。
这个问题很大,答案也很复杂。
奥特曼:那如果你能对现有硬件做出一个改变,比如发明一种新的网络结构或者芯片架构,系统瓶颈现在卡在哪?
Amin Tootoonchian:我希望是在传输层或网络层做改变。现在很多错误,其实是可以在“应用层之下”就处理掉的。
我希望网络传输能自己干好自己的事,别让我担心它的带宽、可用性或者中断问题。
奥特曼:那这个方向上,现在有没有什么比较 promising 的方案?
Amin Tootoonchian:有的。
奥特曼:那我们线下聊(笑)。接下来两个问题问 Dan:我们刚才谈到“数据效率”,人类虽然在很多方面不完美,但我们学得超级快。
你觉得,我们现在最好的算法,距离人类的数据效率还差多远?
Dan Selsam:这个问题很难“苹果对苹果”地比较。
奥特曼:那你就凭直觉说说吧。
Dan Selsam:如果按语言理解来说,那差距是天文数字级别的远。
奥特曼:十万倍那种?
Dan Selsam:对,差不多就那个量级吧。
当然取决于你怎么定义“信息单位”,比如你要是把人类视神经接收的每一位像素都算上,那算法上我们根本还没搞清楚怎么从这些信息中抽象到“人类级别的文本理解”。
所以总结一下——我们算法上离人类还有很远的距离。
奥特曼:那第二个问题:你觉得我们目前这条技术路径(比如 transformer +大数据训练)未来能实现人类级别的数据效率吗?
还是说这条路根本到不了,也没必要去到?
Dan Selsam:我觉得过去几十年,深度学习的核心优势一直是算力效率。
除了数据和算力的增长,真正神奇的是:算法的微小进步可以很好地“叠加”。
世界各地的研究者会陆续发现某个技巧能提升 10%、20%,然后这些技巧可以像“积木”一样组合起来。
但我们在数据效率这块,还没有出现这种“全球范围的 mobilization(大规模动员)”。
主要原因是:之前不值得做这件事——数据够多、算力才是瓶颈,搞数据效率意义不大。但现在我们进入了一个新阶段:数据开始成为关键资源,我们也会开始积累这方面的胜利:10% 这里,20% 那里,一步步前进。
我觉得我们现在去预测是否会撞上某个“上限”,其实有点武断。毕竟我们还没有任何确切证据表明会撞墙。但可以肯定的是,人脑的运行机制和我们现在做的任何微调算法都完全不同,所以我们必须持一点保留态度。不过我仍然认为,我们有很多理由保持乐观。
预训练Scaling带来了强泛化,但不一定带来强推理
奥特曼:下一个问题给你们三个,回答可以是“是/否”或者补充解释:人类未来会不会进行一次同步使用一千万张 GPU 的预训练任务?
Alex Paino:我不确定那会不会是个“预训练”任务,但我觉得一定会有那种规模的训练任务。
奥特曼:也就是说,会有“一千万张 GPU 同时工作的训练任务”?
Alex Paino:对,虽然可能和我们现在的训练方式完全不同,但一定会有某种形式的无监督学习达到那种规模。
Amin Tootoonchian:我觉得我们可以称之为“半同步(semi-synchronous)”,那个规模听起来很诱人,我希望能看到。
奥特曼:你刚才用的是“半同步”这个说法,是吧?
Amin Tootoonchian:对,我觉得不会是完全同步的——毕竟自然法则摆在那里,不可能完全违背。
Dan Selsam:我觉得更可能的是一个“去中心化”的形态。肯定会有一千万张 GPU 一起工作在某个 AI 系统上,让它学习和执行任务。但就像大脑的不同部分不会同时沟通一样,它们可能不会彼此时时通信。
奥特曼:合理。那么我们有没有发现:更大的预训练模型和更强的推理能力之间,有什么明显的关联?
Alex Paino:我们观察到,更好的预训练往往可以整体抬升模型的智能水平,而且也有助于泛化能力的提升。而推理能力呢,它可能表现得更“跳跃”一些,或者说某些维度提升得更快。
这两者其实是很好的互补。
奥特曼:那我再追问一点:你们有没有觉得有点奇怪——为什么预训练的泛化能力那么强,几乎能学到所有东西;但一旦我们专门教模型“推理”,它却往往只在一个任务上表现突出?
Alex Paino:是的,这点挺有趣,但也不意外。
因为你看,我们训练预训练模型的时候,用的是非常广泛、多样化的数据,目标本身就是“覆盖尽可能多的领域”。但推理模型,尤其是强化学习类型,往往是在非常受限的环境中训练,你很难获得稳定的奖励信号和广泛的训练场景。
Dan Selsam:我同意,而且我觉得还有一个关键差别是:预训练本质上是一种压缩过程。
压缩意味着模型要识别数据中的联系、类比和抽象结构。而推理是对某个具体问题的处理,它有一种“思维的技艺”。
当你训练模型去压缩跨领域的数据时,其实是在学更高层次的抽象,这正是预训练带来的“广义智能”。
系统扩展的关键:不断优化联合设计、更好地分配资源
奥特曼:说得好!我临时想换个问题:未来系统扩展的主要瓶颈会是什么?芯片?处理器?内存?网络?还是电力?
Amin Tootoonchian:系统的美妙之处在于:如果你进行联合设计(co-design),那么工作负载其实可以适应你所构建的基础设施。
所以我们不能简单说“网络就是瓶颈”或“内存带宽是瓶颈”——我们可以调整资源需求分配,去构建一个更加均衡的系统。
当然,预训练和推理阶段的答案可能也不同。
不过话说回来,内存越多肯定越好。这是一个很难给出“单一答案”的问题。
奥特曼:那说到这个,在准备 GPT-4.5 的训练任务时,你们的团队在模型规格设计上合作密切吗?
Alex Paino:非常密切,甚至到我们希望用的矩阵尺寸都要一起优化。
在这个项目中,从训练前的六到九个月开始,我们就在做系统和模型之间的深度协同设计。我们还专门做了一次大规模 de-risking run,目标就是验证系统-ML 的协同在规模化训练中是否有效。
我觉得这是我们第一次在“协同设计”上投入这么大的精力,而且非常关键。
Amin Tootoonchian:没错,这是我们第一次真正意义上的系统-模型联合架构设计。
关键不是“微调哪个部分”,而是你必须主动让系统去“长出”你想要的性质,这些特性不会凭空出现。协同设计的过程决定了整个架构的构成方式,是系统侧与模型侧之间的连接桥梁。
Amin Tootoonchian:理想情况下,我当然希望系统和模型完全解耦,各做各的,但现实中有时你必须为基础设施的约束去做出结构妥协。
很多时候我们追求的其实是一个“对称型系统”——通信均衡、资源分配合理。
在这种情况下,协同设计就是我们最有力的工具。
奥特曼:那你觉得我们离你理想中的系统还有多远?你有没有那种“我终于满意了”的时刻?
Amin Tootoonchian:我们离理想还远得很,说实话。但这正是系统建设的乐趣:你总有一个理想蓝图,然后努力逼近它。我们不是为了空谈理论,而是想尽办法让它变得现实,尽量贴近那个理想目标。
说实话,这可能是做系统最令人兴奋的阶段了。你能提出假设,然后很快验证自己的设计是不是对的。过去,我们做出一个“优雅系统设计”,要靠时间慢慢验证;现在,我们手上有算力、有目标、有问题,我们可以迅速去验证自己的决策是否有效。
奥特曼:那你们团队在规划一次训练时,会有多少精力放在“系统设计约束”上?
Alex Paino:非常多。我觉得从 GPT-4.5 开始,我们在模型架构方面就已经进入一个新阶段。
我们不断有新的探索,继续推进协同设计,也在考虑如何为下一代硬件预留空间。
其实现在已经有不少令人振奋的成果了。
奥特曼:好,换一个问题:为什么无监督学习有效?
Dan Selsam:因为它本质上是“压缩”。你可以用一个更哲学的理论来解释:Solomonoff 归纳法。
它认为,一个理想智能体不知道自己身处哪种宇宙,所以它会考虑所有可能的宇宙,其中越简单的宇宙被赋予更高概率。它是完全贝叶斯的,每次获取新信息时都会更新自己的信念。
而预训练模型在做的,其实就是在试图找出一个“最短程序”来解释人类世界中的所有数据,这是一种对理想智能行为的近似。
奥特曼:那为什么“预测下一个 token”可以实现这种压缩呢?
Dan Selsam:这个问题其实挺微妙的。统计学上曾经有个类似的悖论:为什么深度网络能泛化,而它们看上去并没有压缩数据?
你看,传统统计里,模型小、数据多,模型能拟合数据,说明它“压缩”了信息。
但现在的预训练模型本身非常庞大,甚至跟数据量是同级别的, 那它到底是在压缩、还是只是记忆?这就是核心谜题。
Dan Selsam:当然,也有批评者会说,预训练只是记忆和插值,是表层的、不智能的。
但其实有一种角度可以让我们看到:预训练模型其实是一个“压缩器”,虽然是不那么直观的方式。
这个思路叫做 Prequel Compression(前向压缩)。它的核心观点是:如果一个模型能在训练中学得很快,就说明它其实是个优秀的压缩器。
即便模型权重很大,但“可执行文件”并不需要存储所有权重 —— 它可以从零开始预训练出一个“解压器”。这意味着数据本身可以用非常少的位数进行编码。
所以从这个角度看,预训练确实是一个非常有效的压缩过程,也正是它能带来智能的原因。
奥特曼:你们还有什么想补充的吗?
Alex Paino:没有了,很精彩。
Amin Tootoonchian:我也是,谢谢你。
再谈Scaling Laws:为何有效、为何这是符合宇宙规律的
Dan Selsam:我想顺便提一个我们之前没提到的点:“度量指标的选择”是一个极其重要的学科。
你在做 scaling laws(扩展法则)和机器学习实验时,最后的结果高度依赖于你选用的度量方式。
奥特曼:你具体指什么?能展开说说吗?
Dan Selsam:你要不要来讲讲?
Alex Paino:我们说的“度量”,其实主要是:你在哪个测试集上去评估模型的“困惑度(perplexity)”。
Dan Selsam:是的,如果你光看 perplexity,很多人会误以为我们是在看什么“大学测试题”。
Alex Paino:对,我们要不要解释一下什么是 perplexity?
Dan Selsam:值得说说。
我们总是很想用人类可读的测试来评估模型的智能——但如果你这么做,可能反而会鼓励模型靠记忆取胜,而不是变聪明。
市面上几乎所有测试题,在互联网上都能找到类似版本。而如果你训练数据包含了整个互联网,那模型考这些题其实就不算本事了。
所以目前业内更主流的做法是:看模型在一组“高质量、未见过的数据”上的压缩效果。但就算这样,如果你对这个“held-out 数据集”选择不够严格, 而它又跟训练集太像,那优化训练算法只会让模型更容易记忆,从而假装自己变聪明了。
Alex Paino:是的,我们不想只测“记忆能力”,我们追求的是泛化能力。
特别是“分布外泛化”(Out-of-distribution generalization)。所以我们对验证集的要求非常高:哪怕它和训练集有一点点重合,都会毁掉我们的 scaling laws 分析。
这点特别关键。
奥特曼:那你觉得目前我们手头最好的测试集是哪一个?
Alex Paino:我们自己的内部代码库。我们知道它不在外网,很适合当验证集。
奥特曼:这个验证集也被用于很多实验吧?它还是最稳的吗?
Dan Selsam:是的,依然是最有效的工具。我们甚至开玩笑说,一个模型的“灵魂”就藏在它压缩“内部代码库”的能力里。
奥特曼:这听起来像是一种“自指的、递归的哲学问题”……
Dan Selsam:一个模型如果在“内部代码库”上的 loss 很低,那你就能预测它未来会有怎样的表现。这甚至可以告诉你,它在“哲学系研究生”的眼中,会展现出怎样的细腻理解力(笑)。
奥特曼:确实不可思议!说到这里,我想问个“收尾大问题”:整个 GPT-4.5 的训练,投入了巨大人力、时间、金钱……
它其实就是在验证一件事:Scaling Laws 真的有效吗?能走多远?
现在看来,它确实有效,而且可能还能继续有效很久。我已经把 scaling laws 当成类似“量子力学”那样的规律接受了—— 但我还是搞不懂,为什么 scaling laws 是宇宙的属性?
Amin Tootoonchian:我可以先说一点。
Dan Selsam:从哲学角度讲,“压缩越多,智能越强”这件事是有坚实理论基础的。但问题在于:为什么你训练更大的模型、更久,它就能“压缩”得更多?我最喜欢的一个解释是:这个世界的数据中,有用的概念其实是稀疏分布的,而且这是一种幂律分布:比如最重要的前 100 个概念,只在大约 1% 的文档中出现。这说明世界是“长尾”的。
奥特曼:那是不是说,如果我们能构建一个完美的数据集,再配上高效算法,Amin 就可以回家退休了?
Dan Selsam:也许可以(笑)。这意味着,只要你在“数据选择”上变得更聪明,就有可能获得指数级的算力节省。
但现实中,我们还是主要在“被动地捞数据”。如果你只是海量采集数据,你每扩充 10 倍的训练规模,可能只能挖掘“尾部新增”的几个知识点。而那个尾巴还在不断延伸。不过——正如你说的,我们确实有可能用更聪明的方式去挖它。
奥特曼:我觉得我们就停在这吧,非常感谢你们。太棒了,很有趣!
想了解更多AIGC的内容,请访问:
51CTO AI.x社区
https://www.51cto.com/aigc/