← 返回文章列表

BaseRT 跑了一遍 Qwen3.5-2B——期待落空,但也算个念想

BaseRT 跑了一遍 Qwen3.5-2B——期待落空,但也算个念想


本来以为是发现黑马的故事,结果变成了「你的硬件还不够好」的续集。

一、缘起

上一次用MacBook Neo测完 MLX 之后,我在文章里写了这么一句:「MLX 在 macOS 上确实最快」。

然后 BaseRT 就出现了。

铺天盖地的宣传文案:比 llama.cpp 快 6.4 倍,比 MLX 快 3.9 倍。配上 M5 Pro 上那些夸张的跑分数据——Prefill 两万五千 tokens/s,Decode 五百多 tokens/s。

说实话,我心动了。

如果你也在本地跑大模型,你应该能理解这种心情——每一次新的推理引擎发布,都忍不住想:这次会不会更快?我的 MacBook Neo 有没有可能再榨出一些性能?虽然MacBook Neo跟M5 Pro完全是两个世界的产物,但是好歹也是苹果的嫡系儿孙。

所以当我在 GitHub 上看到 BaseRT 的时候,第一反应不是怀疑,而是期待。

二、安装

BaseRT 的安装确实简单,一条命令:

curl -fsSL https://basecompute.co/install.sh | sh

装完就能用,自带模型下载、benchmark、聊天、API 服务——全部在一个 CLI 里。

basert pull  <model>     # 下载模型
basert bench <model>     # 跑分
basert chat  <model>     # 聊天
basert serve <model>     # 启动 API

这一点比 MLX 省心不少。MLX 要配 Python 环境、装 mlx-vlm、处理各种依赖问题,BaseRT 拿到手就能跑。我也搞不懂为什么原厂的MLX会比BaseRT安装要复杂的多?

对了,BaseRT 也支持 OpenAI 兼容的 API 服务,跑起来之后任何 OpenAI 客户端都能直接连,不需要改代码。

三、跑分

测试条件跟上次保持一致,方便直接对比:

项目
设备MacBook Neo (A18 Pro, 8GB)
系统macOS 26.5
模型Qwen3.5-2B Q4
BaseRTv0.1.7

3.1 BaseRT 跑分

先把模型拉下来。1.2GB 的文件,网络慢,折腾了好一阵才下完。

basert bench

测试项结果
Prefill (pp512)448.94 t/s
Decode (tg128)43.66 t/s

3.2 四个引擎横向对比

把这次的数据和上次的测试放到一起:

工具DecodePrefill安装难度
MLX 🏆44 t/s未测★★☆
BaseRT43.7 t/s449 t/s★☆☆
Ollama33 t/s★☆☆
llama.cpp33.4 t/s★★★

MLX 44 t/s,BaseRT 43.7 t/s。差距 0.3%,其实就是实验误差。

四、BaseRT vs MLX——谁更快?

4.1 数据说话

同样 MacBook Neo,同样 Qwen3.5-2B Q4,同一个 Wi-Fi。

BaseRT 跑出来的 Decode 速度是 43.66 t/s。MLX 是 44 t/s

两者基本上是一样的,连误差范围都差不多。

其实测完第一轮我就知道结果了。BaseRT 没有像宣传的那样「碾压」MLX,至少在我的 MacBook Neo 上没有。

4.2 为什么会这样?

BaseRT 官方的 6.4x 和 3.9x 是在 M5 Pro 上跑出来的。M5 有专用的 Tensor Core,BaseRT 的手写 Metal 4 内核能充分利用这个硬件。而我的 MacBook Neo 是 A18 Pro——

  • 没有 M5 的专用 Tensor Core
  • GPU 核心数比 M 系列少
  • 内存带宽也低一截

在这个硬件上,MLX 和 BaseRT 都跑到了带宽瓶颈附近,谁也没办法再快多少。

这其实跟上次测 llama.cpp 和 Ollama 的结论很像:瓶颈在硬件,不在软件

配置BaseRTMLX领先方
M5 Pro (官方)530 t/s398 t/sBaseRT 🏆
A18 Pro (本文)43.7 t/s44 t/sMLX(误差内打平)
A18 Pro + Ollama33 t/s

我能找到的最诚实的说法是:BaseRT 的意义在 M4/M5 以上的芯片上才能体现出来。 对于 A18 Pro 甚至更老的 M1/M2,它和 MLX 拉不开差距。

五、BaseRT 值得一试吗?

抛开跑分,聊聊实际体验:

好的地方:

  • 安装极简,一条命令搞定,不需要折腾 Python 环境
  • 自带 benchmark,跑分很方便
  • OpenAI 兼容 API,启动即用
  • CLI 设计得很清爽,pull/bench/chat/serve 都在一个命令里

不够好的地方:

  • 模型生态还在早期,支持的模型没有 MLX 和 llama.cpp 多
  • 核心推理引擎不是完全开源
  • 对老芯片的优化不明,至少 A18 Pro 上没看到明显优势
  • GGUF 格式不能直接用,需要转换,转换还经常失败

我最想吐槽的是 GGUF 转换。我之前测试llama时本地有好几个下好的 Qwen3.5-2B GGUF 文件,想着直接转成 .base 格式就能跑。结果试了四个版本——

版本转换结果对话结果
原版 Q4_K_M❌ 0 张量映射
diodel 版✅ 320 张量映射❌ 乱码
fixed 版❌ 0 张量映射
unsloth 版❌ 0 张量映射

唯一成功映射的一个,跑出来满屏乱码。

gemma-4-E2B 也是一样,541 个张量全映射了,但对话全是 "<pad> dimensions কম্পিউ..." 这样的碎字符。

后来查了一下才知道,--allow-quant-from-quant 会把 GGUF 的 K-quant 数据强行塞进 BaseRT 的量化格式,张量名能对上,但权重数据是错的。官方文档也写了——量化转量化会累积误差

六、后记

这次测试从期待到失落,情绪起伏还挺大的。

看到 BaseRT 宣传文案的时候,我真的以为找到了一个比 MLX 更快的引擎。结果在同一台机器上跑下来,两个工具的数据几乎一模一样。说实话,心里有点失落。

但冷静下来想想,这其实不是 BaseRT 的问题,是我这台 MacBook Neo 的问题。A18 Pro 的硬件天花板就摆在那里,不管哪个引擎来跑,都要受内存带宽和 GPU 核心数的限制。BaseRT 的优化在 M5 上能发挥出来,但在我这台机器上,硬件本身成了瓶颈。

而且换个角度看,BaseRT 有一件事做得特别好——它给了一个念想:换一台 M4 或 M5 的机器,性能还能翻倍。 MLX 在 M5 上跑不到 530 t/s,但 BaseRT 能。

所以我最后的建议是:

  • 如果你用的是 M4/M5 芯片的 Mac,BaseRT 值得一试,可能真的有惊喜
  • 如果你用的是 老芯片(M1/M2/A 系列),MLX 和 BaseRT 选哪个都行,速度差不多
  • 如果你追求最简单上手的体验,BaseRT 的零配置 CLI 确实比 MLX 省心

至少现在我知道了,在 Apple Silicon 上跑大模型这件事,天花板比我想象的高——只是需要换一把更好的梯子。


环境配置:

设备: MacBook Neo (A18 Pro, 8GB) + macOS 26.5
模型: Qwen3.5-2B Q4 (BaseRT 原生 .base 格式)
BaseRT: v0.1.7

对比数据来源 - MLX: mlx 0.32.0 + mlx-lm 0.31.3
对比数据来源 - Ollama: v0.31.1 + Metal + Flash Attention
对比数据来源 - llama.c.cmaster 自编译 + Metal GPU