小模型小测评:面壁 MiniCPM5-2B、讯飞 Spark-X2.5-4B、阿里 Qwen3.5-9B(民间蒸馏版)

在先前的 讯飞 Spark-X2.5 测试 过后,官方推出了量化版本 GGUF,llama.cpp 也更新了相关架构。昨天,面壁智能发布了 MiniCPM5-2B 。此外,虽然 Qwen3.5-9B 已经出局了,但 有网友 让我也测一下民间做的 claude-opus-4.6 蒸馏版。所以就放到一起简单品鉴一下吧。

基础配置

所有模型都在 Windows 端 LM Studio 运行(利用其自带的API功能向外部开放),显卡为 RTX 5070 Ti 16GB。更新最新 CUDA 12 llama.cpp 运行时(v2.34.0)以支持 Spark-X2.5-4B 架构(不用自己编译了)。之后每道题都连续测 3 次,记录结果。

MiniCPM5-2B:FP16 原版,测试上下文为 131,072,显存占用 7.55 GB。已经是最高上下文。
Spark-X2.5-4B:Q4_K_M 量化,测试上下文为 131,072,显存占用 8.11 GB。上下文最高 1,048,576,此时显存预估 47.03 G。
Qwen3.5-9B 蒸馏版:Q4_K_M 量化,测试上下文为 131,072,显存占用 11.86GB。上下文最高 262,144,此时显存预估 16.8 G。此模型支持视觉,本次测试不涉及。

测试 1:普通对话

先来测一下曾经大模型都容易翻车的问题:

9.11和9.9谁大?
strawberrrry中有几个r?

MiniCPM5-2B:

省流:9.9 对了2道,strawberrrry 对了2道
9.11和9.9中,9.9更大。

strawberry中有3个字母r。
9.11小于9.9,因此9.9更大。

在“strawberrrry”中,字母‘r’出现了5次。
所以,总结一下:

* 9.11 > 9.9
* "strawberrrry" 中有 5 个 'r'。

Spark-X2.5-4B:

省流:9.9 对了1道,strawberrrry 对了0道
9.11比9.9大。

strawberrrry中有4个r。

[被第二道题搞到原地兜圈子,绕不出来了]

9.9比9.11大。因为9.11 = 9.11,9.9 = 9.90,9.90 > 9.11。

单词“strawberrrry”中有 **4个** r。

Qwen3.5-9B 蒸馏版:

省流:9.9 对了3道,strawberrrry 对了3道
|Question|Answer|
|---|---|
|Which is larger?|9.9 > 9.11|
|Number of 'r' letters|5 r's|
## **Final Answer Summary**

| **Question** | **Answer** |
|:---|:---|
| Which is larger: 9.11 or 9.9? | **9.9** |
| How many 'r's in "strawberrrry"? | **5** |
## **Final Answer:**

* **9.9 is larger than 9.11**
* **"strawberrrry" contains 5 'r's**

测试 2:新闻搜集汇总

对我而言,小模型最可能的场景是知识库管理。所以这次依旧在佬友制作的 Obsidian YOLO 插件 里测试。提示词相比上次再升级了一下:

帮我搜索一下今天全球最新的中文AI新闻,选择5条作为精选新闻。要核对是不是确实是今天的新闻,如果不是要重新搜索。然后,利用网络工具读取新闻原文全文。最后,在仓库新建 news-test 目录、下面再以今天日期命名一个子文件夹,用分别的文件记录这些新闻,文件名格式为“序号_短标题.md”。每个文件都要有新闻的摘要、日期、关键词、原文、消息来源链接。

每次测完都会把新建的目录删掉,保证仓库不变。搜索引擎接的是智谱搜狗版,因为腾讯新闻网页抓取出问题的概率少一点。虽然有一定随机性,但模型能否应对应该也是能力的一环。

MiniCPM5-2B:

第1次:写入了一个没有后缀名的文件,然后卡死了

第2次:大方向对了,但没有读全文,还是写了个没有后缀名的文件,此外每个子文件都把全局的信息重复了一遍


第3次:先写入没有后缀名的文件,然后试图把它当文件夹再写入失败


