端侧设备选型先查指令集:缺 i8mm 的机器,int8 量化比 fp32 慢 47 倍

性能 · 4 核 aarch64 / 3.9 GB / 零 swapL0整理于 2026-11-01 有效期 permanent

一台 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树莓派类设备本地部署

这条适用于

版本指纹

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³ 的完成时间未测到(主动中止),文中未补估算值。④ 带宽/算力随固件与内核版本浮动,方法是稳定的,数字不是。
← CPU 跑本地大模型,线程数配错会让 80 核输给 8 核Ollama 并发该开几个槽:峰值在 4 槽,16 槽比单槽还慢 →

← 返回全部排错方案