所属: 基础设施层。本页边界: 端侧模型为何必须同时受内存、功耗、带宽和时延约束。
#核心公式
核心约束是运行期峰值内存而非权重文件大小;模型能够加载不代表长上下文生成期间不会耗尽内存。
#符号说明
| 符号 | 含义 | 单位/条件 |
|---|---|---|
| 推理期间峰值内存占用 | Byte | |
| 模型权重占用,近似 | Byte | |
| KV Cache 占用 | Byte | |
| 临时激活与中间张量占用 | Byte | |
| 运行时、算子工作区与碎片开销 | Byte | |
| 设备可安全使用的内存容量 | Byte | |
| 参数量、每参数存储字节数 | 个、Byte | |
| 后文中的能耗、平均/瞬时功率、时间变量、请求持续时间 | J、W、s、s | |
| 层数、上下文长度、每个权重的字节数 | 正整数、token、Byte | |
| 本地总时延及加载、预填充、解码阶段时延 | s | |
| 单请求能耗、时刻 的瞬时功率 | J、W | |
| 远端总时延、网络时延、云端计算时延 | s |
#技术要点
- 端侧受内存容量、内存带宽、持续功耗和散热四项约束同时限制,约束强度远高于数据中心。
- 量化、蒸馏、剪枝和稀疏化用于压缩模型,但压缩后的质量损失在长尾任务上不成比例。
- 隐私保护与离线可用性是端侧部署的结构性优势,而非附加功能。
- 端云协同是计算与数据传输的重新划分问题,涉及能力门控、隐私约束和故障切换。
- 移动 SoC 的持续功耗预算通常在 3–5 W 量级,峰值可短时达到 10–15 W,但热设计功耗(TDP)决定可持续性能。
- 端侧 NPU 的算子覆盖率决定量化模型能否实际加速;硬件不支持的低比特算子会回退到 CPU,抵消压缩收益。
#原理与演进
#完整内存账
- 上式中的 是每参数字节数;4 bit 权重理论约 字节,但实际还需存储量化尺度(scale)、零点(zero-point)、分组元数据和运行时缓冲区。以 GPTQ 4-bit 分组量化为例,group size=128 时,每个权重额外增加约 0.03 字节的尺度开销,实际占用约为理论值的 6%–8%。
- 推理内存包含 KV Cache、激活和输入输出缓冲。长上下文时 KV 可能成为限制主项,其字节量近似 ,其中 为 KV 头维度, 为 KV 存储位宽。具体公式见推理机制。
- 端侧算力、内存带宽、持续功耗和散热同时约束运行。短时基准测试的峰值速度与长会话的可持续速度是两个不同指标,热节流会使后者显著低于前者。
#端侧技术的因果链
- 原始权重超出设备内存 → 量化与蒸馏缩小模型。
- 权重可驻留但生成速度不足 → 降低每 token 访存量、缩短有效上下文、控制并发会话数。
- 任务复杂度超出本地能力 → 端云分工;本地处理敏感输入或低复杂度请求,复杂请求路由至远端模型。
代价: 模型压缩对复杂推理、长尾知识和多语言能力有不成比例的损害;端云分工引入网络延迟、可用性依赖和版本一致性问题。
#1. 端侧内存容量的完整核算
对参数数 、每权重 字节、层数 、上下文长度 :
- 量化权重缩小第一项,但长上下文或多会话可能使 KV 成为新的主项。KV Cache 随上下文长度和并发会话数线性增长,而权重占用是固定的。当 超过某一阈值后,KV 占用可能超过权重。
- 操作系统、应用进程和其他模型也占内存。移动操作系统的内存管理策略(如 iOS 的 jetsam、Android 的 low memory killer)会在内存压力下终止进程。“模型文件能下载”与“运行时能驻留”是两个不同问题。
- 启动时的载入峰值可能大于稳定生成时的占用。加载阶段需要同时容纳压缩权重、解压缓冲区和运行时初始化数据,峰值内存可能是稳定状态的 1.5–2 倍。必须区分冷启动峰值与持续运行占用。
#2. 延迟与能耗的约束
- 是瞬时功率。相同 token/s 的两种方案若功率不同,电池消耗不同。能耗是功率对时间的积分,而非峰值功率的简单乘积。
- 持续计算引发热限制,SoC 频率下降,导致 token/s 下降。短基准测试的峰值速度不等于长会话的稳定速度。移动设备的散热能力有限,持续功耗受 TDP 约束。
- 本地推理无需网络往返,但若模型过小或生成过慢,端到端体验未必优于远程。首 token 延迟(TTFT)和每 token 延迟(TPOT)是端侧用户体验的两个关键指标。
#2.1 端侧硬件的算力与带宽特征
端侧推理的主要硬件平台包括移动 SoC(Apple A/M 系列、高通骁龙、联发科天玑)、边缘加速器(NVIDIA Jetson、Google Coral)和嵌入式 NPU。
| 平台 | 内存类型 | 带宽量级 | NPU 算力 | 典型功耗 |
|---|---|---|---|---|
| Apple M 系列 | LPDDR5 | 100–200 GB/s | 16 核 Neural Engine | 5–15 W |
| 高通骁龙 | LPDDR5X | 50–80 GB/s | Hexagon NPU | 3–8 W |
| Jetson Orin | LPDDR5 | 100–200 GB/s | 275 TOPS (INT8) | 15–60 W |
| 嵌入式 MCU | SRAM/Flash | 1–10 GB/s | < 1 TOPS | < 1 W |
端侧 NPU 的算力以 INT8 或 INT4 TOPS 标称,但算子覆盖率决定实际可达性能。如果模型中的算子不被 NPU 原生支持(如特定的激活函数、非标准注意力变体),编译器会回退到 CPU 或 GPU,导致延迟增加和功耗上升。因此,量化模型的实际加速比取决于硬件-软件协同的算子映射,而非标称 TOPS。
#3. 降低端侧成本的四条路径
| 方法 | 主要减少 | 核心取舍 |
|---|---|---|
| 权重量化 | 权重字节与访存 | 离群值与低 bit 误差 |
| KV 压缩/共享 | 长上下文缓存 | 注意力信息损失 |
| 蒸馏成小模型 | 参数数与计算 | 学生容量与长尾能力 |
| 任务分流 | 本地只处理合适任务 | 路由错误、网络依赖 |
#3.1 权重量化的方法差异
端侧量化不是单一技术,不同方法在压缩率、精度和硬件适配上有明确差异:
- GPTQ:逐层量化,使用二阶信息(Hessian 近似)最小化量化误差。4-bit 权重在多数任务上精度损失较小,但量化过程需要校准数据,且对激活的量化支持有限。
- AWQ:激活感知量化,识别对激活值影响大的权重通道,对其施加更高的量化保护。在 4-bit 下比 GPTQ 有更好的长尾任务精度。
- GGUF/llama.cpp:为 CPU 和边缘设备设计的格式,支持 2–8 bit 的混合精度量化。Q4_K_M 等混合方案对关键层保留更高精度,在端侧部署中广泛使用。
- NF4/FP4:4-bit 浮点格式,动态范围优于 INT4,适合权重分布不均匀的场景。QLoRA 在微调中使用 NF4 作为基础量化格式。
量化到 2-bit 或更低时,精度下降加速。离群值(outlier)是低比特量化的主要障碍:少数权重通道的绝对值远大于其他通道,统一缩放因子会导致这些通道溢出或其余通道精度不足。混合精度量化和分组量化是缓解离群值的主要手段。
#3.2 KV Cache 压缩技术
- GQA/MQA:在架构层面减少 KV 头数。MQA 将所有查询头共享一组 KV,GQA 将查询头分组共享 KV。这是训练时的架构选择,推理时直接减少 KV Cache 大小。
- KV 量化:将 KV Cache 从 FP16 量化为 INT8 或 INT4。KV 量化的精度损失通常小于权重量化,因为 KV 值的分布相对均匀,且注意力对 KV 精度的敏感度低于权重。
- 上下文裁剪:滑动窗口注意力、StreamingLLM 等方法丢弃远距 KV,仅保留最近窗口和注意力汇聚点(attention sink)。代价是远距信息丢失。
- KV 驱逐:H2O、SnapKV 等方法根据注意力权重动态驱逐低重要性 KV 对。在相同内存预算下比固定窗口保留更多有效信息。
#3.3 蒸馏的容量边界
知识蒸馏将大模型(教师)的能力迁移到小模型(学生)。端侧蒸馏面临根本性容量约束:学生的参数容量决定了它能拟合的函数复杂度上限。对于需要多步推理、长尾知识或多语言能力的任务,小模型的表现下降不成比例。
蒸馏的有效场景是任务特化:将通用大模型蒸馏为特定任务(如意图分类、实体抽取、摘要)的小模型,在限定任务分布上保持接近教师的性能。通用能力蒸馏则受学生容量限制。
#4. 端云协同的判别框架
设网络往返与传输耗时为 ,远端计算耗时为 :
- 若满足下式且本地质量满足任务要求,可本地完成。
- 若复杂任务本地质量不足,不能仅因速度快就选本地,需要能力门控(capability gating)。
- 敏感内容外传受用户权限与数据合规约束;离线场景要求本地保持最低可用能力。
- 模型拆到端和云之间时,传输中间表征可能比传原始文本更大或更敏感,不能假定拆分必然降低传输成本。
#4.1 端云分工的决策变量
端云分工的决策涉及多维约束:
其中 是综合成本(能耗、网络流量、金钱), 是任务质量, 是隐私约束, 是时延约束。任何一维不满足,该路由不可行。这一框架说明端云分工不是简单的“本地快就用本地”,而是受质量、隐私、时延和成本的多重约束。
#4.2 网络依赖与故障切换
端云协同引入网络可用性依赖。在网络不可用或高延迟时,系统需要降级到本地模型。这要求本地模型保持最低可用能力,即使这意味着在主路径上本地模型的推理成本高于必要水平。版本一致性是另一个问题:端侧模型和云端模型的版本可能不同步,导致同一请求在两种路径下产生不一致的输出。
#5. 演进中转移的瓶颈
| 阶段 | 解决 | 随之出现的问题 |
|---|---|---|
| 云端统一推理 | 端设备算力不足 | 网络、隐私、离线不可用 |
| 小模型端侧运行 | 降低网络依赖 | 能力与长上下文不足 |
| 量化/蒸馏 | 降内存与功耗 | 质量和 kernel 适配 |
| 端云协同 | 任务按资源分配 | 路由、版本一致性与故障处理 |
评估维度: 权重与 KV 的峰值内存、冷启动时间、首 token 延迟、稳定 token/s、每请求能耗、目标任务正确率。任何一个指标都不足以代表端侧可用性。端侧部署的评估需要同时报告短时峰值性能和长时可持续性能。
#6. 端侧推理的动态瓶颈
端侧可用内存 随其他应用变化,模型启动应满足下式,并保留系统运行余量。即使启动成功,随着输出长度增加,KV Cache 持续增长;长对话可能在运行中触及内存上限。移动操作系统的内存回收策略可能在后台终止进程,导致会话中断。
对每生成一个 token,解码需要读取大量权重。若设备可持续带宽为 ,权重读取字节数约 ,在带宽受限近似下 ,忽略缓存、并行和计算重叠。量化减少 ,但若反量化 kernel 慢或硬件不支持低 bit 算子,实际时延未必按位宽同比下降。这一判断可用Roofline 模型进一步分析。
#6.1 内存压力的运行时表现
端侧内存压力表现为三种形式:
- 启动失败:峰值内存超过可用内存,进程被操作系统终止。
- 运行中 OOM:KV Cache 随对话增长,在某一长度后触及上限。移动操作系统通常不给进程“内存不足”的警告,而是直接终止。
- 交换到闪存:部分系统支持将不活跃内存页交换到闪存,但闪存写入寿命有限,且交换延迟远高于内存访问。对于频繁访问的 KV Cache,交换会严重降低生成速度。
#7. 持续性能与峰值性能的区分
端侧设备的功率和散热受限,前几秒 token/s 不代表长会话速度。若设备温度触发降频,计算峰值 变成更低的可持续 ;因此需要报告运行一段时间后的稳定速度,而非仅冷启动短测试。
端侧任务还受网络可用性、隐私要求和电池影响。端云选择可写为 ,同时满足质量、时延和权限约束;成本包含能耗、数据传输和服务不可用风险,而非仅金钱。
#7.1 热节流的物理机制
移动 SoC 的热设计功耗(TDP)通常在 3–5 W。当芯片温度达到阈值(通常 80–90°C),动态电压频率调整(DVFS)降低 CPU/GPU/NPU 频率,以减少发热。频率降低直接导致 token/s 下降。
热节流的时间尺度为数十秒到数分钟,取决于散热设计和环境温度。在高温环境或散热受限的设备(如无风扇手机)中,节流可能在 30 秒内发生。因此,端侧性能评估应报告稳态 token/s,而非峰值 token/s。
#8. 压缩与架构选择的判别
| 现象 | 第一候选 | 必须验证 |
|---|---|---|
| 权重本身放不下 | 权重量化/更小模型 | 质量下降与实际峰值内存 |
| 长对话时崩溃 | KV 量化、上下文裁剪、GQA | 远距信息丢失 |
| 冷启动慢 | 模型加载与存储布局优化 | 持续 decode 是否也慢 |
| 运行一段时间后降速 | 热设计、功率预算、负载控制 | 长时 token/s 与能耗 |
| 复杂任务质量不足 | 云端回退或专用工具 | 隐私与网络约束 |
技术路线:缩小权重 → 解决运行中 KV/激活占用 → 优化持续访存和散热 → 对超出本地能力的任务采用受控端云分工。
#原始资料
- GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers
- AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration
- QLoRA: Efficient Finetuning of Quantized LLMs
- H2O: Heavy-Hitter Oracle for Efficient Generative Inference of Large Language Models
- StreamingLLM: Efficient Streaming Language Models with Attention Sinks
- GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints