知识讲堂

← 返回日报
算法理论 第一讲

注意力机制变体演进

就像图书馆的参考书系统——MHA 是每个读者都有一套完整百科全书(全量 KV),GQA 是每组读者共享一套(分组 KV),MLA 是只存一张"索引卡"、需要时按图索骥(低秩潜变量)——存储空间越来越小,但找到答案的能力几乎不变。
历史演进

注意力机制的每一次变体革命,本质上都是在回答同一个问题:如何在不损失表达能力的前提下,把 KV cache 的内存和计算代价压下去。

1993
注意力思想的史前史

早在 Transformer 诞生之前,Schmidhuber 在 1993 年提出"快速权重"(Fast Weights)机制,允许网络动态生成权重矩阵。这是注意力机制的哲学先祖,但受限于当时的计算条件,未能大规模落地。

2015
Bahdanau Attention 奠基

Bahdanau 等人在机器翻译中提出软注意力(soft attention),让解码器在每一步可以"回望"编码器的全部隐状态,并用一个对齐分数加权求和。这打破了 seq2seq 模型必须把所有信息压缩进单一向量的瓶颈。核心公式是 $e_{ij} = a(s_{i-1}, h_j)$,其中 $a$ 是一个小型 MLP。这是第一次让"哪里重要就看哪里"成为可微分操作。

2017
Transformer 与 Multi-Head Attention

Vaswani 等人在《Attention Is All You Need》中将注意力机制推向极致:去掉 RNN,完全依赖自注意力堆叠。Multi-Head Attention(MHA)将 Q/K/V 投影到 $h$ 个子空间并行计算,再拼接输出。这带来两个关键好处:不同头可以捕捉不同语义关系;并行计算极大提升训练效率。但代价是 KV cache 随头数线性增长,推理时内存压力巨大。

2019
Multi-Query Attention 的激进压缩

Shazeer 在 Google 内部提出 MQA(Multi-Query Attention):所有头共享同一组 K 和 V,只有 Q 保持多头。KV cache 从 $O(h \cdot d)$ 降至 $O(d)$,推理带宽需求骤降。代价是模型质量有所下滑,尤其在需要精细区分不同关系的任务上。

2023
GQA 找到平衡点

Ainslie 等人(Google Research)提出 Grouped Query Attention(GQA):将 $h$ 个查询头分成 $g$ 组,每组共享一对 K/V。当 $g=1$ 退化为 MQA,当 $g=h$ 退化为 MHA。Llama 2/3、Mistral 等主流模型均采用 GQA,实现了质量与效率的工程最优解。

2024
MLA 的低秩压缩哲学

DeepSeek 提出 Multi-head Latent Attention(MLA):不直接缓存 K/V,而是缓存一个低秩的潜变量 $c$,推理时从 $c$ 恢复 K/V。这将 KV cache 压缩比进一步推向极限,同时通过吸收投影矩阵避免推理时的额外计算开销,代表了注意力压缩从"减少头数"到"压缩表示维度"的范式转移。

核心思想
注意力机制的各种变体本质上是在"表达能力"与"KV cache 内存/带宽"之间寻找帕累托最优点——从 MHA 的全量存储,到 GQA 的分组共享,再到 MLA 的低秩潜变量压缩,每一步都是对同一约束的更精妙回应。
数学结构

