原创 孔某人 2025-01-23 15:31 北京
正如C语言中没有寄存器
副标题:正如C语言中没有寄存器。
C语言编译后的二进制代码会使用CPU寄存器,但C语言的层面没有寄存器的概念,也无法直接操作。
前言
本文默认只谈文本模态,在多模态下结论是不同的。
本文是讲我目前的一个认知,相对更抽象。讨论的时间尺度也与之前1-2年的范围不同,是未来5年的尺度。
1、回顾Token
本节是一些token相关的背景知识简介,熟悉的人请跳过。
1.1、Token与语义
从2023年在知乎关注我的读者可能有印象,我一再地提过一个想法:LLM的Token粒度并不是一个好的表达语义的方式,基于Token的学习方式对于学习语义来说效率也比较低。我在2023年有3篇文章来专题正经的讨论这个点和一些可能的方案。
人的思维明显是分层的,我之前常举的一个例子是:你并不是基于学习在每个路口如何打方向盘,来学习如何从北京开到广州的。这里的每个路口如何打方向盘就是一个过于细粒度的单元,也就是对应到这里的Token。
我相信并不是只有我有这样的想法,但一年半过去了,我们至今仍未看到任何与Token不同的更接近语义粒度的建模方式。究其原因,我们并没有找到“更好地”表达语义的方式,而很多方案在与直接学习Token的scale能力对比时,并没有带来显著的提升,甚至还下降了。
相关阅读:(文章在知乎)
Rethinking LLM(1):Token 与 语义 的Gap 2023.5
Rethinking LLM(3):语义层面 探索的一些想法 2023.6
探索LLM的语义loss与模型设计(2) 2023.12
1.2、现在的Token
之前讨论Token问题的人本就不多,2024年就更少了,大家都已经觉得它够了。随着推理硬件性能的提升和各种优化方式的出现,token粒度过小对于性能的影响已经不那么大了。
从prompt的角度来说,在2024年5月时,我还会把“避免在CoT过程中引入难token”作为写prompt时的建议。但现在我已经不会给这样的建议了,都靠模型进行自己思考和prompt重新叙述就好了。对于o1模型来说,token级别的prompt优化注意事项已经可以扔了,甚至连语义Step的安排考量都已经逐步弱化了。
Token正在从LLM用户的心智中逐渐消失。
对于炼丹团队来说,现在更在乎的也是语料数据了,对于Token的关注也更多是在一些特殊Token上,但这些特殊Token与其说是Token层面,不如说是Step/Message层面的。
2、推理期计算LLM
从o1-preview到现在已经有4个月了,各方对于推理期计算范式的看法仍然是比较多样的。例如最近发声的追求AGI的MiniMax CEO表示他们还没有看清o系列模型的未来,所以还没有去投入。
我个人则是在过去的几个月里,对于推理期计算LLM范式的评价逐渐变高,甚至在这两天对该范式的评价又有一个跃升。而这也就是本文的写作契机。
这类范式目前并没有一个很好的名字,本文将它们称为推理期计算LLM,是指明显会在回答前进行一个思考过程的模型。推理/reasoning也不是一个好的叫法,Anthropic CEO最近就说推理跟Agent这个词一样没有意义(过于宽泛导致几乎在表达中不提供信息量)。
2.1、推理期计算LLM 的意义
在我看来,目前推理期计算范式有2个主要价值:(按重要性降序排序)
更好的分布外泛化能力。更能够适应用户的具体场景,有效果提升,在同样效果下模型训练成本也大幅下降。
与现阶段的高质量数据合成方式更匹配,训练总体成本更低。并且更适合未来为具体场景特化模型(如RFT)。
现阶段的LLM模型技术升级面对一大核心问题是:现存的可低成本获取的高质量数据【已经】几乎用完。并不是不少人描述的高质量数据快要用完。现在对于什么算是高质量数据也更清晰了:能进一步提升模型能力的数据才算是高质量的数据。
与不常关注LLM发展的人认知不同,现在的前沿LLM模型能力其实已经很接近人类在短时间内思考的能力,现在大部分人类未经深思熟虑或者没有专业加成下记录的数据对于模型的能力提升没有帮助,甚至有害。之前总有人担心LLM新合成的大量数据会“污染”互联网数据,导致模型无法提升。其实即使没有这些LLM生成的内容,光凭人类的数据基本也很难让模型进一步提升了。模型可以从新的数据中学到新的信息,但能力没有提升。
所以如何构造能让模型能力进一步提升的数据就成了现阶段LLM发展的关键点。现阶段能够大批量合成的高质量数据有两类:数学和代码。数学是因为有Lean的出现能够进行自动验证,代码是因为可以通过沙盒执行对其成功与否进行测试。这两类数据人类也可以生产,但只有这种自动化的方式才能生成足够多的足够准确的数据。这种自动化的生产数据的“质量”要明显高于招大量专业人员来撰写的结果,成本也更低。说白了也就是因为这方面AI比人要认真得多,但前提是需要自动的结果验证工具。
由于高质量的人类专家数据并不够多,质量上很难说足够高。所以现在很多研究者选择AlphaZero的思路,让模型自己探索出解决问题的方式,而不是靠人工指导模型应该如何解决问题。而目前的这种探索的方式大多是一种逐步探索过程,这也与推理期计算范式一致。这实际上让模型学习解决问题的方式,而不仅仅是记住答案。相比之下,没有思考过程的传统LLM更接近于直接记住探索的经验。
让模型能够“在新环境基于新信息来重新分析问题”,相对于“让模型拥有一个庞大的经验库”是更有效的泛化方式,模型能够更好的举一反三。而代价只是增加了推理期的成本,而且这个成本还是由模型的使用者承担的,不必预先为不存在的用户投入巨大的前置成本。
在一些领域中,推理期计算早就被发现是一种有效的低成本优化效果的手段,Noam Brown之前的学术生涯中就做过不少这类领域。
相关阅读:
Parables on the Power of Planning in AI: From Poker to Diplomacy: Noam Brown
https://www.youtube.com/watch?v=eaAonE58sLU
MIT EI seminar, Hyung Won Chung from OpenAI. "Don't teach. Incentivize."
https://www.youtube.com/watch?v=kYWUEV_e2ss
2.2、如何训练的
我们并不清楚o1是如何训练的,虽然外部已经有了不少猜测,例如本节后附材料中的《Speculations on Test-Time Scaling》。
从reward信息的介入时间来说可以分为三类:
Value model在token级别介入,pretrain和SFT也是这类
Process-supervised Reward Model (PRM) 在Step级别介入
Outcome-supervised Reward Model (ORM) 在整个回答产出后介入
即使对于ORM来说,在很多领域都做不出完美的ORM,靠目前阶段能做出的ORM在实践中容易被reward hacking。所以不少领域专家转而推崇那些可以定义完美ORM的领域,例如数学和代码。
而对于PRM来说,如何判定中间的状态的好坏就更加困难。连ORM都搞不定,PRM就很难完善,容易被reward hacking,也容易过度限制了模型的探索空间。并且还减少了让模型学习自省和改错的机会。
Token级别的value model很难事先准备,在RL过程中是可以进行联合训练,但由于各种原因效果也未必好,DeepSeek的GRPO就是放弃了value model。
现在流行的一个趋势是直接使用ORM进行RL,如何求解prompt的问题完全靠模型自己探索。当然其实LLM并非从零开始,这与传统RL是不同的。LLM在pretrain阶段学习了大量人类语料,可以使用很多人类常用的方式,包括反思过去思考历史、识别过去犯的错误、从一种思路跳到另一种更可能的思路……而整个训练过程对于模型的要求就是达到reward model所要求的目标,方法不限。在这个意义上,推理期计算LLM出现各种人类会有的思考模式并不奇怪,DeepSeek R1报告中所列的那个思考过程中模型自己的Aha moment也属此列。在这个角度上,我们就更能理解为什么Apollo Research AI安全报告中o1的问题最大了,因为它可能就是被这么训练的,“只要结果,方法不论”。
以我个人的认知来说,我并不觉得只能走完全没有任何结构和先验设置、并只能针对于有完美ORM的领域。目前阶段的算力仍然是瓶颈,很多领域的效果还较差,不完美的ORM也是有价值的。(后续会在4.3节继续讨论。)在某些类型的问题中,人工设计的Step和PRM我认为仍然有可取之处。当然可能它们5年之后都不再需要,但未来的2年内可能会很有用。
相关阅读:
对Apollo Research AI安全报告的解读与评论
Speculations on Test-Time Scaling
https://www.youtube.com/watch?v=6fJjojpwv1I
Kimi 发布的多模态推理模型 k1.5?中 Flood Sung 的回答
https://www.zhihu.com/question/10114790245/answer/84028353434
DeepSeek R1 技术报告
https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf
DeepSeekMath 技术报告
https://arxiv.org/abs/2402.03300
2.3、并非简单的Policy Model
LLM在pretrain阶段就学习了人类的思考特征,而且这里能对实现ORM要求的目标有帮助的能力还会被RL过程进一步加强。实际上我们得到LLM模型有一些不同的能力:
它能够自我反思和改错
它能够识别当前探索路径是否已经希望不大,是否应该跳到其他探索路径上
如果只把LLM看成是逐个生成Token的函数,那它对应到RL中的policy model。但很明显,上述两个能力并不符合我们对传统Policy Model的认知,其中第二个能力看起来包括了value model或PRM的功能,而第一个能力似乎没有传统对应物,因为一般的RL建模中没有犯错和改错。当然这两个能力并不是在token序列空间视角中的,它们是语义空间中的能力。
在语义空间中,LLM包括:基于当前路径继续探索下一步、反思和改错、比较不同探索路径并能适时切换……等能力。这有点像是一个A*算法并附带了各种模型和策略。
虽然我们是在token空间中训练的LLM,但似乎它在语义空间中也学到了一种探索的能力,而且这个能力还并不是很简单的范式。有人把推理期计算LLM算作in-context RL,从这里确实能感觉到一些。
3、语义计算机
3.1、语义程序
回顾一下前文和历史,我们有几个相关的信息:
希望寻找一个更好的语义空间表示方式,但没找到
推理期计算LLM在语义空间中形成了某些能力,并能使用一些语义的推理模式
过去提到的一些in-context xxxx的有点不明所以的叫法
到这里,实际上我们就可以把in-context空间就当作语义空间,只不过在这个空间中,语义内容是非结构化的。
在过去的LLM中,我们对于in-context learning等能力未必会把它认知为一个语义空间中的程序。但到了推理期计算LLM上,当我面对一个A*算法的样例时,我会把它当做语义空间的程序。
让我们切换视角,以程序的角度审视这个语义空间上的“A*算法”(见2.3节)。首先在这个语义空间中,数据和代码是不区分的,这点很像是Lisp。第二,语义能力本身是在LLM模型中的,语义空间中的程序只是调用了这些能力。第三,这个空间中,程序可以靠用户prompt注入,也可以从LLM模型中在推理中进行提取。而且在提取过程中可以对历史学到的一些程序片段进行融合组装。
3.2、可优化的语义计算机
如果把context中的指令和过程当作程序和数据,那么LLM本身就是执行语义程序的语义计算机。
这个语义计算机是可以被优化的,通过调整其模型权重即可实现。实际上SFT就是在固定了语义程序的情况下,优化语义计算机的过程。而推理期计算LLM训练过程中的RL训练则是连同语义计算机和它使用的语义程序的联合优化。
这个语义计算机有很多方式可以从外部获得信息和监督信号,SFT的监督信号是直接作用在模型参数上,ORM是指导这个系统整体该向什么方向演化,PRM除了指导系统演化外还可以在推理期指导探索过程。我们也可以通过在推理过程中插入一些外部信息,也可以让LLM通过生成某些模式来主动调用外部,最典型的就是tool调用过程。LLM生成对于tool的调用信息很类似于计算机中的中断调用或系统调用。
目前的RL方案并不是直接优化语义程序/prompt的,而是通过优化LLM模型参数来实现的,它会影响语义程序的执行效果和在执行中召回的语义程序。
3.3、以计算机的视角
目前推理期计算LLM可以算成一种最简单的计算机。而以现在计算机的视角可以给我们很多启发:
prefix context cache类似于虚拟机运行状态的整体快照
目前的线性推理过程类似于单线程程序,而我们可以扩展到多线程执行能力和对应的程序范式
现在这个计算机的存储方式还类似于图灵机的纸带,而且还是只能写入一次的。对于只能写入一次的存储,是显式的存储或者是直接内化到模型中其实没有本质差别。在语义空间中,LLM本身也可以看成是包含了巨大的只读memory。现在计算机上的通过位置访问的可修改存储器在这里应该是什么样的?
越大的模型,能学到的能力越强,对应于CPU的更复杂的指令集。精简指令集实现同样的功能需要更多的汇编指令。小模型实现同样的功能可能也需要更长的语义程序。
当然有些问题在这个语义计算机中并不存在。例如推理速度,这相当于计算机的时钟,在计算机运行的空间中,感受不到外部时钟的快慢。同样的还有token,在语义空间中也没有token,原始文本的不同token映射方式导致的模型效果差别,在语义空间的世界中大概表现为某种非对称性(指物理学中的对称性),例如“平移时会改变”。
语义计算机似乎是个不错的抽象层面。两边可以分别的独立优化,就像是现在的软件和硬件分别迭代一样。
4、零散话题讨论
到这里,本文的主要内容就已经阐述完成了。
本节则列举一些零碎的推论。
4.1、语义计算机的“硬件”性能会快速发展
正如现在芯片算力快速发展一样,如果从语义空间来看,它的“硬件”(即语义计算机)在未来一段时间也会快速发展。
那么The Bitter Lesson告诉我们,要利用这种确定性的未来发展的趋势。后续基于语义计算机的方案发展会有一波红利。
相关阅读:
如何理解Richard Sutton的Bitter Lesson
4.2、语义空间 与 RL
DeepSeek R1使用的GRPO让我们看到,可以把所有学习工作和逻辑结构都转移到语义空间中进行,无论是value model还是step级的value model/PRM都可以内化到语义空间中,成为语义计算机的一个能力,整体端到端优化。这看起来似乎很符合scale的思路。
语义空间中没有机器学习算法。由于目前语义计算机孱弱的执行能力,以及目前还没有可变存储单元,还不能指望在其内部运行某种机器学习算法,也包括强化学习。我们只能在语义计算机中运行一些相对于现实世界很简单的程序,不过它们的优势是它们是语义的,不必像现实世界的计算机一样一切细节都需要编程指定。推理期计算LLM的RL过程实际上发生在语义计算机的空间之外,这个RL过程的结果是语义计算机和它内部程序的组合。
对于语义计算机的优化,未来大概率是一个RL为主导的技术方案,甚至可能是几乎纯RL的。构造完数据、ORM(以及可能的RPM)、和训练过程后,似乎都可以交给一个类似于infra工程的团队来执行训练过程。未来可能会更明显地出现这种分层,而这新的一层大概是RL的天下。
4.3、在语义空间中运行的reward model
无论是OpenAI还是DeepSeek,都在提的一个点是,如果reward model不够好,会在RL过程中遇到reward hacking的问题。这个问题类似于现实生活中KPI定的不完美总会导致各种管理问题一样。所以现在的一个趋势是只使用完全没有瑕疵的reward model。但这很大程度上限制了能够运行RL的领域。
我觉得这主要还是由于我们无法向reward model提供足够大量的数据导致的问题,仅靠目前训练reward model的方式也做不到足够“平滑”和准确。在并非完全精确的领域中,语义本身就存在一定程度的模糊性,类似于它实际上表达它的某种语义邻域,但目前的方案还并不能很好的处理这一点。
我觉得如果使用推理期计算LLM来执行的话,是有可能更好地处理这些问题的。也就是靠LLM通过prompt来判断某个结果的好坏,也就是把这reward model也放在语义空间中运行。当然在训练中还有一些细节来处理,例如要考虑固化reward prompt执行的LLM,以防被通过降低reward prompt的效果的方式来钻漏洞。当执行探索的LLM优化一定阶段后,可以更新执行reward prompt的LLM来提升其能力。同时还需要观察reward prompt的执行结果采样与人类意图的对齐度。
当然我并不期望这种方式能成为一个完美的reward model,但我觉得如果用至少是o1级别的模型来执行reward prompt的话,它应该能起到一些用。
4.4、语义空间中的结构化
目前的语义空间基本都是非结构化的,如果认为PRM无用,那么也就不需要做什么粗Step粒度的结构化。本质上结构化其实是为了与外部非语义世界交互的,例如目前的tool调用。
我个人认为人工设计的structure仍有其阶段性价值。当然它的上限没有无先验的方案高,但现阶段baseline太低,一些结构化的设计可以成为支撑未来1-2年发展的不错的台阶。
所以我认为语义空间中的结构化仍然是有用的,不过这个结构化更多是粗粒度的层面。
4.5、语义计算机并不非得是LLM
目前的语义计算机看起来就是一个单向只读的图灵机,我们可以从传统计算机体系结构中借鉴不少想法。这些借鉴会让整个模型距离LLM越来越远。
站在语义空间中来看,其实并不需要语义计算机一定是LLM,一定非要逐个token生成,一定非要是不能修改历史回答的,一定非要只能生成文本。语义计算机需要的最核心能力只有执行语义程序,甚至可能从历史记忆中不断召回组装程序可能都未必是必须的。
从这个角度上来说,给我们未来的语义计算机设计打开了不少新空间。
A、结语
语义计算机其实也不是一个新概念,至少在2023年就已经是一个常见想法了。但我觉得至少到推理期计算LLM才让人更能获得一些实感,让我觉得对其没有更适合的形容方式。
交流与合作
如果希望和我交流讨论,或参与相关的讨论群,或者建立合作,请加微信,联系方式请点击 -> 联系方式。
本文于2025.1.23首发于微信公众号和知乎,知乎链接:
https://zhuanlan.zhihu.com/p/19997644058