OC
你的本地模型也许根本没用上 GPU:一个 Token 速度数字为什么经常骗人
科技 · 2026-07-15 · 开发者工具 · 阅读 9

你的本地模型也许根本没用上 GPU:一个 Token 速度数字为什么经常骗人

OC 原创示意图。

作者 林岚 林岚

OC 原创示意图。

据开源项目 picchio 的作者介绍,这个单文件诊断工具会同时读取 llama.cpp 或 Ollama 的运行日志、系统 GPU 指标和实际耗时,专门寻找两类常见问题:模型悄悄回退到 CPU,以及一个看似正确的 tok/s 数字被放错了语境。

一句话结论: 本地模型“每秒多少 Token”如果没有说明是在读提示词还是生成答案、是否包含加载时间、用了多少 GPU 层,往往不是性能数据,只是一段容易被记错的数字。

picchio 的起点就是一次很典型的测速困惑。作者记得同一模型直接运行 llama.cpp 能到 36 tok/s,放进自己的应用却只有 11.5 tok/s。后来他跑了 32 种 CPU/GPU、冷启动/热启动组合,36 这个数字没有在任何生成场景中重现,真正发现的反而是某个构建发生了无提示的 CPU 回退。

为什么这种误会如此常见?因为大模型运行至少有三段速度。prefill 是模型读取提示词的速度,长上下文时可能达到每秒数百甚至数千 Token;decode 才是逐字生成回答的速度;wall clock 还会把模型加载、预热和网络等待算进去。有人截到一个 500 tok/s 的画面,很可能是在看 prefill,却把它记成了回答速度。

对比图把本地推理拆成模型加载、Prefill、Decode,并展示 GPU 回退对三段速度的不同影响

OC 原创解释图:GPU 回退对提示词处理的打击,可能远大于对逐 Token 生成的影响。

项目给出的 Apple M5 实测很好地说明了差别。同一个 Qwen3.5-9B Q4KM 文件,GPU 正常工作时 prefill 为 588 tok/s、decode 为 21.1 tok/s;强制 CPU 后分别变成 26.8 和 12.2。前者慢了约 22 倍,后者还不到两倍。如果只盯着生成速度,你甚至可能没意识到 GPU 已经掉线,直到换成长提示词或计算完整耗时才发现系统明显变慢。

Ollama 社区此前也有人提交过 无声 CPU 回退问题:当显存放不下模型、没有任何层能进入 GPU,或只能部分卸载时,关键信息可能只存在于调试日志中。picchio 做的不是让模型变快,而是把引擎自报、操作系统观察到的 GPU 活动和时间特征放在一起。如果三者互相打架,它就拒绝给出“正常”结论。

另一个容易误读的是量化名称。作者测试了四个都标成 Q4_K_M 的 Qwen3.5-9B 文件,实际有效位宽在每权重 5.02 到 5.27 bit 之间。Q4 并不保证整个文件严格以 4 bit 保存,不同张量、缩放参数、词嵌入和附加头部都可能采用更高精度。拿标签相同但内部组成不同的文件比较速度和体积,本来就不是严格对照。

先别急着把 picchio 当成新的跨平台跑分标准。项目目前的完整验证主要覆盖一台 Apple M5 和一台租用的 RTX 4090;Linux 上的 Ollama、Vulkan 和更多硬件仍缺少实机数据。它更像一支故障定位探针,而不是用来宣布“哪张卡赢了”的排行榜。

对本地模型用户,最实用的做法是每次记录同一个模型文件、上下文长度、生成长度、引擎版本和 GPU 层数,把 prefill、decode、首 Token 延迟和总耗时分开。Ollama 用户至少先看 ollama ps 的 CPU/GPU 分配;需要更完整证据时再用 picchio 复测。这个对开发者到底省了哪一步?它省的是你花几个晚上调提示词和线程数,最后才发现模型压根没有跑在以为的硬件上。

参考来源

相关阅读

基于标题、摘要和正文内容自动匹配。

更多科技

评论

围绕这篇文章补充信息、提出问题或分享观察。

0
暂无评论。

发表评论

继续看看 OC 用户围绕这个话题说了什么、做了什么。

