Sakana向冻结LLM写入KV缓存,音频任务接近全微调

Symbiotic Architecture for Post-Hoc Audio Extension of Frozen Language Models

Yotaro Kubo, Qi Sun, Yujin Tang

cs.SD, cs.CL, eess.AS

2026-09-25

Sakana给冻结的Qwen3-0.6B配一条更窄的CNN injector,把音频向量直接写入KV缓存。LibriSpeech test-other词错误率3.91%,贴上全微调的4.01%,文本任务分数与原模型完全一致。

这篇在解决什么

常见的音频语言模型(ALM)把波形编成向量,再当普通 token 塞进 backbone LLM 做 prefilling。音频序列很长,这段计算跟着 LLM 宽度一起涨。backbone 越大,大部分算力其实没花在音频上。

另一头是灾难性遗忘。给 LLM 做音频指令微调,原先的文本能力会掉。常规补救是混进旧任务数据,训练更贵、更难配。Sakana AI 想同时拆开这两件事:音频注入别再走完整 LLM,LLM 权重也别动。

方法

架构名叫 symbiotic(共生)。文本仍由冻结的 Qwen3 生成;音频走一条更窄的 injector,直接把条件向量写进 LLM 每一层的 KV 缓存。生成阶段 LLM 照常读这份缓存,表现得像一个 ALM。

Injector 层数和 backbone 对齐,宽度可以更小。音频 prefilling 的成本跟 injector 宽度走,不跟 LLM 宽度走。单体 ALM 做不到这一点:音频 embedding 必须过一遍完整 LLM 才能变成 KV。

Injector 是叠起来的 CNN,用 Conformer 里的 LConv,深度卷积夹在两个点卷积之间,归一化换成 RMSNorm。选 CNN,是因为音频 prefilling 更吃局部上下文,全局交给 backbone Transformer。预实验换成 self-attention,优化不稳定。后面接 stride 为 8 的 max pooling,再两路仿射映射出 key 和 value。

两处训练技巧决定了这条路能不能训稳。

KV Scale Matching:injector 写出的 K/V 尺度要对上 Qwen3 自己的缓存。Key 的 RMSNorm 用 Qwen3 的 scale 初始化;Value 用几条校准句子统计标准差。早期注意力分数太低的话,梯度到不了 injector,优化会停在高原。

Noisy RoPE:给旋转位置编码加随机偏移 τ(均匀取 0 到 256)和时间尺度 κ(0.75 到 1.5),减轻对训练长度的过拟合。训练丢掉了超过 25 秒的句子,没有这招,长句基本不可用。

音频编码器是 WavLM-large,训练时加 LoRA(r=64)。对照两条基线,backbone 都是 Qwen3-0.6B,下采样都是 8 倍:Encoder-only 按 SLM 的路子只训轻量 adapter、LLM 冻结;Monolithic 给 LLM 也加 LoRA(r=16)。数据以 LibriSpeech 960 小时为主(混合权重 90%),其余是 CompA-R、Clotho-AQA、DCASE2025 Task5 和 CochlScene。AdamW 训 80,000 步,batch 为 64。

结果

主表是错误率,越低越好。

架构音频 prefilling 参数LibriSpeech test-other WERClotho-AQA 错误率CochlScene 错误率
Encoder-only(冻 LLM)1108M4.2562.652.9
Symbiotic(冻 LLM)551M3.9147.141.7
Monolithic(LoRA 微调 LLM)1108M4.0145.432.7

ASR 上 symbiotic 已经贴上全微调参考,LibriSpeech 四个分割是 1.91/3.73/2.07/3.91,monolithic 是 2.16/3.68/2.26/4.01。音频问答也接近(47.1 对 45.4)。场景分类还差一截(41.7 对 32.7),作者把缺口归到 CNN 向的 injector。

冻结 LLM、只改输入 embedding 的 Encoder-only,在非 ASR 任务上几乎控不住模型。只改入口,对冻结 LLM 的控制力有限。

文本侧遗忘更刺眼。给 LLM 做音频微调之后:

任务原 Qwen3音频微调后
WikiText-2 BPB(越低越好)0.881.32
HellaSwag 准确率47.338.2
GSM8K 准确率57.82.0

GSM8K 从 57.8 掉到 2.0。symbiotic 权重没动,文本分数就是原模型的分数。

H100、batch 为 4、LibriSpeech dev-other:symbiotic 整集 prefilling 157.1 秒,monolithic 199.8 秒。Injector 的下采样更靠后,理论 FLOPs 未必更少,墙钟时间仍更短。作者归因于 kernel 次数和参数量更好进缓存。

消融说明训练技巧不是装饰。裸架构在 86 条超 25 秒的长句上 WER 120.68%;加上 Noisy RoPE 降到 10.49%;再加 KV Scale Matching 到 4.70%。没有这两招,长句这条路走不通。

为什么重要

给已有文本 LLM 加听觉,常见做法是全量或 LoRA 微调,再用数据配比去堵遗忘。这篇把音频当成对 KV 缓存的写入,权重保持不动。推理侧可以复用现成 LLM 设施,不像 LLaMA-Adapter 还要改计算图。

已经有一份不想动的文本模型、又想后挂音频理解时,这条路用得上。0.6B 档的 ASR 和简单音频问答能接近微调。场景分类更依赖全局声学语义,目前还是微调更稳。

这是渐进架构改进,不是新的音频编码器,也不是更大的训练配方。省下的是微调风险和音频 prefilling 时激活的参数,不是总模型体积。

局限与存疑

作者自己写了:只测了紧凑档的单一小 backbone,可扩展性优势尚未验证。CochlScene 相对 monolithic 仍有约 9 个点的错误率缺口。

总参数量 symbiotic 是 1303M,比两条基线的 1108M 更大。省下的是音频 prefilling 时激活的参数(551M 对 1108M),模型体积并没有变小。所谓零微调只针对 LLM 权重,音频编码器仍在用 LoRA 训练。训练丢掉超过 25 秒的句子,长句数字建立在 86 条 hold-out 上。没有跟更大的开源 ALM 直接比,也没有测音频生成,覆盖的只有理解任务。

术语

原文与代码

社区讨论

相关论文

全部论文解读