端侧设备选型先查指令集:缺 i8mm 的机器,int8 量化比 fp32 慢 47 倍
一台 4 核 ARM 端侧机(Cortex-A55)实测:int8 512³ 矩阵乘 0.98182 秒,fp32 512³ 只要 0.02090 秒,int8 反而慢 47 倍。根因是 CPU 特性行有 asimd/asimddp/asimdhp 但缺 i8mm,量化推理只能走整数模拟路径。同一句标量循环,同核数跨架构差 2.4 倍。买端侧机器之前,先 cat /proc/cpuinfo 看一眼指令集。
端侧部署ARMi8mm量化int8指令集选型Cortex-A55树莓派类设备本地部署这条适用于
- 一台 ARM 端侧设备(SBC / 小盒子 / NAS 类),能 SSH 进去
- 能读 /proc/cpuinfo,并能跑一次 numpy 或纯 Python 基准
版本指纹
aarch64 / Linux 6.18 / 无 i8mm / numpy 2.4.6 / 3900 MB 零 swap
具体做法
实测环境:OneThingCloud OEC(玩客云刷标准 Linux),Linux 6.18.18.c1090-trim / aarch64 / 4 核 Cortex-A55 / 内存 3900 MB total、 / / 空载 43.75 ℃ / Python 3.11.2(系统自带无 numpy,另建沙箱 venv)。
【磁盘三项】
系统盘 6.8G total / 5.2G used / → 装不下带 CUDA 的运行时,也装不下编译工具链
数据盘 224G total / 187G used / → 这是后面「Kimi Linear 98.25GB 装不下」的直接原因
【指令集(cat /proc/cpuinfo 的 Features 行原样)】
fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
→ 有 asimd / asimddp / asimdhp,
(i8mm 是 引入的 int8 矩阵乘指令;有它 int8 走硬件矩阵通道,没有就只能整数模拟)
【算力(numpy 2.4.6,沙箱 venv)】
fp32 matmul 256 0.00609 s → 5.508 GFLOPS
fp32 matmul 512 0.02090 s → 12.843 GFLOPS
int8 matmul 512 0.98182 s → 0.273 GOPS ← 比 fp32 慢 47 倍(0.98182 / 0.02090 = 47)
fp16 matmul 256 0.21986 s → 支持,但走软件路径
【跨架构同核数对照(纯标准库,不 import numpy)】
标量 200 万次乘加:aarch64 0.4314 s(4.636 Mops)vs x86_64 0.1799 s(11.115 Mops)→ 快 2.40×
纯 Python 128³ 矩阵乘:0.6038 s vs 0.2829 s → 快 2.13×
zlib 压缩吞吐:151.81 MB/s vs 207.01 MB/s → 快 1.36×
对照机环境:x86_64 老小主机 / 4 核 / 7G 内存 / Python 3.14.4(venv 缺 ensurepip,装不上 numpy,
所以两边都只能用标准库 —— 反而把变量压成一个:架构)
【decode 天花板(读真实字节)】
读 100 MB 0.0770 s → 1.268 GB/s;读 200 MB 0.1543 s → 1.266 GB/s;稳定值
→ 权重 100 MB 上限 12.98 tok/s;权重 200 MB 上限
这是物理上限:模型再优化,只要权重 200MB,这台机器就上不了 6.5 tok/s。
【存储】写 256MB 541 MB/s;读 256MB direct 1.1 GB/s;buffered 1.0 GB/s(只差 10%,页缓存几乎帮不上忙)
对照 DGX Spark NVMe 8.9 GB/s(2026-10-31 dd oflag=direct 实测)→ 相差 8 倍以上:
同样一份 100GB 权重,这边要 91 秒,那边 11 秒。
【大矩阵的算力断崖】
2048³ fp32:理论 2 × 2048³ = ,按实测 12.8 GFLOPS 推约 ;
实测 (4G 内存零 swap 进入分块换入换出),未拿到确切完成时间(主动中止,不补估算)。
⇒ 512³ 还能跑,2048³ 跑不动;中间不是平滑衰减,是掉下去。
【落到机器上:能干什么 / 不能干什么】
跑不了:7B 模型量化到 Q4 约 4GB > 本机 ,且零 swap → 直接 OOM(物理上不存在,不是调参问题)
能跑: 这一档 —— 关键词抽取、文本分类、简单本地 ASR 后处理
① int8 慢 47 倍是 的结论,不等于 llama.cpp 的 GGUF Q8 表现(QGEMM 是另一条路径,未测)。② 跨架构对照只有两台机器(4 核 A55 vs 4 核 x86),能说明同核数可差 2.4 倍,不能推成「所有 ARM 都这样」——带 i8mm 的 ARMv8.6 是另一回事。③ 2048³ 的完成时间未测到(主动中止),文中未补估算值。④ 带宽/算力随固件与内核版本浮动,方法是稳定的,数字不是。