设序列长度为 $L$,模型维度为 $d$,头数为 $h$,每头维度为 $d_h = d/h$。 MHA 的标准注意力输出为: $$\text{head}_i = \text{softmax}\!\left(\frac{Q_i K_i^\top}{\sqrt{d_h}}\right) V_i, \quad Q_i = X W_i^Q,\ K_i = X W_i^K,\ V_i = X W_i^V$$ 推理时需缓存所有头的 K/V,总量为 $2 \cdot L \cdot h \cdot d_h = 2Ld$。 GQA 将 $h$ 个查询头分为 $g$ 组,每组对应一对 K/V: $$\text{head}_i = \text{softmax}\!\left(\frac{Q_i K_{\lfloor ig/h \rfloor}^\top}{\sqrt{d_h}}\right) V_{\lfloor ig/h \rfloor}$$ KV cache 降至 $2 \cdot L \cdot g \cdot d_h$,压缩比为 $h/g$。 MLA 引入低秩联合压缩:令 $c_t^{KV} = X_t W^{DKV} \in \mathbb{R}^{d_c}$,其中 $d_c \ll hd_h$,再通过上投影恢复: $$K_t = c_t^{KV} W^{UK},\quad V_t = c_t^{KV} W^{UV}$$ 推理时只需缓存 $c_t^{KV}$,KV cache 从 $2hd_h$ 降至 $d_c$。关键洞察:$W^{UK}$ 可在推理前与 $W^Q$ 合并吸收,消除额外矩阵乘法,使压缩"免费"。 $\sqrt{d_h}$ 缩放因子的作用:防止点积在高维空间中数值过大导致 softmax 梯度消失,这是 Vaswani 等人的经典设计。

工作机制

现代注意力变体的工作逻辑是:在推理阶段识别 KV cache 为核心瓶颈,然后通过不同粒度的参数共享或低秩分解来压缩它,同时用训练时的容量补偿推理时的信息损失。

Step 1识别推理瓶颈:KV Cache 的本质

在自回归生成中,每生成一个 token 都需要访问所有历史 token 的 K/V 向量。对于批大小 $B$、序列长度 $L$、头数 $h$、头维度 $d_h$ 的模型,KV cache 占用 $2BLhd_h \times \text{层数}$ 字节。以 Llama-3 70B 为例,在 $L=8192$、$B=32$ 时 KV cache 超过 100GB,远超 GPU 显存。这不是计算瓶颈,而是内存带宽瓶颈——每个解码步骤都要把整个 KV cache 从 HBM 搬到计算单元。

Step 2GQA 的分组共享策略

GQA 的核心设计决策是:不同查询头在关注"哪个位置"时可以有差异(保留多个 Q),但关注"那个位置的内容"时可以共享(合并 K/V)。实现上,将 $h$ 个头均匀分为 $g$ 组,每组内的头共享同一对 $W^K, W^V$。训练时与 MHA 几乎相同,只是 K/V 投影矩阵数量从 $h$ 降至 $g$。关键工程细节:从 MHA 预训练模型迁移到 GQA 时,可以用组内 K/V 头的均值初始化共享头,再微调,效果接近从头训练。Llama 2 70B 使用 $g=8$($h=64$),KV cache 压缩 8 倍。

Step 3MLA 的低秩潜变量压缩

MLA 的设计哲学更激进:既然 K/V 矩阵本身是低秩的(这在大量实证研究中得到验证),为什么不直接在低维潜空间中缓存?具体地,用一个"下投影"矩阵 $W^{DKV} \in \mathbb{R}^{d \times d_c}$ 将输入压缩到 $d_c$ 维潜变量,推理时缓存该潜变量而非完整 K/V。关键工程技巧:上投影矩阵 $W^{UK}$ 可以在推理前与查询投影 $W^Q$ 合并(矩阵吸收),使得推理时不需要额外的矩阵乘法来恢复 K,计算开销与 MHA 相当。DeepSeek-V2 中 $d_c = 512$,而 $hd_h = 128 \times 128 = 16384$,压缩比约 32 倍。

Step 4稀疏注意力:从"压缩 KV"到"跳过计算"

另一条路线不压缩 KV cache,而是在计算注意力时跳过不重要的位置。Sliding Window Attention(Mistral)让每个 token 只关注最近 $w$ 个位置,将复杂度从 $O(L^2)$ 降至 $O(Lw)$。BigBird/Longformer 结合局部窗口 + 全局 token + 随机稀疏,在理论上保持全局感受野。Flash Attention 则是另一维度的优化:不改变数学等价性,而是通过 IO-aware 的分块计算避免将完整注意力矩阵写回 HBM,将内存复杂度从 $O(L^2)$ 降至 $O(L)$。

Step 5混合架构:注意力与线性层的协同