从试图写入的正文内容来看,框架上是有的,但没有进一步搜集原文

Spark-X2.5-4B:

第1次:大方向对了,甚至还会用任务清单。不过时间较长,只有一篇正确写入了原文


从工具调用的日志来看,其实已经成功读到原文了,但5篇中只有1篇正确写入了(其实日期还偏了一天)。

第2次:大方向对了,有两篇正确写入了原文,还有一篇被标题中的“/”坑了


其中有一篇标题里有一个“/”,结果就错误地创建了一个目录:

第3次:写到没有后缀名的文件里去了

Qwen3.5-9B 蒸馏版:

第1次:大方向对了,除了读原文碰壁以后就放弃


没有像讯飞那样,发现读不到的链接会想办法再去搜能读到的。除此以外,基本上都满足要求了。

第2次:没有按照要求分文件写入,读了一个总结的新闻就以为读了原文


第3次:没有按照要求分文件写入,两篇写入了原文


测试 3:编程处理文字工作

在 opencode 中测试,想看看小模型下载文件(检查过网络环境)、解析PDF(本地已经安装 pymupdf 等 pip 包)、读取长文件这些工具调用的能力。提示词:

帮我下载这两份资料到本仓库:
https://cims.nyu.edu/~tristanb/statement.pdf
https://cdn.openai.com/pdf/32d9f210-8b73-45e0-91bc-82a30aef8a9a/navier-stokes.pdf
综合其中的信息,告诉我发生了什么

同样的,每次测完都会把新增的文件删掉,以确保启动状态相同。

MiniCPM5-2B:

第1次:没有意识到是在Windows下,非常强烈地想要用 /tmp 目录,甚至还派发了子 Agent,最后形成了总结


直到最后,资料都在 /tmp 目录。

第2次:还是老样子不理会“下到本仓库”,最后形成了总结

第3次:这次意识到要下到仓库里了,但读写失败回到老样子,最后形成了总结


Spark-X2.5-4B:

第1次:正确下载到目录,并形成了总结

居然会用 powershell

碰到了经典的编码问题

最终文件和解析的TXT都在仓库里,也获得了总结:

第2次:正确下载到目录,并形成了总结

第3次:正确下载到目录,并形成了总结

Qwen3.5-9B 蒸馏版:

第1次:遇到困难马上就停下来,用户推动后形成了总结


随后我给出指示“方法1 + 3”,就继续推进了。虽然PDF下载到了仓库,但解析的代码却扔到了 C:\Users\用户名\.local\share\opencode\parse_pdfs.py。
最后通过代码获得了结论:

第2次:探测到了网络链接,但提取失败,还变成了英文

这次代码改成扔到了C:\Users\用户名\AppData\Local\Temp\opencode\extract_pdf.py

第3次:擅自加空格读写仓库失败,另辟蹊径通过网络解析获取到一篇内容,形成了总结

一开始擅自加了个空格读取失败:

后来还是成功下载到仓库内。但读取又碰到问题,于是另辟蹊径,通过 jina 网络解析 PDF:

但第二篇解析失败。我分析了一下,是把 https 写成 http 导致的。最后根据第一篇输出了结论:

顺便放一个不在这三次之内,但让我气笑了的案例

至于总结的质量,大家吃过瓜的可以评判一下:

模型的总结质量排序
  • MiniCPM5-2B
  • Spark-X2.5-4B
  • Qwen3.5-9B 蒸馏版
0 投票人

KV Cache 量化测试

Spark-X2.5-4B 这个模型宣称超长上下文,但在上下文达到 1M 的时候显存占用依然非常可观。所以加测一个 KV Cache 量化。在都是Q8量化的情况下,262,144 上下文显示占用 8.49 GB 显存。

普通对话


个人感觉表现差不多,包括被 strawberrrry 绕进去的概率

新闻搜集


感觉思考有些偏长,但好歹也算能完成任务

编程处理文字工作


主观感觉也是大差不差

另外,我还发现当显存占用非常接近上限时,Token 速度对系统其他应用的显存占用就比较敏感了。例如下面我进行了 500,000 上下文(13.87 GB)的测试,一开始的速度是 155 tok/s:

