原创 Z Potentials 2025-02-08 11:23 上海
“DeepSeek并不是第一个把RL引入大模型的,但DeepSeek能做出来是因为里面人的极客思维比较强,他们会看你代码的每一行,把事情做成。”
图片来源:Unsplash
Z Highlights
在LoRA中,每一个专家都会被训练;而ESFT会优先微调适合做某个任务的专家,其他专家不会被过拟合,因此相比LoRA会有更强的泛化能力——让专业的人做专业的事。
林纳斯说过,Talk is cheap, show me the code。 DeepSeek并不是第一个把RL引入大模型的,但DeepSeek能做出来是因为里面人的极客思维比较强,他们会看你代码的每一行,把事情做成。不是像有些公司领导层可能不太关心代码,梁老板是会看代码的。公司里每一个人的功底都非常强,他们对代码细节的掌控已经到了令人发指的地步。
冷启动的必要条件是模型要很大,只有很大才有充足的可能性去探索到Aha Moment这条路,因为模型也在“找路”。根据R1的报告,小模型做RL其实不如SFT,要用大模型去蒸馏它;当模型大到一定程度就会有Aha Moment的可能性。
2月1日,Z Potentials 邀请了前DeepSeek研究员,西北大学计算机科学博士Zihan Wang直播Talk,深度解析其团队最新工作RAGEN,揭开RL与LLM结合的下一代训练框架的核心奥秘。
此前,他曾与UIUC的Heng Ji教授合作研究LLM Agent,并参与了DeepSeek大模型研发。在 EMNLP 2024 大会上也与 DeepSeek 团队共同发布了一项研究,提出了一种参数高效微调(PEFT)方法,用于定制资源受限的大型语言模型(LLM),尤其是具有混合专家(MoE)架构的模型。
以下为王子涵的观点摘要:
1.大语言模型的规模变大之后,人们会希望它做一些事情。比如让它有更强的Autonomy,MINT是我和All Hands的Co-Founder王星尧之前在UIUC一起做的benchmark工作(发表于ICLR 2024)。除了Instruction,我也会做一些Efficiency的工作, 比如之前在DeepSeek参与了V2模型的研发,V2通过引入MLA机制减少KV Cache,在长文本的场景下非常重要,决定了其生成的速度,将Efficiency发挥到极致。另外一篇Expert-Specialized Tuning(ESFT), 大模型从Dense模型变成Sparse模型之后,如何微调那么多的参数?我们会找到一些适应这些任务的专家,微调这些专家而不是微调整个模型,这就需要在专家的角度做一些思考。
将RL+LLM+Agent结合在一起本身就是一个有艺术的事情。光是Multiturn这个功能,我们最早写了400行代码,现在精简到200行,才把LLM+For loop写得比较正确+有效率。在实际操作的过程中会更复杂。看上去单轮和多轮的区别就是for loop与否,其实不然,每一次loop都需要将环境的反馈信息加入进来,这中间会有各种挑战,比如reward hacking,这是一个工程问题。所以说,能够把DeepSeek-R1的单轮拓展到多轮本身就是一个effort。
3.Rollout的过程,需要先有一个s0(state),然后会依次有thinking process、answer、action,在环境里去进行探索,然后生成这步的reward以及下一步的state,这个Rollout过程可能会重复几轮,和R1(Zero)的想法趋同,这样处理后在中等难度的task上的效果有提升。
4.Update有很多路径,比如我现在有一个完整的Trajectory——s/a/r——如上图所示,这时候我需要思考我想要语言模型学training process、answer generation process、reward、state中的哪一个。最简单的想法就是都学,因为都学并不会提高很多的成本。有了数据之后可以通过简单的label mask来标记想要大模型学习的部分,喂给大模型,以增强其下一次生成该部分的能力。我们后来决定除了s0后面都学,因为s0更多的是环境自带的信息,是Agent无法控制的,喂给大模型后也学不到什么信息。每生成一个Trajectory,会根据环境的单步反馈计算出一个整体的reward。contribution主要体现在把从R1 training到multi-turn agent training中不清晰的部分clarify出来,做出一个minimized example。
5.关于ESFT这篇工作:LoRA指不训练矩阵本身,而是训练它的低秩分解,是一种比较通用的训练方法。矩阵乘法可以用两个小矩阵来表示一个大矩阵,这样可以用更小的参数去微调模型。我们没有用LoRA是因为我们想develop一种和MoE直接相关的方法。ESFT分为两个步骤:
a.任务分类:Task for Model Enhancement(Math/Code),能否通过专家微调的方式对它进行特殊优化;Task for Model Adaptation(比如一些客服的对话数据转换成summarization)。
b.确定专家:把任务输入进去后,看哪些专家被激活的最多,它就是我这个任务最需要的专家。比如我们抽样一些训练语料,我们把这个语料放在这个模型中,Router会输出不同的possibility,看那个expert排在前面。对于每个instance的每个Token都会有对应的possibility,我们对一个任务sample了不到100万个Token。在选择专家的时候,我们设计了Top-P:我们把每个模型的分数加起来,将概率归一化得到每个专家重要性的分布。如果选前K个专家,可以使得归一化之后的专家达到一个P值。选完专家之后,剩下的专家还要继续用(参与梯度传播,不参与梯度下降,也就是说不会被更新),不然模型的能力会大大降低。这就像一个公司里面不同的部门都参与项目,但是大部分部门是一个辅助的作用,只有少部分参与度较高的部门会在这个项目结束之后根据反馈进行迭代。
c.ESFT中,我们发现专家存在分化的情况,不同的任务激活的专家是非常集中的。ESFT的优势在于可以在计算资源有限的情况下,提升模型的能力和泛化性。为什么ESFT比LoRA好?因为在LoRA中,每一个专家都会被训练。有时候专家不适应这个下游任务,为了满足loss,不擅长这个任务的专家也会被拿去做训练,这样在训练完之后反过来处理general任务的时候效果就会不好。但是ESFT本身就是先去选择专家,因此相比LoRA会有更强的泛化能力——让专业的人做专业的事。
—— QA ——
ZP:RAGEN这篇工作的GPU消耗如何?
子涵:我们组有四个Phd,一个PI,我们一起租了8*H100的显卡,可能用一张A100就可以跑起来。这里也想介绍下我们组,我导师是Li Manling老师,Manling是一位很有学术Insight的老师,并且什么方向都做,也都能做好。她对PhD没有什么限制,给了我们充分的学术自由:不论是high level的insights还是实际的落地执行,Li Manling老师都会给予很多有价值的指导。我在申请的时候觉得她对学生非常好,我在没有确定要选择她的时候就已经给了我很多做学术、读博的建议,这就是为什么我申请季的时候尽管拿到了其他比较好的offer,但仍然选择Li Manling老师。
ZP:为什么只有DeepSeek能做出来不需要SFT,并且能够收敛的RL?
子涵:我觉得就是Talk is cheap, show me the code。 DeepSeek并不是第一个把RL引入大模型的,但DeepSeek能做出来可能是因为里面人的极客思维比较强,他们会看你代码的每一行,而不是像有些公司写代码的就那么些人,大部分人并不会钻到细节里面去,梁老板是会看代码的,他们每一个深度学习研究员代码功底也都是非常强的。百晓生主要是为各类不同品类的数据提供知识上的支持,对写代码没有硬性要求,主要是一些文科状元,但仍然有非常多很会写代码的百晓生。
公司里的每一个人的功底都是非常强的,他们对代码细节的掌控已经到了令人发指的地步。他们对代码细节的把控非常到位,比如我有一个同事不是纯做系统的,但在看我的代码的时候,就会非常自然地点出来“这里不能用reshape,要用view”。(因为reshape会重新创造一个新的tensor,而view不会。这样可以少创造一个tensor,但做了相同的事情,用来节省计算。)这就是为什么,同样的事情,DeepSeek的人会更有可能做出来。
ZP:RL train的evolve有什么难点吗?
子涵:我觉得最难的在于online。很早的一些paper比如spin,主要claim的就是让模型做online training,一个epoch更新一次模型。这个是infra的问题,一步更新一次采样和一轮更新一次采样是不一样的。
比如一天写100套卷子,之后就根据卷子里面的难点去分析,一个月之后如果你还在看一个月之前写的卷子,那个时候就会觉得没有那么多思考的价值,你就会倾向于pass掉这些信息。为什么单步的update之后再rollout很重要?很大程度上是因为每天都是不同的你,每天的你都在面临新的挑战——当前的model state能够有的东西和之前的是不一样的,那么你生成的Trajectory也会不同,面临的新的挑战也会不同。
最开始我们也在探索如何把这个模型尽量做成online,最后没有做的主要是因为我们写不出那个code。一步一步去做很复杂,不是简简单单update模型参数,它涉及很多内存管理、分块、系统等很底层的工作,之前我们没有能力实现,现在有开源框架,会更容易实现。
ZP:其他的公司能够很快的复现出目前的成果吗?
子涵:我觉得可以,我们都复现出来了。我最早是看到港科大何老师和TinyZero的那个框架,感觉他们能复现,我们也能,但我们肯定不能和他们做一样的事情,于是就选了Agent这个方向。我觉得R1的很多技术是容易复现的。
ZP:不靠冷启动有可能靠Qwen实现Aha Moment吗?
子涵:我对Qwen不太清楚,但我觉得冷启动的必要条件是模型要很大,只有很大才有充足的可能性去探索到Aha Moment这条路。因为模型也在“找路”。R1的报告里面指出,小模型做RL其实不如SFT,要用大模型去蒸馏它,当模型大到一定程度就会有Aha Moment的可能性。
ZP:关于DeepSeek蒸馏数据的问题,是否方便透露?
子涵:我只了解ESFT有关定制化的数据,其他数据没有具体看过,也不知道怎么回答这个问题。
ZP:Scaling Test Time Compute是通往AGI的未来吗?
子涵:这是一个超出我能力范围的问题。以后的Test Time Compute肯定是越来越多的,至于会scale成什么程度,我在这方面确实不是很有expertise,但能看到以前做MCTS的工作确实都是有些insights的。
ZP:你的体验下,R1和R1 Zero的区别是什么?
子涵:R1 Zero最大的问题是不说人话,这在目前看来是一个不好的事情,因为思维链需要在某种程度上保证他的公开透明,它需要是能被人类读懂的。答案是对的,但是思维过程不透明,这样不行。R1能够用冷启动说人话,在这之后就能够通过人话做推理,最后能够让人看懂他是怎么思考的;R1 Zero能够把问题做对,但是做对的过程人看不懂。
ZP:DeepSeek为什么开源了模型但是没有开源代码呢?
子涵:我个人感受,DeepSeek喜欢把开源报告和模型参数放出来,你有能力就研究,它不会把它开源的accessibility做到极致,因为这个实在需要太多efforts了。目前的代码在他们自己的集群上能work,但是如果在别人的集群上setting不一样,不work,那他们是不是还要帮忙修呢?我觉得他们就是要么就不做,要么就做到极致,开源代码也是。目前模型参数放出来不是太需要effort,也已经养活了很多人。开源全套代码需要的effort很大,这个时间他们足够迭代下一版模型了。
ZP:如果MoE这么有效又低成本的话,怎么看待Llama3-405B作为dense model不考虑成本,但效果却这么差呢?
子涵:也是我的个人观点,MoE这么大,激活参数又小,需要的显存又高,个人researcher很难access一个模型,我现在都不知道以后会不会出现针对MoE优化的GPU——你能把模型放进去,但是每次只有那么一些参数在算。
ESFT用一张A100 40GB是跑不起来的,需要多卡,有时候还需要多节点的去跑。所以说MoE不适合小作坊去做研究,更适合一个比较大规模的公司去做。Llama一直在用dense模型,但是我觉得他最重要的不是那个405B的模型,而是个人研究者很容易去access的小模型。Qwen我觉得可能也是一样的思路,DeepSeek也蒸馏了一些Qwen的模型——让DeepSeek的R1的思维链被Qwen看到后去训练它,让它去学习R1的思维过程。因为对于个人研究者,sparse model没办法放到GPU上。开源后要尽可能提高你的accessibility,让个人研究者能用上,我猜这是Llama的一个惯性,所以他们会倾向于dense model。
ZP:通过R1的数据来蒸馏小模型进行SFT是否已经足够?是否有必要加一些蒸馏相关的loss?
子涵:我不太清楚蒸馏相关的loss是指什么。一般来说我们会用常用的CrossEntropy loss。
ZP:在R1的论文中有提到放弃了PRM而选择MoE,这是为什么?
子涵:我没有看过太多PRM的工作,不过PRM和MoE是两个角度:PRM主要是RL方面,MoE是一个语言模型的架构。我猜测放弃PRM的原因之一是PRM的那个“P”,也就是步骤(Process)之间的界定需要人工先验。比如人在做事情的时候很难判断什么是我迈进了一步,我要开公司,我可以把一步界定为取公司的名字、文档写出来、建公司的大楼,哪个算作第一步呢,每一步都需要很多人工先验。尽管有一些任务上,人工先验没有那么重要,比如算24点,两个数字做运算就是一步,但要做大规模的实际工作,很难界定什么是一步。
ZP:如何看待PEFT全面超越了模型剪枝?
子涵:我在想有没有一个巧妙的比喻,这是一种高薪养闲。一个公司里面不一定所有人都会干活,但你不能把他们开掉。模型中有很多看上去没那么有用的参数,我觉得这某种程度上是一种冗余,为了保证模型在各种各样的状态下都能够去应对喂进来的Token。但如果真的把它们剪掉,不知道什么时候你的模型就会损失一些能力。
ZP:刚开始调模型的团队怎么才能快速积累工程上的know how?
子涵:可能很重要的是要站在巨人的肩膀上。我们这次就是用了veRL的框架,同时观察到TinyZero能work,就会更有信心。veRL的框架决定了我们能做多少事情,在用了这个框架后,有的时候它做不了这个事情,没必要自己写,可以换一个框架。有的时候你确定好一个base model(代码本身的repo也算是一个模型),就能知道你接下来能够用这个模型做什么。 这可能不仅局限于调模型,可以算是人生的体会,你要确定你在当前阶段能做的事情,然后再去做它。有的时候战胜困难和绕过困难,你不知道哪个更好,但是都是一种应对挑战的方式。
ZP:刚刚进入领域是如何选研究方向的?
子涵:我觉得方向在我这没有太多决策的权重,我觉得取决于我能够接触到的那个人。我当时聊了很多老师和学生,星尧会帮我看code的每行细节,能一起讨论idea,能一起写paper,这个人本身让我觉得很靠谱,他靠谱的同时又恰好在做Agent,他跟我说的Tpoic我特别感兴趣,所以我就想involve。做了之后我发现我自己在这方面也有很多不错的idea,那我想就继续做下去吧,主要是这样的mind setting。
我做research到现在遇到的老师学生都很nice,我也很幸运。方向上大家可能一开始都没这么理解,我觉得重要的是在聊的过程中需要去关注这个人是不是和你match,要去了解这个人他对合作者好不好、有多好。以及他平时关注的东西,比如这个人关注的是paper能不能中,还是说我这个东西能不能在这个领域做一个事情,这是一个很大的区别。
ZP:2024年是AI之年,在你看来印象最深的一个work是什么呢?
子涵:LM-Steer是我暑研导师实验室的一篇工作,主要说的是你的模型post-training可以去训练一个矩阵,支持人工精调,也就是说你的用户可以去调整矩阵的值,比如若想让它表现百分之百的热情,就把那个值调到百分之百的位置,用户只需要调整那个拉杆,不需要单独再做训练,很有意思。
ZP:过去一年让你觉得特别震惊的事情是什么?
子涵:Hinton拿诺奖最让我震惊。我觉得这是一个革命性的时刻:AI第一次在如此广泛的范围内被所有行业注意到,并且拿了这个星球上你可能拿到的最高荣誉。这证明了AI不是一个行业,而是一个基建,可以融入到任何一个行业里面去。
ZP:有没有关注的其他创业公司?
子涵:我六月会加入Yutori这家创业公司做暑期实习,这家公司是让Agent可以掌握用户的computer。现在大家都在刷一些很难的榜单,让AI做特别有挑战性的任务,他们想让AI做用户想让他们做但他们目前又做不了的事,比如订票、订饭等daily effort。其中两位创始人之前都是Meta的senior staff。他们的特点一是用了multiagent,三个后台可以做三个不同的事情;二是细节做的很到位,让人放心,别的产品可能会有鼠标闪现的情况,这种前端或后端的问题不会有;三是保留10%的决策权给到用户,比如是否需要更快配送。同期会有很多团队都在做这个idea,对我来说最重要的是找到能把这个idea做成的team,我觉得他们是一个很优秀的team。
Ref.
https://github.com/ZihanWang314/ragen
https://github.com/deepseek-ai/ESFT
https://huggingface.co/spaces/Glaciohound/LM-Steer
Z Tech诚邀学术新星Tech Rising Stars!无论您是崭露头角的Researchers、充满潜力的Phd,还是引领前沿的Prof,这里都是展示您创新成果的舞台。投稿开启无限可能,期待您的来信!主要领域涉及AI、具身智能、量子计算、半导体等前沿科技领域。
-----------END-----------
? 我们正在招募新一期的实习生
? 我们正在寻找有创造力的00后创业
关于Z Potentials