小互AI公众号文章

AI推理越长,显存越吃紧?EdgeRock换一种解法。。。

岩芯矩阵发布了一个约 40 亿参数、能处理文字和图像的开放模型:EdgeRock-4B,让AI学会取舍自己的记忆...

小互AI

公众号

岩山科技旗下岩芯矩阵发布了一个 40 亿参数、能处理文字和图像的开放模型:EdgeRock-4B。

它解决一个挺实际的问题:AI 解一道难题,可能要写很长的推导。为了接着往下算,它通常会把前文处理过的信息暂存在 GPU 的工作空间里,这个空间叫“显存”。推导越长,这部分信息占的显存空间就会越来越大。

EdgeRock 的办法是给这部分记忆设定固定容量,再训练模型挑选值得留下的信息。办法听着不错,可问题也跟着来了:省掉的那些记录里,会不会恰好有最后解题要用的条件?

01

为什么 AI 推导越长,越占空间?

假设一道题第一行就写着:“x 必须是正整数。”AI 接着往下算,列式、试算,思路不对还得重来。眼看答案快出来了,开头这句话可不能忘:算出一个负数,前面推得再热闹,也交不了卷。

为了后面还能用到这些条件,许多模型会把前文处理成一组组数字,暂存在显存里,需要时再读取。你可以把这些记录想成便签:题目和推导越长,便签就越攒越多。存放它们的空间,有个经常出现在技术报告里的名字:KV 缓存。负责 AI 计算的芯片叫 GPU,显存就是它的工作空间。

麻烦就来了:模型越想越投入,前面的记录也越堆越多,显卡的空间可不会跟着变大。一张卡还得同时照顾别的任务,前文缓存多占一块,留给其他任务的位置就少一块。想得越久,这笔空间账就越让人头疼。

这笔账有多大?拿 EdgeRock 改造前的 Qwen3.5-4B 来看,按公开配置计算,长度到约 26 万个片段时,光是负责保留完整前文的那部分缓存,就要 8 GiB(约 8.6 GB)。这还只是一个任务。

这里顺手解释一下“片段”:模型按小片段处理文字,技术上叫 token,可能是一个字、词的一部分或标点。看后面的数字时,记住它不等于汉字就行;4K 约为 4,000 个片段,32K 约为 3.3 万个片段。

(GiB 和后文的 MiB 都是存储容量单位,大小分别接近常见的 GB 和 MB;1 GiB 等于 1,024 MiB。报告中的 1K 等于 1,024 个片段。)

02

少记一点,为什么又容易出问题?

既然是记录太多,把旧的丢掉一些,行不行?

当然可以。最容易想到的办法,就是只保留最近一段。像清理书桌一样,新东西放上来,旧的就挪走,这叫“滑动窗口”。桌面是清爽了,可推导一长,开头那句“x 必须是正整数”也可能早就被挪走了。等到需要核对答案时,窗口里已经找不到它。

那就留个概括?这也是一条路:边读边更新一份固定大小的概括。我们都有过这种感觉,文章看完了,大意还记得,问到某个数字却想不起来。模型也有类似的取舍:可能还记得“刚才在解方程”,偏偏漏掉了“正整数”这三个字。

 
这才是让人犯难的地方。省空间不难,难的是省完以后,还留着做题要用的东西。有时差的就一个符号、一项条件,前面忙活半天,最后仍可能选错答案。

03

EdgeRock 怎么留下早先的条件?

EdgeRock 的办法挺好理解:概括和近期书桌照常用,再给那些值得留下的细节准备一个档案盒。盒子大小固定,里面的东西可以换。三部分各干各的活:

A概括抓脉络

随着推导继续,持续更新对前文的概括。

B书桌管眼前

保留近期内容,处理正在进行的推导。

C档案盒留细节

单独保存挑选出来的旧记录,之后还能回查。

团队给这个档案盒取了个名字,叫“记忆岩锚”,简称 RMA。推导往下走时,模型会把这三部分的信息结合起来用。中途想用到某条旧记录,也可以回查,并不用一直等到最后检查答案。

不过,盒子这么小,谁有资格留下?还得挑。模型刚读到“x 必须是正整数”,就会为它生成候选记录,根据当时已经看到的内容打分。分数用来判断它值不值得留。这里有个挺现实的难处:打分的时候,模型也不知道后面究竟会用到什么。

每处理一批新内容,就来一次新旧竞争。新记录和盒子里的旧记录,拿各自在写入时得到的分数比一比,高的留下,低的让位。这样一来,推导可以继续写,盒子却不用跟着越添越大。

东西收好了,还得用得上。早先的打分决定留什么,每次计算则要判断现在用什么。模型会用一组数字表达“这一步需要什么信息”,再去和盒中的记录比较,看哪些相关、该起多大作用。这就是内部查询。这里的查询和记录都是数字,只是为了好理解,我们才把它说成“翻档案盒”。

假设算到最后,出现了两个候选答案:x=2 和 x=-2。这下,开头那句“正整数”就该出场了。如果它成功留在盒里,又在这一步被读出并正确使用,-2 就可以被排除。前面那条看似不起眼的条件,终于在最后帮上了忙。

同一条条件的出现、留存、取用与固定容量替换过程

同一条条件的出现、留存、取用与固定容量替换过程

EdgeRock原始架构图:写入与挑选记录,再按当前查询读取

EdgeRock原始架构图:写入与挑选记录,再按当前查询读取
看右上和右下两部分:先决定哪些记录留下,再决定眼前读取哪些。 右上的 Write and select 是“写入与挑选”,旧库与新候选合并后只留高分记录;右下的 Retrieve and integrate 是“读取并融入当前计算”。左边表示这些模块与原有处理结构配合。 原图来源:岩芯矩阵 EdgeRock 技术报告。

看到这里,你可能也发现了:关键就卡在“如果”上。图里的条件被保住了,实际却可能一开始就没入选,也可能后来被新记录换掉。一旦淘汰,档案盒就没法再从这条记录里读取信息。盒子能一直这么小,模型就得一直做取舍;重要细节也有可能被漏掉。

盒子装上去,还得教模型怎么用。团队先训练新增的档案盒,让它学习保留和读取记录,再把它与负责概括、处理近期内容的部分放在一起训练。之后,先用示范答案教它怎样作答,再让它做能核对结果的题,答对了给奖励。最后看到的解题表现,是结构改造和这些训练一起带来的。

(公开配置中,近期窗口保留最近 1,024 个位置;档案盒每组最多留 1,024 条记录,每 256 个片段进行一次新旧取舍,下一批开始读取更新后的记录。模型内部有多组这样的结构。)

04

省下多少空间?能多做什么?

这笔空间账,差得确实有点悬殊。把长度拉到约 26 万个片段,源模型光是保存这部分前文,就要 8 GiB;EdgeRock 给这部分缓存设定的容量上限是 72 MiB(约 75.5 MB),相比之下少了约 99.1%。

约 26 万片段时这部分缓存容量

源模型 8 GiB

 

8192 MiB

EdgeRock 72 MiB

 

72 MiB · 约为源模型的 0.9%

看图更直观:灰条越拉越长,绿条始终那么一截。推导继续往下写,这部分空间不用每多写一步就再加一笔。省下这么一大块,确实让人眼前一亮。

四种推导长度下的缓存容量对比

四种推导长度下的缓存容量对比

当然,先别把 72 MiB 当成整张显卡的账单。它只算这部分缓存。模型本身、其他记忆和计算时的临时数据,也都得占地方。报告里,一个输入 4K、输出 2K 的短任务,实际分配的显存最高仍有 14.27 GiB(约 15.3 GB)。整个模型可不是几十 MB 就能跑起来的。

这里说的“输入”,就是你交给它的题目或材料;“输出”是它写出来的推导和回答。多个任务一起跑时,把概括等需要持续保存的信息也算上,每个任务约占 97.76 MiB。单个任务的这部分占用有上限,任务开得越多,总占用照样会增加。

那省下的空间,能拿来干什么?最直接的一件事,就是让同一张显卡多接些长任务。团队用一张 80GB 的服务器显卡,让每个任务都读取 32K 个片段、再生成 32K 个片段。结果,EdgeRock 每秒总共输出约 12,124 个片段,源模型约为 1,889 个,前者是后者的 6.42 倍。连读取输入的时间一起算,差距仍然有这么大。

整卡每秒总输出片段数(32K 输入 / 32K 输出)

EdgeRock

 

约 12,124

源模型

 

约 1,889

不过,等答案的你大概更关心另一件事:我这一个任务,也能快这么多吗?这里得分开看。6.42 倍说的是整张卡的总产量;单独跑一个任务,报告测的是另一组输入、输出各为 128K 的任务,EdgeRock 每秒生成 233.7 个片段,源模型为 151.3 个,速度约为源模型的 1.54 倍。这一组只算生成阶段,没有把读取输入的时间算进去。

单任务每秒生成片段数(128K 输入 / 128K 输出)

EdgeRock

 

233.7

源模型

 

151.3

而且,一张卡接的活多了,每个任务也得分着用计算资源。另一组覆盖 16 种输入、输出长度组合的测试里,512 个任务加起来每秒生成约 12,497 个片段,平均每个任务约为每秒 24.4 个。机器整体忙得更有效率,和每个人更快拿到答案,是两件需要分开看的事。

原报告速度曲线:单条生成速度与整卡输出吞吐

原报告速度曲线:单条生成速度与整卡输出吞吐
蓝线是 EdgeRock:左边看一个请求,右边看整张卡。 左图横轴是已经生成的片段数,纵轴是单条生成速度;右图横轴是输入长度,纵轴是所有请求的总输出速度,单位是千片段/秒。右图 32K 输入点才对应前文 6.42 倍的比较,不能拿来代表左图的单人提速。 原图来源:岩芯矩阵 EdgeRock 技术报告。

(缓存容量比较沿用报告的 BF16 存储设置;72 MiB 包含近期记录 32 MiB、已选旧记录 32 MiB、待挑选的新记录 8 MiB。97.76 MiB 采用批量运行时的设置,单个任务运行时存储数值的精细程度有所不同。速度测试使用单张 Hopper 80GB 服务器显卡及专门优化的运行环境、人工构造的输入和固定输出长度;使用同一份输入的多个任务复用了读取输入时的计算。6.42 倍比较中,两边各取实测较好的设置,分别一次提交 512 个和 64 个任务,源模型按剩余缓存安排实际执行,64 并不是通用的同时运行上限。手机和个人电脑的收益仍需相应测试。)

05

记得少了,解题水平下降多少?

空间省下来这么多,当然挺让人心动。可要是题做不对,前面这笔账也就没那么漂亮了。EdgeRock 到底保住了多少解题本领?先看数学。

82.9%

EDGEROCK

86.1%

改造前

美国数学邀请赛 2024—2026 三届题目的平均成绩,EdgeRock 一次作答的通过率是 82.9%,改造前的模型是 86.1%,少了 3.2 个百分点。用前者除以后者,就得到报告里那句“保留 96.3%”。缓存容量省了这么多,这组数学成绩还能接近原模型,确实有看头。不过,96.3% 说的是这组数学成绩。

把其他任务也摊开看,结果就没那么整齐了:29 项里,8 项提高,21 项下降。拿编程来说,同样是让它写代码,换一类题,表现就能差不少:

按要求写短程序,它还有进步

HumanEval 从源模型的 86.0% 升到 96.7%;另一组基础编程题 MBPP 也从 71.0% 升到 87.8%。

换到编程竞赛题,就吃力了

LiveCodeBench 从 75.7% 降到 61.6%。基础题的好成绩,不能直接搬到这里。

科学和中文知识题,也有明显退步

高难科学问答从源模型的 77.3% 降到 64.6%;中文综合学科题从 83.9% 降到 73.3%。

原报告逐项能力变化:EdgeRock相对Qwen3.5的29项成绩

原报告逐项能力变化:EdgeRock相对Qwen3.5的29项成绩
向右是涨分,向左是降分:提升集中在部分项目,损失也很明确。 横轴单位是百分点,右侧两列是改造后与改造前的绝对成绩。正文中文对照列出了代表性项目,读图时可对照:基础编程题涨分,竞赛编程、科学问答和中文知识题降分。 原图来源:岩芯矩阵 EdgeRock 技术报告。