开了几个浏览器以后就跌到 64 tok/s 了:

总结

至少在个人的用例中,Spark-X2.5-4B 的综合体验最好,Qwen3.5-9B 民间蒸馏版相比原版体验意外地有明显提升(个人主观感受),MiniCPM5-2B 在部分对话问题的表现比 Spark-X2.5-4B 更好。

如果有什么想让我测的案例,也可以发出来,或许之后有空可以测一下。不过 harness 仅限 YOLO 和 opencode,其他工具懒得再配置了。大家有自己测试的结果也欢迎讨论。

15 个赞

相比民间蒸馏,Ornith-1.5-9B这种后训练的会不会更靠谱……

2 个赞

还有这个
Nanbeige/Nanbeige4.2-3B · Hugging FaceNanbeige/Nanbeige4.2-3B · Hugging Face

4 个赞

前排作证:佬儿有求必应!大家快来许愿

2 个赞

佬试试 inclusionAI/Ling-3.0-tiny · Hugging Face

1 个赞

佬测下这个Qwen3.8-27B究极 3bpw量化版 据说性能没减太多

2 个赞

这个是稠密模型,参数量大太多了,普通显卡跑起来很吃力

等一个究极1bit量化

这个量化版好像可以抛在12~16G的显卡上

1 个赞

部署是一回事,速度是另一回事嘛,太慢也难受

本地用来翻译除了hy-mt2的模型大家还有什么推荐?显存只有6G只能用小模型。

nanbeige 搞 looped transformer 实际上还是太慢了吧

不过从侧面看得出这个2b的小模型的确很厉害了,接近4b水准。

感谢佬,也期待一下LFM的2.6B的模型

补充一下我自己测试NeoHorse-1-4B.i1-Q4_K_M的情况:
测试1全对。(毕竟是从qwen3.5微调的)
测试2不知道如何使用yolo插件,没有进行。
测试3。一开始它使用 WebFetch 直接读取 PDF,返回大量 PDF 数据,约 5.2 万 token,超过 32K 上下文,失败。
我提示它改用 curl + pdftotext。它先调用 PowerShell 中的 curl,实际命中了 Invoke-WebRequest 别名,参数不兼容;随后自行改用 curl.exe。它成功下载:

  • Tristan_Bertrand_statement.pdf:约 53 KB
  • navier-stokes.pdf:约 2.82 MB

第一次提取文本时 pdftotext 命令参数写错,显示了帮助信息;它随后自行修正,最终生成:

  • tristan_text.txt:约 11 KB
  • navier_stokes_text.txt:约 684 KB

阅读阶段,它多次使用不适合 PowerShell的 Linux 目录命令,部分操作被权限规则拦截。之后还调用了 OpenCode 子代理处理长文,但子代理没有返回结果,只能中止。
再次进行时,它通过搜索和分段读取,读完了短声明并读取长文前约 600 行,但最后没有生成答案,OpenCode 只留下空步骤。
我缩短让他阅读的内容,成功输出了中文综合结论。


再补充一下,Nanbeige4.2-3B-Q4_K_M.gguf:
测试1。把两个简单问题想得很长,耗尽 4096 个隐藏推理 token,之后连续返回 reason: unknown、0 输入/0 输出,没有可见答案。三次都是。
测试3。未调用任何工具、未下载文件、无答案。
总结:模型特别爱雷霆大思考


再补充一下,Ling-3.0-tiny-Q4_K_M.gguf:
测试1。正确。
测试3。一开始也是没有意识到是在Windows下,非常强烈地想要用 /tmp 目录。模型反复使用 Linux 的 /tmp、wget、python3,没有适应当前 PowerShell 环境。还把 PowerShell 中的 curl 别名当成标准 curl 使用,参数执行失败。 反复调用 wget/curl,并坚持使用 /home/user/pdfs。
引导后正确下载和解析

2 个赞

Spark-X2.5-4B智力水平确实还可以,而且它的数学推理能力相当强,能和一些 300b的参数打平手了都。

我目前的用途是给他一个比较完善的Skill让它去做自动化任务,成功率还是可以的,就是完成任务过程中还会纠结一些奇奇怪怪的问题导致浪费非常多时间。