ARM 小机跑端侧模型的三个前置门槛:指令集、glibc、cmake

环境与安装 · 5 步 / 约 30 分钟(不含下载与编译)未标注整理于 2026-11-09 有效期 180d

4 核 Cortex-A55 的 ARM 盒子(3.9GB 内存、零 swap、Debian 12)跑 llama.cpp 官方 arm64 预编译包,下载 200 成功、运行直接报 GLIBCXX_3.4.32 / GLIBC_2.38 / CXXABI_1.3.15 not found —— 本机 glibc 2.36,差两个小版本。有 gcc 12.2 和 make 却缺 cmake,源码编译这条路也断。附三条开工前 30 秒能跑完的检查命令,以及「参数量不代表能跑」的实测对照。

端侧ARMaarch64llama.cppglibc指令集部署报错选型量化内存带宽

这条适用于

版本指纹

Debian 12.12 / glibc 2.36 / GLIBCXX 3.4.30 / llama.cpp b12128

具体做法

【实测环境】ARM 端侧小机:4 核 Cortex-A55(CPU part 0xd05)、aarch64、3.9GB 内存、零 swap、Debian 12.12、glibc 2.36、libstdc++ 最高 GLIBCXX 3.4.30、gcc 12.2.0、有 make 无 cmake、SoC 温度 48.9°C。

【预编译包失败原文】包 llama-b12128-bin-ubuntu-arm64.tar.gz,18,753,070 字节,经 gh-proxy 下载返回 200。add_executable 生成的二进制直接运行报三行:GLIBCXX_3.4.32 not found / CXXABI_1.3.15 not found / GLIBC_2.38 not found。三个都要,缺一个都起不来。

【指令集缺口】该 CPU 的 Features 里有 asimd、asimdhp、asimddp、fp、aes、crc32,但 i8mm / bf16 / dotprod / sve2 四项全部为 false。这四项正是所有 INT4/INT8 反量化加速赖以生效的指令。对照:官方在手机上宣传的 350 tok/s,那台设备的芯片有 i8mm 与 bf16。

【反量化实测】gcc -O3 -march=native 现场编译 Q4_0 格式微基准:纯反量化吞吐 4,015.5 MB/s,反量化+GEMV 有效带宽 0.8 GB/s、0.4 GFLOPS,纯 fp32 GEMV 0.6 GFLOPS —— 反量化单独占 32.4% 的时间。这三分之一只干「把 4bit 变回 float」一件事,还没开始乘加。
【内存带宽】256MB copy、threading.Barrier 栅栏同步起跑、读写各计一次:T=1 5.01 / T=2 10.72 / T=4 18.35 GB/s。按 573MB 权重每 token 读全量算,单线程上界 14.0 tok/s。
【跨算力档对照(同一模型 PLaMo 0.8B Q4_K_M 573,126,848 字节)】低配 x86 4 核(仅 SSE4.2、无 AVX/FMA)decode T1/T2/T4 = 2.0 / 3.8 / 7.4 tok/s,prefill 3.1 / 5.8 / 11.7;80 线程双路 Xeon(AVX2+FMA)decode T1-T20 = 14.8 / 25.4 / 37.0 / 45.5 / 45.9 / 44.4,prefill 40.2 / 78.1 / 137.9 / 217.1 / 318.8 / 341.9。跨机单线程 7.4 倍、4 线程 5.0 倍;80 线程机在 T=8 就饱和,T=16 只多 0.9%、T=20 反降 2.4% —— 80 个逻辑核只有 8 个在干活。
【带宽达成率】低配 x86 机 T=1 只吃到带宽的 14.3%(隐含有效带宽 1.15 GB/s),Xeon T=1 吃到 49.6%(8.48 GB/s)。两者裸带宽只差 2 倍(8.01 vs 17.09 GB/s),达成率却差 3.5 倍 —— 决定速度的不是内存有多快,是能不能把带宽用起来。

【为什么 ARM 上没拿到 tok/s】官方 arm64 预编译包跑不起来(上面三条),本机又缺 cmake 无法源码编译。ARM 侧的真实 tok/s 是本次最大空白,不做估算、不用 x86 数字顶替。

失效边界
ARM 侧真实 tok/s 未取得:预编译包因 glibc 2.36 < 2.38 无法运行,本机缺 cmake 无法源码编译,两条路都断。文中所有 tok/s 均来自 x86 两台机器(低配 4 核与 80 线程双路 Xeon),与 ARM 盒子不是同一台设备,不可直接外推。反量化加速比(i8mm/bf16 贡献多少)只能定性说,本机群没有带 i8mm 的 ARM 设备,量不出具体倍数。功耗未测 —— 该机没有可读功率计,SoC 温度 48.9°C 只是温度不是功耗。
← 模型权重从下载到上机:四跳链路 + 校验一跳的完整计时升级一个包整个环境就崩:numpy 1.x/2.x 断代是最经典的那种 →

← 返回全部排错方案