看图也是如此。六项看图问答测试里,EdgeRock 的平均分是 84.9%,源模型是 89.1%,包括读图表、理解示意图等任务。这项改造的取舍也就清楚了:空间确实省得多,能力也确实有损失,得看你更需要它做哪类事。至于某道题没做好,是不是恰好丢掉了一条关键记录,现有成绩还回答不了这个问题。

再找一组同样给前文存储设了上限的模型来比,EdgeRock 的表现就更显眼了。团队评测的另外 16 个模型,在同一数学测试中的最好成绩是 18.8%;29 项任务的总平均分,EdgeRock 为 77.2,对照组中最好的是 53.4。当然,大家的训练也不同,这个领先幅度得连着整套模型来看,不能全记在档案盒一个部件的功劳簿上。

29 项任务总平均分

EdgeRock

 

77.2

对照组中最好的

 

53.4

(题目数量较少的测试中,同一道题会多次作答,用这些结果估计只作答一次时的成功率,并非多试几十次只取最好答案。)

06

那个档案盒,真的用上了吗?

不过,给模型加上档案盒,它真的会用吗?团队的办法很直接:把档案盒关掉,让同一个模型再答前文里的问题。

这回拿来测试的是 256 份长材料,每份约 1.6 万到 13 万个片段。读完后,每份问四个问题,一共 1,024 问。开着档案盒,模型答对 94.1%;把全部档案盒关掉,只留下近期书桌和概括,正确率就掉到了 0.4%。

1,024 个远距离问题的单题准确率

开启档案盒

 

94.1%

关闭档案盒

 

0.4%

 
这个落差,已经很能说明问题:这套训练好的模型在回答这类远距离问题时,确实用上了档案盒。

至于它给数学成绩贡献了多少,那还得另外检查;这组实验考的是读取前文信息。

原报告记忆诊断:训练进展与RMA开启关闭对比

原报告记忆诊断:训练进展与RMA开启关闭对比
右图直接比较档案盒开启和关闭;蓝色看单题,青色看一份材料四问全对。 开启时,单题准确率 94.1%,四问全对 80.1%;关闭后分别为 0.4% 和 0%。左图是不同训练阶段的变化。这也提醒我们:整体答对大部分问题,仍不等于每份材料都能四问全对。 原图来源:岩芯矩阵 EdgeRock 技术报告。

不过,能报出一个旧答案,还不够。信息改了,它能不能跟着改?假设材料里写着一个取件码,把这个码改掉后再问,答案就该变;要是改的只是无关信息,取件码的答案就不该变。团队做的另一项检查就是这个意思:修改前后都答对,才算过关。

这项检查里,答案应该改变的那组,修改前后都答对的比例是 89.8%;答案应该不变的那组,是 96.5%。

 碰到更绕的关系,事情就没这么轻松了。如果要求同一份材料的四个问题全部答对,找指定事实的成功率有 90.6%;换成跟踪多个代号之间的对应关系,就降到 53.1%。所以,能找回一条信息,已经挺有用;要把一串复杂关系始终理清,它还有要过的关。

07

这个模型可以用在哪里?

如果你想试试它,可以从下面几类文字和图像任务入手:

1解一道需要多步推导的数学题

让它根据条件列式、逐步计算,再核对答案。开头那句“x 必须是正整数”,就有机会在这里反复派上用场。

2按你的要求写个函数或短程序

把需求说清楚,让它生成相应代码。前面的成绩也提醒我们,基础编程和竞赛编程,得分开看它的表现。

3读一份长材料,再追问里面的细节

比如找某条信息,或把前后两处的条件结合起来回答问题。读完以后能不能用上前面的内容,正是这类任务要看的本领。

4拿着一张图来问问题

给它文字和图片,让它帮你读取图表数据、理解示意图里的关系,再回答相关问题。

感兴趣的可以试试:↓

GitHub|推理代码与使用说明:

https://github.com/rockmatrix-ai/EdgeRock

Hugging Face|模型权重:

https://huggingface.co/rockmatrix-ai/EdgeRock

技术报告:

https://arxiv.org/pdf/2610.10118

前往微信阅读全文

内容来自公众号,可前往微信查看原文。

查看作者的更多文章 →订阅更新、RSS 与阅读指南 →