最新趋势是混合架构:在 Transformer 层中插入线性注意力层(如 Mamba、RetNet)或滑动窗口层,只在关键层保留全局 MHA/GQA。Jamba(AI21)、Zamba(Zyphra)等模型验证了这种策略:用少量全局注意力层捕捉长程依赖,用线性层处理局部模式,整体 KV cache 大幅减少。

长远价值

GQA 已成为 2023 年后几乎所有主流开源 LLM 的标配(Llama 2/3、Mistral、Qwen、Gemma),直接影响了数百亿参数模型的推理成本。MLA 在 DeepSeek-V2/V3 中验证了低秩压缩路线的可行性,使单卡可服务更长上下文。Flash Attention 被集成进 PyTorch、HuggingFace Transformers,成为训练和推理的基础设施。这些技术共同将 LLM 的推理成本降低了一个数量级,直接推动了大模型的商业化落地。

前沿动向

当前热点:①MLA 的理论分析——低秩假设在何种任务上会失效?②注意力头的异质性——不同层/头是否应采用不同压缩策略(自适应 GQA)?③KV cache 量化与稀疏的联合优化(TurboQuant 等工作);④线性注意力与 softmax 注意力的混合比例如何自动搜索?⑤超长上下文(>1M token)下注意力的根本性替代方案是否存在?

工程·思维 第二讲

设备端语音推理架构

设备端语音 Agent 架构就像在一辆越野车里塞进一个完整的急救室——不是把医院搬过来,而是精心挑选最关键的设备、重新设计协作流程,让它在颠簸、断电、空间极限的条件下仍能救人。
历史演进

设备端语音推理架构的演进,本质上是一场"把云端能力塞进口袋"的持续工程战役,每一次突破都由硬件约束、隐私需求和延迟要求三重压力共同驱动。

2011–2015
云端独大的第一代语音助手

Siri(2011)、Google Now(2012)、Cortana(2014)的第一代架构几乎完全依赖云端:设备端只做 VAD(语音活动检测)和音频压缩,ASR/NLU/TTS 全部在服务器完成。往返延迟 800ms–2s,网络断开即失效。这一时期的设备端处理仅限于关键词唤醒(Keyword Spotting),模型极小(<100KB),用 HMM+GMM 或极小型 DNN 实现。

2017–2019
端云协同与神经网络量化的崛起

深度学习在 ASR 上的全面胜利(DeepSpeech 2, 2015;LAS, 2016)带来了新问题:神经网络模型动辄数百 MB,无法直接部署到移动端。这一时期出现了两条并行路线:①模型压缩:知识蒸馏(Hinton, 2015)、权重量化(INT8)、结构化剪枝;②专用硬件:Apple Neural Engine(2017,A11 Bionic)、高通 Hexagon DSP、华为 NPU 相继出现,为端侧神经网络推理提供了专用算力。TensorFlow Lite(2017)和 Core ML(2017)成为第一批成熟的端侧推理框架。

2020–2022
Transformer 上端与流式推理的工程挑战

Conformer(2020, Google)将 Transformer 引入 ASR 并达到 SOTA,但其 $O(L^2)$ 注意力复杂度对实时流式推理极不友好。工程界的应对方案包括:Emformer(Meta, 2021)用分块注意力实现流式 Conformer;Streaming Transducer 架构将 RNN-T 改造为帧级实时输出。同期,说话人分离(Speaker Diarization)和语音增强(Speech Enhancement)开始被纳入端侧考量,但多任务协同推理的框架尚不成熟,各模块各自为战。

2023–2025
大模型时代的端侧语音 Agent 架构

Whisper(OpenAI, 2022)的开源引爆了端侧 ASR 部署需求,其 tiny/base 变体在移动端可实时运行。但真正的挑战在于:语音 Agent 不是单一模型,而是 VAD → ASR → LLM → TTS 的完整流水线,各模块的延迟、内存、格式需要统一协调。ExecuTorch(Meta, 2023)正是在这一背景下诞生:提供从 PyTorch 到跨平台端侧部署的统一路径,支持 ARM、Apple Silicon、高通 NPU 等异构后端,并原生支持流式执行图。Cohere Transcribe(2025)、Voxtral(Mistral, 2026)等开源模型的涌现,使端侧语音 Agent 的"模型层"问题逐渐解决,系统集成层成为新的核心挑战。

