它是怎么做出来的
对每一对(target 层 l,source 层 m)的每个线性子层:
- 在相同的 2000 篇校准文本上抽激活(逐文档均值池化)
- 代价矩阵
C[i,j] = 1 - pearson(x_i, y_j),再按行扣掉最小值
- 熵正则 OT(Sinkhorn,200 迭代,eps 按
gap / ln(m/0.01) 每对自适应)
- 层级 OT 给出
P_eff = sqrt(P_pre * P_post)
W_fused = (1-a)*W_A + a * sum_m P_eff[l,m] * Q_out W_B Q_in^T,a=0.05
- top-128 掩码:只改 target 激活幅度最大的 128 个输出通道
词表、嵌入表、归一层、全部 Gated DeltaNet 层、视觉塔、MTP 头逐字节来自 target,未动。
为什么 eps 必须自适应(本系列 v1 的失败原因)
定值 eps=0.1(论文附录 A.3.4 的值,在 1B 目标、n≈2048 上调的)在 n=17408 的张量上会让
n·exp(-c̄/eps) ≈ 1,非对角质量追平对角质量。自融标定(target × target,正确答案是精确
置换阵)因此给出 C_layer 随 n 单调上升 0.098 → 0.531,与
f = (n-1)e^(-c̄/eps) / (1 + (n-1)e^(-c̄/eps))、c̄=0.95 的预测逐项吻合。
改成 eps = gap / ln(m/delta) 之后同一组张量降到 0.014 – 0.112。
诊断数据(请先看这一节再看分数)
自融标定(target × target,上界)
正确答案是精确置换阵。这张表说明流水线本身是对的。
Table with columns: 模块, C_layer, 设计目标, 超出, 锐度/理想, eps| 模块 | C_layer | 设计目标 | 超出 | 锐度/理想 | eps |
|---|
self_attn.k_proj | 0.03389 | 0.01000 | 3.4x | 1.6x | 0.0867 |
self_attn.o_proj | 0.01764 | 0.01000 | 1.8x | 1.3x | 0.0761 |
|
设计目标 = EPS_DELTA × gap。超出的部分是层内通道冗余:高维 MLP 中间层里有大量
近重复神经元,软 OT 在它们之间分摊质量是模型的性质,不是实现缺陷。
self_attn.q_proj 已从计划中移除:target 的 q_proj 是 48 个 256 的子块交错排列
(24 对 A/B,一半 query 一半门控),两种通道群混在一张张量里,一个 OT 计划盖不住 ——
它的锐度是理想值的 78 倍,而其余模块都在 1.2 – 2.7 倍。
跨模型(真实供体)
Table with columns: source, 模块, gap, z, 零信息, z 倍数, 锐度倍数, DMR, 判定| source | 模块 | gap | z | 零信息 | z 倍数 | 锐度倍数 | DMR | 判定 |
|---|
gemma | self_attn.k_proj | 0.368 | 16.5 | 3.32 | 4.95 | 8.8 | 0.153 | GO |
|
- gap = 每个 target 通道"最佳匹配比大盘低多少代价"的中位数。
- z =
gap × sqrt(T),即最佳匹配相对 Pearson 抽样噪声地板的标准差数。与 eps 无关。
- 零信息 = 同形状纯高斯噪声下 z 的解析期望。实测噪声与它的偏差在 2% 以内。
- 锐度倍数 = 同一个 eps 下,噪声计划比真实计划平多少倍。
- DMR = 对角带内的 P_eff 占比(均匀基线 ≈ 0.20)。
- 共融合 128 张张量,平均
|dW|/|W| = 0.01039,
平均 rv(传输矩阵行间差异)= 0.8308,平均 conc(层级计划集中度)= 5.55。
⚠️ Enrichment 与锐度不能跨对直接比。eps 自适应之后每对 eps 不同,而这两个量都随
1/eps 变尖。纯噪声的 gap 只有抽样噪声大小,自适应会给它极小的 eps,凭空造出很尖的计划。
本卡片的判定用的是与 eps 无关的 z 倍数,噪声侧也是在真实供体的 eps 下重算的。
诚实声明
- 【未评测】。这个仓库的存在意义是可复现地回答"这三个模型能不能这么融"。
- T&M 原论文的实验全部是单 source → 单 target,Algorithm 1 只接一个 source。
双 source 是本仓库的外推,靠"注意力只接 Gemma、FFN 只接 Glimmer"的模块级不交叉避开冲突。
- 论文的 target 是 1B 级、source 为 7B/8B/32B。本仓库是 27B target 吃 30B 级 source,
方向相反,且跨厂商、跨宽度、跨词表、跨注意力机制。外推幅度很大。
- Gemma 用 GeGLU、Qwen/Glimmer 用 SwiGLU。本仓库因此不从 Gemma 搬 FFN。
P_eff 是否行归一:ROW_NORM=True。原仓库源码只实现了 Q/K/V/O,MLP 未实现,
这一点未能与官方对齐。
- 必须的对照组:把
SHRINK_ONLY=True 重跑一遍(只做 (1-a)*W_A,不注入)。
把 128 行乘 1-a 本身就是一个与注入同量级的扰动。两者分数一样就说明"融合"没发生。
- a 不用重建:
W_fused 对 a 是仿射的,W(a') = W_A + (a'/a)(W(a) - W_A),
W_A 就是公开的 Qwen/Qwen3.8-27B。所以任何其它 a 都能从本仓库做任务向量缩放算出来。
用法
from transformers import AutoModelForCausalLM, AutoTokenizer
m = AutoModelForCausalLM.from_pretrained("YFC-112358/Qwen3.8-27B-TM-Gemma4-Glimmer-v3", dtype="auto", device_map="auto")
t = AutoTokenizer.from_pretrained("YFC-112358/Qwen3.8-27B-TM-Gemma4-Glimmer-v3")
引用
@article{cui2026transport,
title={Transport and Merge: Cross-Architecture Merging for Large Language Models},
author={Cui, Chenhang and Yang, Binyun and Shen, Fei and Chen, Yuxin and Zheng, Jingnan
and Wang, Xiang and Zhang, An and Chua, Tat-Seng},
year={2026}, eprint={2602.05495}, archivePrefix={arXiv}
}