我自己的原文哦~ https://blog.51cto.com/whaosoft/13280030
#本科生推翻姚期智40年前的猜想
哈希表的平均查询时间竟与填满程度无关
1985 年,著名计算机科学家、图灵奖得主姚期智提出了一个与哈希表有关的猜想。现在,40 年过去了,一名本科生却成功推翻了这个猜想。而这项成就却源自一个始于 2021 年秋的故事。
量子杂志近日报道了这个故事,编译了该文章以飨读者。
原文地址:https://www.quantamagazine.org/undergraduate-upends-a-40-year-old-data-science-conjecture-20250210/
2021 年秋季的某天,罗格斯大学的一位本科生 Andrew Krapivin 遇到了一篇论文,而这篇论文将改变他的一生。不过那时候,Krapivin 倒没有多想。两年之后,当他终于有空细读这篇论文时(他说当时只是为了好玩),他还没意识到:他的工作将让人重新审视计算机科学领域一种被广泛使用的工具。
这篇论文题为「Tiny Pointers」,即微型指针。这是一种类似箭头的东西,指向的是计算机内存中的一段信息或一个元素。Krapivin 很快就发现了一种有望进一步降低指针内存使用量的方法。但首先,他需要一种更好的方法来组织指针指向的数据。
- 论文标题:Tiny Pointers
- 论文地址:https://arxiv.org/pdf/2111.12800
他的方法是使用一种常用于存储数据的方法,即哈希表(hash table)。在探索研究的过程中,Krapivin 最终发现了一种新的哈希表。并且这种新哈希表的工作速度更快 —— 用更少的时间和步数便能找到指定元素。
不过,Krapivin 之前的教授 Martín Farach-Colton 起初对这个新设计深感怀疑,毕竟哈希表似乎早已被人研究透了,很难再取得新进展。
但直觉上的看法并不一定总是对的。为了确认这个新设计的有效性,Farach-Colton 邀请了卡内基梅隆大学的 William Kuszmaul 检查 Krapivin 的新发明。
Kuszmaul 深感振奋。他记得自己当时对 Krapivin 说:「你不只是想出了一个很酷的哈希表,你实际上彻底推翻了一个已有 40 年的猜想!」
Andrew Krapivin 颠覆了人们对哈希表的普遍看法 —— 即便他一开始并没有这样的打算。哈希表是计算机科学中被研究得最透彻的工具之一。
本科生推翻存在 40 年的猜想
Krapivin 推翻的是著名计算机科学家、图灵奖得主姚期智在 1985 年提出的一项研究。
他们的研究过程是这样的。1 月份,剑桥大学研究生 Krapivin、任职于纽约大学的 Farach-Colton 以及 Kuszmaul 共同发表了一篇文章。
这篇文章重新探讨了开放寻址哈希表(open-addressed hash table)的最优搜索复杂度,以便在检索时能以尽可能少的探测次数找到元素。文章提出了两种新的哈希表插入策略 —— 弹性哈希(elastic hashing)和漏斗哈希(funnel hashing),并证明了,即使不随时间重新排列元素,也可以构建一种哈希表,其预期的搜索复杂度(无论是摊销复杂度还是最坏情况)远超以往认为可能的水平。
- 论文标题:Optimal Bounds for Open Addressing Without Reordering
- 论文地址:https://arxiv.org/pdf/2501.02305
在论文摘要部分,他们强调了这项研究推翻了姚期智在其开创性论文《Uniform Hashing is Optimal》中留下的核心猜想,并给出了相关的下界证明。
众所周知,哈希表在计算领域已变得无处不在,主要在于其简单性和易用性。它通过将数据映射到一个固定大小的数组中,从而实现快速的插入、删除和查询操作。哈希表的核心思想是利用哈希函数(Hash Function)将数据的键(Key)转换为数组的索引(Index),从而快速定位数据存储的位置。
最早的哈希表可以追溯到 20 世纪 50 年代初,自那时起,计算机科学家一直在研究和使用它们。研究人员希望弄清楚这些操作的速度极限。例如,新的搜索或插入可能有多快?
Martín Farach-Colton 帮助 Krapivin 证明了新哈希表与一个长期存在的猜想相矛盾
答案通常取决于在哈希表中找到一个空位所需的时间。而这通常又取决于哈希表的填充程度。
填充程度可以用百分比表示,比如 50% 或 90%,但在研究中,哈希表往往接近完全填满。
为了更精确地描述这种高填充状态,研究者们可能会使用一个整数(记作 x)来表示哈希表接近 100% 满的程度。如果 x 是 100,那么哈希表是 99% 满的;如果 x 是 1,000,那么哈希表是 99.9% 满的。
这种衡量填充程度的方法为评估执行查询或插入等操作所需的时间提供了一种便捷的方式。
此前,研究人员得出这样一个结论,对于某些常见的哈希表,执行最坏情况下插入操作所需的预期时间与 x 成正比。Kuszmaul 表示:「如果你的哈希表是 99% 满的,那么你需要查看大约 100 个不同的位置才能找到一个空闲槽位,这种情况是合理的。」
著名计算机科学家姚期智在这篇论文中提出,在具有特定属性的哈希表中,查找单个元素或空位的最佳方法是随机地遍历潜在的位置 —— 这种方法被称为均匀探测(uniform probing)。他还指出,在最坏的情况下(即寻找最后一个空闲位置时),你无法做得比 x 更好。
- 论文标题:Uniform Hashing Is Optimal
- 论文地址:https://dl.acm.org/doi/pdf/10.1145/3828.3836
40 年来,大多数计算机科学家都认为姚期智的猜想是正确的。
Krapivin 没有囿于传统的想法,原因很简单:他不知道这个传统的想法。他说:「我在不知道姚期智猜想的情况下做到了这一点。」这让 Tapline 联合创始人兼 CEO 不禁在 𝕏 上感叹说:「无知也是一种福气。」
Krapivin 在微型指针方面进行的探索最终得到了一种新的哈希表 —— 一种不依赖于均匀探测的哈希表。
对于这种新的哈希表,最坏情况查询和插入所需的时间与 (log x)² 成正比 —— 比 x 快得多。这个结果直接与姚期智的猜想相矛盾。Farach-Colton 和 Kuszmaul 帮助 Krapivin 证明了 (log x)² 是姚期智所写的常见哈希表类别的最佳、不可超越的界限。
卡内基梅隆大学的 Guy Blelloch 赞道:「这个结果非常美妙,因为它重新审视并解决了这样一个经典问题。」
滑铁卢大学的 Sepehr Assadi 表示:「他们不仅证否了 [姚期智猜想],还找到了该问题的最佳答案。我们原本可能还要再等 40 年才能知道这个正确答案。」
Krapivin 在剑桥大学的国王学院桥上。他的新哈希表可以超出研究者预料的速度更快地查找和存储数据。
除了证否姚期智的猜想外,这篇论文还包含许多更惊人的结果。这与一个相关但略有不同的情况有关:1985 年,姚期智不仅研究了查询的最坏情况时间,还研究了所有可能查询的平均时间。他证明:具有某些属性的哈希表(包括被标记为「贪婪」的哈希表,这意味着新元素必须放在第一个可用位置)的平均时间永远不会比 log x 好。
Farach-Colton、Krapivin 和 Kuszmaul 想看看对于非贪婪哈希表,这个限制是否同样适用。
最终,他们表明这个限制不适用。证明过程很简单,他们提供了一个反例,即一个平均查询时间远远好于 log x 的非贪婪哈希表。事实上,它根本与 x 无关。
Farach-Colton 说:「你会得到一个数值,而这个数值就是一个常量,与哈希表的填满程度没有关系。」也就是说,无论这个哈希表的填满程度如何,平均查询时间都是一个常量。
这一事实大出人们意料 —— 甚至连这几位作者自己也没有想到。
Conway 说,该团队得到的结果可能不会带来任何直接的应用,但这并不重要。「更好地理解这些类型的数据结构很重要。你不知道这样的结果何时会造就一些东西,从而让你创造更好的实践。」
#817样本如何激发模型7倍推理性能
上交大LIMO论文作者亲自解读
OpenAI o1 系列的推出,正式打响了 LLM 推理能力竞赛的第一枪。而在刚刚过去的 1 月, DeepSeek R1 发布,性能追平 o1,引发全球复现狂潮。
各大公司、研究机构纷纷遵循这一范式:用更庞大的数据集,结合更复杂的强化学习(RL)算法,试图「教会」模型如何推理。
「更大即更强」似乎已成为大家共识。
然而,最近上海交通大学的研究团队却指出:在数学推理领域,这种传统认知可能需要重新审视。
他们的研究 LIMO(Less Is More for Reasoning)表明,仅需 817 条精心设计的训练样本,就能让模型在数学竞赛级别的题目上超越当前许多最先进模型 (o1-preivew, QwQ 等),包括使用十万量级高质量数据训练的模型。
这一突破建立在两个关键洞察之上:
首先,现代大语言模型在预训练阶段已经积累了海量数学知识(如 Llama3 仅在数学推理上的训练数据达 3.7T token,而 Llama2 的全部训练数据仅有 1.8T);
其次,推理能力的提升更依赖于推理过程的质量而非数据量的堆砌。研究团队提出,大模型的推理能力本质上是「潜伏的」而非「缺失的」,关键在于如何有效激活这些能力。
实验结果有力支持了这一理论:在美国数学竞赛邀请赛(AIME)2024 中,LIMO 的准确率达到 57.1%,显著超越了传统方法;在 10 个不同的多学科多语言基准测试上,它实现了 40.5% 的绝对性能提升。
值得一提的是,在刚刚发布的 AIME 2025 Part1 中,LIMO 依然保持极高的泛化性,取得了 46.7% 的正确率,超过了 o3-mini-low、s1-32B 等模型。研究还揭示了提升推理能力的三个关键因素:推理链的质量、问题的难度层次,以及预训练知识的深度。这一发现不仅为 AI 推理能力的突破提供了新思路,也将带来更高效的模型训练范式。
为了更好的帮助大家了解 LIMO,最新一期线上分享邀请到了论文作者叶懿芯以及黄臻,为大家进行深度剖析。感兴趣的读者,还可以参考此前报道《817 样本激发 7 倍推理性能:上交大「少即是多」定律挑战 RL Scaling 范式》了解更多内容。
分享主题:LIMO:八百样本激发强推理能力
嘉宾介绍:叶懿芯,上海交通大学三年级本科生,创智学院 / 交大 GAIR Lab 实习生,导师为刘鹏飞副教授。研究兴趣为大语言模型的复杂推理、基础研究、预训练及多模态。已在 NeurIPS、ECCV 等顶级国际会议上发表多篇论文,主导 / 参与了 AIME-Prievew、O1-journey、OlympicArena 等多个开源项目。
个人主页:https://bleaves.github.io/
黄臻,苏州大学四年级本科生,创智学院 / 交大 GAIR Lab 准博士,导师为刘鹏飞副教授。主要研究方向为大语言模型强推理能力的评估与提升,包括推理能力评估基准构建、高效数据工程策略以及 inference-time scaling 技术应用。已在 NeurIPS 等顶级国际会议上以第一作者身份发表多篇论文,同时主导 / 参与了 OlympicArena、O1-journey 等多个开源项目。
个人主页:zhenhuang02.notion.site
分享摘要:本次分享将详细介绍 LIMO 方法如何通过精选的 817 条样本,在数学推理任务上超越主流大模型。我们将深入探讨推理链设计、问题选择等关键技术,以及「少即是多」原则对 AI 发展的深远影响。
相关链接:
- 论文标题:LIMO: Less is More for Reasoning
- 论文地址:https://arxiv.org/pdf/2502.03387
- 代码地址:https://github.com/GAIR-NLP/LIMO
- 数据集地址:https://huggingface.co/datasets/GAIR/LIMO
- 模型地址:https://huggingface.co/GAIR/LIMO
#Anthropic发布38页经济指数报告
Claude 4要来了?43%人类工作正被AI取代!
据悉,Anthropic本周会提前放出Claude 4?并且,一份38页Anthropic经济指数报告放出,结论是43%的人类工作正在被自动化!一个有趣的现象是:低薪和高薪职业中,AI使用率都很低。
Claude 3.5 Opus无了,Anthropic本周可能会提前放出Claude 4。
网友爆料称,除了Claude 4,还有推理模型也将首亮相,评分全面超越o3。
Anthropic已经沉寂太久了,去年曾被传出内部模型研发受阻。
不久前,或许因为DeepSeek的冲击,OpenAI、谷歌密集上新了新模型全家桶。
这次Anthropic要直接来一波大的:评分超越「满血」o3,那可是目前公认的比DeepSeek-R1强的对手!
同一天,他们还发布了「Anthropic经济指数」报告,全文38页全面分析了数百万匿名Claude对话,从中揭示了AI在各个职业的应用现状。
Anthropic认为在未来几年,AI对人们的工作将产生重大影响,最新报告旨在长期追踪AI对劳动力市场和经济的影响。
论文链接:https://assets.anthropic.com/m/2e23255f1e84ca97/original/Economic_Tasks_AI_Paper.pdf
AI将自动化43%工作
在这篇报告中,Anthropic从任务类型、使用深度、职业技能、收入水平等角度,讨论了AI对不同职业不同群体的影响。
主要结论如下:
- AI的使用主要集中在软件开发和写作任务上,这两者占总使用量的近50%。
- AI的使用范围更广泛,约有36%的职业在至少四分之一的相关任务中使用AI;在中等至高收入的工作中使用最为普遍。
- 在各类任务中,57%的使用表明AI在增强人类能力,而43%的使用表明在取代人类劳动,即工作自动化。
更值得一提的是,Cluade编码和数学占所有使用量1/3(37.2%)。
为什么发布「经济指数」?
基于Claude.ai平台上数百万条匿名对话数据,该指数的首份报告提供了前所未有的分析和洞察,揭示在现代经济的各类任务中,如何实际应用AI。
迄今为止,这是关于AI融入现实经济活动的最清晰图景。
为了推动更广泛的研究,Anthropic决定开源本次分析所使用的数据集,供研究人员在此基础上进一步探索和扩展。
项目地址:https://huggingface.co/datasets/Anthropic/EconomicIndex
面对劳动力市场即将到来的转型及其对就业和生产力的影响,制定有效的政策措施需要多方视角,统筹兼顾。
因此,Anthropic诚挚邀请经济学家、政策专家及其他研究人员提供宝贵意见。
数据分析方法:将对话和职业关联
新论文基于对技术影响劳动力市场的长期研究,从工业革命时期的珍妮纺纱机到当今的汽车制造机器人。
关注AI(AI)的持续影响。新研究不调查人们的AI使用情况,也不尝试预测未来;相反,直接获取了AI实际使用的数据。
分析职业任务
新研究始于经济学文献中的重要洞见:有时候,关注职业任务而非职业本身,也有意义。
工作通常共享某些任务和技能:例如,视觉模式识别是设计师、摄影师、安检员和放射科医生共同完成的任务。
某些任务比其他任务更适合被新技术自动化或增强。
因此,预计AI会在不同职业中有选择地被采用,分析任务(而不仅仅是整体工作)将提供一个更全面的图景,展示AI如何融入经济。
使用Clio匹配AI使用与任务
这项研究得以实现,依靠的是Clio系统。在保护用户隐私的同时,它可以分析与Claude的对话。
新研究分析了约一百万次与Claude的对话(包括Free和Pro版本的对话),并按职业任务对对话进行分类。
美国劳工部维护着一个包含约20,000项具体工作任务的数据库,称为职业信息网络(O*NET)。
在线职业分类:https://www.onetonline.org/
根据美国劳工部的分类选择任务,Clio将每次对话与最能代表对话中AI角色的O*NET任务进行匹配。
Clio系统将与Claude的对话(严格保密,位于下图顶部左侧)转化为职业任务(下图顶部中间),并进一步映射到O*NET提供的职业/职业类别(顶部右侧)。
随后,这些数据可以输入到多种分析中(下图底部一行)。
最后,按照O*NET的分类方案,将任务分组到它们最能代表的职业中,并将职业分组到一小组总体类别中:教育和图书馆、商业和金融等。
算法流程总结
具体结果
对不同职业影响
采用AI最多的任务和职业是「计算机与数学」类别,主要涵盖了软件工程角色。
37.2%的Claude查询属于这一类别,涉及的任务包括软件修改、代码调试和网络故障排除。
第二大类别是「艺术、设计、体育、娱乐和媒体」(10.3%的查询),主要反映了使用Claude进行各种写作和编辑任务。
不出所料,涉及大量体力劳动的职业,如「农业、渔业和林业」类别(0.1%的查询),在数据中表现最少。
新研究还将数据中的比例与各职业在整体劳动力市场中的出现率进行了比较,详细结果如下图所示。
职业内部AI使用程度
分析发现,在工作中AI的重度用户集中在极少数职业:仅约4%的职业在至少75%的任务中使用AI。
AI的中等使用率更为普遍:大约36%的职业,在至少25%的任务中一定程度地使用AI。
AI在经济中的应用分布:基于Claude.ai的真实使用数据。数据中的百分比表示与Claude的对话中涉及特定任务、职业及类别的比例。
AI在经济中的应用分布:基于Claude.ai的真实使用数据。数据中的百分比表示与Claude的对话中涉及特定任务、职业及类别的比例
正如预测的那样,数据中没有证据表明职业被完全自动化:相反,AI在经济中的许多任务中得到了广泛应用,对某些任务群体的影响比其他任务群体更大。
AI使用与薪资
O*NET数据库提供了各个职业在美国的中位薪资。
研究者将这一信息加入分析,从而比较不同职业的中位薪资与其任务中AI使用水平之间的关系。
有趣的是,低薪职业和高薪职业的AI使用率都较低(这些职业通常涉及大量手工操作,例如洗发师和产科医生)。
而AI使用最广泛的职业主要集中在中等至较高薪资范围内,例如计算机程序员和文案撰写人。
年薪(x轴)与涉及该职业的对话百分比(y轴)的关系。一些具有代表性的职业被突出显示
自动化vs.增强
研究者还更详细地分析了任务的执行方式。
他们关注了哪些任务属于「自动化」(即AI直接执行任务,如格式化文档),以及哪些任务属于「增强」(即AI与用户协作完成任务)。
总体来看,AI在任务执行上更倾向于增强模式,57%的任务属于增强,43%的任务属于自动化。
也就是说,在超过一半的情况下,AI并未取代人类完成任务,而是与人类协作,参与诸如验证(例如核对用户的工作)、学习(例如帮助用户获取新知识和技能)以及任务迭代(例如帮助用户进行头脑风暴或执行重复的生成性任务)等工作。
Claude对话中涉及增强与自动化的比例,以及每个类别内任务子类型的分解
38页报告中,还覆盖了其他一些有趣的数据。
下图4中展示了不同职业中,人工智能使用深度的分析。约36%的职业至少在25%的任务中使用AI,仅约4%的职业在75%或更多的任务中使用AI。
这表明了,在大多数职业中,人工智能的整合仍然是选择性的,而非全面性的。
图5展示的是,与Claude对话用户职业技能的分布。
批判性思维、写作、编程等技能在对话中出现频率较高,而设备维护、安装等手工技能则较为罕见。
图8所展示的是,Claude Sonnet 3.5(新版)和Claude Opus模型之间任务使用模式的比较分析,展示了人们偏好差异。
前者在编码和技术任务方面表现出更多的使用量,而后者则更多用于创意写作和教育内容开发。
任务层级使用状况
如上所述,研究人员用Clio创建了一个任务层级体系,将对话匹配到最适合的O*NET任务。
在顶层(图11),可以看到:
- IT、技术及相关任务占主导地位(对话量占比近50%)
- 第二层是创意和文化工作,与艺术、文化和宗教文物创作和保护相关的任务(约占20%)
- 商业管理、金融和客户服务运营构成第三大类别(约占5%)
- 其余类别各自占比均不超过15%
- 医疗服务和环境系统的代表性较低,各自占比不到5%
在中层级(图12),数据揭示了更细化的任务模式:
- 软件开发和网站维护是最普遍的活动(约占14%)
- 计算机系统编程和调试紧随其后(约占11%)
- 系统管理、硬件/软件故障排除和文档发布流程(各占4-6%)
- 市场营销/推广策略、网络优化、学术辅导和公关管理虽然出现,但频率较低(各约占2-3%)
- 数据科学和机器学习应用(约占2%)
在基础层级(图13),可以看到高度具体的技术操作:
- 软件修改和错误修正活动占主导地位,其中以适应新硬件或改进性能为重点的任务出现最频繁
- 初始调试程序、系统管理和硬件/软件故障排除是下一组最常见的活动
- 文档编辑和程序分析任务出现频率较低,但仍构成对话的重要部分
注意!
新研究提供AI如何改变劳动力市场的独特视角。
然而,与所有研究一样,它也存在重要的局限性。以下是一些主要的注意事项:
- 任务用途不明确:无法确定使用Claude完成任务的人是否是为了工作。例如,向Claude寻求写作或编辑建议的人可能是为了工作,也可能是为了业余写作的小说。
- 响应使用方式不明确:不知道用户如何使用Claude的响应。例如,他们是否复制粘贴代码片段?他们是否核实响应还是不加批判地接受?
- 数据来源有限:仅分析了Claude.ai免费和专业版的数据,而非API、团队或企业用户的数据。
- 任务分类误差:由于任务种类繁多,Clio可能会错误分类一些对话。
- 创意用途未涵盖:Claude无法生成图像(除通过代码间接生成外),因此创意用途在数据中未被引用。
- 编码用例可能过度代表:由于Claude被宣传为用于编码的顶尖模型,编码用例可能在数据中被过度代表。因此,我们不认为数据集中的用例代表了人工智能的普遍使用情况。
结论与未来
人工智能的使用正在迅速扩展,模型的能力也在不断提升。劳动力市场的面貌可能在短时间内发生显著变化。
因此,Anthropic将不断重复上述分析,以帮助跟踪可能发生的社会和经济变化,并定期发布结果和相关数据集。
这种纵向分析可以为提供关于AI和就业市场的新见解。
例如,可以监测职业内部AI使用深度的变化。如果人工智能仅用于特定任务,且只有少数职业在大多数任务中使用人工智能,那么未来可能是大多数现有职业演变而非消失。
还可以监测自动化与增强的比例,了解自动化在哪些领域变得更为普遍。
注意新研究只是对AI模型Claude的对话数据分析,并没有提供政策建议。
如何做好为AI对劳动力市场的影响的准备,不能仅从研究中直接得出,而是需要结合证据、价值观和广泛的经验。
参考资料:
https://assets.anthropic.com/m/2e23255f1e84ca97/original/Economic_Tasks_AI_Paper.pdf
https://www.anthropic.com/news/the-anthropic-economic-index
#SelfDefend
网传DeepSeek R1更容易被越狱?这有个入选顶会的防御框架SelfDefend
本文一作王勋广是香港科技大学的在读博士生,本科和硕士分别毕业于中国地质大学和哈尔滨工业大学,主要研究方向是大模型安全。通讯作者吴道远,香港科技大学研究助理教授,研究方向包括大模型安全、区块链和智能合约安全、移动系统和软件安全。通讯作者王帅,香港科技大学长聘副教授。研究方向包括 AI 安全、软件安全、数据隐私、逆向工程等。
最近一段时间,DeepSeek 可谓是风头无两。
在大家纷纷赞扬其超强性能的同时,也有媒体曝出 DeepSeek 的 R1 比其他 AI 模型更容易被越狱。
比如,此前宾夕法尼亚大学的研究者使用来自HarmBench数据集的50个有害提示对DeepSeek R1进行测试,这些提示涵盖网络犯罪、虚假信息和非法活动等领域。结果显示,DeepSeek未能拦截任何一个有害请求,攻击成功率达到惊人的100%。
这时如果有一个 AI 系统能像人类一样具备自我保护意识,在面对 ' 欺骗 ' 时能够当机立断地识破阴谋 —— 这不再是科幻片中的场景。
近日,来自香港科技大学、南洋理工大学等机构的研究团队最新成果让这一设想成为现实。他们提出的 SelfDefend 框架,让大语言模型首次拥有了真正意义上的 ' 自卫能力 ',能够有效识别和抵御各类越狱攻击,同时保持极低的响应延迟。
- 论文标题:SelfDefend: LLMs Can Defend Themselves against Jailbreaking in a Practical Manner
- 论文主页:https://selfdefend.github.io/
- 论文链接:https://arxiv.org/abs/2406.05498
- GitHub 链接:https://github.com/selfdefend/Code
近年来,大语言模型(LLMs)在自然语言处理、信息检索、图像生成等多个领域展现出巨大潜力。然而,随着 LLMs 的广泛应用,如何确保其安全性成为了一个重要课题。尤其是 “越狱攻击”(Jailbreaking),这种攻击通过绕过 LLMs 的安全对齐机制,诱导模型生成有害内容,引发了广泛关注。为了应对这一挑战,香港科技大学、南洋理工等团队联合提出了一种名为 SelfDefend 的新型防御框架,该框架通过引入 “影子 LLM”(Shadow LLM)来并行检测潜在的有害查询,从而有效抵御多种越狱攻击。
越狱攻击的多样性与防御挑战
越狱攻击的形式多种多样,包括基于人工设计的攻击、基于优化的攻击、基于生成的攻击,以及最近出现的间接攻击和多语言攻击。这些攻击手段不断进化,使得传统的防御机制难以应对。现有的防御方法主要分为两类:基于模型的防御和基于插件的防御。前者通过改进模型的内在机制来增强安全性,后者则通过外部插件来增强现有模型的安全性。然而,这些方法在实际应用中面临诸多挑战,无法同时满足四个目标:应对所有类型的攻击(O1)、引入可忽略的额外延迟(O2)、对检测出的越狱访问提供可解释性(O3),以及同时适用于开源和闭源模型(O4)。
SelfDefend 框架的创新设计
SelfDefend 框架的灵感来源于传统安全领域中的 “影子栈”(Shadow Stack)概念。影子栈通过创建一个并行的内存空间来防御内存溢出攻击,而 SelfDefend 则通过创建一个并行的 “影子 LLM” 来检测潜在的有害查询。具体来说,SelfDefend 框架包含两个并行的 LLM 实例:一个用于正常响应用户查询的目标 LLM(
),另一个用于检测有害内容的防御 LLM(
)。当用户输入查询时,目标 LLM 会正常处理查询并生成响应,而防御 LLM 则通过特定的检测提示词(
)来识别查询中的有害部分或意图。
这种设计带来了多重优势:首先,它同时利用了目标 LLM 的安全对齐机制和防御 LLM 的越狱检测能力,形成了双重保护层,显著提高了防御成功率;其次,由于防御 LLM 的输出通常较短(如 “No” 表示无问题),正常查询的响应延迟几乎可以忽略不计;然后检测出的有害部分或者恶意意图可以作为防御的可解释性;最后,由于防御 LLM 不需要修改或监控目标 LLM 的内部机制,因此可以兼容开源和闭源模型。
实验验证与效果评估
研究团队通过大量实验验证了 SelfDefend 框架的有效性。实验结果表明,基于 GPT-3.5 和 GPT-4 的 SelfDefend 能够显著降低多种越狱攻击的成功率。例如,基于 GPT-3.5 的 SelfDefend 将攻击成功率(ASR)从平均 65.7% 降低至 0.236,而基于 GPT-4 的 SelfDefend 更是将 ASR 降低至平均 0.050。此外,SelfDefend 对正常查询的影响微乎其微,GPT-3.5 和 GPT-4 的正常查询通过率仅分别下降了 0.51% 和 2.77%。
为了进一步降低成本和提升鲁棒性,研究团队还通过数据蒸馏方法对开源的 Llama-2-7b 模型进行了微调,生成了专用的防御模型。实验表明,这些微调后的模型在防御效果上与基于 GPT-4 的 SelfDefend 相当,且额外延迟显著降低。例如,微调后的模型在正常查询中的平均延迟仅为 0-0.01 秒,而在攻击场景中的最大延迟从 GPT-4 的 1.56 秒降低至 0.39 秒。
与现有防御方法的对比
研究团队还将 SelfDefend 与现有的七种主流防御方法进行了对比,包括 ICD、SafeDecoding、Perplexity Filter、SmoothLLM、Llama Guard 等。实验结果显示,SelfDefend 在 60 个测试场景中的 55 个场景中表现最优,尤其是在应对间接攻击和多语言攻击时,SelfDefend 的防御效果显著优于其他方法。此外,SelfDefend 的额外延迟也远低于其他防御方法,使其在实际部署中更具可行性。
未来展望
这项开创性的研究不仅为 AI 安全领域带来了突破性进展,更揭示了一个振奋人心的信号:AI 系统的安全性与效率不再是鱼和熊掌不可兼得。通过赋予 AI' 自卫意识 ',SelfDefend 展现了一个更安全的 AI 未来:在这个未来里,AI 系统既能保持高效服务能力,又能主动识别和抵御潜在威胁,真正实现 ' 自我守护 '。
参考链接:
https://x.com/rohanpaul_ai/status/1886025249273339961
#开源22万条DeepSeek R1的高质量数据
你也能复现DeepSeek了
DeepSeek 在海内外搅起的惊涛巨浪,余波仍在汹涌。
当中国大模型撕开硅谷的防线之后,在预设中总是落后半拍的中国 AI 军团,这次竟完成了一次反向技术输出,引发了全球范围内复现 DeepSeek 的热潮。
DeepSeek-R1 虽然开源,但也没有完全开源,训练数据、训练脚本等关键信息并未完全公布。
不过,有技术报告,相当于拥有着复现 R1 的指导方针,已经有不少执行力强的团队用小模型见证「aha moment」了。在浩浩荡荡的复刻大军中,最令人瞩目的,当数 Hugging Face 领衔的 Open R1 项目。
Open R1 宣称要做到完全开放复现 DeepSeek-R1,补齐 DeepSeek 所有未公开的技术细节。Open R1 项目刚刚启动不过几周,他们已经完成了:
- GRPO 实现
- 训练与评估代码
- 用于合成数据的生成器
项目地址:https://github.com/huggingface/open-r1
在开源社区的众志成城,Open R1 更是动作迅速。今天,他们发布了 OpenR1-Math-220k 数据集,又补全了一块 DeepSeek R1「碎片」—— 合成数据。
OpenR1-Math-220k 数据集概览
数据集链接:https://huggingface.co/datasets/open-r1/OpenR1-Math-220k
DeepSeek R1 的一个重要优势在于它能够将高级推理能力迁移到较小的模型中。DeepSeek 团队生成了 60 万条推理数据,在 Qwen 和 Llama 等开源模型上证明了这种迁移能力。即使不使用强化学习,直接从 R1 模型进行迁移也能实现强大的推理性能。
然而,这些合成数据仅 DeepSeek 可见,未对其他团队开放阅读权限。
OpenR1-Math-220k 数据集就是来补上这块空缺的。具体而言,Open R1 团队使用 DeepSeek R1 生成了 80 万条推理轨迹,经过筛选和验证后得到了 22 万条高质量数据。
这些数据可以用来支持更小的模型,来达到媲美 DeepSeek R1 的效果。比如在 OpenR1-Math-220k 数据集上训练出来的 Qwen-7B-Math-Instruct,达到了与 DeepSeek-Distill-Qwen-7B 相当的性能。
下面就让我们来看看 OpenR1-Math-220k 数据集的特点,以及它是怎么诞生的:
自动过滤正确答案
本地高效生成
目前,开源社区已经发布了 OpenThoughts-114k、Bespoke-Stratos-17k、Dolphin-R1 和 LIMO 等多个推理数据集。
然而,为了进行推理公众公开发布,这促使社区独立重建类似的数据集。另外,社区已经发布了多个开放数据集,包括 OpenThoughts-114k、Bespoke-Stratos-17k、Dolphin-R1 和 LIMO。
为了整理 OpenR1-Math-220k,Open R1 还和开发了广受欢迎的 NuminaMath-CoT 数据集开发团队 Numina 进行了合作。
那么,与现有数据集相比,Open R1 的数据集有什么新特点呢?
- 80 万条 R1 推理轨迹:使用 DeepSeek R1 为 40 万个问题各生成了两个答案,最终经过筛选后保留了 22 万个具有正确推理轨迹的问题。
- 本地运行 512 个 H100:没有依赖 API,而是在计算集群上利用 vLLM 和 SGLang 本地运行生成任务,每天可以生成 18 万条推理轨迹。
- 基于 NuminaMath 1.5:专注于数学推理公式,为 NuminaMath 1.5(NuminaMath-CoT 数据集的改进版本)中的问题生成答案。
- 自动过滤:Open R1 团队通过数学验证,只保留至少有一个正确答案的问题,还让 Llama3.3-70B-Instruct 作为「判官」,以筛选出更多正确的样本,特别是那些因格式错误而无法通过基于规则的解析器验证的答案。
- 在 OpenR1-Math-220k 训练出来的 Qwen-7B-Math-Instruct,达到了与 DeepSeek-Distill-Qwen-7B 相当的性能。
数据集分为两个部分:
- default(94k 问题):这部分数据在经过监督微调(SFT)后表现最佳。
- extended(131k 问题):这部分数据包含额外的 NuminaMath 1.5 数据源,例如 cn_k12,提供了更多的推理公式。(研究发现这个子集在经过监督微调后的性能低于默认数据集,可能是因为 cn_k12 中的问题相对简单。)
Open R1 团队表示,希望这个可扩展的、高质量的推理数据生成过程,能够启发代码生成等数学之外的领域。
数据生成
为了构建数据集,OpenR1 团队让 DeepSeek R1 为来自 NuminaMath 1.5 的 40 万个问题生成答案。他们遵循了 DeepSeek 技术报告中推荐的参数设置,并在提示词前添加了以下指令:
Please reason step by step, and put your final answer within \boxed{}.
为了确保生成过程的高效性,团队将每次生成的 tokens 限制设置为 16k。经过分析发现,只有 75% 的问题能够在 8k tokens 内解决,而大多数剩余问题需要完整的 16k tokens。
最初,他们使用 vLLM 进行推理,每个 H100 节点每秒可以生成 15 个答案,并且相关生成脚本已分享在 OpenR1 仓库中。最近,他们又开始尝试使用 SGLang,每个 H100 节点每秒可以生成 25 个答案(速度提升了近两倍),这使得 512 个 H100 节点上每天能生成 30 万个问题的答案。
为了在后续的过滤和优化过程中提供更大的灵活性,团队为每个问题生成了两个答案 —— 有时甚至生成四个。这样一来,不仅复刻出了类似于 DeepSeek R1 允许进行拒绝采样的方法,还能使数据集能够适用于如 DPO 等偏好优化方法。
数据生成脚本:https://github.com/huggingface/open-r1/tree/main/slurm。
数据过滤
为了确保数据集中只包含高质量且正确的推理结果,Open R1 团队设计了一套数学验证系统,用于自动比对 LLM 生成的复杂数学表达式答案与数据集中的标准答案。
在这个过程中,OpenR1 团队发现大约 55% 的问题至少有一个正确答案。然而,NuminaMath 1.5 数据集中有很多答案是空的,或者格式不符合验证标准,这都给自动验证带来了困难。
为了解决这些问题,Open R1 团队先是对 Math-Verify 工具进行了改进,使其能够处理更多不常见的答案格式,再使用 Llama-3.3-70B-Instruct 模型进行二次评估。
具体来说,对于那些被 Math-Verify 判定为错误的答案,使用 Llama-3.3-70B-Instruct 模型重新评估,识别实际上正确但因格式问题被错判的答案。最终,他们找回了 2.5 万条被「误判」的数据。
优化 Math-Verify 工具:对 Math-Verify 工具进行了改进,使其能够处理更多不常见的答案格式。
让 Llama-3.3-70B-Instruct 「作判官」的提示词如下:
You are a mathematical answer validator. You will be provided with a mathematical problem and you need to compare the answer in the reference solution, and the final answer in a model's solution to determine if they are equivalent, even if formatted differently.
PROBLEM:
{problem}
REFERENCE SOLUTION:
{answer}
MODEL'S SOLUTION:
{generation}
Focus ONLY on comparing the final mathematical answer provided by the model while ignoring differences in:
- Formatting (e.g., \\boxed{{}} vs plain text)
- Multiple choice formatting (e.g., "A" vs full solution)
- Order of coordinate pairs or solutions
- Equivalent mathematical expressions or notation variations
- If the model's answer is nonsense, return "Verdict: AMBIGUOUS"
Start with a brief explanation of your comparison (2-3 sentences). Then output your final answer in one of the following formats:
- "Verdict: EQUIVALENT"
- "Verdict: DIFFERENT"
- "Verdict: AMBIGUOUS"
对于那些包含多个正确答案的数据行,团队尝试使用奖励模型(RM)作为最终筛选器来选择最佳答案。具体操作如下:
首先,从每个包含多个正确答案的数据行中,去掉(<think>…</think>),提取最终答案;第二,将问题和提取的答案输入到配置了 vLLM 的 Qwen/Qwen2.5-Math-RM-72B 模型中,获取每个答案的评分;接着,根据模型评分,对每个包含多个正确答案的数据行排名,选择排名最高的答案纳入训练数据集。
遗憾的是,消融实验表明,这种方法并没有比随机选择一个正确答案带来更好的模型性能。Open R1 团队的判断是,可能在使用奖励模型评分时,不仅要考虑最终答案,还要包括推理过程。
Open R1 训练出来的新模型 VS DeepSeek-Distill-Qwen-7B
Open R1 在 OpenR1-Math-220k 的基础上,对 Qwen2.5-Math-Instruct 进行了 3 轮微调,学习率为 5e-5。
为了将上下文长度从 4k 扩展到 32k,他们将 RoPE 频率提高到 300k。训练遵循线性学习率调度,其中包含 10% 的预热阶段。
下表展示了在 lighteval 上 OpenR1-Qwen-7B、DeepSeek-Distill-Qwen-7B 和 OpenThinker-7B 的性能对比,可以看出在数学成绩上,OpenR1-Qwen-7B 和 DeepSeek-Distill-Qwen-7B 差距不是非常明显。
本周 AIME 2025 开赛,来自苏黎世联邦理工学院的研究人员用新题来测评了多款模型,却发现各种模型的数学能力下降了 10-20 个百分点之间。有研究者发现这些「全新」的 AIME 题可能已经在互联网论坛泄露,这有可能造成意外的过拟合问题,这也凸显了新鲜测试数据的困境。
同时,开源社区也从多个角度探索了 GRPO,有多个研究实验室表明,大约 1000 个高质量的训练样本可能就足以在现有的开源模型中引发推理能力。
启示和新的问题
LLM 是否需要使用自然语言进行推理?
论文链接:https://arxiv.org/pdf/2502.05171
马里兰大学的一篇论文表明,通过使用循环语言模型,可以在潜在空间中隐式推理,从而在测试时扩展计算能力,这类似于 Meta 的 Coconut。这些方法的优势在于它们的计算效率更高:通过探索潜在空间,无需生成大量「思考」token 即可获得高性能。
是否要转向更小、高质量的推理数据?
尽管 DeepSeek R1 使用了 600k 推理轨迹进行蒸馏,但最新研究表明,复杂的推理能力并非单纯通过大规模训练在语言模型中实现,而是可以通过少量精心设计的样本达成。
s1K 数据集就是一个很好的例子。它包含 1000 个经过精心挑选的数学问题,以及从 Gemini Flash 蒸馏出的推理轨迹。在选择问题时,研究者注重难度、多样性和质量。通过在 s1K 数据集上对 Qwen2.5-32B-Instruct 进行微调,研究者成功使其在竞赛数学基准测试中超过了 OpenAI 的 o1-preview,最高提升了 27%。
另一个数据集 LIMO 也进一步验证了这一理念。它仅使用 817 个训练样本,就在 AIME 和 MATH 基准测试中取得了出色的表现。LIMO 的作者推测,当模型在预训练阶段已经积累了丰富的知识后,可能只需要少量结构良好的样本,就能解锁高级推理能力。
CoT 长度:预算强制与奖励塑造
Qwen2.5-32B-Instruct 模型在 s1K 数据集上微调后表现出色,其中一个关键因素是采用了「预算强制」。这是一种测试时的计算技术,通过在模型生成中添加「等待」token 来延长推理时间,或者添加「结束思考」的 token 来截断推理。
这种方法使研究者能够灵活调整模型的思考时间,并发现随着思考时间的增加,模型在不同数学基准测试中的准确性也随之提高。
同样,Yeo 等人在研究《Demystifying Long Chain-of-Thought Reasoning in LLMs》中探讨了思维链(CoT)长度对模型性能的影响。他们引入了一种名为「余弦奖励」的新奖励函数,用于在正确生成时激励较短的 CoT,在错误生成时激励较长的 CoT。这种奖励机制在模型的最大上下文大小有限且平均响应长度可能失控的情况下,能够稳定强化学习训练。
论文链接:https://arxiv.org/pdf/2502.03373
此外,当模型在处理难题时出现奖励劫持的迹象(即通过重复而非真正解决问题来增加 CoT 长度),研究者还会采用重复惩罚机制,以避免模型陷入无效的循环推理。
Open R1 团队表示,现在 GRPO 已经在 TRL 中顺利运行,他们正在开展一系列广泛的实验,以了解哪些超参数和奖励函数对训练的影响最大。
那就让我们静待 Open R1 的好消息吧。
参考链接:
https://huggingface.co/blog/open-r1/update-2
https://x.com/_lewtun/status/1889002019316506684
https://huggingface.co/open-r1
#免费的满血版DeepSeek-R1 API
不卡顿,在无问芯穹这里用上了,更有异构算力鼎力相助
还在为 DeepSeek R1 官网的卡顿抓狂?无问芯穹大模型服务平台现已上线满血版 DeepSeek-R1、V3,无需邀请即可免费用 Token!另有异构算力鼎力相助,支持通过 Infini-AI 异构云平台一键获取 DeepSeek 系列模型与多元异构自主算力服务。
戳大模型服务平台立刻在线体验:https://cloud.infini-ai.com/genstudio?source=9B2W
无问芯穹本次上架的满血 DeepSeek-R1 还支持并发服务包模式,支撑企业级稳定应用,客户可以按需购买 5,10,50,100 等不同规格的稳定并发服务包来保证生产级稳定性。同时,Infini-AI 还支持并发服务包 + 按量并发混合调用模式,适应弹性流量,欢迎填写表单获取超稳定的企业级服务:
https://infinigence.feishu.cn/share/base/form/shrcneXZPoXbmWoYznkadWG01ug
当 DeepSeek R1 叠加 Cursor
开发效率飙升
DeepSeek-R1 作为国产大模型的实力担当,结合 Cursor,能更好地理解你的意图,生成更精准的代码。下面分享一个借无问芯穹大模型服务平台将 DeepSeek-R1 API 接入 Cursor 的保姆级教程,来体验一下开发效率飞升。
1. 准备工作
- 注册账号:登录无问芯穹大模型服务平台 (https://cloud.infini-ai.com/genstudio?source=9B2W)
- 获取 API 密钥:在「模型广场」选择 DeepSeek-R1,点击创建并获取 APIKEY,复制模型名称。
- 【还未安装 Cursor】可前往 Cursor 官网(https://www.cursor.com/)下载并安装。
2. Cursor 中集成 API 服务
无问芯穹大模型服务平台提供 OpenAI 兼容的 API 服务,可在 Cursor 中通过 OpenAI API Key 选项轻松集成。
- 打开 Cursor 设置
- 在 Openrouter model 中关闭所有自带模型,确保列表中有上一步复制的模型名称「deepseek-r1」。
- 在设置中选择 Models 页面,找到 OpenAI API Key 模块。填写在无问芯穹大模型服务平台获取的 API Key 密钥,并将 Base URL 配置为 https://cloud.infini-ai.com/maas/v1
- 确保在 Models 页面添加与无问芯穹大模型服务平台相关的模型名称,并勾选。例如:
- deepseek-r1
- deepseek-v3
- deepseek-r1-distill-qwen-32b
3. Cursor 企业级开发场景展示
我想创建一个 ComfyUI 体验应用,用户可以通过简单的 Web 界面,上传一张人像照片,然后选择不同的风格(例如:卡通风格、油画风格、赛博朋克风格),应用将自动使用 ComfyUI 工作流生成对应风格的图像。
Web 应用需要包含:1. 图片上传区域 2. 风格选择下拉菜单 3. 生成按钮 4. 显示生成结果的区域。
打通多芯片适配优化
国产芯片也能跑满血 R1
此外,无问芯穹异构云大模型服务平台不仅已正式上线满血版 DeepSeek-R1、DeepSeek-V3,且在逐一打通 DeepSeek-R1 在壁仞、海光、摩尔线程、沐曦、昇腾、燧原、天数智芯等七个硬件平台上的便捷部署与推理服务,支持通过 Infini-AI 异构云平台一键获取 DeepSeek 系列模型与多元异构自主算力服务,为大家带来更高效、更省心、更划算的 AI 开发和应用体验,欢迎广大开发者前往无问芯穹 Infini-AI 异构云大模型服务平台尝鲜使用。
无问芯穹大模型服务平台也支持咨询私有化部署等各种企业级服务需求,欢迎大家加入社群一起交流开发和使用经验。
#ReasonFlux
8卡32B模型超越o1预览版、DeepSeek V3,普林斯顿、北大提出层次化RL推理新范式
一.引言
推理大语言模型(LLM),如 OpenAI 的 o1 系列、Google 的 Gemini、DeepSeek 和 Qwen-QwQ 等,通过模拟人类推理过程,在多个专业领域已超越人类专家,并通过延长推理时间提高准确性。推理模型的核心技术包括强化学习(Reinforcement Learning)和推理规模(Inference scaling)。
主流的大模型强化学习算法,如 DPO、PPO、GRPO 等,通常需要在完整的思维链上进行微调,需要高质量数据、精确的奖励函数、快速反馈和在线迭代、以及大量的算力。当处理复杂任务,如高级数学和编程问题时,模型需要更细粒度的搜索、更精确的推理步骤和更长的思维链,导致状态空间和策略空间的规模急剧扩大,难度大幅上升。
Inference scaling 策略,不依赖训练,通过延长推理时间进一步提高模型的 Reasoning 能力。常见方法,如 Best-of-N 或者蒙特卡洛树搜索(MCTS),允许 LLM 同时探索多条推理路径,扩大搜索空间,朝着更有希望的方向前进。这些方法计算成本高,特别是步骤多或搜索空间大的时候。采样随机性使得确定最佳路径困难,且依赖手动设计的搜索策略和奖励函数,限制了泛化能力。
在此背景下,普林斯顿大学团队联合北京大学团队合作开发了名为 ReasonFlux 的多层次(Hierarchical)LLM 推理框架。
- 文章链接:https://arxiv.org/abs/2502.06772
- 开源地址:https://github.com/Gen-Verse/ReasonFlux
(该论文作者特别声明:本工作没有蒸馏或用任何方式使用 DeepSeek R1。)
基于层次化强化学习(Hierachical Reinforcement Learning)思想,ReasonFlux 提出了一种更高效且通用的大模型推理范式,它具有以下特点:
- 思维模版:ReasonFlux 的核心在于结构化的思维模板,每个模版抽象了一个数学知识点和解题技巧。仅用 500 个通用的思维模板库,就可解决各类数学难题。
- 层次化推理和强可解释性:ReasonFlux 利用层次化推理(Hierarchical Reasoning)将思维模板组合成思维轨迹(Thought Template Trajectory)、再实例化得到完整回答。模型的推理过程不再是 “黑盒”,而是清晰的展现了推理步骤和依据,这为 LLM 的可解释性研究提供了新的工具和视角,也为模型的调试和优化提供了便利。与 DeepSeek-R1 和 OpenAI-o1 等模型的推理方式不同,ReasonFlux 大大压缩并凝练了推理的搜索空间,提高了强化学习的泛化能力,提高了 inference scaling 的效率。
- 轻量级系统:ReasonFlux 仅 32B 参数,强化训练只用了 8 块 NVIDIA A100-PCIE-80GB GPU。它能通过自动扩展思维模板来提升推理能力,更高效灵活。
ReasonFlux-32B 在多个数学推理基准测试中表现出色,仅仅用了 500 个基于不同数学知识点的思维模版,就展现了其强大的推理能力和跻身第一梯队的实力。
二.ReasonFlux:
三大关键技术构建大模型推理新框架
ReasonFlux 的性能提升得益于其三大核心技术:
- 结构化的思维模板抽取:ReasonFlux 利用大语言模型从以往的数学问题中提取了一个包含大约 500 个结构化思维模板的知识库。每个模板都包含标签、描述、适用范围、应用步骤等信息,这些信息经过组织和结构化处理,为 LLM 的推理提供了元知识参考。这些模板覆盖了多种数学问题类型和解题方法,如不等式求解、三角函数变换、极值定理等,是 ReasonFlux 进行推理的基础。
- 多层次强化学习(Hierarchical RL) — 选择最优的 Thought Template Trajectory:该算法通过 Hierarchical Reinforcement Learning 训练一个 High-level 的 navigator,使其能够对输入问题进行拆解,转而求解多个更简单的子问题,根据子问题类型从模板库中检索相关的思维模板,并规划出最优的 Thought Template Trajectory。它可以看作是解决问题的 “路线图”,它由一系列的模板组合而成。这种基于 Hierarchical RL 的优化算法通过奖励在相似问题上的泛化能力,提升了推理轨迹的鲁棒性和有效性,使得 ReasonFlux 能够举一反三,为各种数学问题生成有效的思维模板轨迹。
- 新型 Inference Scaling 系统:该系统实现了结构化模板库和 inference LLM 之间的多轮交互。“Navigator” 负责规划模板轨迹和检索模板,inference LLM 负责将模板实例化为具体的推理步骤,并通过分析中间结果来动态调整轨迹,实现高效的推理过程。这种交互机制使得 ReasonFlux 能够根据问题的具体情况灵活调整推理策略,从而提高推理的准确性和效率。
(a)推理示例对比:
接下来我们来分析 ReasonFlux 在解决实际问题上相较于 o1-mini 的对比。
我们来看和 o1-mini 的对比
如上图可知,o1-mini 在面对这道难题时,尝试了多种策略,但均未能找到有效的突破口。它首先试图通过引入新变量和利用对称性来简化方程组,但收效甚微;接着又尝试假设变量相等来寻找特解,结果却得出了矛盾;随后,它试图用一个变量表示其他变量,并尝试平方去根号,但复杂的表达式使其望而却步;最后,它甚至想到了三角换元,但由于未能正确应用,最终只能无奈地放弃求解。
相比之下,ReasonFlux 的解题过程如下:
- 分析与规划:ReasonFlux 首先对题目进行分析,确定了解题的主要步骤:初步确定 k 值的范围、利用三角换元、化简方程组、求解 θ、计算目标值。这一步反映了 ReasonFlux 的问题分析和规划能力,为后续解题过程提供了基础。
- 模板化推理:ReasonFlux 随后依次应用了 “三角换元”、“化简方程组”、“求解 θ” 等模板,将复杂的方程组逐步简化,并最终求解出 θ 的值。每一步都依据模板的指导,旨在保证解题过程的准确性。
- 逐步推导:ReasonFlux 根据求得的角度值,计算出 (x, y, z) 的值,并最终计算出目标值
-
- ,从而得到 (m=1, n=32, m+n=33)。整个过程逻辑清晰,步骤明确,展示了 ReasonFlux 的规划和推理能力。
(b) 新的 inference scaling law:
如上图所示,随着问题复杂度的增加,ReasonFlux 正确解答问题时所需的模板数量和交互轮数也相应增加。这表明 ReasonFlux 能够根据问题的难度动态调整推理策略,体现了其优秀的自适应能力。并且可以观察到,交互轮数的增长趋势略高于模板数量,这意味着规划能力的提升对解决复杂问题至关重要。
三.主流推理范式对比:
ReasonFlux vs Best-of-N & MCTS
目前,提升 LLM 推理性能的主流方法通常依赖于增加模型规模和计算资源。例如,增加模型参数量、采用 Best-of-N 或蒙特卡洛树搜索 (MCTS) 等方法来扩大搜索空间以寻找更优解。然而,这些方法往往计算成本较高,且模型的推理过程难以解释。
ReasonFlux 采用了一种不同的方法,通过构建结构化的思维模板库和设计新的层次化强化学习算法,实现了一种更高效和可解释的推理方式。
传统的 Inference Scaling 方法,如 Best-of-N 和 MCTS,主要通过扩大搜索空间来提高准确率。但随着问题复杂度的增加,搜索空间呈指数级增长,导致计算成本显著上升。
在 ReasonFlux 的推理过程中,Navigator 与 Inference LLM 之间存在多轮交互。Inference LLM 根据 Navigator 给出的模板轨迹执行推理步骤后,Navigator 会对执行结果进行评估
。如公式
所示,根据评估结果,Navigator 会动态调整模板轨迹
,例如修改当前步骤的模板、添加或删除步骤等。这种迭代优化的机制使得 ReasonFlux 能够根据问题的具体情况灵活调整推理策略,从而提高推理的准确性和效率。
ReasonFlux 通过引入结构化的思维模板,将搜索空间从 “原始解空间” 缩小到 “模板空间”,从而降低了搜索的难度和成本。如果说传统的推理范式是 “大海捞针”,那么 ReasonFlux 则是 “按图索骥”。这些模板并非简单的规则堆砌,而是经过提炼和结构化处理的知识模板,它们将复杂的推理过程分解为一系列可复用的步骤,从而提升了推理的效率和准确率。
如上图所示,随着问题难度的提升,Best-of-N 和 MCTS 的探索成本(例如采样轨迹数量和迭代次数)显著增加,而 ReasonFlux 的探索成本(交互轮数)则保持在较低水平且相对稳定。这说明 ReasonFlux 能够更高效地利用已有的知识模板来解决问题,而不需要像 Best-of-N 和 MCTS 那样进行大量的试错和探索。这得益于 ReasonFlux 的结构化模板库和模板轨迹规划机制,使其能够在更小的搜索空间内找到正确的推理路径。
四.训练及推理框架介绍
下图展示了 ReasonFlux 的训练框架,其核心在于利用结构化的思维模板库和基于思维模板轨迹奖励的层次化强化学习算法,训练出一个能够进行高效推理的大模型。整个训练过程可以分为两个主要阶段:结构化知识学习和思维模板轨迹优化。
1. 结构化知识学习阶段:这个阶段的目标是让模型学习思维模板库中蕴含的结构化知识。这些结构化的 Thought template 格式如下图所示:
然后,我们利用这些结构化模板数据
对一个基础 LLM 进行微调,得到模型
。训练的目标是让模型能够根据模板的名称和标签,生成对应的描述和适用范围 。通过这个阶段的训练,模型学习到了模板库中蕴含的丰富知识,并具备了初步的模板理解和应用能力。
2. 模板轨迹优化阶段:这个阶段的目标是训练模型生成有效的模板轨迹,即针对特定问题,选择合适的模板并进行排序,形成解决问题的 “路线图”。我们利用新颖的基于 Thought Template Trajectory 的 Hierarchical RL 算法来实现这一目标。在这个阶段,我们使用
模型针对输入问题
生成多个候选的 high-level 思维模板轨迹
。每个轨迹由一系列步骤
组成,每个步骤都关联到一个特定的模板。为了评估轨迹的质量,我们构建了一组与输入问题
相似的问题集
。然后,我们利用 inference LLM
根据模板轨迹对这些相似问题进行具体的解答,并计算平均准确率作为轨迹的奖励
。基于这个奖励信号,我们构建了优化样本对
,其中
。然后,我们利用这些样本对,通过 DPO 对
进行进一步优化,得到最终的 navigator 模型
,也就是我们的 ReasonFlux 模型。
通过这两个阶段的训练,ReasonFlux 模型不仅学习到了结构化的模板知识,还学会了如何针对特定问题选择和组合模板,形成有效的推理路径。这种能力使得 ReasonFlux 能够高效地解决各种复杂的数学推理问题。
下图是 ReasonFlux 的推理框架。其核心在于 navigator、inference LLM 和结构化模板库之间的多轮交互。这种交互机制使得 ReasonFlux 能够根据问题的具体情况灵活调整推理策略,从而提高推理的准确性和效率。
以下是 ReasonFlux 的推理流程:
1. 问题抽象:给定一个输入问题
,ReasonFlux(即 navigator
)首先对其进行分析,并提取出问题的核心数学概念和关系,形成一个抽象表示
。这一步可以理解为对问题进行 “降维”,提取出问题的本质特征。
2. 轨迹规划:基于问题的抽象表示
,ReasonFlux 规划出一个最优的模板轨迹
。这个轨迹可以看作是解决问题的 “路线图”,它由一系列步骤组成,每个步骤都对应一个特定的模板。
3. 模板检索:根据轨迹中的每个步骤
关联的模板名称
和标签
,ReasonFlux 从结构化模板库
中检索出相关的模板集合
。
4. 模板实例化: Inference LLM
根据检索到的模板
和输入问题
的具体信息,将轨迹中的每个步骤
实例化为具体的推理步骤
。这个过程可以理解为将抽象的模板应用到具体的问题中。
5. 轨迹调整: ReasonFlux 会评估每个实例化步骤
的执行结果,并根据评估结果
动态调整模板轨迹。例如,如果发现当前步骤的模板不适用,ReasonFlux 可能会选择另一个模板,或者添加新的步骤。这种迭代优化的机制使得 ReasonFlux 能够根据问题的具体情况灵活调整推理策略,从而提高推理的准确性和效率。
通过这种 navigator 引导、inference LLM 执行、模板库支持、动态调整轨迹的多轮交互机制,ReasonFlux 能够高效地解决各种复杂的数学推理问题。这种推理框架不仅提高了推理的准确性和效率,还增强了模型的可解释性,因为我们可以清晰地追踪模型的推理过程和依据。
五.数学推理数据集上的表现:
小模型媲美大模型,展现未来应用潜力
ReasonFlux 在 MATH、AIME 2024、AMC 2023、OlympiadBench 和 Gaokao En 2023 等多个具有挑战性的数学推理数据集上进行了测试,并取得了良好的结果。
ReasonFlux-32B 在这些数据集上的表现处于前列,与其他先进模型相比具有竞争力。如下表所示,在 MATH 数据集上,ReasonFlux-32B 的准确率为 91.2%;在 AIME 2024 数据集上,ReasonFlux-32B 的准确率为 56.7%。这些结果表明 ReasonFlux 框架具有有效性。更重要的是,它表明较小规模的模型通过优化推理框架,可以达到甚至在某些情况下超越较大模型的性能。
ReasonFlux 还可用于不同大小(1.5B, 7B 和 32B)的基础模型,并且都能获得巨幅的推理效果提升,足见其通用性和泛化性。
ReasonFlux 的成功不仅限于数学推理领域,其背后的核心思想 —— 结构化思维模板和模板轨迹 —— 具有广泛的应用潜力。未来,ReasonFlux 有潜力被应用于更多领域,如代码生成,医疗诊断,具身智能等多个领域。
六.作者介绍
杨灵:北大在读博士,普林斯顿高级研究助理,研究领域为大语言模型和扩散模型。
余昭辰:新加坡国立大学在读硕士,北京大学 PKU-DAIR 实验室科研助理,研究领域为大语言模型和扩散模型。
崔斌教授:崔斌现为北京大学计算机学院博雅特聘教授、博士生导师,担任计算机学院副院长、数据科学与工程研究所所长。他的研究方向包括数据库系统、大数据管理与分析、机器学习 / 深度学习系统等。
王梦迪教授:王梦迪现任普林斯顿大学电子与计算机工程系终身教授,并创立并担任普林斯顿大学 “AI for Accelerated Invention” 中心的首任主任。她的研究领域涵盖强化学习、可控大模型、优化学习理论以及 AI for Science 等多个方向。
#Sa2VA
统一SAM2和LLaVA!字节豆包提出Dense Video多模态大模型Sa2VA
在最近的一篇论文中,来自字节跳动、北京大学等机构的研究者提出了 Sa2VA。市面上第一个结合 SAM-2 和 LLaVA-like 的视频多模态大模型,结合了 SAM-2 和 LLaVA 的优势,实现了时空细粒度的理解。
- 论文地址:https://arxiv.org/pdf/2501.04001
- 项目主页:https://lxtgh.github.io/project/sa2va/
- GitHub 地址:https://github.com/magic-research/Sa2VA
具体来说,研究者设计了一套统一的指令微调格式 (Instruction Tuning Pipeline),整合了五种不同的任务,超过 20 个数据集一起进行联合训练。该模型在多个视频理解和图像理解,视频指代分割和图像指代分割的任务上均取得了领先的效果。
图 1 Sa2VA 的能力。(a) 给定一个视频, Sa2VA 能够分割所指的对象并理解整个场景。(b) Sa2VA 在单词指令追随训练的情况下,支持图像对话、视频对话、图像引用分割、视频引用分割以及物体描述生成。(c) 与现有的 MLLM(例如 GLaMM 和 OMG-LLaVA)相比,Sa2VA 在多图像、视频引用分割和对话上取得了较好的表现(相比于之前的方法,我们的 model 可以在多个不同的视频和图像多模态任务上取得领先效果。)。
研究背景和动机
近年来,多模态大语言模型有了很大的进展。多模态大语言模型现在支持图像对话、视频对话、图像分析等多种任务。这些模型整合不同模态的数据,展现了强大的泛化能力和应用潜力。在实际应用中,多模态大语言模型已经能够实现图像或视频级别的各种复杂任务。通过人类输入各种不同的指令,这些模型能够根据具体任务生成精准的响应。例如,在视频对话任务中,多模态大语言模型可以识别图像中的关键要素,回答有关物体、场景的问题。
在这些应用中,我们主要关注细粒度的图像和视频理解。也就是给出自然语言或者视觉的指令,让大语言模型输出用户关注的细粒度内容。这样人类就可以在视频播放的过程中和多模态大语言模型进行交互,而不是仅仅输出一般的结果。然而,现有的感知模型或者多模态大语言模型都没有办法很好的完成这个任务。感知模型缺乏开放世界的自然语言推理能力。例如 SAM-2 可以很好的从视觉提示出发对物体进行分割,但无法对物体就行描述。而多模态大语言模型往往缺乏感知能力,尤其是缺乏视频的分割能力。本工作旨在利用两者的优势构建一个统一的支持图像、视频细粒度感知以及对话、分析等任务的模型。
表格 1 Sa2VA 与之前模型的能力比较。Sa2VA 支持各种任务和模态。
在本工作中,我们提出了 Sa2VA,首次结合了 SAM-2 的感知能力和多模态大语言模型的推理能力来构建统一的模型,并使用新的训练数据来使得整个模型具有额外的能力。我们将各种任务整合成一个单次的指令追随训练。这些任务包括图像和视频 Referring Expression Segmentation (RES), Visual Question Answering (VQA), Grounded Conversation Generation (GCG) 等任务。我们的方法还支持视觉提示输入来指定物体。我们的核心观点是将所有的图像、视频、文字或指令输入统一成令牌而不分别进行设计。这种方式可以让 Sa2VA 支持上述所有任务的联合训练。通过单次的指令追随训练,我们的 Sa2VA 可以仅仅使用一种参数来来实现上述所有任务。
方法设计
图 2 Sa2VA 的模型结构。Sa2VA 首先将输入的文本、视觉提示、图像和视频编码为令牌嵌入。然后通过大型语言模型 (LLM) 处理这些令牌。输出的文本令牌用于生成 [SEG] 令牌和相关的语言输出。SAM-2 解码器从 SAM-2 编码器接收图像和视频特征以及 [SEG] 令牌,以生成相应的图像和视频分割结果。
Sa2VA 模型具体实现
Sa2VA 主要包括两部分,第一部分是多模态大语言模型,第二部分是 SAM-2 模型。
Sa2VA 的多模态大语言模型部分使用了已经经过预训练的模型。主要包括一个视觉编码器,来对图片、视频或部分图片进行编码获得视觉特征。通过一个投影层,可以将视觉特征转换成维度和大语言模型一致的视觉令牌。这些视觉令牌和输入的自然语言令牌一起作为大语言模型的输入来进行推理。整个过程使用了和 LLaVA、Qwen 等多模态大语言模型类似的处理多模态数据的方法。
Sa2VA 使用了多模态大语言模型和分割模型分离的设计,将预训练后的 SAM-2 模型和多模态大语言模型放在一起分别处理不同的特征,而不是将 SAM-2 模型的输出送入多模态大语言模型。这种设计主要有三方面的考虑。第一,我们想让整个模型尽可能的简单,而非引入过多的计算开销。第二,如果将 SAM-2 模型的输出送入多模态语言大模型,将会引入更多的多模态大语言模型的输入令牌,意味着更多的训练开销。第三,分离的设计可以更方便的使用不同种类的基础模型,进而使得基础模型的进展可以更方便的迁移到本工作。
Sa2VA 通过微调 “[SEG]” 令牌的方式来连接多模态大语言模型和 SAM-2 模型。“[SEG]” 令牌对应的隐藏状态将作为 SAM-2 模型的一种新的提示词。这种新的提示词拥有对于时间和空间的理解。在 SAM-2 模型的解码器中,“[SEG]” 令牌对应的时空提示词可以用来生成对应的图像或者视频的分割结果。在训练的过程中 SAM-2 模型的解码器可以被微调来理解 “[SEG]” 令牌对应的提示词。与此同时,梯度也会通过 “[SEG]” 令牌对应的隐藏状态传递到大语言模型中来使得大语言模型拥有生成时空提示词的能力。
对于指代视频物体分割任务,Sa2VA 使用一个简单的框架来通过 SAM-2 的能力取得较强的跟踪和分割能力。整个过程从提取关键帧开始。我们提取整个视频中的前五帧作为关键帧。这些关键帧对应的视觉令牌作为多模态大语言模型的输入来生成 “[SEG]” 令牌。“[SEG]” 令牌对应的提示词可以直接用来生成关键帧的分割结果。使用这些分割结果,结合 SAM-2 模型中经过预训练的记忆编码器一起来生成剩余帧的分割结果。
Sa2VA 模型的训练方法
Sa2VA 将不同的任务统一成相同的表示以进行建模。
(a)对于指代图像物体分割,给定一段文本描述和图像,模型将图像转换为视觉令牌,将文本转换为文本令牌,模型最终输出分割结果。(b)对于指代视频物体分割任务,给定一段文本描述和对应的视频,模型将视频中的关键帧转换为视觉令牌,将文本转换为文本令牌,模型最终输出每一帧的分割结果。(c)对于视频和图像对话以及关联式图像文字描述生成,模型将图像或视频转换为视觉令牌,并将用户输入的文字转换为文本令牌,模型最终输出回答文本。对于关联式描述生成,模型还将输出和回答文本关联的分割结果。(d) 对于视觉提示理解任务,除了文本令牌和视觉令牌之外,模型进一步将视觉提示转换为视觉提示令牌。模型最终输出回答文本,以及对应的分割结果。
在有了对于不同任务的统一表示之后,借助于多模态大语言模型的灵活性,就可以将上述任务统一成一个单次的指令微调。多模态大语言模型将视觉将文本令牌、图像或视频的视觉令牌以及视觉提示令牌一起作为输入,就可以生成文本输出。在文本输出中的 “[SEG]” 令牌对应的提示词就可以使用 SAM-2 模型输出对应的分割结果。
Sa2VA 在多个数据集上面进行联合训练。并对不同的任务使用不同的损失函数进行监督。对于 VQA 任务,我们使用和之前多模态大语言模型相同的文本回归损失函数。对于分割任务,我们使用逐像素的交叉熵损失函数和 DICE 损失函数。由于已经使用了预训练之后的多模态大语言模型,Sa2VA 无需进行像之前工作一样的预训练阶段。
Ref-SAM-v Benchmark
此外,本文还提出了一个新的 Benchmark, Ref-SAM-2v 以及对应的训练数据集。
对于掩码数据,我们是基于 SAM2 的中的开源掩码标注,利用现有的领先的多模态大模型,去对每个跟踪后的掩码做目标级别的描述信息生成。具体的数据集生成过程,可以参考我们的论文。
此外,我们的测试 benchmark 相比于之前的 Ref-VOS 数据,更具有挑战性。具体的数值结果可以参考我们的论文。
数值结果对比
从这个表格中,可以看到,我们的方法可以在 5 个不同的任务上取得领先的结果 (13 个公开数据集)。
我们的方法在我们提出的 Ref-SAM-v 上也取得领先的结果,并大幅度领先现有的工作(zs 代表 zero-shot 测试)。
可视化结果展示
Sa2VA 可以实现多种任务,包括图像和视频的 caption 生成、对话、指代对象分割、GCG、视觉指代物体 caption 等,下面是一些效果展示:
GCG 任务:
图像指代分割:
视觉指令输入的理解:
视频指代分割:
开集结果测试
同时 Sa2VA 还可以很好的扩展到开放场景中,下面是一些开放场景下的电影或网络视频的效果展示。
左边是输入视频,右边是具体的结果,下侧是文字相关的回答。
1、朴彩英 APT APT MV video
Question:Please segment the person wearing sunglasses.
,时长00:03
Question:Please segment the singing girl.
,时长00:05
2、新宝岛,猛男舞团 Demo (Form 哔哩哔哩)
Question: Please locate and segment the man in center.
,时长00:08
Question: What are these guys doing?
Answer: The guys in the video are dancing together in a group. They are performing a choreographed routine, moving in sync with each other.
3、爱乐之城 (La La Land, 2016)电影片段
Question: Please segment the girl wearing the yellow dress
,时长00:25
Question: Please segment the main character.
,时长00:25
4、教父 (The Godfathe, 1972)电影片段
,时长00:25
Question: What is the atmosphere of the scene?
Answer: The scene has a dark and mysterious atmosphere, with the men dressed in suits and ties, and the dimly lit room.
Selected Frame:
Question: Can you describe what this man holding the cat is doing and how he feels?
Answer: The man in the image is holding a cat in his arms while sitting in a chair. He appears to be looking at the cat with a smile on his face, suggesting that he is enjoying the company of the cat and feeling happy.
Selected Frame:
Question: Can you describe what this man holding the cat is doing and how he feels?
Answer: The man holding the cat is sitting at a desk, and he appears to be in a state of distress. He is holding the cat in his hands, which suggests that he may be trying to comfort or soothe the animal. The man's facial expression and body language indicate that he is experiencing some level of emotional turmoil or discomfort. It is possible that he is feeling overwhelmed, anxious, or even angry. The fact that he is holding the cat in his hands suggests that he may be seeking solace or support from the animal. Overall, the image conveys a sense of tension and unease, as the man struggles to cope with his emotions while holding the cat.
,时长00:25
Question: How are people feeling now?
Answer: The people are feeling happy and excited as they watch the band play music on stage.
#免费教你本地部署DeepSeek-R1
淘宝卖DeepSeek安装包一月赚数十万??
当看到这条消息时,机器之心编辑部陷入了集体沉默。作为一个免费开源的模型,DeepSeek 竟能让倒卖商如此大赚特赚,也着实让人震惊。而这也从侧面佐证了 DeepSeek 模型引发的本地部署热潮是多么汹涌。
图源:微博 @扬子晚报
打开淘宝和拼多多,搜索 DeepSeek,我们能看到电子货架上摆满了琳琅满目的本可免费获得的资源,其中既有安装包,也有提示词包与教程,甚至就连清华大学刚刚发布的《DeepSeek 从入门到精通》也被许多卖家明码标价出售 —— 但实际上你只需要随便找个搜索引擎搜索一下,你就能找到大量可免费下载该教程的链接。
价钱如何呢?根据我们的粗略观察,一般打包出售「安装包 + 教程 + 提示词」的价格通常在 10-30 元之间,商家一般还会提供一定的客服服务。其中不少都已经卖出了上百份,更有少数几个已经达成了上千人付款的成就。离谱的是,一个定价 100 元的软件和教程包也有 22 人付款。
真是不得不让人感叹,信息差的钱是真好赚。
转自网络
今天这篇文章我们将教你如何在本地部署 DeepSeek,并且完全不用花一分钱。但首先,我们先简单了解下为什么要本地部署。
为什么要本地部署 DeepSeek-R1?
DeepSeek-R1,虽然可能已不是当前最强大的推理模型,但绝对依然还是当前最热门的推理模型。也因此,如果使用官网或其它托管商的服务,我们常常会遭遇如下窘境:
而本地部署模型可以有效杜绝这种情况。简单来说,本地部署就是在你自己的本地设备上安装 AI 模型,而不依赖云端 API 或在线服务。常见的本地部署方式有如下几种:
- 轻量级本地推理:在个人电脑或移动端运行(如 Llama.cpp、Whisper、GGUF 格式模型)。
- 服务器 / 工作站部署:使用高性能 GPU 或 TPU(如英伟达 RTX 4090、A100)运行大模型。
- 私有云 / 内网服务器:在企业内部服务器上部署(如使用 TensorRT、ONNX Runtime、vLLM)。
- 边缘设备:在嵌入式设备或 IoT 设备上运行 AI(如 Jetson Nano、树莓派)。
而本地部署也存在自己的应用场景,比如:
- 企业内部 AI(如私有聊天机器人、文档分析);
- 科研计算(如生物医药、物理仿真);
- 离线 AI 功能(如语音识别、OCR、图像处理);
- 安全审计 & 监控(如法律、金融合规分析)。
本文将主要关注轻量级本地推理,这也是适用于我们大多数个人用户的部署方式。
本地部署的好处
除了从根本上解决「服务器繁忙」问题,本地部署还有其它诸多好处,包括:
- 数据隐私与安全性:在本地部署 AI 模型时,就无需将自己的关键数据上传到云端,从而可以有效防止数据泄露,这对金融、医疗、法律等行业而言尤为关键。另外,本地部署也能有效符合企业或地区的数据合规要求(如中国的《数据安全法》、欧盟的 GDPR 等)。
- 低延迟 & 高实时性能:由于本地部署时所有计算都发生在本地,无需网络请求,因此推理速度完全取决于用户自己的设备计算性能。但也因此,只要本地设备性能足够,用户就能享受到非常好的实时性能,也因此本地部署非常适合实时性非常关键的应用(如语音识别、自动驾驶、工业检测)。
- 更低的长期成本:本地部署自然就无需 API 订阅费用,可实现一次部署长期使用。同时,如果用户对模型性能要求不高,还能通过部署轻量化模型(如 INT 8 或 4-bit 量化)来控制硬件成本。
- 可以离线使用:无需网络也能用上 AI 模型,适用于边缘计算、离线办公、远程环境等。并且,由于断网也能运行 AI 应用,因此可以保证用户的关键业务不中断。
- 可定制 & 可控性强:可以微调、优化模型,更适配业务需求,举个例子,DeepSeek-R1 就被微调和蒸馏成了许多不同的版本,包括无限制版本 deepseek-r1-abliterated 等等。另外,本地部署不受第三方政策变更影响,可控性强,可避免 API 调价或访问限制。
本地部署的缺点
本地部署好处多多,但我们也不能忽视其缺点,首当其冲的便是大模型的算力需求。
- 硬件成本高:个人用户的本地设备通常难以运行高参数量的模型,而参数量较低的模型的性能通常又更差,因此这方面有一个需要考虑的权衡。如果用户想要运行高性能模型,那就必须在硬件上投入更多成本。
- 难以处理大规模任务:当用户的任务需要大规模处理数据时,往往需要服务器规模的硬件才能有效完成。
- 有一定的部署门槛:不同于使用云服务 —— 只需打开网页端或配置 API 即可使用,本地部署存在一定的技术门槛。如果用户还有进一步的本地微调需求,部署难度还会更大。不过幸运的是,这个门槛正越来越低。
- 需要一定的维护成本:用户需要投入心力和时间解决因为模型和工具升级带来的环境配置问题。
究竟是进行本地部署还是使用在线模型,还需要用户根据自己的实际情况定夺。下面简单总结了适合与不适合本地部署的场景:
- 适合本地部署:高隐私、低延迟、长期使用(如企业 AI 助手、法律分析)。
- 不适合本地部署:短期试验、高算力需求、依赖大模型(如 70B+ 参数级别)。
如何本地部署 DeepSeek-R1?
本地部署 DeepSeek-R1 的方法其实有很多,这里我们简单介绍两种:一是基于 Ollama 实现本地部署,二是使用 LM Studio 的零代码部署方法。
基于 Ollama 部署 DeepSeek-R1
下面我们将基于 Ollama 介绍如何在你自己的设备上部署你自己的 DeepSeek-R1。
Ollama 是目前最常使用的本地部署和运行语言模型的框架,其非常轻量,而且具有很好的可扩展性。从名字也能看出来,Ollama 是 Meta 发布 Llama 系列模型之后诞生的。但这个项目是社区驱动的,与 Meta 以及 Llama 系列模型的开发没有直接关系。
Ollama 项目诞生之后发展非常迅速,不管是支持的模型量还是支持其的各种生态系统都在迅速发展。
Ollama 支持的部分模型和生态
使用 Ollama 的第一步非常简单,下载并安装 Ollama,访问以下地址,下载适合你操作系统的版本即可。
下载地址:https://ollama.com/download
有了 Ollama,还需要为你的设备配置 AI 模型。这里以 DeepSeek-R1 为例进行演示。首先进入 Ollama 官网查看支持的模型及相应的版本:https://ollama.com/search 这里我们可以看到 DeepSeek-R1 现有 1.5B 到 671B 共 7 个不同规模的共 29 个不同版本,其中包括一些基于开源模型 Llama 和 Qwen 进行微调、蒸馏或量化处理后得到的模型。
具体该选择哪个版本,我们先得了解自己的硬件配置情况。dev.to 开发者社区 Avnish 写了一篇文章,简单总结了 DeepSeek-R1 不同规模版本的硬件需求,可作参考:
图源:https://dev.to/askyt/deepseek-r1-architecture-training-local-deployment-and-hardware-requirements-3mf8
这里我们以 8B 版本为例进行演示:打开你设备上的终端工具,运行
ollama run deepseek-r1:8b
接下来就是等待模型下载完成。(Ollama 现在也支持直接从 Hugging Face 拉取模型,命令是 ollama run hf.co/{用户名}/{库}:{量化版本},比如 ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:Q8_0。)
模型下载完成后,你就可以直接在这个终端中与下载好的 8B 版 DeepSeek-R1 聊天了。
但是,对普通用户来说,这种对话方式非常不直观,也不方便。因此我们还需要配置一个好用的前端。而前端的选择可就多了。我们即可以使用能在浏览器中提供类似 ChatGPT 体验的 Open WebUI,也可以选择 Chatbox 等前端工具,你也可以在这里寻找你想要的前端:https://github.com/ollama/ollama
1. 如果你想使用 Open WebUI,只需在你的终端以此运行以下两行代码即可:
安装 Open WebUI:
pip install open-webui
运行 Open WebUI:
open-webui serve
接下来,只需访问 http://localhost:8080,就能在你的浏览器中获得类似 ChatGPT 的体验。
从 Open WebUI 的模型列表中可以看到,本机上的 Ollama 已经配置了多个模型,包括 DeepSeek-R1 7B 和 8B 版本以及 Llama 3.1 8B、Llama 3.2 3B、Phi 4、Qwen 2.5 Coder 等其它一些模型。选择其中的 DeepSeek-R1 8B 试试看效果:
2. 如果你更偏好在一个单独的应用软件中使用 DeepSeek-R1,可以考虑 Chatbox 等工具。配置方法也很简单,首先下载安装:https://chatboxai.app/zh
安装后启动该应用程序,进入「设置」,在「模型提供方」中选择 OLLAMA API,接着在下面的模型栏选择你想使用的模型,并设置上下文的消息数量上限以及 Temperature 等相关参数即可(当然也可不必调整)。
接下来,你可以在 Chatbox 中与你部署的本地 DeepSeek-R1 畅聊了。不过遗憾的是,DeepSeek-R1 7B 没能正确地完成我们描述的任务。这也佐证了前文的观点,即个人用户通常只能在自己的本地设备上运行性能相对较差的模型。不过可以预见,未来随着硬件的进一步发展,个人本地使用大参数量模型的门槛还会进一步降低 —— 而且这个未来恐怕也不会太远。
当然,不管是 Open WebUI 还是 Chatbox,也都支持通过 API 接入 DeepSeek 的各个模型以及 ChatGPT、Claude 以及 Gemini 等专有模型。你完全可以将它们作为使用 AI 的日常前端。
另外,我们也可以将 Ollama 中配置的模型引入到我们的其它工具中,比如 Obsidian 和思源笔记等笔记应用。感兴趣的读者可以参看这篇略有过时的文章(Obsdian 上已有更好用的 AI 插件):《最强笔记软件 Obsidian 中也能使用 LLM,让它成为你的智慧第二大脑》。
使用 LM Studion 零代码部署 DeepSeek-R1
虽然不多,但在配置 Ollama 和相关模型时还是会用到终端和一点代码。如果你依然觉得麻烦 / 困难,还可以使用 LM Studio 实现零代码部署 DeepSeek-R1。
同样,首先去官网下载符合你操作系统的程序:https://lmstudio.ai
安装完成后启动,在 My Models 选项中先为你的模型设置一个文件夹:
接下来,只需去 Hugging Face 下载你想使用的语言模型,并按照一定的目录结构将其放入到上面设置的文件夹中即可(我们也可以使用 LM Studio 自带的搜索功能,但我们实测的效果并不好)。注意,这里我们需要的是 .gguf 格式的模型文件,比如 Unsloth 提供的版本:https://huggingface.co/collections/unsloth/deepseek-r1-all-versions-678e1c48f5d2fce87892ace5
考虑到我们的实际硬件,我们这里使用基于 Qwen 模型微调得到的 DeepSeek-R1 蒸馏版(14B 参数量)并选择 4-bit 量化后的版本:DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf
下载完成后,按照一定的目录结构将其放入我们之前设定的文件夹中:模型文件夹 /unsloth/DeepSeek-R1-Distill-Qwen-14B-GGUF/DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf
接下来,只需打开 LM Studio,在应用上方位置选择要加载的模型,然后你就可以与你的本地模型对话了。
使用 LM Studio 的最大优势就是完全无需操作终端,也不涉及任何代码 —— 只需会安装软件和配置文件夹即可。可说是对用户超级友好了。
结语
当然,以上教程只是在最基础的层面上实现了 DeepSeek-R1 的本地部署。如果你想将这个热门模型进一步整合进自己的本地工作流程中,还需要进一步的配置 —— 从基础的设置系统提示词到更高阶的模型微调定制、整合 RAG、搜索功能、多模态能力、工具调用能力等等。
同时,随着专门针对 AI 开发的硬件以及小模型相关技术的发展,相信未来本地部署大模型的门槛还会进一步降低。
看完此文,你会自己动手试试部署自己的 DeepSeek-R1 吗?
#aiXcoder-7B
如何训练最强代码大模型?北大aiXcoder-7B贡献前沿实践
本文的通讯作者是北京大学计算机学院长聘教授李戈。
本文一作是 aiXcoder 蒋思源和北大李戈教授课题组博士生李佳,团队重点关注融合深度学习与软件工程的代码建模方法。
如何训练一个代码大模型?这一过程看似简单:获取代码数据、清洗数据,最终启动训练。如今,开源代码数据集层出不穷;数据清洗工具也已成熟,包括开源的许可证识别工具、MinHash 算法、PII 识别模型等;而在分布式训练方面,像 Megatron-LM、DeepSpeed 等框架也大大降低了技术门槛。看似我们只差计算资源,就能训练出一个强大的代码大模型。
然而,训练模型的初衷,应该始终从实际开发场景出发。作为开发者,我们不仅需要了解定义的各种 API 接口,还需要从入口函数模拟程序的执行过程,追踪到每一行修改的代码。在复杂的项目中,任何小小的变动都可能影响整个系统的运转。
但现有的代码大模型并未充分考虑到软件开发的具体场景,它们往往将最终版本的代码简单地视作自然语言文本,试图通过复制自然语言处理的成功经验来处理代码。这种方法忽略了代码的结构性和复杂的上下文关系,导致模型在实际开发中表现不佳。
北京大学 aiXcoder 团队一直致力于探索如何将深度学习与软件开发深度融合,推动软件开发的自动化。2024 年 4 月,aiXcoder 开源了自研代码大模型 aiXcoder-7B,成为这一领域的一次重要尝试,旨在将代码的抽象语法树(AST)结构与大规模预训练结合,以期提升模型对代码结构和上下文的理解能力。
近期,该篇论文被软件工程领域国际顶级会议 ICSE 2025 收录,将于 4 月 27 日 - 5 月 3 日赴加拿大渥太华参会分享研究成果。
此次论文录用不仅是对 aiXcoder 7B 代码大模型技术前瞻性和应用创新性的高度认可,更标志着该模型继成功落地企业并获各行业客户广泛认可后,再次于学术界获得权威肯定,充分彰显了 aiXcoder 在推动软件工程发展中的前瞻性引领作用。
- 论文地址:https://arxiv.org/pdf/2410.13187
- 开源项目地址:https://github.com/aixcoder-plugin/aiXcoder-7B
代码数据,异于自然语言
相较于自然语言文本,程序是现实世界解决方案在计算机系统中的映射。因此,程序源代码呈现出很多独特的性质,例如:强结构性、可执行性等等。有效地表示和建模这些特性,对于代码生成等任务来说至关重要。
如上三行代码能够严格解析为抽象语法树格式
代码天然能被解析为抽象语法树,其语法规则严格组织了代码语句之间的关系。在语法规则之上,也有很多方式描述代码之间的流转关系,例如控制流图、调用流图等等。顾名思义,控制流图会展示整个代码控制与条件关系,什么样的条件下哪个分支代码会运行。调用流图则展示的是代码之间的调用关系,实现一个功能时在什么样的地方调用什么样的代码模块是能展示出来的。
控制流图示例,代码执行条件与顺序会解析成流程图。
调用流图示例,main 函数调用 calculate 函数计算两个数之和,calculate 函数调用另外两个函数 getFirst 和 getSecond 获取参与计算的两个加数。
程序语言与自然语言之间存在显著差异。尽管大模型通过大规模自回归训练任务在通用知识学习上取得了巨大成功,但这并不意味着可以简单地将代码数据视为「自然语言」,并将其拉长为一维 Token 序列进行自回归训练,就能复制自然语言处理的成功。
事实上,当使用自回归模型或「Fill in the middle」任务训练基础模型时,会发现实际在代码补全任务中,模型生成的结果往往与人类程序员的编程方式不符,我们还需要更符合代码的预训练方法。
aiXcoder-7B:创新在 LLM 上引入代码特性
正因为当前代码大模型很少将代码特性引入到 LLM 的训练过程中,代码大模型在企业真实项目中表现得不尽人意,所以我们创新将一些传统软件工程方法引入到大规模预训练中,希望能生成更符合真实场景的代码内容。
为此,aiXcoder-7B 主要从以下几个方面优化预训练:
- 数据预处理:软工工具保证代码数据语法正确且不存在严重 Bug
- 结构化 FIM:按照语法结构组织预训练任务
- 多文件排序:保证单项目内,文件排序既考虑内容相似,又考虑调用关系
数据预处理
aiXcoder 核心数据集主要用于强化代码大模型在以上编程语言上的效果,其经过大量的过滤与筛选过程。相比于其它代码大模型,aiXcoder-7B 预训练数据既采用常规的数据处理,例如数据去重、自动生成代码去除、通过 Star 量、正则等规则去除低质量代码、敏感信息等,同时借助软件工程方法进行更精细的数据处理。
具体而言,aiXcoder-7B 预训练数据采用语法分析和静态分析两大类工具预处理数据。对于语法分析,重点解析五十种主流语言的语法结构,并排除存在语法错误、简单 Bug 、大面积被注释掉的代码等。
语法分析能天然解析并处理明显不合理的代码
对于静态分析,则侧重解析十余种最主流编程语言的严重错误,即当出现这一些类型错误时,代码大概率在执行过程中会出现比较大的问题。具体而言,扫描并定位影响代码可靠性和可维护性的 161 种 Bug,影响代码安全性的 197 种安全漏洞。
静态分析能检测出很多更深层缺陷与漏洞的代码。
结合软件工程分析方法以及过滤规则,能够将存在明显问题的代码删除掉,明显提升整体代码质量。
结构化 FIM
在实际开发过程中,代码具有类、方法、条件代码块、循环代码块等众多结构。研究团队期待让代码大模型天然能学会这样的结构,而不是放任代码大模型向下一直生成,或者从字符层面上截取一个片段,期待补全该字符片段。
为此,团队结合语法分析方法,将代码解析为抽象语法树,并基于语法树的结构构建训练任务。具体而言,代码文件中的每个位置都对应着抽象语法树中的某个节点。在训练过程中,团队挖掉该节点的子节点,或者挖掉该节点所在父节点剩余的部分,然后针对被挖掉的代码块做一个先验约束:挖掉的代码块横跨一个或少数几个完整的代码结构。将这部分完整代码结构用来计算损失训练模型,就能一定程度上让代码模型理解部分语法结构。
更形象地解释,常规的 Fill in the middle 会构造很多不合法的代码片段,例如下图「or i in range (2」,常规的做法只是从字符上随机取一个片段。但论文研究团队提出的 Structured Fill-In-the-Middle (SFIM) 会随机先选定一个语法节点「IF」,并在 IF 节点向下取了「Compare」代码片段「i % 5 == 0:」
最终团队在预训练中根据 SFIM 构建整体训练损失计算,以此更好地学习代码的语法结构信息。
多文件排序
当前主流的代码开源数据集,例如 TheStackV1 、 TheStackV2 或者 The Pile 中代码部分,都是根据单个语言,甚至单一后缀名组织数据,致使整个训练样本的构造局限在单语言文件中。而此次研究团队构建的训练数据以项目为单位,保留与处理多种编程语言的代码文件,确保训练数据中编程语言的分布与真实开发一致。
此时有一个重要的问题:项目内不同文件该如何排序?
为了提升模型对项目内多代码文件关系的充分建模能力,并在推理过程中更高效地抽取有用的上下文信息,研究团队通过相似性关系和依赖性关系对代码文件排序:相似性关系即模型在预训练中能学会仿写相似的代码;依赖性关系即模型在预训练中能学会 API 调用或者函数调用的关系。
预训练中,项目内文件排序算法
如 Algorithm 1 所示,本论文给出了一个项目内文件排序伪代码。简单理解,以 0.3 的概率采用文件内容相似排序,即通过 KMeans 聚类算法将文件聚成不同的簇,并且同一个簇排列在一起;此外,以 0.3 的概率进行路径相似排序,把同一目录下的文件,或者被测代码与测试代码等路径相关的文件能排列在一起;最后还以 0.3 的概率构建函数调用流图,并根据图的叶节点一路向根节点建立程序依赖路径,将路径上的代码文件排列在一起。
aiXcoder 7B 独特的效果优势
借助软件工程方法,研究团队通过更符合代码大模型的预训练方法,提升了其在代码数据上的理解与生成能力。例如论文表 5 中的 Fill-in-the-middle 评测集显示,经过高质量代码数据的 SFIM 任务训练,不同语言的代码补全能力有明显的提升。
为了进一步测评 aixcoder-7B 在多种情况下的代码补全能力,团队从方法签名、方法体、方法局部、条件块、循环块、异常捕捉块等维度评估了模型在代码补全上的效果,如论文图 4 所示。对比 DeepSeekcoder-6.7B,aixcoder-7B 大部分的补全位置都拥有更好的效果。
此外,因为预训练任务充分考虑了代码的语法结构,模型在推理过程中对代码的上下文结构展现出更出色的感知能力,能够准确判断需要补全完整的语法结构,并倾向生成更短的代码片段。如论文表 6 所示,模型生成的 Token 数与 GroundTruth Token 数的比值,aiXcoder -7B 更小,表明 SFIM 预训练任务有效指导了模型更好学会如何终止预测。
对于代码补全任务,另外一个比较重要的是跨文件上下文的理解能力。aiXcoder -7b 在预训练中以项目为单位对项目内的代码文件进行排序,获得了更好的文件间建模能力。如表 4 所示,aiXcoder -7b 在 CrossCodeEval 评测集上拥有更好的效果,表明其利用多文件的上下文信息,补全当前代码文件能力更有优势。
后续改进方向
在真实软件开发场景中,还有很多能力是大模型未曾学习到的,重中之重即代码上下文。
实际代码补全往往需要基于不同类型的上下文(如:当前文件的上文、跨文件上下文、相似代码段),去预测后续的代码。这种复杂的上下文形式与基础模型预训练时的上下文形式不一致,从而限制了基础模型在实际应用时的代码补全准确率。
为解决这个问题,研究团队在 aiXcoder 7B 上做了更多的对齐训练实验。该对齐训练有效地将模型对齐到真实软件开发场景中的上下文形式,显著地提升了模型在多种语言上的代码补全准确率。例如,在四种语言(Python、Java、C++和Go)的多行补全上,相较于aiXcoder-7B,经过优化的新模型在Exact Match(完全匹配)指标上平均取得了 13 个点的绝对提升。
当前,充分利用数十年积累的软件工程经验,将代码大模型真正应用于软件开发的实际场景中,仍然是一项艰巨而复杂的任务。然而,随着不断深入的研究,代码大模型已经让「软件开发自动化」这一宏伟目标变得愈加触手可及。
#LLM扩展有了新维度
超越思维链?深度循环隐式推理引爆AI圈
不需要特殊训练数据,能处理语言难以形容的任务,3.5B 参数能实现 50B 的性能。
这是一种全新的语言模型架构,能够通过使用循环语言模型在潜在空间中隐式推理,显著提升模型的计算效率,尤其是在需要复杂推理的任务上。
近日,马里兰大学的一篇论文在 AI 研究社区中引发了关注,其提出的语言模型通过迭代循环块来工作,能在测试时展开到任意深度。这与当前通过生成更多 token 来扩展计算的主流推理模型形成了鲜明的对比。
仅在上个月,Hugging Face 上的下载量就达到了 4500+。
深度循环(Recurrent Depth)方法无需生成大量「思考」token 即可获得高性能。与基于思维链的方法不同,马里兰大学的方法不需要任何专门的训练数据,可以使用小的上下文窗口,并且可以捕获不易用文字表示的推理类型。
该工作构建的概念验证模型达到 35 亿参数和 8000 亿 token,实验验证了新方法可以提高其在推理基准上的性能,尤其是在需要复杂推理的数学和编程问题上,最高相当于 500 亿参数的计算负载。
- 论文链接:https://arxiv.org/abs/2502.05171
- 模型下载: https://huggingface.co/tomg-group-umd/huginn-0125
- 代码链接: https://github.com/seal-rg/recurrent-pretraining
人类在解决某些问题时自然会花费更多的脑力。虽然人类能够通过用语言表达中间结果并写下来进行长时间的思考,但在说出答案的第一个字之前,大量的思考是通过大脑中复杂、反复的放电模式进行的。
而在 AI 一侧,早期提升语言模型能力的尝试聚焦于扩大模型规模,这种方法需要海量数据和算力支撑。近年来,研究者开始探索通过扩展测试时计算量来提升模型推理能力。主流方法是对长链条的思维链示例进行后训练,以开发模型在上下文窗口中语言化中间计算过程的能力,从而实现思维外显。
然而,将昂贵的内部推理过程始终压缩为单一的语言化下一个 token 的约束显然是低效的 —— 如果模型能原生地在连续的潜在空间中「思考」,其能力很可能得到显著提升。释放这一未被开发的计算维度的一种方法是为模型添加循环单元。该单元以循环方式运行,持续处理和更新隐藏状态,使得计算得以无限延续。尽管这并非当前主流范式,但这一思想贯穿机器学习发展史,每隔十年便以新形式重现:从循环神经网络(RNN)到扩散模型(Diffusion model),再到通用 Transformer 或循环 Transformer 架构。
在新工作中,研究人员展示了深度循环语言模型(depth-recurrent language models)可以有效学习、高效训练,并在测试时计算扩展的情况下展示出明显的性能改进。作者提出的 Transformer 架构建立在潜在深度循环块之上,在训练期间运行随机采样的迭代次数。作者展示了这种范式可以扩展到数十亿个参数和超过 5 万亿个预训练数据标记。在测试时,该模型可以通过潜在空间中的循环推理来提高其性能,使其能够与其他受益于更多参数和训练数据的开源模型竞争。
此外,作者展示了循环深度模型在推理时自然支持许多功能,这些功能在非循环模型中需要大量的调整和研究工作,例如每个 token 的自适应计算、(自)推测解码和 KV 缓存共享。通过跟踪潜在空间中的 token 轨迹来表明,许多有趣的计算行为会随着规模的扩大而出现,例如模型在潜在空间中旋转形状以进行数值计算。
为什么要使用深度循环来训练模型?
循环层使得 Transformer 模型能够在生成一个 token 之前执行任意数量的计算。从原理上讲,循环机制为测试时计算量的扩展提供了一种简洁的解决方案。作者认为,与更传统的长上下文推理方法(如 OpenAI 的 o1、DeepSeek-AI 的 R1)相比,潜在循环思考具备多项优势:
- 无需定制化训练数据:链式思维推理要求模型在特定领域的长示例上进行训练。而潜在推理模型则能在标准训练数据上训练,无需专门示例,且可根据计算预算灵活调整,在测试时通过额外计算资源增强能力;
- 更低的内存需求:潜在推理模型在训练和推理时所需内存少于链式思维推理模型。后者因需极长上下文窗口,可能需采用如 token 并行化等专门训练方法;
- 更高的计算效率:循环深度网络相较于标准 Transformer,每参数执行的浮点运算(FLOPs)更多,显著降低了大规模训练时 AI 计算卡之间的通信成本,尤其在低速互连条件下更能提升设备利用率;
- 促进「思考」而非记忆:通过构建计算密集但参数规模较小的架构,该工作期望强化模型构建「思考」(即学习元策略、逻辑与抽象)而非单纯记忆来解决问题的先验倾向。此前,循环先验在学习复杂算法方面的优势已在「深度思考」相关文献中得到验证。
从哲学视角看,我们肯定希望 AI 的潜在推理能捕捉人类推理中难以言表的部分,如空间思维、物理直觉或(运动)规划。通过循环过程的多次迭代,在高维向量空间中进行推理将允许同时深度探索多个方向,而非线性思维,从而催生能够展现新颖且复杂推理行为的系统。
以这种方式扩展计算能力并不排斥通过延长(语言化)推理或增加预训练参数数量来提升模型性能。因此,它可能构建出模型性能扩展的第三维度。
可扩展的循环架构
该研究提出的具有潜在循环深度的 Transformer 架构,模型主体结构基于仅解码器(decoder-only)的 Transformer 模块。然而,这些模块被组织成三个功能组:前奏(Prelude)P,通过多层 Transformer 将输入数据嵌入潜在空间;核心循环块(Core Recurrent Block)R,作为循环计算的核心单元,负责修改状态 s ∈ R n×h;以及尾声(Coda)C,通过若干层从潜在空间解嵌入,并包含模型的预测头。
核心块置于前奏与尾声之间,通过循环核心块,我们能在「歌曲」中插入无限数量的「诗节」。
模型架构如下图所示:
给定一定数量的循环迭代 r 和一系列输入标记 x ∈ V n,这些组以以下方式使用来产生输出概率 p ∈ R n×|V |:
其中 σ 是初始化随机状态的某个标准差。该过程如图 2 所示。给定一个初始随机状态 s0,模型重复应用核心块 R,它接受潜状态 si−1 和嵌入输入 e 并输出一个新的潜在状态 si 。完成所有迭代后,coda 块处理最后一个状态并产生下一个 token 的概率。该架构基于深度思考文献,其中表明在每一步中注入潜在输入 e 并用随机状态初始化潜在向量可以稳定递归并促进收敛到与初始化无关的稳定状态,即路径独立性。
在每个组中,模型大致都遵循标准的 Transformer 层设计。每个块包含多个层,每个层包含一个标准的因果自注意力块,使用 RoPE,基数为 50000,以及一个门控 SiLU MLP。作者使用 RMNSorm 作为规范化函数。为了稳定递归,模型按以下「三明治」格式对所有层进行排序,使用范数层 ni:
为了在训练时保持较低的计算量和内存,研究人员在训练时随机采样迭代次数,并通过截断反向传播来减少计算和内存开销。模型只对最后几次迭代进行反向传播,在保持训练效率的同时能够适应不同深度的循环计算。
实验结果
由于这个模型很难与其他基于 Transformer 架构大语言模型直接比较。它仅包含 3.5B 参数,在预训练阶段仅需少量互连带宽。然而,其实际算力(FLOPs)消耗要接近 32B 参数 Transformer 的水平。在测试中,该模型能够无限制地提升算力,最终达到与 50BTransformer 相当的性能水平。
该模型的训练有一些瑕疵:只训练了 47000 步,学习率从未降低,数据集也比较小,只有 800B tokens。这和现在动辄上万亿 tokens 的工业模型有很大差距。
尽管如此,它在 ARC、HellaSwag、MMLU、OpenBookQA、PiQA、SciQ 和 WinoGrande 的成绩上已经可以和 OLMo-7B 媲美,在多项任务上超过了老牌的 Pythia 模型。
作为首个在这个量级上训练的「深度循环」模型,这个结果已经可喜可贺了。这也证明了「潜在循环」是一个可行的思路,值得探索。在推理时动态地增加算力,也有希望达到上亿 token 级别的水平。
数学和代码测试
该团队在 GSM8k、MATH、Minerva 和 MathQA 上测试了模型的数学能力;在 MBPP 和 HumanEval 上测试了编程水平。
在数学推理方面,该模型大大超过了除 OLMo-2 模型以外的所有模型。在编程基准测试中,该模型击败了所有其他通用开源模型。不过没有 StarCoder2 等「编程专家模型」。
研究团队还注意到,如下图所示,虽然语言建模的进步会放缓,在这个训练规模下是正常的,但编程和数学推理在整个训练过程中都处于稳步上升的状态。
递归在哪里起效了?
递归到底在哪方面带来了提升?模型表现的提升到底是递归结构的功劳,还是数据集、分词方式、模型架构等其他因素在起作用?
为了找到答案,研究团队做了对比实验:他们用完全相同的条件训练了一个非递归模型,让两个模型都学习了 1800 亿个 token。
结果显示,递归模型的整体表现更胜一筹,尤其是在处理难度较大的任务时尤为明显,比如 ARC 挑战测试集。不过,像 SciQ 这样主要考验科学知识记忆的基础任务上,两个模型的差距就不那么大了。而在 GSM8k 数学推理任务上,才训练到 1800 亿 token,递归模型的成绩就已经比基准模型好了整整 5 倍!
如果限制递归模型只能递归一次,它从 1800 亿到 8000 亿 token 期间的表现就几乎没有进步。这说明模型的提升完全来自于递归模块的多次运算,而非前后的非递归层。
此外,研究团队还做了一个测试,看看在不同任务上增加计算量会带来什么效果。结果显示,简单任务很快就能达到性能上限,而复杂任务则能从更多的计算中持续获益。
递归次数和上下文长度的关系
下图展示了模型在 ARC-C 测试中的表现如何随着递归次数和少样本示例数量的变化而变化,当上下文中没有少样本示例时,模型仅需 8 到 12 次递归即可达到性能上限。
但是,当给模型提供更多上下文信息时,它就像得到了更大的「思考空间」。比如提供 1 个示例时,模型需要 20 次递归才能发挥最佳水平;如果给到 25-50 个示例,则需要 32 次递归。
OBQA 测试也出现了同样的情况。当研究团队为每道题提供相关背景知识时,递归模型的表现突飞猛进,几乎追平了 OLMo-2 的水平。这个结果其实很好理解:递归模型虽然不太擅长记忆大量事实,但在推理和利用上下文信息方面却相当出色。
递归深度如何简化 LLM?
测试阶段的零样本自适应计算
该团队发现,其模型能够根据不同的任务灵活调整计算量。
对于简单问题,模型只需进行较少的计算;而对于复杂问题,则会增加计算轮次。这不正是我们期望的效果吗?
为了量化观察,他们采用了一个简单的判断标准:观察连续两步计算结果之间的 KL 散度。如果这个差异小于 0.00005,便判断为可以停止计算了。
如图 10 所示,在处理 MMLU 测试的前 50 个问题时,不同类型的题目所需的计算步数差异很大。例如,高中数学题相对简单,计算步数较少;面对需要道德判断题时,平均需要多算 3.5 步。而在 MTBench 测试中,这种自适应计算机制几乎不会影响模型的对话表现。
零样本 KV 缓存共享
为了提高效率,研究团队还尝试减少了 KV 缓存的内存占用。他们给每个 token 设定了固定的 KV 缓存预算,比如 16 步。这样,第 17 步的计算就会覆盖第 1 步的缓存,以此类推。在 MTBench 测试中,即使把缓存预算降到 4,模型表现依然稳定。
零样本连续思维链
为了做到这一点,研究团队设计了一种方法:在生成新 token 时,不是每次都从随机状态开始,而是利用上一个 token 的最终状态进行「热启动」。图 10 显示,这种方法可以减少 1 到 2 步的计算量。特别是在处理哲学问题时,通过重复利用之前的计算结果,模型更容易提前完成任务。
零样本自推测解码
递归模型还有一个天然优势:不需要额外的「草稿模型」就能实现推测解码。换句话说,模型可以用较少的迭代次数先生成后面 N 个 token 的草稿,然后用更多的迭代次数 M(M>N)来验证。
这个过程可以分多个阶段进行,「草稿模型」还可以使用自适应计算。最棒的是,草稿阶段的计算结果可以在验证阶段重复使用,不会浪费计算资源。
模型在递归过程中到底在做什么?
通过从潜在空间沉浸式观察模型的「思考」过程 ,研究团队发现了和我们通常理解的「思维链」截然不同的现象。
研究团队分析了每个递归状态 s_i 与极限点 s^∗(通过 128 次迭代计算得到)之间的距离变化。结果显示,模型的收敛行为与上下文密切相关。
在处理问题的关键部分以及开始生成回答时,模型会更多「深思熟虑」。即使是完全相同的符号(例如省略号中有两个重复的...),模型也会因上下文不同而表现出不同的处理方式。
他们对所有 token 的轨迹进行了 PCA 分解,并将个别轨迹投射到前六个 PCA 方向上。结果显示:
- 简单标记往往直接收敛到一个固定点。
- 在处理复杂问题时,token 的状态会形成程式。
- 一些关键词(如「makes」和「thinks」)经常出现程式,这些词往往决定了回答的结构。
- 某些 token(如「wrong」)会「滑动」,其轨迹会朝着特定方向漂移。
这表示模型并没有采用传统的线性推理方式(如思维链),而是自主学会了利用高维空间来实现更丰富的几何模式,包括程式、收敛路径和漂移等。
尽管模型内部呈现出复杂的动态特征,但如下图所示,研究团队证实了它仍然保持着路径独立性。无论从哪个起点 s_0 开始,模型都会形成相似的轨迹,展现出一致的行为模式 —— 同样的轨迹、固定点或方向漂移。
更多研究细节,请参看论文原文。
参考内容:
https://x.com/iScienceLuvr/status/1888792081382137966
https://arxiv.org/abs/2502.05171
#DeepScaleR-1.5B-Preview
4500美元验证强化学习「魔力」,1.5B模型也能超越o1预览版,模型、数据、代码全开源
Deepseek-R1 的卓越表现引发了广泛关注,但其训练方法始终未曾公开。虽然 Deepseek 的模型已开源,但其训练方法、数据和脚本等关键信息仍未对外披露。
根据 Deepseek 公布的信息,许多人认为,只有训练更大规模的模型,才能真正发挥强化学习(RL)的威力。然而,训练大模型需要庞大的计算资源,让开源社区望而却步。目前的工作(如 TinyZero)仅在简单任务上复现了所谓的 “Aha moment”,或者仅提供训练基础设施和数据(如 OpenR)。
一个由伯克利团队领衔的研究小组提出了一个大胆的想法:能否用仅 1.5B 参数的小模型,以低成本复现 Deepseek 的训练秘方?他们发现,简单复现 Deepseek-R1 的训练方法需要巨大成本,即使在最小的模型上也需要数十万美元。但通过一系列训练技巧,团队成功将成本大幅降低,最终仅用 4500 美元,就在一个 1.5B 参数的模型上复现了 Deepseek 的关键训练方法。
他们的成果 ——DeepScaleR-1.5B-Preview,基于 Deepseek-R1-Distilled-Qwen-1.5B 模型,通过强化学习(RL)微调,实现了惊人的 43.1% Pass@1 准确率,提升了 14.3%,并在 AIME 2024 竞赛中超越了 O1-Preview。
这一成果不仅打破了 “大模型才能强大” 的固有认知,更展示了 RL 在小型模型中的无限可能。
更重要的是,伯克利团队开源了所有的训练秘方,包括模型、数据、训练代码和训练日志,为推动 LLM 强化学习训练的普及迈出了重要一步。
- 博客地址:https://pretty-radio-b75.notion.site/DeepScaleR-Surpassing-O1-Preview-with-a-1-5B-Model-by-Scaling-RL-19681902c1468005bed8ca303013a4e2
- 项目地址:https://github.com/agentica-project/deepscaler
- 项目网站:https://agentica-project.com/
- Hugging Face 模型:https://huggingface.co/agentica-org/DeepScaleR-1.5B-Preview
- Hugging Face 数据集:https://huggingface.co/datasets/agentica-org/DeepScaleR-Preview-Dataset
- Wandb 训练日志:https://wandb.ai/mluo/deepscaler-1.5b?nw=nwusermluo
这项研究一经公布,受到网友广泛好评,有网友表示:「DeepScaleR-1.5B-Preview 正在撼动人工智能领域。」
「DeepScaleR 开创了 AI 扩展的新时代。」
「开源界又赢了一局。」
还有人盛赞:「这才是研究者想要的东西。」
1. 小模型的反击:DeepScaleR 的秘密
挑战 RL 的极限
强化学习一直被视为大模型的 “专属武器”,高昂的计算成本让很多人望而却步。研究团队发现,假如直接复现 Deepseek-R1 的结果 (32K 上下文长度,8000 训练步数),即使在一个 1.5B 的小模型上,需要的 A100 GPU 时长高达 70,000 小时。但研究团队并未退缩,他们提出了一种巧妙的策略,让 RL 的训练成本降低至常规方法的 5%,最终只用了 3800 A100 GPU 小时和 4500 美元,就在 1.5B 的模型上训练出了一个超越 OpenAI o1-preview 的模型,DeepScaleR 的秘密,在于提出了一个迭代式上下文扩展的训练策略。
迭代式上下文扩展:小步快跑,突破瓶颈
在 RL 训练中,上下文窗口的选择至关重要。选择一个比较长的上下文会导致训练变慢,而选择一个短的上下文则可能导致模型没有足够的上下文去思考困难的问题。
研究团队在训练前进行了先验测试,发现错误答案的平均长度是正确答案的 3 倍。这表明,如果直接在大窗口上进行训练,不仅训练速度慢,效果也可能受限,因为有效训练的字符(token) 数量较少。
基于这个发现,因此他们采用了迭代式上下文扩展策略:
1.8K 上下文窗口:模型先在较短的上下文中简化自己的推理,精进推理技巧。
2. 扩展至 16K & 24K:逐步加大窗口,让模型适应更复杂的数学推理任务。
这种策略证明是有效的 —— 在第一轮 8K 上下文训练后,模型的平均回答长度从 9000 字符降至 3000 字符,而 AIME 测试集上的正确率提高了 5%。随着上下文窗口扩展至 16K 和 24K,模型更简洁的回答方式使训练时间至少提升了两倍。
数据集:四万道数学难题的试炼
团队精心构建了一套高质量的数学训练集,包括:
- AIME(1984-2023)
- AMC(2023 年前)
- Omni-MATH & Still 数据集
数据筛选的关键步骤:
1. 答案提取:利用 gemini-1.5-pro-002 自动提取标准答案。
2. 去重:采用 sentence-transformers/all-MiniLM-L6-v2 进行语义去重,避免数据污染。
3. 过滤不可评分题目:确保训练数据的高质量,使模型能够专注于可验证的答案。
奖励函数:精准激励模型进步
传统的 RL 训练往往使用过程奖励模型(PRM),但容易导致 “奖励滥用”,即模型学会取巧而非真正优化推理能力。为了解决这一问题,研究团队选择了跟 Deepseek-R1 一样的结果奖励模型(ORM),严格按照答案正确性和格式进行评分,确保模型真正提升推理能力。
2. 实验结果:数据不会说谎
在多项数学竞赛基准测试中,DeepScaleR-1.5B-Preview 展现了惊人的实力:
关键突破点:
1.DeepScaleR 在 AIME 2024 上超越 O1-Preview,证明了 RL 在小模型上的可行性。
2. 在所有测试集中,DeepScaleR 的平均表现远超基础模型,展现了强化学习的巨大潜力。
3. 关键发现:为什么 DeepScaleR 能成功?
(1)RL 并非大模型专属,小模型同样能崛起
DeepScaleR 的成功打破了强化学习只能用于大模型的迷思。研究团队通过高质量的 SFT 数据,让 1.5B 小模型的 AIME 准确率从 28.9% 提升至 43.1%,证明了小模型也能通过 RL 实现飞跃。
(2)迭代式上下文扩展:比暴力训练更高效
直接在 24K 上下文窗口中进行强化学习,效果远不如逐步扩展。先学短推理,再扩展长推理,可以让模型更稳定地适应复杂任务,同时减少训练成本。
4. 结论:RL 的新纪元
DeepScaleR-1.5B-Preview 的成功,不仅展示了小模型在强化学习中的无限潜力,也证明了高效训练策略的重要性。团队希望通过开源数据集、代码和训练日志,推动 RL 在 LLM 推理中的广泛应用。
下一步,他们计划在更大规模的模型上复现这一策略,并邀请社区共同探索 RL 的新可能。
或许,下一个挑战 OpenAI 的模型,就藏在这样一个小小的实验之中。
#7B逆袭DeepSeek R1
清华一作1B暴打405B巨无霸,7B逆袭DeepSeek R1!测试时Scaling封神
仅凭测试时Scaling,1B模型竟完胜405B!多机构联手巧妙应用计算最优TTS策略,不仅0.5B模型在数学任务上碾压GPT-4o,7B模型更是力压o1、DeepSeek R1这样的顶尖选手。
今天,一篇多机构联合发表的论文,在AI圈引起轰动。
凭借重新思考计算最优的测试时Scaling,1B模型竟然超越了405B?
随着OpenAI o1证明了测试时扩展(TTS)可以通过在推理时分配额外算力,大幅增强LLM的推理能力。测试时计算,也成为了当前提升大模型性能的最新范式。
那么,问题来了:
- 在不同的策略模型、过程奖励模型和问题难度级别下,如何最优地扩展测试时计算?
- 扩展计算在多大程度上可以提高大语言模型在复杂任务上的表现,较小的语言模型能否通过这种方法实现对大型模型的超越?
对此,来自清华、哈工大、北邮等机构的研究人员发现,使用计算最优TTS策略,极小的策略模型也可以超越更大的模型——
在MATH-500和AIME24上,0.5B模型的表现优于GPT-4o;3B模型超越了405B模型;7B模型直接胜过o1和DeepSeek-R1,还具有更高的推理性能。
论文地址:https://arxiv.org/abs/2502.06703
这就表明,TTS是增强LLM推理能力的一种极有前途的方法。
同时,这也体现了研究真正的「弱到强」方法,而非当前的「强到弱」监督,对策略优化的重要性。
重新思考「计算最优」的测试时Scaling
计算最优的扩展策略应当是奖励感知的
计算最优的测试时Scaling,旨在为每个问题分配最优计算资源。
根据此前的研究,一种方法是使用单一的PRM作为验证器在策略模型的响应上训练PRM并将其用作验证器,以对同一策略模型进行TTS;另一种方法则是使用在不同策略模型上训练的PRM来进行TTS。
从强化学习(RL)的角度来看,前者获得的是在线PRM,后者则是离线PRM。
在线PRM能为策略模型的响应产生更准确的奖励,而离线PRM由于分布外(OOD)问题往往会产生不准确的奖励。
对于计算最优TTS的实际应用而言,为每个策略模型训练一个用于防止OOD问题的PRM在计算上是昂贵的。
因此,研究人员在更一般的设置下研究计算最优的TTS策略,即PRM可能是在与用于TTS的策略模型不同的模型上训练的。
对于基于搜索的方法,PRM指导每个响应步骤的选择,而对于基于采样的方法,PRM在生成后评估响应。
这表明:(1)奖励影响所有方法的响应选择;(2)对于基于搜索的方法,奖励还会影响搜索过程。
为分析这些要点,团队使用Llama-3.1-8BInstruct作为策略模型,RLHFlow-PRM-Mistral-8B和RLHFlow-PRM-Deepseek-8B作为PRM,进行了一项初步的案例研究。
奖励会显著影响生成的过程和结果
RLHFlow-PRM-Mistral-8B对短响应给予高奖励,却产生了错误的答案;而使用RLHFlow-Deepseek-PRM-8B进行搜索虽然产生正确答案,但使用了更多token。
基于以上发现,研究人员提出奖励应该被整合到计算最优的TTS策略中。将奖励函数表示为ℛ,奖励感知计算最优TTS策略表述如下:
其中Target(𝜃, 𝑁, 𝑥, ℛ)表示在计算预算𝑁和提示词𝑥条件下,由奖励函数ℛ调整的策略模型𝜃输出分布。对于基于采样的扩展方法,Target(𝜃, 𝑁, 𝑥, ℛ) = Target(𝜃, 𝑁, 𝑥)。
这种奖励感知策略确保计算最优扩展能够适应策略模型、提示词和奖励函数,从而为实际的TTS提供了一个更具普适性的框架。
绝对问题难度标准比分位数更有效
团队发现,使用来自MATH的难度等级或基于Pass@1准确率分位数的oracle标签并不有效,这是因为不同的策略模型存在不同的推理能力。
如下图所示,Qwen2.5-72B-Instruct在76.2%的MATH-500问题上实现了超过80%的Pass@1准确率。
因此,团队选择使用绝对阈值,而不是分位数来衡量问题难度。即基于Pass@1准确率,定义三个难度等级:简单(50%~100%)、中等(10%~50%)和困难(0%~10%)。
如何最优地Scaling测试时计算?
Q1:如何通过不同的策略模型和PRM来提升TTS?
对于Llama-3.1-8B-Instruct模型,研究团队使用Skywork和Qwen2.5-Math PRM的搜索方法在计算预算增加时性能显著提升,而使用Math-Shepherd和RLHFlow PRM的搜索方法则效果较差。
对于Qwen2.5-7B-Instruct模型,使用Skywork-PRM-7B和Qwen2.5-Math PRM的搜索方法性能随计算预算增加而提升,而使用其他的PRM性能仍然较差。
在AIME24数据集上,虽然两个策略模型的Pass@k准确率随着计算预算的增加而提高,但TTS的性能改进仍然有限。这表明PRM在不同策略模型和任务间的泛化能力是一个挑战,尤其是在更复杂的任务上。
研究团队发现当使用Math-Shepherd和RLHFlow PRM时,Best-of-N (BoN) 方法通常优于其他策略。而当使用Skywork和Qwen2.5-Math PRM时,基于搜索的方法表现更好。
这种差异可能源于PRM在处理OOD(超出分布)策略响应时效果不佳,因为PRM在不同策略模型间的泛化能力有限。使用OOD PRM进行每一步的选择时可能会导致答案陷入局部最优,从而降低性能。
不过,PRM的基础模型也可能是一个影响因素,例如,使用Qwen2.5-Math-7B-Instruct训练的PRM比使用Mistral和Llama作为基础模型的PRM泛化能力更好。
下图4和5说明了PRM的选择对于TTS的效果至关重要,并且最佳的TTS策略会随着使用的PRM的不同而改变,同时验证了PRM在不同策略模型和数据集之间的泛化能力也是一个挑战。
研究团队发现,TTS的性能与PRM的过程监督能力之间存在正相关。具体来说,PRM的过程监督能力越强,其在TTS中通常能带来更好的性能。
团队拟合了一个函数来描述这种关系,结果说明了 PRM 的过程监督能力对TTS性能的重要性。
下图6表明,PRM的过程监督能力是决定其在TTS中性能的关键因素。这为开发更有效的PRM提供了方向:应该注重提高PRM的过程监督能力,而不仅仅是增加参数量。
为了得到最优的TTS方法,研究中使用了Qwen2.5系列的不同大小LLM(从0.5B到72B)进行实验。
结果显示,对于小型策略模型,基于搜索的方法优于BoN3。而对于大型策略模型,BoN比基于搜索的方法更有效。
这可能是因为大型模型具有更强的推理能力,不需要验证器逐步选择。而小型模型则依赖于验证器来选择每一步,以确保中间步骤的正确性。
下图7表明最优的TTS方法依赖于策略模型的大小,在选择TTS方法时需要考虑模型的推理能力。
Q2:TTS在不同难度问题上的改进情况如何?
如前所述,团队基于Pass@1准确率的绝对值将难度级别分为三组:简单(50%~100%)、中等(10%~50%)和困难(0%~10%)。
最优的TTS方法随难度级别的不同而变化,结果如下图所示。
- 对于小规模策略模型(参数少于7B),BoN在简单问题上表现更优,而束搜索在较难问题上效果更好。
- 对于参数在7B到32B之间的策略模型,DVTS在简单和中等问题上表现出色,而束搜索更适合困难问题。
- 对于具有72B参数的策略模型,BoN是适用于所有难度级别的最佳方法。
上下滑动查看
Q3:偏好奖励模型PRM是否对特定响应长度存在偏差或对投票方法敏感?
PRM对步骤长度存在偏差
研究团队发现,即使在实验中使用相同的计算预算进行TTS,使用不同PRM在推理中产生的token数量差异显著。
例如,在相同预算和相同策略模型的情况下,使用RLHFlow-PRM-Deepseek-8B进行扩展的推理token数量始终比使用RLHFlow-PRM-Mistral-8B多近2倍。
这种差异与 PRM 的训练数据有关。RLHFlow系列PRM的训练数据来自不同的大语言模型,这可能导致它对输出长度产生偏差。
为了验证这一观点,研究团队分析了RLHFlow-PRM-Mistral-8B3和RLHFlow-PRM-Deepseek-8B4训练数据的几个特性。
如表1所示,DeepSeek-PRM-Data的每个响应平均token数和每个步骤平均token数都大于Mistral-PRM-Data,这表明RLHFlow-PRM-Deepseek-8B的训练数据比RLHFlow-PRM-Mistral-8B的更长。这可能导致对输出长度的偏差。
研究团队还发现,使用Qwen2.5-Math-7B进行扩展的推理token数量大于使用Skywork-PRM-7B的数量,但性能非常接近,这表明使用Skywork-PRM-7B进行搜索更有效率。
PRM对投票方法具有敏感性
从表2的结果可以看出,Skywork-PRM-7B使用PRM-Vote比使用PRM-Max效果更好,而Qwen2.5-Math-PRM-7B对投票方法不太敏感。
这主要是因为Qwen2.5-Math PRM的训练数据经过了LLM-as-a-judge(将大语言模型作为判断器)处理,该处理移除了训练数据中被标记为正样本的错误中间步骤,使得输出的高奖励值更可能是正确的。
这表明PRM的训练数据对提升其在搜索过程中发现错误的能力具有重要意义。
「计算最优」的测试时Sclaing
在计算最优TTS策略下,研究人员就另外三大问题,进行了实验评估。
Q4:较小的策略模型,能否在计算最优TTS策略下优于较大的模型?
对小型策略模型进行测试时计算的扩展,对提升LLM的推理性能至关重要。
那么,较小的策略模型能否通过计算最优的TTS策略,超越更大的模型,如GPT-4o、o1、DeepSeek-R1?
如下表3所示,研究人员得出了4点关键的洞察:
1. 采用计算最优TTS策略后,在两大数学基准MATH-500和AIME24上,Llama-3.2-3B-Instruct性能碾压Llama-3.1-405B-Instruct。
从这点可以看出,较小模型通过计算最优TTS策略,可超越大135倍的模型。
与此前谷歌Charlie Snell团队等TTS相关研究相比,新方法将结果提升了487.0%(23倍→135倍)。
2. 将计算预算增加到N=512,同样采用计算最优TTS的Llama-3.2-1B-Instruct,在MATH-500基准上击败了Llama-3.1-405B-Instruct。
奇怪的是,在AIME24上,它的性能又不如Llama-3.1-405B-Instruct。
3. 采用计算最优TTS,Qwen2.5-0.5B-Instruct、Llama-3.2-3B-Instruct均超越了GPT-4o。
这表明,小模型可以通过计算最优TTS策略,也能一举超越GPT级别的大模型。
4. 在同样策略和基准下,DeepSeek-R1-Distill-Qwen-1.5B竟能碾压o1-preview、o1-mini。
同时,DeepSeek-R1-Distill-Qwen-7B还能击败o1和DeepSeek-R1。
以上这些结果表明,经过推理增强的小模型可以,通过计算最优TTS策略超越前沿推理大模型。
再来看下这些模型FLOPS比较,如下表4所示,小型策略模型即使在使用更少推理FLOPS的情况下,也能超越大型模型,并将总FLOPS减少了100-1000倍。
Q5:计算最优TTS与CoT和多数投票相比有何改进?
如下表5展示了,每个策略模型在MATH-500上的计算最优TTS结果。
结果发现,计算最优TTS的效率可以比多数投票高256倍,并且相比CoT提升了154.6%的推理性能。
这些结果表明,计算最优TTS显著增强了LLM的推理能力。
然而,随着策略模型参数数量的增加,TTS的改进效果逐渐减小。这表明,TTS的有效性与策略模型的推理能力直接相关。
具体来说,对于推理能力较弱的模型,Scaling测试时计算会带来显著改进;而对于推理能力较强的模型,提升效果则较为有限。
Q6:TTS是否比基于长CoT的方法更有效?
如下表6所示,研究人员发现,在MATH-500和AIME24基准上,使用Qwen2.5-7B-Instruct的TTS都优于rStar-Math、Eurus-2、SimpleRL和Satori。
然而,虽然TTS在MATH-500上的表现,接近DeepSeek-R1-Distill-Qwen-7B,但在AIME24上表现出明显下降。
这些结果表明,TTS比直接在MCTS生成数据上,应用RL或SFT的方法更有效,但不如从强大的推理模型中进行蒸馏的方法有效。
另外,TTS在较简单的任务上,比在更复杂的任务上更有效。
作者介绍
Runze Liu
Runze Liu是清华大学深圳国际研究生院的二年级硕士生,导师是Xiu Li教授。他曾于2023年6月获得山东大学的荣誉学士学位。
目前,他也在上海AI Lab大模型中心担任研究实习生,由Biqing Qi博士指导。
Runze Liu的研究重点是大模型和强化学习(RL)。目前,他对提高大模型的推理和泛化能力特别感兴趣,同时也在探索将大模型整合以增强RL算法的潜力,特别是在人类/AI反馈强化学习(RLHF/RLAIF)情况下。
参考资料:
https://arxiv.org/abs/2502.06703
https://ryanliu112.github.io/compute-optimal-tts/
#浅析主流 Alignment 算法与 NeMo-Aligner 框架
文章详细分析了NeMo-Aligner在PPO流程中的优化策略,包括推理加速、显存优化以及不同引擎之间的协同工作,同时探讨了其在训练效率和可扩展性方面的表现。
今年 10 月在费城开 COLM 的时候,我有幸见到了 NVDA 两篇工作的 post,一篇是 RULER,现在已经是 long context 几乎必测的 benchmark;另一篇便是今天要讨论的工作——NeMo-Aligner。
https://github.com/NVIDIA/RULER
https://github.com/NVIDIA/NeMo-Aligner
Aligner 这个名字自然是非常恰当,毕竟“Aligner 并不试图贡献新的 Alignment 算法,而是专注于如何集成更多的 Alignment 算法”。所以,我姑且就用 Aligner 这一名字称呼这一系列的工作:
- DeepSpeed-Chat——微软;
- NeMo-Aligner——NVDA;
- OpenRLHF——开源社区;
- veRL——字节;
https://github.com/microsoft/DeepSpeedExamples/blob/master/applications/DeepSpeed-Chat/README.md
https://github.com/NVIDIA/NeMo-Aligner
https://github.com/OpenRLHF/OpenRLHF
https://github.com/volcengine/veRL
虽然 Aligner 是为了各类基于 RL 的 Alignment training 而生的,然而这些算法会有相当一部分时间用于推理(rollout),所以推理引擎社区也乐于关注 Aligner 工作的进展和需求。在下文中,我也会尽力从我的认知水平出发,讨论 Aligner 对于 Inference Engine 的需求。
Introduction
- Nemo-Aligner 是一套集成了主流对齐算法的 toolkit,涵盖 RLHF / DPO / SteerLM 和 SPIN。能够有效调度千卡规模的计算资源,完成 Llama 4.1 405B 这种规模模型的训练。此外,toolkit 也支持 PEFT。作者希望这一框架足够 extenable,不过考虑到 RLHF / DPO 的差距已经非常大了,能复用的部分有限。个人感觉想要 support 一个新的算法还是比较困难。
- 当前的 Alignment 算法基本还是地主的赛场,需要显著的计算资源。譬如 PPO 算法的计算流中,需要同时有四个模型进行复杂的交互。如果用 405B 的模型同时充当这四个模型的 base,在不进行优化的情况下,动用的资源可以简单算一算。
70B 模型用 FP16:140GB
4 个彼此交互的模型:140GB * 4 = 560GB
Adam:每个参数需要 8 个字节(两个动量):70B * 8bytes = 560GB
Critic 和 Policy 同时都需要训练,所以需要两个优化器 = 1120GB
激活值和梯度:保守估计是模型大小的 1.5 倍,大概 210GB
KL 散度和其他各类开销:保守估计 200GB
大概 2100GB,也即 3 台 80G A100 ???
- 基于我不严谨的计算,可以发现运行这样的 aligner 框架的开销非常恐怖。据此,Nemo-Aligner 需要在系统上下大功夫。首先,在 Megatron-LM 上 continue,支持 distributed 3D (data, tensor, pipeline) parallelism training。再者,在 rollout(可以理解为 sampling 阶段)使用 TensorRT-LLM 来做 inference,毕竟目前 trt-LLM 的推理效率确实是 SOTA。(而且也是英伟达自家的产品 )
Model Alignment BackgroundSFT
pre-trained / base model 通过 Supervised Fine-Tuning 的方式来迫使模型基于 cross-entropy mimic 人类期望的回答。SFT 对于 DPO / RLHF 是必须的,因为不做 SFT,模型几乎无法 follow 人类指令。这一过程也被称为 behavior cloning。
RLHF
- 这是今天的主角。RLHF 避免了显式为 RL 定义 reward function,转而通过 reward model 给出的 judgement 作为 reward。reward 模型从一组 pairwise dataset 中训练得到,一个 instruct 给出两个 response,其中一个标为 chosen,另一个标为 rejected。reward model 的 loss 基于 Bradley-Terry 模型得到,尝试让 Reward(chosen) > Reward(reject) 的概率尽可能大。RLHF 有两大主流方法,一种是 REINFOCE(1992),相对古老;而 NeMo-Aligner 更倾向于 PPO(2022)。
- 下图一定程度表示了 PPO 的过程,这里尤其需要注意到模型参数是否会被训练。事实上,如前文所述,SFT Model、Policy / Actor、Reward Model、Value / Critic 这四个模型都会在计算流中被使用。其中 SFT 和 Reward 是 inference only 的,而 Policy 和 Value 会被更新。
- SFT 已经论述过了,简单提一下 Reward Model Training。一般而言,reward model 会在 SFT model 基础上加上一层 linear layer,然后连同这个 linear layer 训练,将 linear layer 的 final project value 作为 reward。(在 SGLang 中体现为 classify 接口)
https://sgl-project.github.io/backend/native_api.html#Classify-(reward-model)
- 计算流可以如下概括:
1. 初始化:SFT model 初始化 Actor,Reward Model 初始化 Critic;
2. Rollout / 生成输出:Actor 对输入的 Prompts 生成相应 / responses。
3. Reward Compute / 计算奖励:Reward Model 对生成的 responses 进行评分,提供 reward 得分。
4. 价值评估与更新:Critic 计算当前 responses 的价值(注意是 value 而非 reward),然后基于 value
和 reward 计算优势函数(advantage function),最终确定 Actor 的更新方向和幅度。此外,Critic
也会在这一步进行更新,减少其预测的 value 和实际奖励之间的误差,从而提高下个状态 value 的精度。
5. Advantage funciton 的值最红会用于优化 Actor,同时这步更新需要基于 SFT Model 的 logits 计算
KL 散度并且加以惩戒,避免 Actor 相较于 SFT model 偏离太远,走到了 Reward Model 的盲点 / blind
spots 上。
DPO
- DPO 是和 PPO 同样声名大噪的对齐方法,这是一种 offline, off-policy 的对齐方法。试图直接将模型对齐成为符合偏好的最佳 policy 而避开了显式需要一个 reward model。这也是其名字的由来:Your Language Model is Secretly a Reward Model。(PS:最近发现有好几个给论文起名的新 pattern,譬如 XXX is All You Need,XXX is Secretly a YYY,XXX Empowers XXX,最后还有 Make XXX Great Again )
- 相较于使用隐式的 reward model,DPO 更为激进地选择使用 reference policy 通过 Bradley-Terry Mdel 隐式推导出 chosen / reject pair 之间的 reward。具体来说,通过计算 chosen/ reject pair 之间的对数概率差值来得到 reward,而该差值又由 optimal and reference policies 共同计算。这样的差值又通过 scaling 并且经过 sigmoid 得到最终的 loss。训练过程中,reference policy 固定不动,仅用于构造 chosen / rejected responses。
SteerLM
- SteerLM 和 DPO 类似,避免复杂的 RL 方式,仅仅是 supervised finetuning。
- 计算流如下:
1. 训练属性属性预测模型 / Attribute Prediction Model(APM),用于给定一个输入 prompt,给出多个语义评分。
譬如对 correctness、toxicity 分别打 0 ~ 4 分。
2. 利用 APM 标标注 prompt-response pair,得到属性分。
3. 做 SFT:输入是 prompt + 属性分字符串,模型学习对给定 prompt 和属性分目标生成相应的 response。
4. 推理的时候,在 prompt 结尾加上需要的属性分即可。
- 听上去真的是比其他方法简单多了,避免了 Reward Model 和 PPO 训练的复杂性,将属性对齐问题转为了显式的条件对齐。不过,猜测效果不是那么好
Self-Play Fine-Tuning
这是我们组的工作 ,不由得说影响力真不错。SPIN 和 DPO 类似,绕开了显式使用 reward model(注意到 reward model 的意义在于绕开了显式使用 reward function )。SPIN 方法中,strong model 会从一个 weak model 的自我博弈中迭代而来。具体而言,给定一个 prompt / response pairs,让 weak model 对 prompt 进行一次新的标注,得到 prompt / (response, generated response) 这样的 preference data。然后,policy 在这样自我合成了一般数据的 preference pair 上训练,使其对于给定的 prompt,其偏向 response 的概率高于偏向先前自我构造的 generated response。这里需要用到 preference loss function,而这样的 preference loss function 和 DPO 中使用的 loss function 一模一样。
Online / Offline vs On-policy / Off-policy
作为强化学习白纸,这里记录下自己理解的概念。
1.On-Policy vs Off-Policy:用于收集经验的策略(behavior policy)和被优化的策略(target policy)是否是同一个。 On-Policy 使用当前正在学习的 policy 收集数据,数据只能使用一次,用后即弃,更加稳定容易收敛;但是数据利用率低,构造数据成本高昂,典型算法有 PPO 和 SARSA。而 Off-Policy 可以使用任意的 policy 来构造数据,可以复用历史数据,可以使用外部策略(如人类)的数据,数据利用率高,但是训练可能不稳定,需要复杂的重要性采样,典型算法如 Q-Learning,DQN,SAC。
2.Online vs Offline:算法是否需要在训练过程中与环境交互。 Online 算法在训练过程中不断与环境交互,实时收集数据,动态调整策略,可以更适应环境变化,然而实时访问的风险和成本较高。典型场景有实时控制、在线决策。Offline 算法又称为 Batch RL,只使用预先收集的数据集,训练过程不与环境交互,类似于监督学习。安全,不需要实时环境,但是受限于数据质量,难以处理分布外的情况。
3.PPO 是 online on-policy 的;但是对于 Online 而言,我和组里的同学讨论,这个定义可能没那么严格。Online 的特点可能是小批量大轮次,比如 SPIN 中一轮 1w 个 preference data 然后 train 3 个 epoch,而典型的 PPO 可能是 64 个 preference data train 成百上千轮,所以 SPIN 可能不是典型的 Online。
4.【from 我们组的学长】从 RL 的角度来看,是否从当前 policy 采样决定是否是 on policy;而是否和环境交互决定是否是 on line。这种界限并不清晰,没必要纠结,知道在描述什么即可。
NeMo-Aigner For RLHF / PPO
- 讨论了非常久的 alignment background,现在我们回到 NeMo-Aligner 上。之后的解析(对 OpenRLHF 和 veRL)应该不会涉及 RL 背景了。RLHF 的流程如本文第一张图所示,而主要的开销还是在 PPO 流程中,具体而言是 rollout。
- 如前文所述,PPO 过程需要 4 个模型组件参与整个流程。
a. PPO Actor:训练且推理,由 SFT Model 初始化而来,是 PPO 最终希望得到的微调结果。
b. Reference Policy:仅推理,一般设置为 SFT Model 本身,不进行任何修改。在 PPO 过程中,Actor 会
Reference Policy 同时计算 logits【这里会在后文论述】,然后计算 KL 散度,防止模型过度偏移。
c. PPO Critic:训练且推理,从 reward model 初始化而来,在 PPO 中计算 value【并非 reward】。
d. Reward Model:仅推理,对 Actor 产生的 rollout data 提供 rewards。
- 上述四种 model 都可以任意大小,因此 NeMo-Aligner 实现了分布式训练,通过 PyTriton 启动 server 和 client,从而不再要求 critic 和 actor 在同一个节点上。
- 直观上,可以启动四个模型 server 来同时 host 四个组件。然而,注意到 PPO Actor 和 Reference Policy 实际上是同一架构同一参数量的模型,不过参数会有所更新。因此,NeMo-Aligner 将二者组合在同一个 job 上。二者不同时使用,所以可以将其中不用的一个 offload 到 DRAM 上,推理时再异步 swap 回来。【这里也有很深的文章可以做,后文分析】这种 offload and swap 的策略在 PPO Critic 和 Reward Model 上也同样适用。
- Response generation 占据了 PPO 全流程的主要时间。显然,我们可以采用 inference engine 来加速这样的 generation。为什么不可以用 training engine 的 forward 来进行 generation 呢?这个问题问的看似愚蠢,仔细想想,为什么我们没有用 training engine 来做 inference,比如直接拿着 deepspeed 的 forward 来做推理,反而要单独设计推理引擎呢?其实还是推理的计算特性所致。
https://zhuanlan.zhihu.com/p/4148050391
- 在之前的文章(上方链接到的文章)中有提到,inference(或者说占据主要时间的 decode)是 autoregressvie 的,每个 token 依赖于前序所有 token,所以无法单个 sequence 的 decode 是无法并行的(能组起的 batch 都是多个 sequence 的 continuous batching),从而计算密度并不高。另一方面,decode 阶段需要进行大量的内存读取和数据传输,对通讯要求较高。总归,inference engine 是主要被 memory bounded 的。 而 training engine 则不然,training engine 的 batch size 可以开的非常大,直到打满 engine 的计算能力,从而使 compute bounded 的。 因此,用 training engine 来做 inference 并不科学。(尽管我的本科写过的作业从不考虑这个问题 )
- 如上所述,我们已经发现,对于 PPO 中的四个 components,我们分别需要 inference engine 和 trainning engine,彼此优化各自的计算目标。现在考虑这个问题:为了计算 KL 散度需要得到 reference policy 和 actor 分别的 logits,这个 logits 该由什么 engine 得到?显然,inference engine 得到 logits 快很多,而且现代引擎都支持这个请求。然而,目前 inference engine 得到的 logits 精度是更低的,不应该来计算 KL 散度。更科学的方法是用 trainning engine 得到二者的 logits 来计算 KL 散度。
- 至于为什么 inference engine 的 logits 精度更低,这也是为了 inference 速度做出的牺牲。直观上来说,continuous batching 组的 batch 越大,精度”飘“的更厉害。即便 batch size 写死为 1,也不够准确。
- 考虑到 engine 启动的开销很大,PPO 过程中任意 engine 都不应该被关掉。这无疑带来了更大的显存压力,为此 NeMo-Aligner 在反向传播时重新计算 training 阶段的激活值,减少了峰值显存压力。此外,inference 需要的显存小于 training,所以在单个节点的显存允许时,NeMo-Aligner 在 inference 时只采用 tensor parallelism,避免了 pipeline parallelism 带来的跨节点通讯开销。
- 在随后的迭代训练过程中,inference 的 engine 需要与 training engine 更新过的参数进行同步。【这里有很大文章】为了实现这样的同步,inference engine 使用了 Tensor RT Refitter 来进行 in-place update,而不是关掉 engine 重启新的(我在开会的时候就觉得这个优化非常重要,尽管当时我并不理解其重要性,但是最近越发理解这个接口几乎是 dominate 的)。最后,rollout 阶段不同 inference engine 的 latency 也不尽相同,所以 NeMo-Aigner 又为此设置了一个 router,真是工程量可怕。
训练实际表现与 Scalability
- 这张图很有意思。首先,纵向比较,显然我们发现 Rollout 阶段的 response generation 占据了过半数的时间。另一方面,横向观察第二行,我们注意到当计算资源线性增长时,不同阶段的效率增长不尽然相同。Response generation 近乎是超线性的 ,而 logits 计算显然是亚线性的。
- 具体而言,training 开销是亚线性的,因为随着节点增加,每个 data parallel rank 的 micro-batch size 减少,计算利用率降低。而在 pipeline parallelism 中,流水段必须在 optimizer 调用之前完成,由此带来了填充和清空流水线的开销,且这一开销和 mirco batch 大小无关。所以 mirco batch 减小,流水线的计算用时减小,填充和清空开销增大,所以计算利用率降低,增长亚线性。计算 logits 也是类似的。(原文这里其实也暗含了 logits 是 trainning engine 得到的,然而没有明示 )
- generation 的开销是线性的,一方面是 router 做的足够好,response 近乎被等分给了每个 engine,这是线性的。此外,inference 的开销可能会稍微增大,毕竟 KV Cache 被复用的次数少了,然而整体上影响很小【感觉自己有点扯淡了 】。0generation 随着更大计算资源的投入,几乎是线性增长的。
- 当然,engine 的 weight update 开销并不能降低,原因显然。至于 actor 和 critic 之间,由于是异步通讯的,actor 几乎不需要等待 critic 的上一轮相应,也不存在开销了。
- 如下图所示,为了进一步说明每个 feature 带来的加速,作者做了分 component 的 ablation。去除 Trt-LLM 集成后,PPO 每一步的开销增加了 7 倍。接着,在推理阶段使用 pipeline parallelism 导致开销增长 4 倍,inference engine 不断重启带来了 3 倍开销,而不使用异步请求会导致 1.5 倍开销。反过来,router 看上去并不重要,可能这和 PPO rollout 的样本量有关。一轮就 128 个 sample,router 的优化似乎弥补不了其开销 【但我相信对于 SPIN 而言不是这样的,因为 PPO 是小批量多批次,而 SPIN 是大批量小批次】
- 剩下的部分就快速写过了。作者在 trainning SteerLM 的时候用了 LoRA,惊奇发现 LoRA 带来的损失几乎没有超过 benchmark 的误差范围。
- 作者在 SPIN 中,仅进行了一个 epoch 的训练,并且不将先前轮次的 sample 使用到下一轮,避免了 datset size 每次都翻倍。
Remain Question
之所以来学习以 NeMo-Aligner 为代表的 Aligner 框架,是因为有收到 OpenRLHF 团队的反馈,希望能够将 SGLang 集成到他们的框架中去。前文已经提到了,有一些地方可以做文章的。
- 如何从 actor 和 reference policy 拿到更准的 logits?目前需要通过 training engine 而非 inference engine。不过,对于 inference engine 而言,有什么是我们能做的呢?
- 如何提供 Reward Model 的通用接口?直接在 SFT model 的 last layer 加上一个 linear head 再训练一番即可作为 reward model。推理引擎能为此提供更好的接口么?
- 如何做更好的 weight update?四个模型需要两套 engine,如何从 Training Engine 上调用鲁棒的 Inference Engine Weigtht Update 接口呢?目前 OpenRLHF 集成 deepspeed 和 vllm,经常因为二者的 depedency 和更新带来很大的问题,我们能做些什么?
希望接下来几周的工作可以让这些问题更明朗。
#LLM 的仿射变换量化
大模型轻量化系列解读 (七)|厦门大学纪荣嵘团队提出AffineQuant
本文提出了一种名为AffineQuant的后训练量化(PTQ)方法,通过引入等价的仿射变换扩展了优化范围,显著降低了量化误差,尤其在低比特量化和小模型场景下表现出色。该方法通过渐进式掩码优化确保变换矩阵的可逆性,并在多种大型语言模型(LLMs)上取得了最先进的性能。
LLM 后训练量化过程的一个有效改进方案。
在大语言模型的量化技术中,后训练量化 (Post-Training Quantization, PTQ) 因其在压缩效率高,成本效益明显而研究很多。现有的 LLM 后训练量化方法限制了优化的范围,以缩放预量化权值和后量化权值之间的转换。这种约束导致量化后出现重大错误,尤其是在低比特量化配置中。
本文提出在 PTQ (AffineQuant) 中使用等价仿射变换 (Affine Transformation) 进行直接优化。这种方法扩展了优化范围,显著减少了量化误差。此外,通过使用相应的逆矩阵,可以确保 PTQ 的预量化输出和后量化输出之间的等价性,从而保持其效率和泛化能力。
为了确保优化过程中变换的可逆性,本文进一步引入了一种渐进掩码的优化方法。该方法最初侧重于优化对角元素并逐渐扩展到其他元素。这种方法与 Levy-Desplanques 定理一致,理论上确保了变换的可逆性。因此,在不同的数据集上,不同 LLM 显而易见地取得了性能改进。值得注意的是,当使用非常低比特进行量化时,改进最为明显,使其能够在边缘设备上部署大模型。
实验结果上,作者在 W4A4 量化的 LLaMA2-7B 模型上获得了 15.76 (OmniQuant 中 18.02) 的 C4 困惑度,而无需开销。在 Zero-Shot 任务上,AffineQuant 在 LLaMA-30B 使用 W4A4 量化时,平均达到了 58.61% 的精度 (OmniQuant 中 56.63),为 LLM 的 PTQ 提供了新的 sota 基准。
1 AffineQuant:LLM 的仿射变换量化
论文名称:AffineQuant: Affine Transformation Quantization for Large Language Models (ICLR 2024)
论文地址:
http://arxiv.org/pdf/2403.12544
代码链接:
http://github.com/bytedance/AffineQuant
1.1 AffineQuant 研究背景
大型语言模型 (LLM) 由于其令人印象深刻的性能而受到越来越多的关注。然而,emergent logical reasoning 能力仅存在于一定大小阈值以上的模型中。因此,LLM 的训练和推理效率需要仔细考虑。具体来说,LLM 在移动和边缘设备上进行推理有很多潜在价值。量化被认为是模型压缩方法中最有前途的方法之一。特别是,它将 weight 和 activation 映射到低比特表示,有效地减少了模型的显存使用。此外,优化低比特操作符的编译显著提高了它们的效率,加速模型推理。
同时,由于训练 LLM 需要大量计算资源和高质量数据,通过模型微调实现量化具有挑战性。因此,研究界越来越强调无训练算法,称为后训练量化 (PTQ)。PTQ 允许以很少的校准数据进行有效优化。但是这种方法也会导致显著的性能下降,尤其是在小模型或低比特的场景中。
很多 PTQ 方法采用等价变换。如图 1 所示,AWQ[1]通过优化统计数据来增强尺度计算,并引入预量化和后量化特征图之间的均方误差损失作为 LLM 中第一次的优化指标。Omniquant[2]引入了可学习的 scale 和 shift 参数来增强优化。在更高的维度中,等效量化的概念也受到关注。RPTQ[3]通过对 activation 的列进行排序来实现每个集群的 activation 量化。重新排序可以通过将 scale 从向量转换为矩阵形式来在数学上表示,其中每一行和列对应于单个尺度值。这种转换以等效的方式有效地重新排列 activation 的列和 weight 的行。
总之,等效量化的演变从手动设计到梯度优化,从低维到高维,以及从单尺度合并到多个操作的组合。等效量化在2个主要方面具有优势:1) 保证预量化输出和后量化输出之间的一致性,进而通过优化等价变换参数可以有效地缓解量化噪声。这与后训练量化的概念一致,其中等价变换充当噪声改进的媒介。2) 不同类型的等价变换相互正交。直观地说,引入每种新型等价变换扩展了参数优化空间,从而提高了性能。
因此,本文提出了一种等效仿射变换的算法。具体来说,将仿射变换矩阵左乘到线性层中的权重,并将逆矩阵与激活右乘。在均方误差损失的指导下,优化仿射变换矩阵。与其他算法相比,损失始终较低。此外,作者在优化过程中探讨了矩阵的可逆性。Levy-Desplanques 定理表明严格对角支配矩阵 (Strictly Diagonally Dominant Matrix) 是可逆的。为了确保仿射变换矩阵严格对角支配,作者采用对角初始化和渐进掩码的方法。这样一来,高维矩阵的优化就可以使用校准集,通过渐进优化的过程得到。在推理效率方面,本文方法在矩阵合并后与其他方法一致。
1.2 AffineQuant:为权重和激活进行仿射变换
定义伪量化函数如下:
其中 分别是量化步长,零点和比特数。 是舍入运算。如图 1 所示,AffineQuant 给权重矩阵 左乘一个仿射变换矩阵 ,以更好地将权重分布与量化函数 对齐。扩展优化空间使转换后的权重中的量化误差更小,从而降低困惑度。同时,将仿射变换矩阵 的逆与激活值 右乘,以保持激活和权重之间的矩阵乘法输出不变性。对于单个线性层,AffineQuant 优化问题如下:
AffineQuant 结合了 AWQ 和 SmoothQuant 的本质,其中矩阵 的主对角元素由 weight 和 activation 的统计量计算得到。如果是专门更新 的对角元素,那就与 OmniQuant 对齐了。RPTQ 中使用的重新排序矩阵是仿射变换矩阵 的子集,当 的每一行和列仅出现1—次时。总之,AffineQuant 包含以前的各种量化算法,扩大了权重分布 的优化可能性。
图1:缩放、平移和仿射变换对权重量化的影响。"fixed point" 指的是 n-bit 量化中的 2n−1 个量化级别。s、b 和 A 分别是比例因子、平移因子和仿射变换矩阵。假设 W 的输入通道和输出通道为2。将每个输出通道视为一个二维向量
在图 1 中,设权重矩阵 有 2 个输出通道和输入通道。缩放因子,平移因子和仿射变换矩阵分别表示为 。作者根据输出通道将权重矩阵划分为 2 个向量 。缩放变换 均匀地缩放 的每个元素。平移变换 沿不同轴移动 。仿射变换 允许对 进行任意重定位。然而,缩放和平移变换限制了它们将 中的维度映射到相邻 fixed point 的能力。相比之下,仿射变换保证了向量中所有维度收敛到 fixed point。换句话说,仿射变换将 weight 的分布与式 2 中量化函数 引入的噪声对齐,降低量化误差。值得注意的是,将仿射变换矩阵归一化为 ,其中矩阵 的每一行的范数为1,将 转换为标准旋转矩阵。旋转矩阵 在保留权重的大小的同时旋转权重的输出通道。比例因子 在旋转向量上执行缩放。因此,仿射变换矩阵 结合了缩放和旋转等效变换,并且与平移变换正交。
困惑度 (ppl) 与交叉熵 (CE) 损失呈指数关系,与量化前后输出激活均方误差正相关。因此,可以通过优化量化前后的均方误差来实现优化困惑度:
在大语言模型量化中,AffineQuant 的优化目标如下:
其中 是第 个 Transformer Block。 分别是等价变换后的 activation,weight 和 bias。将仿射变换和平移变换结合起来,并使用 Transformer Block 输出的均方误差作为优化目标。
图 2 说明了 LLAMA7B 和 OPT-1.3B 最后一个 Transformer Block 的均方误差损失优化。值得注意的是,与 OmniQuant 相比,AffineQuant 的初始损失较低,因为仿射变换矩阵的优越性能。此外,与 OmniQuant 相比,AffineQuant 在最后一个 Block 中表现出更快的损失收敛和更优越的整体优化性能。这些结果表明了可逆矩阵优化的巨大潜力。
图2:LLaMA-7B 和 OPT-1.3B 最后一个 Transformer Block 的均方误差损失。"w2a16" 表示 2-bit 仅权重量化。"w3a16g128" 表示 3-bit 且 128 组的仅权重量化。分别在 LLaMA-7B 和 OPT-1.3B 的最后一个 Block 优化 40 和 20 个 epoch
1.3 渐进式掩码
在优化过程中,需要对仿射变换矩阵求逆。但是,式 4 的目标函数中不包括任何约束,以确保矩阵保持满秩。因此,如何在优化过程中保持矩阵可逆。首先,作者定义了一个严格的对角支配矩阵,如下所示:
定义 1 [严格对角支配矩阵 (Strictly Diagonally Dominant Matrix)] 如果每个对角元素的绝对值大于相应行中剩余元素的绝对值之和,则认为矩阵 A 严格对角支配。具体来说,
Levy-Desplanques 定理[4]确定所有严格对角支配矩阵 (Strictly Diagonally Dominant Matrix) 都是可逆的。
作者先对仿射变换矩阵只初始化其对角元素,其余置为 0,确保它最初严格对角支配。虽然在优化器中使用二阶动量和较低的学习率可以帮助满足 Levy-Desplanques 定理的要求,但随着模型大小的增加,大型仿射变换矩阵的优化仍然面临不稳定的挑战。
图3:渐进式掩码对仿射变换矩阵进行操作,随着训练的进行,逐渐将对角线附近的矩阵 A 的元素合并到训练过程中
为了确保仿射变换矩阵在优化过程中保持严格对角支配,作者提出引入了一种渐进式掩码的方法,如图 3 所示。在每个优化块开始时,作者冻结除主对角线上的元素之外的所有元素。随着优化的进行,逐步解冻主对角线附近的元素。最终,所有矩阵元素都变成可学习的。这种冻结机制,称为 Gradual Mask (GM),定义如下:
\beginequation} GM_{ij}= \left{ \begin{array}{ll} 1 & i=j, \ \alpha & 0<i-j| \leq \frac{et}\times hidden~size, \ 0 & otherwise, \ \end{array} \right. \end{equation} \tag{6}\begin{equation} GM_{ij}= \left{ \begin{array}{ll} 1 & i=j, \ \alpha & 0<i-j| \leq \frac{e{t}\times hidden~size, \ 0 & otherwise, \ \end{array} \right. \end{equation} \tag{6}
其中, 是掩码矩阵的第 行,第 列元素。 是目标 epoch。 是当前 Epoch。hidden size 是仿射变换矩阵的维度。 是 stability factor。在注意力模块中,作者在每个注意力头中应用 GM 。GM 是一种学习率调节器,通过与矩阵 的元素点积来实现。具体来说, 矩阵对优化过程的影响可以分为两个方面。在这里,作者展示了合并 后矩阵 的优化过程:
其中, 是 Hadamard 积。 和 分别是 Epoch 中的矩阵 和 Gradual Mask(GM)矩阵。 是矩阵 的学习率。 是优化损失。当 stability factor 小于 1 时,GM 矩阵在前向传播过程中有效地减小了矩阵 中非主对角元素的大小。这确保了 在优化过程中稳定存在逆矩阵。
就像 Levy-Desplanques 定理要求的那样。在反向传播中,GM 影响学习率 ,从而抑制矩阵 中非主对角元素的更新速率。因此,GM 对 的影响确保矩阵 保持严格对角支配,满足 Levy- Desplanques 定理。值得注意的是,当 接近 0 时,优化过程稳定收敛并等效于 OmniQuant。AffineQuant 中的渐进式掩码确保了仿射变换矩阵的严格对角支配的属性。
1.4 AffineQuant 的效率
优化效率
PyTorch 的线性代数库提供了 float 和 double 的矩阵求逆计算。因此,在整个优化过程中,作者将模型的精度保持为 float 或 double。此外,由于计算机的数值精度限制,矩阵逆的近似计算可能包含错误。
推理效率
作者将仿射变换矩阵与其他层集成在一起。随后,对网络执行半精度推理。对于所有线性层,将仿射变换矩阵与 weight 和 bias 参数合并。此外,对于 LayerNorm 之后的仿射矩阵,只优化对角元素,然后进行 weight 和 activation 的量化。这样是为了将仿射矩阵与 LayerNorm 的权重和方差合并。因此,AffineQuant 可以在推理中不引入任何额外开销。
1.5 实验设置
在 AffineQuant 中,稳定性因子 随着模型大小的增加,量化位数的减小,组大小的增加,而减小。对于 OPT-6.7B 和较小的模型,设置 。随着模型大小的增加,对权重量化为 3-bit 或更多的配置使用 。对于其他配置,从集合 中选择 。然后,排除了 MLP 模块中两个线性层之间的仿射变换。这是因为在较大的尺寸中优化大变换矩阵很有挑战性。此外,激活函数的存在使得矩阵的等效变换无效。
1.6 实验结果
如图 4 和图 5 所示,AffineQuant 在各种量化配置的所有模型的取得了一致的性能改进,表明 AffineQuant 不依赖于特定的量化配置。值得注意的是,AffineQuant 所取得的改进特别是在低比特量化或更小的模型尺寸的情况下。具体来说,在 OPT-125M 模型的 w3a16g128 配置中,AffineQuant 实现了 5.10 的困惑度降低,大大超过了OmniQuant 的性能。此外,在 w4a4 量化配置下,AffineQuant 在 C4 和 WikiText2 数据集的 LLaMA2-7B 模型上实现了 2.26 和 1.57 的困惑度降低。这些结果强调了在更有挑战性量化任务中扩展等价变换的优化空间的重要性。
图4:OPT 模型 WikiText2 数据集上的仅权重量化 PPL(↓) 结果
图5:使用 W4A4 位 weight 和 activation 量化的 LLaMA1&2 在 WikiText2 和 C4 数据集上的量化性能
在图 6 中,作者调整了式 6 中的稳定性因子 。 接近于 0 时,仿射变换理论上收敛到尺度变换。可以观察到,随着 的降低,OPT-125M 和 LLaMA-7B 的模型性能收敛到 OmniQuant。然而,在 LLAMA-7B 的情况下,较大的稳定性因子并不能保证变换矩阵的严格对角支配,导致训练崩溃。因此,有必要在保证 Levy-Desplanques 定理有效性的同时增加 。
图6:不同稳定性因子 α 对 OPT-125M 和 LLaMA-7B 模型性能的影响
#大语言模型、视觉语言理解、多模态统一模型
一文搞懂DeepSeek的技术演进之路
本文撰写路径比较清晰,意在初步梳理DeepSeek技术的演进及进化之路,主要包括三大方向:大语言模型、视觉语言理解模型、多模态统一模型。
- 大语言模型系列论文:DeepSeek-LLM -> DeepSeek-V2 -> DeepSeek-V3 -> DeepSeek-R1
- 视觉语言理解模型系列论文包括:DeepSeek-VL -> DeepSeek-VL2
- 多模态统一模型系列论文包括:JanusFlow -> Janus -> Janus-Pro
关于本文的迭代更新版本将放在知乎上
猫先生知乎主页:https://www.zhihu.com/people/m_aigc2022/posts
大语言模型技术演进:DeepSeek-LLM、DeepSeek-V2、DeepSeek-V3、DeepSeek-R1
- 初始阶段: DeepSeek LLM通过扩展模型规模和引入多阶段训练,提升了模型在多个领域的表现。
- MoE架构引入: DeepSeek-V2引入MoE架构,通过MLA和DeepSeekMoE实现高效推理和经济训练。
- 高性能和经济性: DeepSeek-V3进一步扩展模型规模,引入多令牌预测和无辅助损失的负载均衡策略,实现了更高的性能和更低的训练成本。
- 推理能力提升: DeepSeek-R1通过强化学习和冷启动数据,显著提升了模型的推理能力,并通过蒸馏技术将推理能力扩展到小型模型。
DeepSeek LLM
论文题目:《DeepSeek LLM:Scaling Open-Source Language Models with Longtermism》
发表时间:2024年1月
论文地址:https://arxiv.org/pdf/2401.02954v1
在2024年1月前后的时间,基于解码器的Transformer大型语言模型(LLMs)的发展迅速,成为实现人工智能(AGI)的重要途径。尽管闭源产品如ChatGPT、Claude和Bard在计算资源和标注成本上具有优势,但开源LLMs的性能仍需提升。
本项目主要探索模型的缩放定律(scaling laws),并在两个广泛使用的模型配置(7B和67B)上进行扩展。通过预训练、监督微调(SFT)和直接偏好优化(DPO),提升模型在代码、数学和推理等领域的性能。
scaling laws:即模型性能与其规模(如参数数量)、训练数据集大小以及用于训练的计算资源之间存在的一种可预测的关系。这种关系通常表现为随着这些因素的增长,模型性能会按照一定的幂律进行改善。
DeepSeek LLM 67B在一系列基准测试中超越了LLaMA-2 70B,特别是在代码、数学和推理领域表现突出。此外,开放式评估揭示出DeepSeek LLM 67B聊天模型与GPT-3.5相比展现出更优的性能。
方法概述
DeepSeekLLM,旨在通过长期视角推动开源语言模型的发展。
数据收集与预处理: 首先,开发了一个包含2万亿token的数据集,并对其进行去重、过滤和重新混合。去重阶段通过跨多个dump进行去重,过滤阶段通过详细的语义和语言学评估来增强数据密度,重新混合阶段则通过增加代表性不足领域的存在来平衡数据。
表1|各种常见 Crawl dumps 去重比率
模型架构: DeepSeek LLM的微观设计主要遵循LLaMA的设计,采用Pre-Norm结构和RMSNorm函数,使用SwiGLU作为前馈网络的激活函数。宏设计上,DeepSeek LLM 7B有30层,而67B有95层,以优化训练和推理。
表2 | DeepSeek LLM系列模型的详细规格
超参数选择: 初始标准差为0.006,使用AdamW优化器,超参数为_β_1=0.9,_β_2=0.95,权重衰减为0.1。采用多步学习率调度器,学习率在2000个预热步后达到最大值,然后逐步降低。
图1 | 使用不同学习率调度器或不同参数设置的学习率调度器的训练损失曲线。该模型大小为16亿参数,在包含1000亿个token的数据集上进行训练。
缩放定律: 通过实验建模了计算预算C与最佳批量大小和学习率之间的幂律关系,公式如下:
图3 | 批量大小和学习率的缩放曲线。灰色圆圈代表泛化误差超过最小值不超过0.25%的模型。虚线代表拟合较小模型的幂律。蓝色星号代表DeepSeek LLM 7B和67B
模型和数据缩放: 采用IsoFLOP剖面方法拟合扩展曲线,公式如下:
图4 | IsoFLOP曲线和最优模型/数据分配。IsoFLOP曲线中的指标是验证集上每个字节的比特数。最优模型/数据缩放曲线中的虚线代表拟合较小模型(灰色圆圈)的幂律
图5 | 性能缩放曲线。指标是验证集上的每秒比特数(bits-per-byte)。虚线代表拟合较小模型(灰色圆圈)的幂律。蓝色星号代表DeepSeek LLM 7B和67B。它们的性能被缩放曲线很好地预测了
DeepSeek-V2
论文题目:《DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model》
发表时间:2024年5月
论文地址:https://arxiv.org/pdf/2405.04434v5
在2024年5月前后的时间,大语言模型(LLMs)的快速发展,展示了人工智能(AGI)的曙光。然而,随着参数量的增加,模型的智能提升带来了更大的计算资源需求和推理吞吐量的潜在下降,限制了LLMs的广泛应用。
本项目主要目标是解决LLMs在训练和推理过程中资源消耗大的问题,通过创新架构(包括多头潜在注意力(MLA)和DeepSeekMoE)实现经济高效的训练和高效的推理。
图1|(a) 不同开源模型下多模态语言模型(MMLU)准确率与激活参数的关系。(b) DeepSeek 67B(密集型)和DeepSeek-V2的训练成本与推理效率。
方法概述
DeepSeek-V2,一种强大的MoE语言模型,通过创新的架构实现了经济和高效的训练和推理。
图2 | DeepSeek-V2架构示意图。MLA通过显著减少生成所需的KV缓存来确保高效推理,而DeepSeekMoE则通过稀疏架构以经济成本训练出强大的模型。
多头潜在注意力(MLA): 一种新的注意力机制,通过低秩键值联合压缩来显著减少推理时的键值缓存,从而提高推理效率。MLA的计算过程如下:
- 标准多头注意力(MHA) 首先通过三个矩阵计算查询(q)、键(k)和值(v):
- 然后,将q、k、v切片成多个头进行多头注意力计算:
- 最后,通过softmax函数计算权重并进行加权和:
- MLA通过低秩联合压缩键值对:
图3 | 多头注意力(MHA)、分组查询注意力(GQA)、多查询注意力(MQA)和多头潜在注意力(MLA)的简化示意图。通过将键和值联合压缩成一个潜在向量,MLA在推理过程中显著减少了KV缓存
DeepSeekMoE: 通过细粒度的专家分割和共享专家隔离来实现更高效的模型训练。DeepSeekMoE的基本思想是将专家分割成更细的粒度以提高专家的专业化,并通过隔离一些共享专家来缓解路由专家之间的知识冗余。具体计算过程如下:
- 对于每个token,计算其FFN输出:
- 通过设备限制路由机制来控制MoE相关的通信成本,确保每个token的专家分布在最多M个设备上。
- 设计了三种辅助损失来控制专家级负载平衡、设备级负载平衡和通信平衡。
- 采用设备级token丢弃策略来进一步缓解计算浪费。
DeepSeek-V3
论文题目:《DeepSeek-V3 Technical Report》
发表时间:2024年12月
论文地址:https://arxiv.org/pdf/2412.19437v1
近年来,大语言模型(LLMs)的快速发展,逐步缩小了向人工智能(AGI)迈进的差距。除了闭源模型外,开源模型如DeepSeek系列、LLaMA系列、Qwen系列和Mistral系列也在努力缩小与闭源模型的差距。
DeepSeek-V3,一个具有671B总参数的MoE语言模型,采用多头潜在注意力(MLA)和DeepSeekMoE架构(在DeepSeek-V2中已得到充分验证,展示了其在保持强大模型性能的同时实现高效训练和推理的能力),并引入无辅助损失的负载均衡策略和多令牌预测训练目标以提高性能。
方法概述
DeepSeek-V3,自研 MoE 模型,671B 参数,激活 37B,在 14.8T token 上进行了预训练,用于解决大语言模型的高效推理和训练问题。
- 多头潜在注意力(MLA): MLA架构通过低秩联合压缩注意力键和值来减少推理过程中的KV缓存,从而提高推理效率。
- DeepSeekMoE架构: DeepSeekMoE架构使用细粒度的专家并行和隔离一些专家作为共享专家,以提高训练效率。
- 无辅助损失的负载均衡策略: 为了最小化辅助损失对模型性能的影响,提出了一种无辅助损失的负载均衡策略,通过引入偏置项来动态调整专家负载。其公式如下:
- 多令牌预测(MTP)目标: 通过在每个位置预测多个未来token,增加训练信号的密度,从而提高模型性能。其训练目标如下:
性能对齐
DeepSeek-V3 多项评测成绩超越了 Qwen2.5-72B 和 Llama-3.1-405B 等其他开源模型,并在性能上和世界顶尖的闭源模型 GPT-4o 以及 Claude-3.5-Sonnet 不分伯仲。
图1 DeepSeek-V3及其对应版本的基准性能
- 百科知识: DeepSeek-V3 在知识类任务(MMLU, MMLU-Pro, GPQA, SimpleQA)上的水平相比前代 DeepSeek-V2.5 显著提升,接近当前表现最好的模型 Claude-3.5-Sonnet-1022。
- 长文本: 在长文本测评中,DROP、FRAMES 和 LongBench v2 上,DeepSeek-V3 平均表现超越其他模型。
- 代码: DeepSeek-V3 在算法类代码场景(Codeforces),远远领先于市面上已有的全部非 o1 类模型;并在工程类代码场景(SWE-Bench Verified)逼近 Claude-3.5-Sonnet-1022。
- 数学: 在美国数学竞赛(AIME 2024, MATH)和全国高中数学联赛(CNMO 2024)上,DeepSeek-V3 大幅超过了所有开源闭源模型。
- 中文能力: DeepSeek-V3 与 Qwen2.5-72B 在教育类测评 C-Eval 和代词消歧等评测集上表现相近,但在事实知识 C-SimpleQA 上更为领先。
DeepSeek-R1
论文题目:《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》
发表时间:2025年1月
论文地址:https://arxiv.org/pdf/2501.12948v1
近年来,大语言模型(LLMs)的快速发展,逐渐缩小了与通用人工智能(AGI)的差距。推理能力作为LLMs的重要组成部分,通过后训练(post-training)可以显著提高模型在各种任务上的表现。然而,如何在不依赖监督数据的情况下提升模型的推理能力仍然是一个挑战。
本文主要研究内容:通过纯强化学习(RL) 提升LLMs的推理能力,特别是通过DeepSeek-R1-Zero和DeepSeek-R1两个模型来实现这一目标。DeepSeek-R1-Zero是通过大规模RL训练而不依赖于监督微调(SFT)的初步模型,而DeepSeek-R1则结合了多阶段训练和冷启动数据来进一步提升性能。
DeepSeek团队已将 DeepSeek-R1-Zero、DeepSeek-R1 以及基于 Qwen 和 Llama 从 DeepSeek-R1 蒸馏出的六个密集模型(1.5B、7B、8B、14B、32B、70B)开源。
方法概述
DeepSeek-R1系列模型,通过大规模强化学习和多阶段训练来提高LLMs的推理能力。
DeepSeek-R1-Zero: 该模型直接对基础模型进行强化学习训练,不依赖任何监督微调数据。采用Group Relative Policy Optimization(GRPO)算法进行优化,公式如下:
DeepSeek-R1: 该模型在DeepSeek-R1-Zero的基础上,引入冷启动数据和多阶段训练管道。具体步骤包括:
- 收集数千条冷启动数据,用于微调基础模型。
- 在冷启动数据微调后的模型上进行推理导向的强化学习。
- 通过拒绝采样和SFT生成新的SFT数据,并结合DeepSeek-V3的监督数据进行再训练。
- 最终通过额外的RL过程,结合所有场景的提示,得到DeepSeek-R1模型。
蒸馏小模型超越 OpenAI o1-mini: 从DeepSeek-R1中蒸馏推理能力到更小的密集模型。使用Qwen2.5和Llama系列模型作为基础模型,通过简单的SFT蒸馏方法显著提升推理能力。
性能对齐 OpenAI-o1 正式版
DeepSeek-R1 在后训练阶段大规模使用了强化学习技术,在仅有极少标注数据的情况下,极大提升了模型推理能力。在数学、代码、自然语言推理等任务上,性能比肩 OpenAI o1 正式版。
DeepSeek-R1的基准性能
视觉语言大模型技术演进:DeepSeek-VL、DeepSeek-VL2
DeepSeek-VL
论文题目:《DeepSeek-VL: Towards Real-World Vision-Language Understanding》
发表时间:2024年3月
论文地址:https://arxiv.org/pdf/2403.05525v2
大语言模型(LLMs)的成功推动了多模态模型的需求,这些模型能够处理多种模态的信息,如视觉和语言。现有的多模态模型在基准测试中表现良好,但在现实世界的应用中仍存在差距。开源模型在现实世界性能和用户体验方面与专有模型存在显著差距。
DeepSeek-VL,旨在通过数据构建、模型架构和训练策略来提高模型在现实世界中的应用性能。设计一个能够在现实世界场景中进行视觉-语言理解的模型。
图1 | DeepSeek-VL具备全面的多模态理解能力,能够处理逻辑图表、网页、公式识别、科学文献、自然图像以及复杂场景中的具身智能
方法概述
DeepSeek-VL,用于解决视觉语言理解问题。
数据构建: 数据集分为视觉语言预训练数据和视觉语言监督微调数据。预训练数据来自多个公共数据源,包括MMC4、Wiki、wikihow、Ebook教科书、Capsfusion、TaiSu和Detailed Caption等。微调数据则包括ShareGPT4V、LAION-GPTV、LVIS-Instruct4V等开源数据集,以及部分表格和图表数据。
模型架构: 系统包含三个模块:混合视觉编码器、视觉适配器和大语言模型。混合视觉编码器结合了SAM-B和SigLIP-L两个编码器,分别处理高分辨率和低分辨率图像。视觉适配器通过两层混合MLP连接视觉编码器和LLM。大语言模型基于DeepSeek LLM,采用Pre-Norm结构和SwiGLU激活函数。
训练流程: 训练分为三个阶段:视觉语言适配器预热、联合视觉语言预训练和监督微调。在第一阶段,仅训练视觉语言适配器;在第二阶段,联合优化语言模型和视觉适配器;在第三阶段,使用监督数据进行微调。
图4 | 在训练阶段2,不同多模态数据融合比例的比较性能结果。过多的多模态数据比例(多模态:语言=100%:0%)会导致大型语言模型显著遗忘语言能力。一个合适的比例(多模态:语言=70%:30%)可以有效地减轻语言遗忘的问题,同时增强模型的多模态能力。
DeepSeek-VL2
论文题目:《DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding》
发表时间:2024年12月
论文地址:https://arxiv.org/pdf/2412.10302v1
视觉-语言大模型(VLMs)在人工智能领域迅速崛起,这些模型能够无缝处理视觉和文本信息,扩展了大语言模型(LLMs)的能力。然而,现有的模型在处理高分辨率图像和复杂任务时存在局限性。
DeepSeek-VL2,一种基于MoE架构的视觉-语言模型,通过动态瓦片视觉编码策略和优化的多头潜在注意力机制来提高模型的性能和效率。
图1 | 不同开源模型中平均性能与激活参数对比。对MMBench v1.1、MMStar、MMMU(Val)、MathVista(TestMini)、AI2D(Test)和OCRBench的准确率取平均值。OCRBench的分数除以10,以将其缩放到[0,100]范围内。
方法概述
DeepSeek-VL2,用于解决大规模混合专家视觉语言模型的多模态理解问题。
图2 | DeepSeek-VL2概览。整体架构是一种llava风格的架构,包括一个视觉编码器、一个视觉语言适配器和一个基于MoE的大语言模型。
动态切片视觉编码策略: 为了高效处理高分辨率图像的不同宽高比,DeepSeek-VL2采用了一种动态切片策略。该策略将高分辨率图像分割成多个局部切片,每个切片通过共享的视觉变换器进行处理,然后将提取的特征集成到语言模型中。这种方法避免了固定大小编码器的限制,提升了超高分辨率图像处理能力。
图3 | DeepSeek-VL2中动态分块策略的示意图。通过将图像划分为多个块,DeepSeek-VL2相比DeepSeek-VL实现了更强的细粒度理解能力。
多头潜在注意力机制: 在语言组件中,DeepSeek-VL2利用了DeepSeekMoE模型,并采用了多头潜在注意力(MLA)机制。MLA通过将键值缓存压缩为潜在向量,显著降低了计算成本,提高了推理速度和吞吐量。此外,DeepSeekMoE框架还采用了稀疏计算技术,进一步提升了效率。
数据集构建: 为了提升模型性能,DeepSeek-VL2构建了一个综合的视觉语言数据集。该数据集包括视觉语言对齐数据、视觉语言预训练数据和监督微调数据。 通过对多种开源数据集进行混合和扩充,数据集在质量、数量和多样性方面得到了显著提升。
多模态能力
DeepSeek-VL2在一般视觉问答、模因理解、多图像对话和视觉故事讲述等方面展示了其强大的能力。模型能够准确识别地标、理解图表、描述模因中的幽默,并生成连贯的故事。
图4 | DeepSeek-VL2的一般问题回答能力。模型具备多方面的能力,包括识别地标、基于图像的诗歌创作、回答一般知识类问题、理解图表、识别文本等。
视觉定位: 在视觉定位基准测试中,DeepSeek-VL2在不同规模的模型中都取得了最佳结果。模型能够准确定位对象,甚至在模糊图像和未见过的对象上也能表现出色。
图8 | DeepSeek-VL2的视觉定位能力。该模型可以根据物体的类别名称、描述或某些抽象概念来定位物体。
上下文视觉定位: DeepSeek-VL2展示了其在上下文视觉定位中的能力,能够在给定一个图像的情况下,在另一个图像中找到相同类别的对象。
图10 | 使用DeepSeek-VL2进行上下文视觉定位。给定一张图片,无论是否有视觉提示,DeepSeek-VL2都能在另一张图片中找到相关物体。
多模态统一模型技术演进:JanusFlow、Janus、Janus-ProJanus
论文题目:《Janus: Decoupling Visual Encoding for Unified Multimodal Understanding and Generation》
发表时间:2024年10月
论文地址:https://arxiv.org/pdf/2410.13848
近年来多模态大模型在理解和生成领域取得了显著进展。然而,现有的多模态模型通常依赖于单一的视觉编码器来处理理解和生成任务,这导致了性能上的妥协,特别是在多模态理解方面。
Janus框架,通过解耦视觉编码来解决多模态理解和生成之间的冲突,从而提高模型的灵活性和性能。
图1 | Janus实现了多模态理解与视觉生成。Janus的表现优于现有的最先进统一多模态模型以及一些特定任务的多模态理解模型,同时也展现了强大的视觉生成能力。图像分辨率为384x384。
方法概述
Janus,一种自回归框架,用于统一多模态理解和生成。
图2 | Janus架构。与以往的方法不同,这些方法通常假设视觉理解和生成需要相同的视觉编码器,而Janus将视觉理解的视觉编码与视觉生成的视觉编码解耦。“Under. Encoder”和“Gen. Encoder”分别代表“理解编码器”和“生成编码器”。
视觉编码解耦: 首先,论文引入了两个独立的视觉编码路径:一个用于多模态理解,另一个用于多模态生成。这两个路径通过相同的变换器架构进行统一处理。解耦不仅缓解了视觉编码器在理解和生成任务中的冲突,还增强了框架的灵活性。
训练过程: Janus的训练分为三个阶段:
- 阶段I: 训练适配器和图像头,创建视觉和语言元素在嵌入空间中的概念连接,使LLM能够理解图像并具有初步的视觉生成能力。
- 阶段II: 统一预训练,使用多模态语料库进行预训练,使Janus能够学习多模态理解和生成。
- 阶段III: 监督微调,使用指令调优数据对预训练模型进行微调,增强其指令跟随和对话能力。
损失函数: Janus是一个自回归模型,训练时采用交叉熵损失函数:
JanusFlow
论文题目:《JanusFlow: Harmonizing Autoregression and Rectified Flow for Unified Multimodal Understanding and Generation》
发表时间:2024年11月
论文地址:https://arxiv.org/pdf/2411.07975
大语言模型(LLMs)在学习和泛化新场景方面表现出色。研究人员开发了专门用于图像理解和文本到图像生成的复杂模型。最近的研究方向是创建能够同时处理这两种任务的统一系统。
JanusFlow,通过结合整流流和LLM架构来实现多模态理解和生成。JanusFlow的关键在于能够在大语言模型框架内直接训练整流流,消除了复杂的架构修改需求。
图1 | 使用JanusFlow进行多模态理解和图像生成。JanusFlow在视觉理解基准测试中超越了最先进的统一多模态模型和几种特定任务理解模型。它还能够生成高质量的图像。图像分辨率为384×384像素。
方法概述
JanusFlow,用于解决在单一模型中统一图像理解和生成任务的问题。
图2 | 提出的JanusFlow架构。为了便于视觉理解,大语言模型(LLM)执行自回归的下一个词元预测来生成响应。对于图像生成,LLM使用具有校正流(rectified flow)的图像。从*t*=0时刻的高斯噪声开始,LLM通过预测速度向量迭代更新*zt*,直到达到*t*=1时刻。为简化起见,省略了变分自编码器(VAE)编码器、在生成过程中使用的跳跃连接(skip connection)以及*f*enc后的线性层。
自回归语言模型: 首先,JanusFlow利用大语言模型(LLM)进行自回归预测。LLM处理输入序列中的文本和图像数据,文本被转换为离散令牌,图像被编码为特征映射。然后,LLM自回归地预测下一个令牌。
修正流模型: 其次,JanusFlow使用修正流模型进行图像生成。生成过程从高斯噪声开始,LLM迭代更新噪声向量,直到达到时间步1。修正流的数学表达式为:
解耦编码器: 为了提高模型性能,JanusFlow采用了解耦编码器设计。视觉编码器用于图像理解任务,而生成编码器和解码器则专门用于生成任务。这种设计避免了任务间的干扰,增强了理解能力。
表示对齐正则化: 此外,JanusFlow引入了表示对齐正则化项,通过将理解编码器的特征与LLM的中间特征对齐,提高了生成质量。
Janus-Pro
论文题目:《Janus-Pro: Unified Multimodal Understanding and Generation with Data and Model Scaling》
发表时间:2025年1月
论文地址:https://arxiv.org/pdf/2501.17811v1
近年来统一的多模态理解和生成模型取得了显著进展,这些模型在视觉生成任务中增强了指令跟随能力,同时减少了模型冗余。然而,现有的方法通常使用相同的视觉编码器处理多模态理解和生成任务,导致在这两个任务上的性能不理想。
Janus-Pro,通过优化训练策略、扩展训练数据和增加模型规模来提升多模态理解和文本到图像指令跟随的能力。
图1 | Janus-Pro的多模态理解与视觉生成结果
图2 | 比较Janus-Pro与其前身Janus的文本到图像生成效果。Janus-Pro在短提示下提供更稳定的输出,具有更高的视觉质量、更丰富的细节,以及生成简单文本的能力。图像分辨率为384x384。
方法概述
Janus-Pro,用于解决多模态理解和文本到图像生成任务中的性能问题。
架构设计: Janus-Pro的架构与Janus相同,核心思想是将多模态理解的视觉编码与生成任务的视觉编码解耦。对于多模态理解,使用SigLIP编码器从图像中提取高维语义特征;对于生成任务,使用VQ tokenizer将图像转换为离散ID。然后将这些特征序列拼接形成多模态特征序列,输入到LLM中进行处理。
图3 | Janus-Pro架构。将多模态理解的视觉编码与视觉生成解耦。“Und. Encoder”和“Gen. Encoder”分别代表“理解编码器”和“生成编码器”。
优化训练策略: 修改了Janus的三阶段训练过程。第一阶段增加训练步数,充分利用ImageNet数据进行像素依赖性建模;第二阶段直接使用正常文本到图像数据进行训练,提高训练效率;第三阶段调整数据比例,增加多模态数据的比例,提升多模态理解性能。
数据扩展: 在多模态理解方面,增加了约9000万样本,包括图像字幕数据、表格、图表和文档理解数据;在生成任务方面,增加了约7200万合成美学数据,使真实数据和合成数据的比例达到1:1,提高生成稳定性。
模型扩展: 将模型规模扩展到7B参数,验证了视觉编码解码方法的可扩展性。
实验设计
数据收集: 使用了DeepSeek-VL2数据集作为多模态理解预训练数据,并添加了约9000万样本;使用DeepSeek-VL2数据集中的其他数据集作为多模态理解微调数据;使用合成美学数据和平衡的真实数据作为生成任务的预训练数据。
实验设置: 使用DeepSeek-LLM(1.5B和7B)作为基础语言模型,SigLIP-Large-Patch16-384作为理解任务的视觉编码器,生成任务的编码器具有16384的词汇表大小。所有图像均调整为384x384像素。
训练过程: 在第二阶段使用早期停止策略,训练至270K步。使用HAI-LLM框架进行分布式训练,整个训练过程在16/32节点集群上进行,分别配备8个Nvidia A100(40GB)GPU。
性能分析
多模态理解性能: 在MMBench基准测试中,Janus-Pro-7B取得了79.2分的成绩,超过了现有的统一多模态模型如Janus(69.4分)、TokenFlow(68.9分)和MetaMorph(75.2分)。
文本到图像生成性能: 在GenEval基准测试中,Janus-Pro-7B取得了0.80的整体准确率,超过了Janus(0.61分)、DALL-E3(0.67分)和Stable Diffusion 3 Medium(0.74分)。在DPG-Bench基准测试中,Janus-Pro取得了84.19分的成绩,超过了所有其他方法。
定性结果: Janus-Pro在处理多模态理解任务时表现出强大的理解能力,生成的文本到图像高度逼真,细节丰富,能够准确捕捉提示中的语义信息。
图4|多模态理解和视觉生成能力的定性结果。该模型为Janus-Pro-7B,视觉生成的图像输出分辨率为384×384。