核心思想
设备端语音 Agent 推理的核心工程问题是:如何在单一运行时中协调 VAD、ASR、说话人分离、增强、TTS 等异构模型,在严格的延迟(<50ms 帧)、内存(<3GB)和功耗约束下实现流式端到端处理,同时保持跨平台可移植性。
数学结构

设备端语音推理的核心量化约束可以形式化如下: 延迟预算分解:对于目标端到端延迟 $T_{e2e}$,流水线各阶段需满足: $$T_{e2e} = T_{VAD} + T_{ASR} + T_{LLM\_prefill} + T_{LLM\_decode} + T_{TTS} + T_{IO}$$ 实时因子(RTF)定义为 $\text{RTF} = T_{process} / T_{audio}$,端侧 ASR 要求 $\text{RTF} < 0.3$。 内存约束:设模型参数量为 $P$,量化位宽为 $b$,KV cache 为 $M_{kv}$,激活内存为 $M_{act}$: $$M_{total} = \frac{P \cdot b}{8} + M_{kv} + M_{act} \leq M_{budget}$$ 对于 3GB RAM 预算,INT4 量化的 3B 参数模型约占 1.5GB,留给 KV cache 和其他模块约 1.5GB。 流式处理的因果约束:流式 ASR 要求模型在时刻 $t$ 的输出只依赖 $t$ 及之前的输入: $$y_t = f(x_1, x_2, \ldots, x_t)$$ 这排除了双向注意力,要求使用因果掩码或分块注意力(chunk size $C$),引入 $C/2$ 的额外延迟(look-ahead)。Emformer 将序列分为 $C$ 帧的块,块内全注意力,块间单向,在延迟与精度间取得平衡。

工作机制

设备端语音 Agent 的整体逻辑是:将云端的串行 RPC 调用链改造为本地的流式执行图,通过统一运行时管理异构模型的内存、调度和格式转换,使各模块像流水线一样并发运行而非顺序等待。

Step 1VAD:流水线的门卫与节拍器

VAD(语音活动检测)是整个系统的第一道关卡,决定何时激活后续模块。端侧 VAD 的工程要求极苛刻:延迟 <10ms,内存 <1MB,功耗极低(需在 DSP 上常驻运行)。Silero VAD 是目前最广泛使用的开源方案,基于 LSTM,模型仅 1.8MB,在 16kHz 音频上以 30ms 帧运行。关键设计决策:VAD 输出不是简单的二值标签,而是概率分数,下游模块根据阈值和滞后策略决定是否切换状态,避免频繁启停("门控抖动")。ExecuTorch 中 VAD 模型被编译为独立的执行图,常驻 DSP,只在检测到语音时唤醒 CPU/NPU 上的 ASR 模块。

Step 2流式 ASR:分块注意力与状态管理

端侧流式 ASR 的核心挑战是:Transformer 的自注意力天然是非因果的,需要看到完整序列才能输出。解决方案是分块流式(Chunk-based Streaming):将音频分为固定大小的块(如 640ms),块内做全注意力,块间通过缓存的 Key/Value 状态传递上下文。实现细节:①每个块处理完后,将其 K/V 状态写入循环缓冲区(Ring Buffer),新块的注意力可以回看固定数量的历史块;②Transducer(RNN-T)架构天然适合流式,因为其 Predictor 和 Joiner 是帧级操作;③ExecuTorch 的执行图支持有状态算子(Stateful Operators),可以在推理调用间保持 K/V 缓存,无需每次重新分配内存。

Step 3说话人分离与增强的并发调度

