本地 27B 推理引擎升级实测:长文档不再堵死所有人(50 秒 → 0.1 秒)

本地 27B 推理引擎升级实测:长文档不再堵死所有人(50 秒 → 0.1 秒)

本文数据来自同一台机器(双 RTX 3090)上的真实升级与测试,非转载、非厂商标称。
一句”你好”,排在一份长文档后面,等了将近五十秒才吐出第一个字。这不是网络卡,也不是程序崩,而是我们本地大模型引擎的一个老毛病:只要有人丢进来一份很长的文档,它就会一门心先把这份文档读完,期间所有请求都得排队干等。
这种等待,足够用户以为程序崩了,伸手去按重启。
好消息是,就在最近,这个引擎连着更新了好几个版本,专门把这类问题挨个收拾了。我们第一时间升级并实测,这篇把新版的变化和真实效果讲清楚。

先认识一下这个引擎

它叫 NInfer,是一个从零写起的 C++/CUDA 推理引擎,目标很明确,就是把一张显卡上的一个模型跑到极致。它对 Qwen3.8-27B 这类模型做了深度定制,单张 3090 上就能跑到通用引擎的两倍上下(我们此前的同机对比数据),还能塞下超长上下文。
它是一个开源项目,面向 3090 这条线由 ashalliants/ninfer-3090 这个派生仓库在跟进。我们此前用它替换了原来的 SGLang,吃到了速度红利,也一直顶着上面那个”长文档堵塞”的毛病。

新版本改了这几件事

从我们上次用的 v0.12.0 算起,它连着发了四个版本,前后补了几块。
最核心的一块,是换了一颗更合适的”模型”。新版把默认的 27B 重新转换了一遍,用一种按重要性加权的标定方法,把模型压得更小,精度却更贴近高质量的参考版本。结果是载入显存的权重从 17.7GiB 降到 15.3GiB,省下的显存直接变成了可以容纳的上下文长度。这一步和下面的会话修复,都发生在 v0.13.0 里。
接着是长会话的稳定性。旧版在会话长到接近窗口边界时会偶发报错,新版修掉了它,并让已经读过的内容能被复用,不必每轮把全部历史重读一遍。
再往后是故障隔离。旧版里一个特别大或者无法调度的请求,可能把正在跑的其它请求一起拖崩;v0.14.1 让它只失败自己,别的请求照常输出。中间的 v0.14.0 还加了一个能自动定尺寸的内存缓存,缓解长会话的开销。
最后,也是对我们最有意义的一项,从 v0.14.2 起,它给”读文档”这件事开了多条通道。过去读长文本只有一条道,现在可以让多个请求同时读,而且先照顾剩下最少的那一个。那份长文档还在读的时候,后排那个只问一句”你好”的请求,终于可以插进来先作答了。

我们实测的结果

升级很顺,配置里那些应用几乎不用动,所以我们直接在自己机器上把开关前后对比了一遍(每个模型各占一张卡)。
最关键的堵塞问题,差距是这样的(下文里的 token,是模型读文本的最小单位,粗略可理解为一个字或一个词):

场景 单通道(旧版行为) 开两条通道(新版)
短请求排在一份约 6 万 token 长材料后,第一个字延迟 约 49.8 秒 约 0.12 秒
同一条长请求自己的耗时 51.2 秒 51.5 秒

单通道就是旧版的行为,那时没有多通道这个选项(我们这次给它开了两条)。短请求从将近五十秒缩到零点一秒出头,长请求几乎没受影响,只慢了不到一个百分点。生产环境里又复测了一遍,短请求是 0.26 秒,结论一致。也就是说,升级之后,一个人读长文档将不再拖累其他所有人。

新模型带来的好处也很直接。因为权重更小,我们在同一张卡上成功让一条约 23 万 token 的提示词完整读进去并正确作答,旧权重按省下的 2.4GiB 估算很难装下这么长。单流生成速度维持在每秒一百二十个 token 上下(开启了投机解码),长文读取按每秒约 820 token 推进,一份 23 万 token 的材料大约四分半读完。

质量方面,我们抽查了代码、推理和一份约 4.3 万 token 的长文检索,全部正确,检索那题还准确答出了埋进去的暗号。也就是说,这次换模型没有拿质量换速度。

到底值不值得升级

我的判断是,值得,而且对某些用法几乎是必升。

一句话:一张卡喂多个应用,这版必升;单机单用户,升级几乎零成本。

如果你像我们一样,本地引擎是给好几个应用或者好几个 AI 助手共用的,那”一个长请求堵死所有人”一旦发作,体验会非常糟,新版把这块补上,是质变。如果你是单机单窗口,平时很少并发,受益主要来自更小的模型和更长的上下文,属于锦上添花,但也没有成本,因为这次升级没有改模型的名字,所有已经对接过它的程序,一行配置都不用动。

它依然是一个由个人开发者维护的开源项目,不是厂商产品。选它,意味着接受它更新快、也偶尔有小磕碰。但对愿意动手的人来说,这类项目正把”单卡把大模型跑好”这件事,推到商业产品还没覆盖的角落里。

附:测试与升级说明

测试在同一台双 RTX 3090 的机器上完成(每个模型跑在单独一张卡),基座模型都是 Qwen3.8-27B。升级前后用的都是各自版本配套的模型产物,这是这类引擎的硬性要求,版本和模型必须配对,否则会直接启动失败。

所有速度与延迟数字均为实测,不是厂商标称。堵塞测试的方法是,先发送一条约 6 万 token 的长提示词,一点五秒后再发一条短请求,记录短请求从发出到吐出第一个字的时间。


皖ICP备2025105865号-2|皖公网安备34010402704739号