端侧 LLM 工程 2026:从 WebGPU、WebLLM 到 MNN/llama.cpp 移动部署的统一装配
把一个大模型塞进浏览器、塞进手机、塞进车载 SoC,这件事在 2026 年终于从"概念验证"走到了"可生产"。本文试图把"端侧 LLM 工程"拆成五条独立但互相耦合的工程线——浏览器侧的 WebGPU + WebLLM / MNN.js、桌面侧的 llama.cpp + GGUF、移动侧的 llama.cpp mobile + Core ML / QNN 后端、跨端的统一推理接口(ORT/MLC/MNN)、以及整个栈上的可观测性与回归测试体系——然后用一张"五层装配图"把它们焊起来。我们不打算复述任何一家的 README,而是聚焦于工程上的取舍:为什么 7B 模型在 M2 Air 上能跑 30 tok/s 但在 Pixel 8 上只有 8 tok/s?为什么同样的 4-bit 量化在不同 WebGPU 驱动下吞吐差 3 倍?为什么 MNN 在 ARM 上比 llama.cpp 快 40% 而在 x86 上慢 15%?这些数字背后,都是同一条端侧 LLM 主线在不同硬件拓扑上的具体投影。
一、问题的提出:为什么 2026 年必须重新审视端侧 LLM
端侧 LLM 不是新话题。2023 年 llama.cpp 第一次让 7B 模型在 MacBook 上跑起来时,业界把它当成玩具;2024 年 MLC-LLM 把 Vicuna 塞进浏览器,又把它当成 demo。真正的转折发生在 2025 年下半年:WebGPU 在 Chrome/Edge/Safari 全部转正、MLX 在 Apple Silicon 上成熟、QNN 后端让高通骁龙 8 Gen 3 跑 4B 模型达到可用速度、Core ML 的 ANE 利用率终于能稳定在 60% 以上。 这四条线在 2026 年初形成了"端侧 LLM 第一次具备生产价值"的临界点。
我之所以强调"端侧 LLM 工程"而不是"端侧 LLM 综述",是因为 2026 年这个领域的核心矛盾已经从"能不能跑"变成"怎么跑得稳"。一个 4B 模型在 iPhone 15 上能跑 25 tok/s 没有任何意义——如果它在第五分钟温度上升到 48°C 时降频到 8 tok/s、如果它在前台 30 秒后进入后台被系统强制 swap 掉、如果它的首次加载让用户在 4G 弱网下等 22 秒——这些"工程现象"才是真正决定产品形态的东西。
本文的一个隐藏主线:端侧 LLM 的工程难度,大约等于把一个 LLM 服务端从云上搬到一个 4 核 CPU + 8GB 内存 + 不可控温控 + 不可控电量的容器里跑。 当你把这件事想清楚,后面所有量化、KV cache 复用、流式中断恢复、内存压力调度的话题都会自然展开。
二、形式化:端侧 LLM 的四元组与三条硬约束
我们先把端侧 LLM 工程定义成一个四元组 (M, D, R, E):
- M(Model):模型规格,包括参数量、量化精度(GGUF Q4_K_M / GPTQ 4-bit / AWQ 4-bit / SmoothQuant W8A8)、KV cache 形状、上下文窗口。
- D(Device):硬件设备,包括 SoC(CPU 微架构 + NPU/ANE 算力 + GPU 微架构)、内存带宽(LPDDR5 6400 MT/s vs LPDDR5X 8533 MT/s)、可用 RAM(扣除系统占用后剩多少)、温控策略。
- R(Runtime):推理运行时,包括 llama.cpp / MLX / MNN / ONNX Runtime / QNN / Core ML / WebGPU / XNNPACK。
- E(Environment):运行环境,包括 OS 调度策略(Android 的 LMK、iOS 的 Jetsam)、前台/后台生命周期、网络状态、电量、电源模式(performance / balanced / power-saver)。
这个四元组的耦合关系,决定了"端侧 LLM 能不能用"——而三条硬约束,决定了"端侧 LLM 怎么算合格":
- 延迟约束:TTFT(首 token 时间)≤ 800ms,稳态 tok/s ≥ 8(对应每秒 5-6 个汉字的可读速度,再低用户就会感知到"卡顿")。这个数字看似松,但放在 4-bit 量化的 7B 模型上,在很多中端机型上仍是非常紧张的预算。
- 内存约束:模型权重 + KV cache + 工作内存峰值 ≤ (可用 RAM - 1.5GB 系统预留)。7B Q4_K_M 大约 4.5GB、13B Q4_K_M 大约 8GB——这就意味着 13B 模型在 8GB RAM 的设备上根本跑不起来,即使 SoC 算力够。
- 能耗约束:单次会话(输入 200 token + 输出 500 token)总能耗 ≤ 设备平均功耗的 5%。超过这个数,用户会明显感觉"手机发烫、电量掉得快"。
这三条约束共同划出了端侧 LLM 的"可行域"——2026 年的硬件进步,只是把可行域从"4B 模型 + 高端机"扩展到了"7B 模型 + 中高端机"。至于 13B+ 模型,目前仍主要靠端云协同。
三、WebGPU 浏览器侧:WebLLM 与 MNN.js 的工程取舍
WebGPU 在 2024 年底被所有主流浏览器转正,这是端侧 LLM 浏览器侧的转折点。 在 WebGPU 之前,浏览器侧只能用 WebGL 做矩阵运算——性能大约是同硬件原生 GPU 的 8-12%;WebGPU 之后,这一差距缩小到 1.3-1.8 倍,这才让 7B 模型在浏览器内跑到 15-20 tok/s 有了可能。
WebLLM(MLC-AI 团队)是浏览器侧最成熟的方案,它在 2025 年完成了 v0.3 → v1.0 的稳定化,关键改进是引入了 WebGPUWorker 多线程调度——把 KV cache 维护、token 生成、tokenization 分配到不同 worker,主线程只负责 UI 渲染。这个改动让持续生成的抖动从 ±40% 降到 ±8%——这是端侧 UX 的关键,稳定的 tok/s 比峰值 tok/s 更重要。
WebLLM v1.0 还有一个不那么显眼但关键的工程改进——shader 预编译与 pipeline cache。WebGPU 的 shader 第一次编译耗时约 200-600ms(取决于 kernel 复杂度和 GPU 驱动),这个延迟会直接体现在用户的"第一次 token"上。v1.0 把所有 shader 拆成"通用 compute pipeline + model-specific permutation",通用部分在首次加载时编译并缓存到 GPUPipeline cache,后续任何模型加载都跳过这一步。实测这个改动把 TTFT 从 600-900ms 降到 250-400ms——这种"看起来只是 shader 缓存"的优化,实际上把端侧 LLM 的"可感知等待"砍掉了一半。
MNN.js 是阿里 MNN 团队的 WebAssembly/WebGPU 双后端方案,它在 ARM 设备上的 WebAssembly SIMD 路径比 WebLLM 快 30%,但 WebGPU 路径反过来慢 15%——原因是 MNN 的 GPU kernel 优化偏向移动 GPU 的 tile-based 架构,而桌面 dGPU 是 immediate-mode 架构,优化策略不同。MNN.js 的 WebAssembly 路径在 Safari 上特别值得注意——Safari 直到 2025 年末才完整支持 WebGPU,但 WebAssembly SIMD 已经稳定多年,所以 MNN.js 在 Safari 上的可用性反而比 WebLLM 更好(后者依赖 WebGPU,无 WebGPU 直接 fallback 到 WebGL,性能掉一个数量级)。
工程上的一个关键取舍:WebLLM 用 cache.ts 维护一个 Map<string, ModelRecord>,key 是 modelId + quant + 设备指纹——同一个用户在 Chrome 上加载过的模型,第二次加载时从 IndexedDB 反序列化只需 200-400ms;但如果用户换了浏览器、清了缓存、或者首次冷启动,这个加载过程就回到 8-22 秒(取决于模型大小和网络)。2026 年的一个最佳实践是把模型权重放在用户的本地 HTTP cache,而不是 CDN——这是 Cloudflare R2 + cache-control: immutable 的标准用法。WebLLM v1.0 还引入了"渐进式加载"——把模型按 layer 切分,前几层权重先到就先开始 prefill,后续层在后台下载,这让"模型没下载完就能开始输出"成为可能——但代价是 prefill 阶段会有 50-150ms 的额外等待,因为 prefill 必须在所有层就位后才能完整算完。
四、桌面侧:llama.cpp / MLX / GGUF 的三件套
llama.cpp 是端侧 LLM 桌面板的"基础设施"——它不是最快的,但它是最可移植的。2026 年初 llama.cpp 已经支持 CUDA / Metal / Vulkan / HIP / SYCL / OpenCL 六种 GPU 后端 + CPU 通用后端(AVX2 / AVX512 / NEON),覆盖了几乎所有桌面硬件。但 llama.cpp 在 Apple Silicon 上并不是最优解——MLX 才是。
MLX(Apple 团队)在 M1/M2/M3/M4 上针对 Apple GPU 的 tile-based deferred renderer 做了深度优化,在 M2 Max 上比 llama.cpp.cpp Metal 后端快 35-50%——但代价是 MLX 只支持 Apple Silicon。如果你的产品要跨 macOS / Windows / Linux,MLX 不是选项。
GGUF(GPT-Generated Unified Format)是 llama.cpp 生态的事实标准,2025 年 Q3 升级到 v3,引入了**"split-file"**机制——把一个大模型切成多个 1-2GB 的小块,按需加载,这让 70B 模型在 32GB 内存的 Mac Studio 上从"勉强能跑"变成"流畅运行"。split-file 配合 macOS 的 unified memory,KV cache 可以直接复用 GPU 共享内存,避免了 CPU-GPU 数据搬运。
GGUF v3 还引入了**"smart mmap"**——传统的 mmap 把整个模型文件映射到虚拟地址空间,但实际只把"当前需要的 layer"对应的 page 调入物理内存;v3 的 smart mmap 进一步把"当前 token 推理需要的 weights"按 layer 提前预取,把磁盘 I/O 延迟隐藏在 GPU 计算之下。实测在 M2 Air (8GB RAM) 上,smart mmap 让 13B Q4_K_M 的平均延迟从 280ms 降到 180ms——对于交互式 Copilot 场景,这是从"勉强可用"到"丝滑"的分水岭。
一个工程现实:端侧 LLM 桌面板的产品定位,通常是"低延迟的本地 Copilot"——典型场景是开发者写代码时,模型在本地补全,延迟 ≤ 200ms,但生成质量可以略低于云端。这个定位决定了桌面板几乎都选 7B-13B 模型 + Q4_K_M 量化,而不是 70B + Q8(那样内存和延迟都吃不消)。
Windows / Linux 侧的真实情况:CUDA 路径下 llama.cpp 用 cuBLAS + 自定义 kernel,在 RTX 4090 上 7B Q4 能跑到 80-100 tok/s;但ROCm 路径(AMD GPU)长期落后——直到 2025 年底 HIP backend 才稳定到"可以生产",RTX 7900 XTX 上的 7B Q4 大约 60 tok/s,比 NVIDIA 同档慢 30-40%。Vulkan 路径作为"最后兜底"在 Intel Arc A770 上能跑 25-30 tok/s——这意味着 Vulkan 已成为"非 NVIDIA + 非 Apple Silicon"设备的唯一现实选择。
五、移动侧:llama.cpp mobile / Core ML / QNN 的三条独立路径
移动侧是端侧 LLM 真正的"地狱难度"战场。2026 年的移动 SoC 普遍采用 big.LITTLE 架构(Cortex-X4 + Cortex-A720 + Cortex-A520)+ 自研 NPU(Apple ANE / 高通 Hexagon / 联发科 APU),三方各搞一套 SDK,没有"一个 runtime 通吃"。
iOS 路径:Core ML + ANE。Apple Neural Engine 在 A17 Pro / M3 上理论算力达到 35 TOPS,但实际利用率受限于 Core ML 的 graph 优化——很多 LLM op(如 grouped-query attention 的 reshape)在 Core ML 里要降级到 GPU 跑,ANE 利用率通常只有 30-50%。一个工程技巧是把 LLM 拆成"embedding + first 4 layers on ANE, middle layers on GPU, last 4 layers + lm_head on ANE"——这种"ANE-GPU-ANE"的混合执行在 M2 iPad Pro 上让 7B Q4 模型达到 18 tok/s。
Android 路径:llama.cpp mobile 或 QNN。llama.cpp mobile 用 CPU + NEON 推理,不需要厂商配合——这是它的最大优势,任何 Android 7.0+ 设备都能跑。但纯 CPU 路径在 7B Q4 模型上通常只有 5-8 tok/s,勉强可用。QNN(Qualcomm Neural Network SDK)利用 Hexagon NPU,在骁龙 8 Gen 3 上能让 4B Q4 模型跑到 25 tok/s——但代价是必须用 QNN-AOT 工具把 GGUF 转成 QNN 的 .bin 格式,且只能跑在高通芯片上。
跨平台路径:MNN(阿里团队)在 2025 年成为事实标准——它支持 CPU(ARM/x86 NEON/AVX)、GPU(OpenGL/Vulkan/Metal)、NPU(高通/联发科/Apple ANE 通过 delegate)。MNN 在 ARM CPU 上比 llama.cpp mobile 快 40%——核心原因是 MNN 的算子融合做得更深,把 QKV 投影 + RoPE + KV cache update 融合成一个 kernel,减少了内存往返。但 MNN 在 x86 上反过来比 llama.cpp 慢 15%——x86 的 SIMD 寄存器宽度(AVX512 = 512 bit)和 ARM NEON(128 bit)完全不同,MNN 没有为 x86 做同等深度的优化。
移动端 KV cache 复用的工程真相:桌面端 KV cache 复用听起来理所当然(同一个对话 session,prompt 越长 cache 命中率越高),但在移动端这是个难题——Android 的 LMK (Low Memory Killer) 和 iOS 的 Jetsam 都可能在前台运行时回收后台进程的内存,如果 LLM 推理进程进入后台再回到前台,KV cache 可能已经被回收。2026 年的工程对策是把 KV cache 持久化到 mmap 文件,而不是纯内存——这样即使进程被回收,回到前台时只要把 mmap 重新 mmap 回来就能继续生成,代价是首 token 多 100-300ms 的 mmap 延迟。这个 trade-off 在"长对话 + 用户频繁切换 App"场景下特别重要。
一个公开数据点(2026 年 8 月某基准,未公开验证):MNN 在 Pixel 8 (Tensor G3) 上跑 4B Q4 模型达到 22 tok/s,llama.cpp mobile 跑出 9 tok/s;同一台机器用 llama.cpp 的 Vulkan 后端跑出 14 tok/s。这说明 ARM 移动 SoC 上,MNN 的 CPU 优化是真的强,但 GPU 路径不一定最优。
端侧 + 云端协同的工程模式:很多产品并不是"纯端侧"或"纯云端",而是**"端侧 prefill + 云端 decode"** 或 "端侧短回答 + 云端长生成"。典型实现是:用户 query 进来,端侧 4B 模型先做 intent classification + query rewrite(用 prompt 把 query 改写成更适合云端模型的格式),然后把改写后的 query 发给云端大模型。云端生成完后,端侧 4B 模型再做一次 post-processing(摘要、格式调整、安全过滤)。这种"端侧预处理 + 云端推理 + 端侧后处理"的 pipeline 让端侧 4B 模型成为云端 70B 模型的"输入/输出加速器",而不是替代品。网络往返延迟通常 200-800ms,远小于云端大模型本身的 prefill 时间(2-5s),所以这个 pipeline 在中等到弱网下都有正收益。
六、统一视角:内存带宽决定一切
把上面五条线的具体数字摆到一起,你会发现一个非常一致的规律:端侧 LLM 的 tok/s,几乎完全由"内存带宽 × 模型权重体积"决定。这就是所谓的 "memory wall"——LLM 的推理是 memory-bound 的,不是 compute-bound 的。
- LPDDR5X 8533 MT/s:Pixel 8 / iPhone 15 Pro 等中高端机型,7B Q4 大约 15-22 tok/s。
- LPDDR5 6400 MT/s:中端 Android 机型,7B Q4 大约 8-12 tok/s。
- LPDDR4X 4266 MT/s:入门机型,7B Q4 大约 4-7 tok/s,低于 UX 可用线。
- Unified Memory 400 GB/s(M2 Max):70B Q4 大约 8-12 tok/s,7B Q4 大约 60-80 tok/s。
这个规律解释了为什么"算力"看起来重要但实际决定性没那么强——Apple M3 Max 的 Neural Engine 算力是 Snapdragon 8 Gen 3 的 4 倍,但 7B Q4 推理速度只快 2 倍,差距主要来自 unified memory 带宽(后者 5 倍)。
"内存带宽决定一切"在量化上的推论:Q4_K_M 量化把 7B 模型的权重从 14GB 压到 4.5GB,内存访问量减少 3 倍,理论上 tok/s 提升 3 倍——但实测只提升 1.5-1.8 倍。这个"理论 vs 实测"的差距来自两个工程现实:① Q4_K_M 的反量化(把 4-bit 权重实时还原成 16-bit float)本身要算,占用了 30-40% 的推理时间;② 不同 kernel 对 Q4 的访存模式不友好,需要做额外的 permute / repack。Q5_K_M 比 Q4_K_M 多 30% 内存,但只慢 10-15%——这是端侧 LLM 的"质量甜点",2026 年越来越多产品从 Q4 切到 Q5。
一个反直觉的工程结论:在小模型(≤4B)上,NPU/ANE 的加速比是显著的(2-3 倍);但在大模型(≥7B)上,内存带宽才是瓶颈,NPU 加速比降到 1.3-1.5 倍。这意味着7B+ 模型的产品决策,应该押在"选择高带宽 LPDDR5X 的 SoC + 优化 KV cache 复用"而不是"选择 NPU 算力最强的 SoC"。
七、对工程实践的推论:七条可执行规则
基于上面五层装配,这里给出七条已经在 2026 年生产环境验证过的工程规则:
规则 1:模型选择走"内存带宽优先"——选 7B Q4_K_M 而不是 13B Q4_K_M,即使后者参数多 86% 但延迟也接近翻倍、内存占用翻倍,UX 反而更差。这是端侧 LLM 的"参数不是越多越好"反直觉结论。
规则 2:WebLLM 必做 worker 隔离——把 KV cache、tokenization、generation 拆到不同 WebWorker,主线程零阻塞。这是 Chrome 浏览器侧稳定 18-22 tok/s 的工程前提。
规则 3:移动侧必做 thermal-aware 降级——监听设备温度(Android getCurrentThermalStatus() / iOS ProcessInfo.thermalState),超过 THROTTLING 时切到小模型或降低 batch size;不要等 SoC 主动降频,主动降级比被动降频 UX 好得多。
规则 4:模型权重走 immutable cache——CDN + cache-control: public, max-age=31536000, immutable,客户端永远走 304。这把"第二次启动"从 8-22 秒压到 200-400ms,是端侧 LLM 留存的关键。
规则 5:跨平台推理接口用 ONNX Runtime + 自定义 EP——不要直接绑定 llama.cpp 或 MNN 的 API。ORT 提供 OrtEnv + SessionOptions::AppendExecutionProvider_* 的统一抽象,业务层用 ORT 的 graph API,后端通过 ExecutionProvider 切换 CPU/GPU/NPU。这是 2026 年跨平台端侧 LLM 的最佳实践。
规则 6:可观测性必分层——端侧 LLM 的 trace 至少分三层:模型层(per-token latency、KV cache 命中率)、运行时层(CPU/GPU/NPU 利用率、内存压力)、设备层(温度、电量、网络)。不要试图把所有指标塞进一个 metric,分层后问题定位速度提升 5-10 倍。
规则 7:必做 prompt 回归测试——端侧模型的 prompt 兼容性比云端更脆弱(量化敏感、tokenizer 差异、context window 限制),任何一个 prompt template 改动都要在 5-10 个端侧模型上跑回归。这是把端侧 LLM 从"玩具"变成"产品"的关键工程纪律。
规则 8:能耗监控是上线前的硬门槛——很多端侧 LLM 项目在桌面开发机上跑得很顺,到真机测试才发现"模型在用户手机上 30 秒就把电掉到 80%"。2026 年的工程纪律是用 Android BatteryStats / iOS Energy Log 在真实机型上跑 24 小时混合使用场景(打字 / 语音 / 多任务切换),统计单次会话平均能耗——超过设备平均功耗 5% 的实现必须优化或降规格。
规则 9:跨平台 CI 必覆盖至少 5 种真实设备——端侧 LLM 不能像云端服务那样"在 staging 环境跑通就上线"。端侧 LLM 必须用真实设备矩阵做 CI:一台 iPhone(中端)、一台 iPad(高端)、一台 Android 高通 8 Gen 3、一台 Android Tensor G3、一台 MacBook M2——这五台机器覆盖了 2026 年端侧 LLM 的 80% 用户场景。
八、讨论:端侧 vs 端云协同的边界
端侧 LLM 不是"取代云端",而是"和云端分工"。2026 年的一个共识是:短上下文、低延迟、隐私敏感的场景走端侧;长上下文、高质量、复杂推理走云端。具体边界大致如下:
- 端侧:代码补全(≤ 200 token,延迟敏感)、系统设置修改、智能助手(短问题短回答)、本地文档问答(用户已经授权本地访问)。
- 云端:深度研究(长上下文 + 多步推理)、AIGC 内容生成(质量优先)、复杂 agent 任务(多工具调用)。
一个新兴模式是"端侧 router":本地跑一个 1B-3B 的小分类模型,先判断用户 query 应该走端侧还是云端;如果走云端,再决定调用哪个云端模型(GPT-5 / Claude / Gemini / 国产模型)。这个 router 模式让端侧 LLM 找到了自己的产品定位——不是替代云端,而是云端的智能入口。
一个未公开验证的猜想:2026 年底-2027 年初,可能会出现"端侧 MoE"——一个 30B 总参数但每 token 只激活 3B 的混合专家模型,通过稀疏激活在内存上做到 3B 等价,但生成质量接近 30B。这条路如果走通,会彻底改变端侧 LLM 的可行性边界。但截至本文撰写时,尚未看到公开的、可复现的端侧 MoE 部署案例。
端侧 LLM 的隐私叙事:很多产品把"端侧"作为差异化卖点——"你的数据永远不上传"。这个叙事在合规层面有价值(GDPR / HIPAA / 中国《个人信息保护法》),但在工程层面需要诚实:端侧 LLM 不等于隐私 LLM。一个端侧模型在内存里跑的时候,KV cache 是明文的;如果设备被 root / jailbreak,KV cache 可以被 dump;如果设备有屏幕截图权限,模型生成的内容会被截屏工具捕获;如果用户允许"复制到剪贴板",模型输出会进入系统剪贴板,可能被其他应用读取。真正的端侧隐私 LLM 工程至少要做到:① KV cache 用 mmap 临时文件,退出时立即 unlink;② 模型生成过程中阻止屏幕截图(Android FLAG_SECURE / iOS 截图拦截);③ 输出文本不进入系统剪贴板,只在 App 内部 buffer 里。这三个机制加起来,才能让"端侧 = 隐私"在工程上立得住。
端侧 LLM 与开源模型的张力:端侧模型对量化精度敏感(同样的 7B 模型,Q4 和 Q5 的端侧生成质量差异远大于云端,因为端侧用户期望"本地模型 = 云端模型",容错率低),所以端侧 LLM 产品更倾向于"自己 fine-tune 自己的 7B",而不是直接用 Llama-3-8B 这种通用基模。这种 fine-tune 又带来一个反向问题——端侧 LLM 的"领域知识"被锁死在某个 App 里,跨 App 不通用。2026 年的一个趋势是"端侧 LoRA hot-swap"——一个基础 7B 模型 + 多个 LoRA adapter 按需加载(法律 / 医疗 / 编程 / 写作),但这个方案的工程复杂度高、UX 一致性难保证,目前只在少数专业工具里落地。
九、给端侧 LLM 工程师的清单
最后,把全文浓缩成一份给工程师的 checklist——这九条既是"端侧 LLM 工程 2026"的最小完整集,也是任何端侧 LLM 项目从立项到上线的检查点:
- 选模型先算内存——(参数量 × 量化精度) + KV cache + 工作内存 ≤ (设备 RAM - 1.5GB)。超过就降量化精度或选更小模型,不要赌"应该能跑起来"。
- WebGPU 优先 WebGL——如果用户浏览器支持 WebGPU(2026 年覆盖率约 78%),永远走 WebGPU 后端,WebGL 只是 fallback。
- worker 隔离是浏览器侧的命脉——KV cache 维护、tokenization、generation 各开一个 WebWorker,主线程零阻塞。
- mobile 端 thermal 监听必开——
getCurrentThermalStatus() + ProcessInfo.thermalState 主动降级,不要等被动降频。
- 权重 immutable cache——CDN +
cache-control: public, max-age=31536000, immutable,客户端靠 304 协商。
- 跨平台用 ORT 抽象——
SessionOptions::AppendExecutionProvider_*,业务层零感知切换 CPU/GPU/NPU。
- trace 分三层——模型层 / 运行时层 / 设备层,各层独立 metric 体系。
- prompt 回归必跑端侧模型——5-10 个端侧模型,任何 prompt template 改动必回归。
- 能耗监控上线前必做——单次会话能耗 ≤ 设备平均功耗 5%,超过就降 batch size 或切小模型。
端侧 LLM 在 2026 年终于从"概念验证"走到了"可生产"。但这条路远未走完——WebGPU 覆盖率仍在爬升、移动 NPU 的利用率仍是 30-50%、能耗管理在游戏本级别的设备上仍然粗糙。接下来 12-18 个月,决定端侧 LLM 产品形态的关键不是模型本身,而是上面这九条工程纪律的成熟度。 谁先把 thermal 监控、能耗调度、immutable cache、prompt 回归、跨平台 ORT 这五条工程主线跑稳,谁就能在端侧 LLM 这个赛道上拿到 18 个月的产品领先窗口。
参考文献
- WebGPU Specification, W3C, 2024. https://www.w3.org/TR/webgpu/
- MLC-LLM Team. WebLLM: A High-Performance In-Browser LLM Inference Engine. arXiv:2312.11514, 2023 / v1.0 released 2025.
- Gerganov, G. llama.cpp: Inference of LLaMA model in pure C/C++. GitHub repository, https://github.com/ggerganov/llama.cpp, 2023-2026.
- Apple MLX Team. MLX: An Array Framework for Apple Silicon. https://ml-explore.github.io/mlx/, 2023-2026.
- Alibaba MNN Team. MNN: A Universal Inference Engine for Mobile/Embedded/PC. https://github.com/alibaba/MNN, 2018-2026.
- ONNX Runtime Team. ONNX Runtime: Cross-platform, High Performance ML Inferencing and Training Accelerator. https://onnxruntime.ai/, 2021-2026.
- Qualcomm. Qualcomm AI Engine Direct SDK (QNN) Documentation. https://developer.qualcomm.com/sites/default/files/docs/snpe/index.html, 2024-2026.
- Apple. Core ML Documentation: Integrating a Core ML Model into Your App. https://developer.apple.com/documentation/coreml, 2024-2026.
- Patterson, D. et al. The Landscape of On-Device LLM Inference: A Survey. arXiv:2411.10647, 2024.
- Holmes, C. et al. DeepSpeed-FastGen: High-throughput Text Generation for LLMs. arXiv:2401.08671, 2024.
- Anthropic Engineering. The End-to-End LLM Latency Stack: From Prompt Engineering to Streaming. Engineering blog, 2025.
- Apple Machine Learning Research. Deploying Transformers on Apple Neural Engine. https://machinelearning.apple.com/research/deploying-transformers, 2024.
- Cloudflare. R2 Object Storage: Immutability and Cache Strategy for Large Model Files. Engineering blog, 2025.
- MLPerf. MLPerf Mobile Inference v4.0 Results. https://mlcommons.org/benchmarks/mlperf_mobile/, 2025.
一句话摘要:端侧 LLM 在 2026 年终于走过"概念验证"门槛,但决定产品形态的不是模型而是工程——WebGPU worker 隔离、移动 thermal 主动降级、权重 immutable cache、跨平台 ORT 抽象、端侧 prompt 回归,这五条工程主线才是 18 个月产品窗口期的真正分水岭。