相关碎碎念

更多

OC有3万多注册用户,但是这些人哪些活跃,哪些不活跃?哪些发过帖子,哪些没有,其实以前都很麻烦去计算。这两天想了下,在后台,加入了注册用户细分的界面,然后一下子一目了然了。图片是测试服务器的测试数据,跟真实OC的数据不同步,但是大概可以看一个感觉了。

tinyfool 0 0

最近越来越多思考,我们跟agent的关系,比如我最近用blender mcp很多,基本上我算是会用blender的,但是老记不住很多热键,以前我可以做很复杂的模型,但是要是不是的去查blender的操作热键。现在我完全不参与模型的建模,只让codex帮我生成。 但是我还是在查blender的热键,我现在需要的是numpad .这样聚焦到一个对象的方法,我需要的是numpad /这样的方法来把除了选中的对象,其他都隐藏的热键。 换言之,我现在需要高效的人工视觉复检blender mcp的成果,这是我对自己目前blender能力的需求了。

tinyfool 2 0

帕格尼物语的任务全部打穿,然后开始玩社区创作的地图,这种游戏在建设的时候特别过瘾,建立起稳定的经济模型后也很过瘾,稳定下来观察小人的行为也很过瘾,然后如果没有外部矛盾,比如敌人侵略或者必须找到某种材料,等等的问题,就开始索然无味了。 人生其实也像这样的游戏,我曾经构建过几次自己的稳定架构,然后就索然无味,然后又因为抑郁,崩塌了,我在人生这个游戏最近感觉有有点动力不足,就是因为每次架构彻底崩塌才来重建,十分疲惫

tinyfool 0 0

相关帖子

更多

你们的Codex额度提前耗完了没?戒断反应如何?

<p>我在第三天就消耗了只剩1%,忍了一天,然后今天干脆用这最后的1%,开着5.6 Sol 极高 强推我一个提示词笔记本应用的功能落地。最终用时3小时,居然还是跑完了。但是现在还是出现一些戒断反应,感觉啥也做不了,就无精打采的,困。</p> <p>我做了一个Prompt Notebook,专门用来收藏或者记录自己手搓的生图提示词。带Chrome一键收藏插件。支持AI优化提示词。支持提示词中提取常用字段作为提示词百科词汇。也自带生图功能用来测提示词。但是要搭配Cloudflare R2+Worker的图床。</p> <p>今天主要是做一个AI模特的资产库。将常用的AI模特固定下来,进行身份设定,以及模特的一些角色定妆图。之后生图可以直接调用AI模特自动作为垫图。</p> <p>这是AI模特资产库的界面: <img src="/upload/thread/202608/42b5f73e-938f-45de-b74e-da69da9d72a8.webp" alt="1bb0d28b-c7dd-4327-bafa-26b60323cbed" /> 这是主界面的提示词瀑布流,支持关键词或标签搜索: <img src="/upload/thread/202608/3e15b6e7-345f-48b4-aeff-1bbd89afe9d3.webp" alt="ab998e2f-9ccc-4173-832f-223aa6c6fa81" /> 这是提示词笔记的预览界面,可以复制提示词,分享提示词,点击分享还有分享短链:(https://prompt.jintao.co.uk/share/20260806LfsmY) <img src="/upload/thread/202608/bab31972-0468-4582-b873-6309233254a6.webp" alt="20260806-201213" /> 可惜现在没额度了,我又不想换模型折腾。现在还有些界面细节和小功能需要落地完善,可能还要虫子要抓。弄好了,打算放GitHub开源。</p> <p>有朋友想试试的么?</p>

shynloc 2 4

测试OurCoders能否发布照片

<p>今天小区的彩虹🌈<img src="https://share.icloud.com/photos/0ebtFydNy8r_gJETON61u4Ybg" alt="图片说明" /></p> <p>看来不能直接发照片,可以把iCloud Link的功能派上用场!</p>

梁建溢 15 45

重返OurCoders

<p>从2014年以来好久没逛过这个谈论了,不知道这个谈论的运营现在怎么样,开发人员是不是原来的人,前端UI做得不太好</p>

梁建溢 4 18