“端侧 AI 是未来。”
这句话你可能听了不下一百遍了。发布会上,每家芯片厂商都在讲”端侧大模型”、”离线推理”、”隐私计算”,PPT 做得比电影海报还好看。
但你知道真正把大模型塞进一颗手机芯片/边缘AI芯片里跑起来,是什么体验吗?
就两个字:渡劫。
近两年,我一直在端侧 AI 这条路上摸爬滚打,模型格式转换、模型量化、算子开发、性能调优、推理框架支持等,积累了一小点经验,今天不讲理论,就跟你聊聊那些教科书上不会写、发布会上不会说的真实踩坑经历。
坑一:模型太胖,芯片装不下
这是第一个、也是最直观的问题。
现在主流的大语言模型动不动就几十亿参数。以一个 7B(70 亿参数)的模型为例,用 FP16 精度存储,光模型文件就要 14GB。
而你的端侧芯片有多少内存?主流的一般都在 8~32GB(还得跟系统和其他 App 抢)。
这就好比你买了一头大象,想塞进一辆 Smart 里。理论上都是陆地上的东西,但物理空间它不答应啊。
怎么办?只能”减肥”:
-
量化:把参数精度从 FP16 降到 INT8 甚至 INT4,体积直接砍半甚至砍到四分之一 -
剪枝:把模型里不太重要的连接”剪掉” -
蒸馏:训练一个小模型来模仿大模型的能力
听起来方案很成熟对吧?
但代价是精度下降。 7B 模型量化到 INT4 之后,做数学推理的准确率可能从 85% 掉到 70%。有些任务掉得不多你感觉不出来,有些任务一掉就掉到没法用。
最痛苦的是:你没法提前预测它会在哪里掉。 你得量化完了、部署完了、跑完一整套测试集才知道。然后发现不行,回去调量化策略,再部署,再测试……
这种循环,我们内部叫”量化轮回“。

坑二:算子不兼容,堪称地狱级难题
这个坑,不做端侧部署的人根本理解不了有多深。
大模型在 GPU 上跑得好好的,每一层运算(我们叫”算子”)都有成熟的实现。但换到 NPU 上呢?
不好意思,这个算子我们不支持。
NPU 芯片为了追求能效比,硬件设计是高度定制化的。它擅长的运算模式很固定 — 矩阵乘法、卷积这些没问题,但碰到一些”奇形怪状”的操作,比如某些动态 shape、某种特殊的 attention 变体、或者某个冷门激活函数……
NPU:这啥?不认识。回去找 CPU。
一旦某个算子被 fallback 到 CPU 执行,速度直接崩塌。因为数据要从 NPU 的内存搬到 CPU 的内存,算完了再搬回来。这一来一回的搬运开销,有时候比计算本身还慢。
打个比方:你请了一个米其林大厨(NPU),厨房里设备齐全,煎牛排、做分子料理都没问题。但突然顾客点了一碗手擀面,大厨说”这个我不会”,只能把面团送到隔壁沙县小吃去做,做完了再端回来摆盘。 那个来回折腾的时间,比大厨从头做一桌法餐还久。
我们团队的日常就是:遇到不支持的算子 → 自己手写一个 NPU 版本 → 调性能 → 验精度 → 发现有 Bug → 改 → 再验 → 终于过了 → 换个模型,又遇到新的不支持的算子……
一个大模型可能有上百种算子,适配率能做到 90% 就算不错了。但剩下的 10% 可以毁掉整体性能。

坑三:跑分很美好,实测很骨感
芯片发布会上最爱讲一个指标:TOPS(每秒多少万亿次运算)。
“我们这颗芯片有 50 TOPS!” “我们做到了 100 TOPS!”
数字一个比一个猛。
但 TOPS 就像汽车的最高时速——说我能跑 300 码,可你天天堵在上海内环上,跑出过 80 码吗?
实际推理速度受一个很多人忽视的因素制约:内存带宽。
大模型推理时,参数要不断从内存里读出来用。芯片算得再快,数据喂不进去也是白搭。端侧芯片的内存带宽通常只有 GPU 的几分之一到十几分之一。
结果就是:芯片的算力利用率可能只有 20%-40%,剩下的时间都在等数据。
就好比你雇了一个打字速度极快的秘书(算力强),但文件柜一次只能拿出一页纸(带宽低)。秘书大部分时间都在等文件,而不是在打字。
这就是为什么同一个模型,在 GPU 上跑到了 50 token/s,换到端侧设备上可能只有 5-10 token/s。不是芯片不行,是整条数据通路有瓶颈。