传统架构中,说话人分离(Diarization)在 ASR 之后串行运行,引入数秒延迟。端侧优化策略是并发流水线:VAD 触发后,ASR 和说话人嵌入提取(Speaker Embedding)并行运行,共享同一段音频特征(FBANK/Mel 谱)的计算。语音增强(如 RNNoise、DTLN)则在 VAD 之后、ASR 之前运行,作为前处理模块。关键工程问题:多模型共享 GPU/NPU 时的资源竞争。ExecuTorch 的解决方案是优先级调度:ASR 占用 NPU,说话人嵌入降级到 CPU,增强模型在 DSP 上运行,三者物理隔离、逻辑并发。内存共享通过零拷贝张量视图(Zero-copy Tensor View)实现,避免音频特征的重复计算和拷贝。

Step 4跨平台编译与后端适配

ExecuTorch 的核心价值在于提供统一的导出路径:PyTorch 模型 → `torch.export` → Edge IR → 后端特定编译。对于 Apple Silicon,通过 Core ML 后端利用 ANE;对于高通,通过 QNN 后端利用 Hexagon NPU;对于 ARM CPU,使用 XNNPACK 后端的 INT8/INT4 内核。关键挑战:不同后端对算子的支持不一致(如某些 NPU 不支持动态形状),需要在导出时进行算子分解(Operator Decomposition)和形状特化(Shape Specialization)。语音模型的流式状态(K/V 缓存、RNN 隐状态)需要被导出为模型的显式输入/输出,而非隐式全局状态,这要求对原始 PyTorch 模型进行适配性改造。

Step 5端到端延迟优化:首字节时间(TTFA)

对于语音 Agent,用户感知的关键指标是 TTFA(Time to First Audio),即从用户说完话到听到回复的时间。优化策略:①流式 LLM 解码 + 流式 TTS:LLM 生成第一个句子片段(~20 token)后立即送入 TTS,无需等待完整回复;②投机解码(Speculative Decoding):用小草稿模型预测多个 token,大模型并行验证,减少 LLM 解码延迟;③预热缓存:将系统 Prompt 的 KV cache 预计算并持久化,避免每次对话重新 prefill。Mistral Voxtral 的 90ms TTFA 正是通过上述策略的组合实现的。

长远价值

设备端语音推理架构直接影响了数十亿移动设备上的语音交互体验。Apple 的 Siri 离线模式、Google 的 Recorder App(完全离线转录)、Meta 的 Ray-Ban 智能眼镜语音助手,都是这一架构的产业落地。随着隐私法规(GDPR、CCPA)收紧和用户对数据主权意识增强,端侧语音处理将从"可选优化"变为"合规必需",其工程价值将持续增长。

前沿动向

当前核心开放问题:①多模型共享 NPU 的细粒度调度(目前多数 NPU 不支持抢占);②流式 LLM 与流式 TTS 的联合优化(避免 LLM 输出边界与 TTS 韵律单元不对齐);③端侧个性化——如何在不上传数据的前提下做说话人自适应;④异构内存(DRAM/SRAM/Flash)的分层模型存储策略;⑤超低功耗场景(<100mW)下的语音 Agent 可行性。

往期讲解档案 11 个知识点

2026年03月29日混合自回归流匹配TTSautoregressive semantic tokensflow matching acoustic decoderhybrid TTS architecture
2026年03月29日NCCL超时诊断方法论NCCL watchdog timeoutdistributed training debuggingcollective communication
2026年03月29日混合架构音频表示Mambastate space modelaudio representation learning
2026年03月29日DeepSeek预训练加速工程MXFP8 trainingexpert parallelismMoE pretraining
2026年03月27日说话人验证度量学习speaker verificationmetric learningcurriculum learning
2026年03月27日MX浮点格式加速训练MXFP8microscalingmixed precision training
2026年03月26日TTS模型极限压缩model compressionknowledge distillationTTS on-device
2026年03月26日小模型极限压缩哲学model compressionknowledge distillationquantization
2026年03月25日流匹配生成原理flow matchingrectified flowODE
2026年03月25日神经音频编解码器neural audio codecresidual vector quantizationEnCodec
2026年03月25日推测解码加速推理speculative decodingdraft modeltoken verification