Daedalus-150M:面向CPU推理设计的卷积-注意力混合语言模型 Daedalus-150M: A Convolution-Attention Hybrid Designed for CPU Inference
针对单用户CPU解码反向设计的卷积-注意力混合小模型,长上下文解码最高提速2.08倍
前置知识
KV缓存(Key-Value Cache)
自回归Transformer解码时,每个注意力层会把历史token的Key和Value存下来,避免每步重算。生成新token时必须读取上下文中所有前序token的K/V,因此缓存的内存占用与读取开销随上下文长度$t$线性增长,且每个新生成的token都要支付一次。
本文的全部成本论证都建立在缓存字节之上:作者定义每token缓存开销$\kappa = 2 L_A h_{kv} d_h b$,混合模型只保留$\kappa=6144$ B而稠密孪生为$12288$ B,“不保留缓存的层比例”正是论文的核心设计变量。
分组查询注意力(GQA)
让多个query头共享同一组Key/Value头的注意力变体。例如12个query头只配4个KV头,KV缓存的体积缩小为原来的三分之一,而模型表达能力主要保留在query侧。通常在GPU上用来省显存。
Daedalus在仅剩的6个注意力层上叠加GQA(12 query头/4 KV头),把缓存进一步压到稠密孪生模型的一半;论文强调这里的动机不是GPU显存而是每token读取的字节数。
深度可分离卷积(depthwise conv1d)
每个通道独立做一维卷积(groups=通道数),不跨通道混合,参数量和计算量都很小。核长$L=3$的深度卷积在推理时只需保留$L-1=2$个时间步的状态,这个状态大小与上下文长度完全无关。
这是论文中12个卷积块的循环算子:解码通过卷积块时,token 2000和token 2的成本一样,与注意力块形成对比。它还直接映射到llama.cpp现有内核,无需新算子。
bits-per-byte(bpb)
按字节而非按token计算的语言建模损失,公式类似$\text{bpb} = \frac{\text{总NLL(比特)}}{\text{总字节数}}$。使用字节作分母后,不同分词器(词表大小不同)的模型可以在同一尺度上比较预测质量。
它是预注册的消融裁决指标:hybrid以0.910398对0.917774赢0.81%,超过事先固定的0.5% margin。作者论证在150M规模上bpb比下游任务套件灵敏得多。
WSD学习率调度(warmup-stable-decay)
学习率先warmup到峰值,保持一段稳定期,再线性衰减到零。训练损失在稳定期几乎不动是设计使然,大部分质量在衰减期购得;衰减起点的checkpoint可作为分支点继续训练后再次衰减。
Daedalus采用300步warmup、线性衰减到零覆盖最后45%(依据“衰减到零比衰减到某个底更省样本”的证据)。论文特意记录了稳定期损失平台期被误判为停滞的教训。
Q4_0量化与量化感知训练(QAT)
Q4_0是llama.cpp的4-bit权重量化格式,每个块一个缩放因子。QAT则在训练最后阶段对部署格式做“伪量化”,让权重提前适应量化网格,可将4-bit质量损失从约6%压到约2.5%。
论文选择Q4_0不是因为理论误差最小,而是其点积内核在目标CPU上优化最好;而QAT在正式运行第一步就产生non-finite loss被禁用,导致发布模型承担全部约6%的困惑度惩罚,是论文承认的主要局限之一。
研究动机
现有小语言模型几乎都是先按GPU大规模服务的范式设计(全注意力Transformer),训练完再压缩塞进CPU。但单用户CPU推理与GPU服务有三个本质差异。第一,batch size是1:没有可摊销权重加载的批维度,每解码一个token都要把全部权重流过内存层级,吞吐量由每token读取的字节数而非算术吞吐决定。第二,现代CPU可发射的算术远超其喂给操作数的能力,内存带宽先于算力成为瓶颈,这倒转了优化目标:在更少字节上做更多算术的架构才更快。第三,全注意力解码器的KV缓存是一笔随上下文线性增长的“税”:每生成一个token都要重读每一层中所有前序token的K/V。这在高带宽、大批量的GPU服务中尚可容忍,但在batch size为1的CPU上,长上下文解码时它占据主导——而长对话、长文档恰恰是用户对延迟感知最明显的场景。
本文的目标是本文把部署目标放在最前面再反推架构:一个用户、逐token生成、4-bit权重、普通CPU,且不改动llama.cpp等标准推理二进制。在此约束下,作者事先注册了成功标准:其一,质量上五任务均值(HellaSwag、ARC-Easy、PIQA、OpenBookQA、WinoGrande,统一在lm-evaluation-harness下本地重打分)必须超过42.2,即GPT-2 124M在同一harness下的实测分,这意味着用约7倍更少的数据达到300B-token级模型的质量;其二,CPU解码速度优势必须随上下文加深而增长——这一半是架构属性,不依赖训练结果。最终模型以160.49M参数、59.9B tokens的训练预算参与比较,对手训练数据是它的3到6倍。
与已有工作不同的是,独特切入角度在于:作者不发明任何新算子,而是论证“在batch size为1的CPU解码域中,无缓存层与注意力层之比才是主导性设计变量”,并用一阶内存流量模型$M(t) = W + 2 L_A h_{kv} d_h b t$推出三分之二卷积加三分之一注意力的比例,而不是沿用GPU实践。方法论上同样与众不同:评估bar与0.5%的margin floor在任何得分存在之前由操作者书面固定,防止事后合理化;用参数匹配(0.5%内)的双臂消融隔离架构效应本身;引入另一位作者独立写的2T-token外部模型做对照,排除本项目训练或导出代码造假的可能;并完整报告了负面结果——死通道、QAT崩溃、混合比例漂移——而不是只发表成功。
核心方法
先讲直觉:注意力块的解码成本随上下文线性增长,因为它必须重读整个KV缓存;而核长$L=3$的深度可分离卷积只需保留$L-1=2$个时间步的状态,无论对话多长,每token成本恒定。Daedalus-150M共160.49M参数,18个块,$d_{model}=768$,FFN内维2048($2.67\times d_{model}$而非常规4倍),词表49152,上下文2048。块排列为 C C C C A C C A C A C A C A C C A C:6个全注意力块(索引4、7、9、11、13、16)分散在整个深度而非聚在一起,使检索能力分布到各个表示层级,其余12个块是短卷积。注意力块用GQA(12个query头共享4个KV头,$d_h=64$)把六层的缓存再压3倍,每层每token缓存$2\times4\times64\times2=1024$ B。合计每token缓存字节$\kappa_{hyb}=6144$ B,恰为24层全注意力孪生模型$\kappa_{dense}=12288$ B的一半——尽管孪生模型每层KV头更少,但注意力层多了4倍。
核心创新不是新算子,而是“部署域决定架构比例”这一论证及其受控验证。短卷积块的计算为:$B, C, x = \text{in\_proj}(u)$三路分割,$y = \text{depthwise conv1d}(B \odot x)$($L=3$,groups=768),$\text{out} = \text{out\_proj}(C \odot y)$,门控项$B$和$C$提供固定核本身缺乏的输入依赖行为。关键在于:解码通过卷积块在token 2000与token 2的成本相同,通过注意力块则不然。与Griffin等混合模型相比有两个区别性选择:循环算子用极短深度卷积而非选择性扫描SSM,直接映射到现有CPU推理内核无需新算子;注意力占比由batch size为1的内存流量论证固定,而非照搬GPU惯例。辅助选择都服务于同一目标:词嵌入与LM head共享(嵌入表49152×768占37.7M参数、23%,共享后从两张表减为一张)、FFN收窄到2048把参数从最宽的带宽大户移向深度。
方法步骤详情
第一步固定架构与bar(Table I):对手集为Pythia-160M(300B tokens,41.0)、GPT-neo-125M(41.9)、OPT-125M(42.1)、GPT-2 124M(42.2即bar),2T-token的Peer-135M(51.2)训练前即让步。第二步构建数据:10个英文来源共16.93B unique tokens(FineWeb-Edu 37.5%、DCLM-baseline 22.5%、Stack-Edu 9.0%等),每来源最多重复4个epoch,超出份额按water-filling重分配;按整个shard文件预留约2%留出集,训练窗口不跨边界。第三步训练59.9B tokens、124,476步:二维权重用Muon(122.68M参数、lr 0.02),嵌入/归一化/偏置用AdamW(37.81M、lr $3\times10^{-4}$);WSD调度300步warmup、最后45%线性衰减到零;batch 128k→512k tokens/步、序列1024→2048(前10%);z-loss $10^{-4}$、梯度裁剪1.0、bf16、单卡RTX 5090。第四步消融:同数据同调度各训5B tokens的24层全注意力孪生模型(161.25M参数、$d=640$、FFN 2304),预注册验证bpb为裁决指标、margin floor 0.5%。第五步评估:所有对手在同一lm-evaluation-harness本地重打分;解码测8线程、4-bit权重、prime后生成128 tokens、双臂单pass内交替。第六步量化导出Q4_0(95.56 MiB)。
技术新颖性
技术新颖性有四点。其一,设计杠杆的重新定位:此前混合架构研究(Griffin、RWKV、Mamba)关注循环算子本身,本文证明在batch-1 CPU场景中cache-free层比例是更大的杠杆,并给出显式成本公式$M(t) = W + 2 L_A h_{kv} d_h b t$。其二,预注册消融:胜出条件(验证bpb领先0.5%以上)在双臂打分前写定并带时间戳,dense赢了也是可接受结果、将改变主运行架构,从流程上杜绝事后合理化。其三,测量协议:双臂在单次pass内交替,使背景负载对两者扰动相同——此前背靠背测量曾产出不复现的1.29×假象;绝对吞吐被明确定义为下界,只有pass内比值可信。其四,对一阶模型的诚实校准:模型只预测2048深度处1.17×优势、实测1.76×,作者拒绝把差额记在带宽头上,而是定位到两个未建模效应——注意力以依赖softmax的归约遍历缓存、超出末级缓存后延迟主导且扩展性差,而深度卷积以完美局部性流过2元素状态;以及孪生模型24层对18层,每层固定开销多付三分之一。结论是优化注意力内核也关不掉差距,因为“混合模型没有保存的缓存无法被优化”。
实验结果
消融实验(双臂各5B tokens,参数差0.5%内):hybrid验证bpb 0.910398对dense 0.917774,赢0.81%并越过预注册0.5% floor;五任务44.68对44.82(差0.14分约0.24$\sigma$,各任务互有胜负,属噪声);4-bit文件95.56对101.62 MiB小6.3%;CPU解码在深度0/512/2048为1111.9/960.3/739.3 tok/s对922.8/664.4/420.3 tok/s,即1.20×/1.45×/1.76×,优势随深度单调增长、空上下文处接近零——正是“优势来自没保存的缓存”的机制签名。对外部Peer-135M(2T tokens、不同作者):1.06×/1.49×/2.08×,同一签名跨项目复现。正式模型(59.9B tokens)五任务均值47.31,超bar 5.11分,胜过Pythia-160M(41.0)、GPT-neo-125M(41.9)、OPT-125M(42.1)、GPT-2 124M(42.2)——对手用了3到6倍数据——也超MobileLLM-125M的公布值46.3(1T tokens);验证bpb 0.8685,比5B版本0.9104改善4.6%。分任务:PIQA 65.78、ARC-Easy 50.42、HellaSwag 37.93、OpenBookQA 32.40、WinoGrande 50.04(恰在机会线)。Peer-135M仍领先3.9分,属训练前已申报的质量换速度让步。一阶带宽模型预测1.17×而实测1.76×,残差归因到延迟与层数。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 五任务均值(消融刻度,各5B tokens) | 5-task mean accuracy | 44.68(hybrid) | 44.82(dense twin,24层全注意力) | 统计打平(-0.14分,约0.24σ) |
| 验证质量(消融,645M held-out tokens) | validation bits-per-byte | 0.910398(hybrid) | 0.917774(dense twin) | 优0.81%,超过预注册0.5% floor |
| CPU解码@2048上下文(4-bit、8线程) | tok/s | 739.3 ± 35.5(hybrid) | 420.3 ± 5.5(dense twin) | 1.76× |
| CPU解码@2048上下文(外部对照) | tok/s | 648.6 ± 12.6(Daedalus) | 312.4 ± 7.2(Peer-135M,2T tokens) | 2.08× |
| 五任务均值(正式模型,59.9B tokens) | 5-task mean accuracy | 47.31 | 42.20(GPT-2 124M,预注册bar);46.3(MobileLLM-125M,1T tokens公布值) | +5.11分 vs bar;对手训练数据为本文3-6倍 |
| 4-bit模型文件大小(参数匹配0.5%内) | MiB(bits per weight) | 95.56 MiB | 101.62 MiB(dense twin) | 小6.3% |
局限与改进
作者坦承的局限:训练混合比例漂移,实际混合与目标的L1距离为10.42,超过预注册上限10.0(中断后最后4.8B tokens来自小0.42B的语料快照);训练中断带来动量归零重warm、数据游标重置使部分文档看两次而另一些没有等永久后果;量化感知训练第一步即non-finite loss被禁用,发布模型承担全部约6%的4-bit困惑度惩罚(9.18对9.75)而非小规模测得的2.5%;词表49152对150M模型过大(缩放律建议24-32k),嵌入表37.7M参数占23%,浪费约13M;约47.9%卷积通道惰性(13.6M参数、8.5%浪费),结构剪枝触发llama.cpp的check_tensor_dims(expected 3,768, got 3,640)被拒;所有数字单seed,0.81%不是置信区间;仅英文;优势只在训练长度2048内测量。我的补充观察:五任务中WinoGrande停在50.0机会线,约五分之二任务在消融刻度上无区分力,下游结论依赖少数有区分力的任务;42.2的bar本身不高,47.31与2T-token模型的51.2仍有实质差距,“质量无损失”只在消融刻度的bpb上成立,正式刻度上并未与强对手正面比过质量。
独立分析的弱点
弱点一:死通道。47.9%的卷积通道贡献为零且是稳定平台(step 9,896为47.928%、step 30,041为47.993%,之后10,743步不变),说明根源在初始化或训练动力学而非部署;8.5%参数白白占据文件,应把通道范数正则或gate偏置初始化写进下一个模型。弱点二:QAT失败未诊断,只记录“第一步non-finite loss后禁用”,可能是伪量化与Muon更新的交互产生NaN,应做组件二分定位。弱点三:评估套件在消融刻度接近噪声底线,缺少检索敏感任务(多文档精确回忆)就无法测出注意力的真实贡献,也就无法回答“注意力比例还能降到多低”这一作者承认未测的问题。弱点四:一阶成本模型系统性低估(预测1.17×对实测1.76×),延迟项缺乏理论刻画,应建立包含softmax归约延迟与每层固定开销的二级模型。弱点五:正式刻度的质量-速度声明主要靠Peer-135M让步3.9分成立,而它用了2T tokens且架构不同,缺少同数据量的第三方混合模型对照。弱点六:优势只在长上下文兑现,短prompt只看到1.20×的深度零行,产品化需自带上下文管理策略。
未来方向
作者明确列出的方向:诊断量化感知训练的non-finite失败;在初始化阶段而非导出阶段抑制死通道;执行已设计但未运行的深度消融(18×768对24×640);多seed复现消融以给0.81%一个置信区间;加入检索敏感评估以界定注意力比例的下限。基于本文成果可延伸的方向:利用WSD调度衰减起点的可复用分支点,在更多或不同数据上续训后重新衰减,而不必从头再来;把词表缩到24-32k释放约13M参数给真正计算的层;改用Q4_K等误差更小的格式换回部分量化损失(论文测得QAT可把惩罚从6%压到2.5%);优化短卷积CPU内核——对比中dense臂享受了参考运行时更成熟的注意力图优化,1.76×的margin是在卷积路径劣势下取得的,未来只会扩大;把“部署域决定架构比例”的论证框架推广到其他batch-1边缘场景(手机SoC、NPU、浏览器内推理);以及针对当时因288GB教师logit存储被迫取消的蒸馏,设计低内存蒸馏方案。这些都不需要新研究,论文原话是“三件待修的事都更便宜地留给下一个模型”。
复现评估
复现友好度很高,属于主动降低门槛的范例。论文声明每个数字都对应公开仓库中的文件:对比结果、时间戳早于打分的胜出条件文档、评估输出、可对真实模型文件重跑的剪枝脚本(含“同文件全宽重建可正常加载”的对照,证明拒绝来自收窄本身)。权重以半精度和4-bit双格式发布,量化实验无需重训;语料全部由公开数据集组成。训练成本极低:单卡RTX 5090(32GB)跑完59.9B tokens、124,476步,消融只要5B tokens,个人可承受。风险点:绝对解码吞吐被定义为下界且依赖具体8线程CPU,跨机器只能比较单pass内的比值;训练中断的游标重置与快照差异难以完全外部复核;单seed使消融margin无置信区间;本地重打分与发表数字有0.5-1.5分的系统性差异,第三方复现必须沿用“同harness重打分”协议。总体复现难度:中低。
论文图表
列出对比模型与其训练token数、五任务分和目标:Pythia-160M(300B,41.0,beat)、GPT-neo-125M(300B,41.9,beat)、OPT-125M(180B,42.1,beat)、GPT-2 124M(—,42.2,the bar)、MobileLLM-125M(1T,gated,stretch)、Peer-135M(2T,51.2,concede quality)。
这张表在训练开始前就定义了“赢”的含义:42.2的bar、可击败的对手、以及训练前就让步的2T-token模型。它是预注册方法论的证据,读结果前必须先看它,否则无法判断47.31这个数字的含金量。
对比一阶带宽模型$M(t) = W + 2 L_A h_{kv} d_h b t$的预测与实测:深度0/512/2048处预测优势为1.06×/1.09×/1.17×,实测为1.20×/1.45×/1.76×,hybrid每token读取100.2-112.8 MB对dense的106.6-131.7 MB。
它定量展示了“模型方向正确但幅度错误”:带宽 alone 只解释17%优势而实测76%。这张表驱动了论文最重要的分析结论——残差来自延迟与层数,且优化注意力内核无法关闭差距。
十个训练数据来源的目标份额与角色:FineWeb-Edu 37.5%(教育网页骨干)、DCLM-baseline 22.5%(广泛过滤网页)、Stack-Edu (Python) 9.0%、FinePDFs-Edu 8.0%、FinePhrase 7.0%、Cosmopedia-v2 5.0%、FineMath-3+ 3.0%、InfiWebMath-3+ 3.0%、FineWiki-en 3.0%、Everyday-conversations 2.0%,合计16.93B unique tokens。
数据配方是150M规模复现结果的关键之一,且Table VI显示各来源难度差近一倍,聚合bpb被混合权重支配。想要复现或改进训练的人都从这里开始。
训练配置一览:预算59.9B tokens、124,476步;优化器按张量形状分治——Muon管122.68M参数(lr 0.02)、AdamW管37.81M(lr 3×10⁻⁴);WSD调度、300步warmup、最后45%线性衰减到零;batch从128k ramp到512k tokens/步、序列从1024到2048(前10%);z-loss 10⁻⁴、梯度裁剪1.0、bf16、单卡RTX 5090(32GB)。
这是整套训练的最小复现配方,也记录了两个值得注意的选择:Muon/AdamW按形状分工,以及“衰减到零”而非cosine底——论文明确说稳定期损失平台是设计使然而非停滞。
消融双臂的裁决数据:Daedalus-150M(hybrid)验证bpb 0.910398、五任务44.68;dense-150m(twin)bpb 0.917774、五任务44.82。bpb上hybrid赢0.81%,五任务上dense名义领先0.14。
一张表浓缩了论文的评估哲学:645M token上的bpb在150M规模远比接近噪声底线的下游套件灵敏,所以bpb被预注册为裁决指标,而下游任务被诚实标注为打平。两个指标方向相反正是本文方法论的教学案例。
dense臂在各数据来源上的验证bpb与实际权重:Stack-Edu (Python) 0.5811(9.2%)、Cosmopedia-v2 0.6109、FineWiki-en 0.7625、FinePDFs-Edu 0.9241、InfiWebMath-3+ 0.9361、FinePhrase 0.9381、FineWeb-Edu 0.9451(38.3%)、FineMath-3+ 0.9662、DCLM-baseline 1.0783(23.0%)。最好与最差相差近一倍。
揭示了代码与百科远比广泛过滤网页文本可预测,聚合分数被混合权重支配。它同时暴露了shard级holdout造成的实际留出比例不均(如FineWeb-Edu实际38.3%对目标37.5%),对复用该语料的人是必要信息。
消融双臂在深度0/512/2048的解码吞吐与比值:hybrid 1111.9±25.7 / 960.3±10.7 / 739.3±35.5 tok/s,dense 922.8±14.2 / 664.4±6.5 / 420.3±5.5 tok/s,比值1.20×→1.45×→1.76×,单调增长。
这是论文的中心结果表:优势在空上下文处接近于零、随深度增长到1.76×,这一形状本身就是机制证据——一个仅仅更瘦的模型只会给出恒定加速。它还记录了不应引用的历史数字(1.29×不复现、1.15-1.17×是深度零行)。
与外部Peer-135M的解码对比:深度0/512/2048处Daedalus 960.9±3.4 / 933.7±28.5 / 648.6±12.6 tok/s,Peer-135M 908.1±37.1 / 625.7±38.5 / 312.4±7.2 tok/s,比值1.06×→1.49×→2.08×。
跨项目的外部复现:不同作者、不同架构、同一harness,“近一于零起步、随深度增长”的签名再次出现。这排除了优势来自本项目训练或导出代码的解释,是对机制最强的一类证据。
正式模型的五任务均值对比:Daedalus-150M(59.9B tokens)47.31;MobileLLM-125M(1T)46.3(公布值);GPT-2 124M 42.2;OPT-125M(180B)42.1;GPT-neo-125M(300B)41.9;Pythia-160M(300B)41.0;Peer-135M(2T)51.2。
主结果一览:47.31超bar 5.11分,用约1/5到1/17的训练数据击败同尺寸所有对手,也超MobileLLM的公布分;同时诚实展示2T-token对手仍领先3.9分——训练前已申报的质量换速度让步。
正式模型分任务得分与机会线:PIQA 65.78(chance 50.0)、ARC-Easy 50.42(chance 25.0)、WinoGrande 50.04(chance 50.0)、HellaSwag 37.93(chance 25.0)、OpenBookQA 32.40(chance 25.0),均值47.31。
防止对47.31的过度解读:WinoGrande恰好停在机会线上,约五分之二任务在该规模测不出东西。作者用它说明为什么预注册的是bpb而非下游套件,这是理解本文评估方法学的关键一环。