坑四:跑30秒就”发烧”
这个坑在手机和嵌入式设备上尤其明显。
大模型推理是重负载计算,芯片全力运行时发热量很大。在服务器上无所谓——风扇使劲吹就行。但在手机里呢?散热空间就那么一丁点,芯片温度一飙高,系统就会自动降频保护。
我们测过一个场景:NPU 全速推理,前 20 秒速度很快,到第 30 秒芯片温度触发阈值,频率直接砍半,推理速度从 8 token/s 掉到 3 token/s。
也就是说,你跟端侧 AI 对话的前几句它反应很快,聊着聊着就变迟钝了。不是它偷懒,是它”发烧”了。
这在实验室跑个 benchmark 看不出来(benchmark 通常只跑几秒),但到了真实用户手里,人家跟 AI 聊个五分钟,就觉得”这也太卡了吧”。
解决方案有,但都是妥协:
-
降低推理精度 → 省电但精度打折 -
限制生成长度 → 用户体验受影响 -
分块推理,中间穿插散热间隔 → 延迟变高
没有一个是完美的。工程就是在各种”不完美”之间找那个”还凑合”的平衡点。

坑五:”在我电脑上是好的”
这是一句让所有端侧工程师血压飙升的话。
模型在服务器 GPU 上训练、验证,一切正常。导出、量化、部署到 NPU 上 — 结果就不对了。
输出变了。
有时候是数字微微偏了(精度损失),有时候是整个输出乱套了。
原因可能有一百种:
-
量化过程中某些极端值被截断了 -
NPU 和 GPU 的浮点运算行为有细微差异 -
输入预处理的归一化参数哪里对不上 -
某个算子的边界条件处理不一致
最崩溃的是那种”概率性出错”——跑十次九次是对的,第十次突然输出一段乱码。 这种 Bug 复现都复现不稳定,定位起来堪称玄学。
我们有一次花了整整两周追一个精度问题,最后发现原因是:量化工具链在处理某个特定 shape 的 tensor 时,多做了一次不必要的 transpose(转置)。 就这么一个不起眼的操作,让最终输出差之毫厘、谬以千里。
两周。一个 transpose。

坑六:生态碎片化,每家都不一样
如果说前面几个坑是技术问题,这个坑是产业问题。
GPU 端大家用 CUDA,生态统一,工具链成熟。但 NPU 端呢?
每家芯片厂商都有自己的一套工具链、自己的 SDK、自己的模型格式。
-
高通 → QNN / SNPE -
联发科 → NeuroPilot -
华为 → CANN / MindSpore -
苹果 → Core ML / ANE -
三星 → ONE / ENN
芯片厂家适配一个模型,需要从头来。想让客户买单,必须将模型推理用到的所有工具做到极致好用,比如驱动、SDK、量化工具、性能分析工具、Debug工具,对于一家中小规模公司,那简直是灾难。

说了这么多坑,那端侧 AI 到底有没有未来?
有。而且是确定性的未来。
因为需求是真实的: 隐私保护、离线可用、低延迟响应 — 这些不是伪需求,是用户真正在意的东西。
因为进展是实在的: 模型在变小(同等能力下参数量在缩减),芯片在变强(每一代 NPU 的能力都在翻倍),工具链在变好(虽然还不够好,但比两年前强太多了)。
两年前在端侧跑一个 1B 模型都费劲,现在 8B/14B dense模型、35B MOE模型也已经能跑了。
但现阶段,做端侧 AI 就是得接受一个现实:你不是在写代码,你是在做”工程考古 + 即兴手术 + 暗室寻路”的混合运动。
每一个最终跑通的模型背后,都是无数次的适配、调优、妥协和死磕。
发布会上的一句”端侧流畅运行”,背后可能是一个团队三个月的加班。
这就是端侧 AI 的真相:未来很性感,现在很骨感。但正因为难,才值得做——等到它变简单的那天,红利也就没了。