题记:前面三次(1、搭评测环境的坑;2、初步测试;3、深入测试),主要介绍了DeepSeek R1的评测过程中一些心得。经过一段时间折腾,基本还是用官方、元宝以及火山的满血版本。偶尔用用本地的14B,对比之下满血还是好用。本来想的搭个便携式推理机器的想法也就搁置了,顺便嘲笑了一下一体机这门生意。但是,QwQ 32B一出来,又有了折腾的理由。
DeepSeek破圈后,很多云厂商和大厂都采用了打不过就加入的策略,一边是积极适配提供满血版服务,一边是暗戳戳的憋大招,其中Qwen无疑是最靓眼的仔[1]。DeepSeek的实践[5],除了LLM的infra层面外,在应用层面有两个takehome messages。一个是,强化学习在构建长思维链上的作用;一个是长思维链在蒸馏参数量更少LLM时的作用。
如果仔细对比DeepSeek给出的蒸馏小模型在AIME和MATH上的性能,会发现LLama和Qwen两个架构存在性能差异。我认为合理的猜测如[2]中所说,不同结构的LLM目前看存在差异。而[4]中给出了另一种解释,差异可能来自于LLM预训练时的语料差异,进而表现为SFT激活这种推理能力的难易。[3]则给出了如何拉齐不同结构LLM、不同预训练数据在推理时能力的差异,是他们能够几乎提供相当的推理能力。
随着关于模型结构、预训练语料、如何增强推理能力等论文讨论的深入,一个遗留的点也被填上了。那就是DeepSeek在[6]中曾提到,满血671B模型在计算一个输入token时会激活37B。当时看论文的时候,没有细想这意味着什么。只是从感性上理解,SLM如果能激活推理能力,提供和满血模型一样的性能,那可能意义更明确一些。
在折腾了一段时间LM studio后,经过读论文、找思路、写代码等一系列日常场景对比测试后,感觉还是满血的DeepSeek更好用一些。尤其是在考虑延申论文分析上。为了用满血DeepSeek,除了DeepSeek自己的网页和app,还试用了元宝适配的版本。几乎是没用差别,但是在有些问题上思维过程偏短,输出也偏短。后面申请了火山的账号,其提供了API调用,很适合在cherry studio中使用。顺便,也用了用deepseek-v3-241226,doubao-1-5-pro-256k-250115。综合来看,可能是DeepSeek在某种程度上定义了长思维链推理,所以其他家总感觉是隔了一层,心理上希望DeepSeek的优于其他,正如还有什么黑科技加持一样。但是,这种心理上感知到的差异,可能是来自于不同于官方配置、不同的infra优化取舍导致的某种所谓的风格差异。
虽然联网跑满血挺好,但是在不方便联网的情况下,本地私有部署、性能够用也是一直在考虑的。一方面是用什么模型,一方面是用什么硬件。先说说硬件方面。考虑过ITX,配个公版4090,内存配到96GB,足够跑了。图片截自B站介绍视频,请移步观看。
后面,也对比了华硕的NUC14 Pro+(270mm x 180mm x 50mm)、苹果的Mac studio M4 Pro(200mm x 200mm x 95mm)、NVIDIA的Orin(110mm x 110mm x 72mm),也想过树莓派。各个硬件候选,都有些不尽如人意的点。比如ITX在尺寸和重量方面有劣势;NUC是显卡不行、内存是LPDDR5;苹果的M4 Pro价格稍高,但是从其他视频测试情况看性能很不错;Orin看博客,也能跑,但是速度可能会慢。
说完硬件,其实影响性能的主要还是模型。这个时候,QwQ-32B确实很吸引人,这也是前面提到的671B激活了约37B参数来处理一个token。Qwen发布的QwQ给出了回答,稠密+少参数和稀疏+多参数,可以获得相当的性能。怀着激动的心情,给笔记本升级了内存到64GB,终于是把32B的DeepSeek蒸馏版、QwQ等模型跑了起来。在用LM studio部署时,一个很重要的点是,要卡着独显的显存上限来考虑多少个层在GPU计算。更升级完内存,跑了个全部署GPU上的测试。跑了一下午将近4个小时,只出来了不到2000个token。后面,优化配置(根据显存大小反推能放下多少层)后出token的速度快了很多。
对比了一些之前常用场景的测试,QwQ-32B还不错,比DeepSeek蒸馏的32B好一些,和满血DeepSeek比还有点儿不同。从思维链的输出内容看,QwQ-32B会短一些,没有过度思考的倾向。同时,可能也是没有过度思考,回复会偏简洁或者简单的样子。后面,有用benchmark测了一下这个模型。
模型 | AIME2024 @1 | MATH500 @1 |
o1-mini | 63.6 | 90.0 |
DeepSeek-R1-671B | 79.8 | 97.3 |
DeepSeek-R1-distill-Qwen-32B | 72.6 | 94.3 |
Qwen-QwQ-32 | 79.5 | - |
自测 | ||
DeepSeek-R1-distill-Qwen-32B ** BF16 | 76.7 | 93.0 |
Qwen-QwQ-32 ## BF16 | 83.3 | 97.4 |
从测试结果来看,QwQ确实提升了不少。Qwen团队是怎么实现的?因为,DeepSeek把蒸馏模型的性能提升归功于用长思维链数据做SFT,这次提升到底用了什么呢?[1]中给了些许的介绍,如下
“此外,我们还在推理模型中集成了与 Agent 相关的能力,使其能够在使用工具的同时进行批判性思考,并根据环境反馈调整推理过程。我们希望我们的一点努力能够证明强大的基础模型叠加大规模强化学习也许是一条通往通用人工智能的可行之路。”
“我们在冷启动的基础上开展了大规模强化学习。在初始阶段,我们特别针对数学和编程任务进行了 RL 训练。与依赖传统的奖励模型(reward model)不同,我们通过校验生成答案的正确性来为数学问题提供反馈,并通过代码执行服务器评估生成的代码是否成功通过测试用例来提供代码的反馈。随着训练轮次的推进,这两个领域中的性能均表现出持续的提升。在第一阶段的 RL 过后,我们增加了另一个针对通用能力的 RL。此阶段使用通用奖励模型和一些基于规则的验证器进行训练。我们发现,通过少量步骤的通用 RL,可以提升其他通用能力,同时在数学和编程任务上的性能没有显著下降。”
这两大段看似很多字,但其实并没有说出来很多细节,能看出来的是他们应该使用了一部分微软在rStar-math中的思路。但是没有提到MCTS或者tree search等,说明现阶段很可能还是SFT和reward设计上比较重要,用了多种目前最强模型的输出、生产了更高质量的思维链。
接下来,期待Qwen放出技术文档。另一方面,则是持续关注小模型该如何提升推理能力,达到比肩大模型的性能。
篇外的话,目前技术先行,大家还是要关注数据安全。一方面是和大模型交互要意识到记录是可能被记录或用于训练的。另一方面,本地部署、提供局域网服务时要看端口配置。使用云厂商API时,要保护好key。
[2] Demystifying Long Chain-of-Thought Reasoning in LLMs
[3] Cognitive Behaviors that Enable Self-Improving Reasoners, or, Four Habits of Highly Effective STaRs
[4] LIMO: Less is More for Reasoning
[5] DeepSeek infra open source
[6] DeepSeek-AI. DeepSeek_R1_Incentivizing Reasoning Capability in LLMs via Reinforcement Learning.