我们把 7B 模型的注意力机制“连根拔起“换掉了:Moti-1(摩谛)开源发布

简介: Moti-1(摩谛)创新性地将Qwen2.5-7B-Instruct的自注意力整体替换为自研RCA跨层波前注意力,实现浅层直读深层KV。6领域评测均分43.2(+5.1),前端代码领先24.7分。已开源,支持`trust_remote_code=True`两行加载,RTX 3090实测30 tok/s。

我们没有再做一个 Qwen 微调版,而是把 Transformer 的层内自注意力整体替换成自研的 RCA 跨层波前注意力,用 Qwen2.5-7B-Instruct 的 FFN/Embedding 做底座重新训练,得到 Moti-1(摩谛)。在 6 领域对照评测中总均分 43.2 vs 原版 38.1,前端代码方向最高领先 +24.7 分。现已开源:modelscope.cn/models/ericsjq/Moti-1-7B,trust_remote_code=True 两行代码加载,RTX 3090 实测 30 tok/s。


一、动机:注意力是 Transformer 唯一没被认真动过的大件

过去两年,开源社区对 7B 模型的改造几乎都发生在"不动架构"的前提下:换数据、换训练配方、加 LoRA、做 DPO。FFN 换过 MoE,位置编码换过 RoPE 变体,但注意力本身——那个 2017 年论文里画出来的 Q·K^T/√d——始终没人整体换掉。

原因很直白:注意力的 KV cache 机制太成熟了,牵一发而动全身。但它也有一个结构性局限:

第 l 层只能看到第 l 层自己的 KV 历史。 信息想跨层流动,只能一个 token 一个 token 地"爬"——深层网络的表征必须沿着深度方向逐层接力。

我们做了一个激进实验:能不能让浅层直接读深层的 KV? 这就是 Moti-1。

二、核心设计:RCA 波前执行器

2.1 把"逐层爬"改成"波前推进"

RCA(Recursive Cross-Attention)把序列切成 64-token 的块,按"块 0 全部层 → 块 1 全部层 → …"的波前(wavefront)顺序推进:

传统:  token 依次流过 L1→L2→…→L28(深度方向逐层接力)
RCA:   块0: L1→L2→…→L28
       块1: L1→L2→…→L28   ← 此时 L1 处理块1时,L2..L28 的块0 KV 已就绪
       ...

当第 l 层处理第 b 块时,l..l+k 层对更早块的 KV 全部就绪——浅层可以直接按可学习的深度配比回读更深层的"成品"键值。依赖图是无环 DAG,训练和推理共用同一套确定性调度,这是整个方案工程上站得住的前提。

2.2 一次 softmax,三组 Key 同场竞争

每层注意力的归一化由单次 softmax 内的三组 key 竞争完成:

组 内容 作用
① 本层历史组 本层对更早块与块内的 KV 保底语言建模能力(g=0 时数学上等价标准 KV cache)
② 跨层成品组 源层已固化的成品 KV,带逐头深度偏置 −λ_h·g 直接回读其他层的成品
③ 施工态组 本块内 j≤i 的本层 KV(严格下三角)+ 槽位偏置 b_σ 块内局部交互

配套可学习组件:逐头深度斜率 λ(决定每层"读多深")、b_σ、层编码 e_k/e_v/f_q(写入/读取 KV 时标记来源层,零初始化)。

工程实现上,三组 key 合并为单条 KV 序列,所有偏置/掩码统一编码为一个加性 attention mask,单次 scaled_dot_product_attention 完成,不物化注意力矩阵。

2.3 消融:为什么必须是"单次 softmax"

我们最早的保守设计是"双独立 softmax + 标量门控插值"(跨层通道用 s_gate≈−6 近闭)。在 webcode2m HTML 数据上的 300 步微型对照(以留出集 NLL 为准):

组 语义 留出 NLL
vanilla 标准 Qwen2 自注意力 5.5615
rca_mod 修正版(双 softmax + 标量门) 5.7116
rca_b12 单次 softmax 三组竞争 + 逐头 λ 分化 5.4834 ✦

结论很清晰:保守的门控插值版拖累泛化(比 vanilla 还差),只有让三组 key 在同一个 softmax 里真刀真枪竞争,跨层路由才产生正收益。最终版 Moti-1 采用 Beta12 语义。

三、训练:从"严格等效基座"平滑演进

三阶段管线,每一步都有明确的守恒量:

  1. 阶段一(等效起点 + 结构预调):RCA 的 q/k/v/o 直接克隆原 Attention 权重(二者结构同构),λ 大初始化(跨层通道近闭),e_k/e_v/f_q 置零——初始模型严格等效于基座,无分布崩塌。此阶段只训 RCA 参数。
  2. 阶段二(纯 RCA 全参):彻底抛弃 self_attn 分支(h = h + RCA(x),无插值),RCA 全部 822M 参数解冻,对话 SFT 全参训练。
  3. 阶段三(RCA + MLP-LoRA 联训):每层 FFN 注入 LoRA(r=16, α=32,B 零初始化),RCA 与 LoRA 同步解冻互相适应;工具调用标签 token 损失加权 ×10(缓解其占比仅 0.06% 被淹没的问题)。

阶段收益(60 评测块,仅对回答 token 计损):

阶段 NLL
克隆起点(未训练) 1.3506
纯 RCA 预调后 1.3481
RCA 全参 + LoRA 联训(发布版) 1.3126

一个容易被忽略的细节:六种新机制小参数(λ/b_σ/s_gate/e_k/e_v/f_q)全程保留 fp32 主权重——bf16 在 8.0 附近的量化台阶约 0.03,会把 1e-5 级的 Adam 位移直接舍回去,小参数等于没训。这个坑我们用位移验收(~1e-4)确认过。

四、成绩单:6 领域对照评测

6 领域 × 3 题,强云端模型作评委,三方同题相对评分(1-100):

模型 页面生成 数据可视化 动画交互 小游戏 古诗生成 日常问答 均分
Moti-1(摩谛) 64.0 14.0 49.7 38.7 54.3 38.3 43.2
Qwen2.5-7B-Instruct(原版) 39.3 11.3 29.3 22.0 79.7 47.0 38.1
DeepSeek-V4-Flash(参照上界) 95.3 87.7 96.0 97.0 81.0 96.7 92.3

三个值得注意的信号:

  • 注意力整体替换的前提下实现净增益(43.2 vs 38.1)——结构改动不是白做的;
  • 增益集中在长程结构化代码:页面生成 +24.7、动画交互 +20.4、小游戏 +16.7。我们推测跨层成品回读对"前面定过的类名/变量/样式,后面要精确复用"这类长程一致性有直接帮助;
  • 古诗与日常问答弱于原版——方向性取舍是真实存在的,不做修饰。这是下一轮训练的主攻方向。数据可视化域三方方差都极大,保留原始数据。

五、下载与使用

5.1 下载

ModelScope 仓库:https://modelscope.cn/models/ericsjq/Moti-1-7B(18.57 GB)

# 方式一: modelscope CLI (推荐, 仓库首发在ModelScope)
pip install modelscope
modelscope download --model ericsjq/Moti-1-7B --local_dir ./Moti-1-7B

仓库目前仅发布在 ModelScope。HuggingFace Hub 上没有同名仓库,请勿用 huggingface-cli download ericsjq/Moti-1-7B(会 404);如需 HF 工具链,可先 ModelScope 下载到本地再从本地路径加载。

5.2 三行加载,开箱即用

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(
    "ericsjq/Moti-1-7B",            # 或本地路径 ./Moti-1-7B
    torch_dtype="bfloat16",
    device_map="auto",
    trust_remote_code=True)          # ⚠ 必需: 架构自举代码 modeling_rca.py
tok = AutoTokenizer.from_pretrained("ericsjq/Moti-1-7B")

messages = [{
   "role": "user", "content": "用SVG画一个会动的机器猫"}]
ids = tok.apply_chat_template(messages, tokenize=True,
                              add_generation_prompt=True,
                              return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=4096,
                     temperature=0.7, top_p=0.8, top_k=20)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))

需要流式输出(前端/服务端场景)的话,仓库自带与 generate 同路径的流式接口:

buf = []                                   # 收集token id, 最后整体解码
for tid in model.generate_stream(ids, max_new_tokens=4096,
                                 temperature=0.7, top_p=0.8, top_k=20):
    buf.append(tid)
    # 注意: 不要逐token tok.decode([tid])打印中文——多字节UTF-8会被
    # 切碎出现乱码; 如需边生成边显示, 请在buffer上做增量解码
print(tok.decode(buf, skip_special_tokens=True))

推荐生成参数 temperature=0.7, top_p=0.8, top_k=20;前端页面类任务建议 max_new_tokens ≥ 4096。

5.3 运行要求(重要,先看这个再下载)

  • 显存约 18.6 GB,建议 24GB 卡(RTX 3090/4090 实测通过)
  • transformers 在 4.57.6 上验收通过;更早版本未测试(架构自举代码依赖较新的 remote code 加载机制,建议直接用新版)

六、一个值得单独讲的工程坑:dtype 决定 17 倍速度

这是本文最想让做推理优化的同学看到的段落。

RCA 分支的 q/k/v/o 权重如果存成 bf16,F.scaled_dot_product_attention 会落入 cuDNN 劣化 kernel 路径:单层注意力 63ms,且伴随 40ms 级的 CPU 同步阻塞——整个 7B 模型直接掉到 0.5 tok/s。

同样的权重转成 fp32:单层 3.7ms,17 倍差距,RTX 3090 上 decode 30 tok/s。

我们用 torch.profiler 定位:bf16 + 自定义加性 mask 的 [1, 28, 1, 长KV] 单 query 形状,cuDNN 后端选择严重劣化。所以 Moti-1 发布版把 RCA 分支以 fp32 存储(磁盘 18.57 GB 的由来),并在加载代码里自动回填精度——用户按标准写法加载即可,无需任何手动干预。代价是显存比常规 bf16 7B 高约 2.6 GB,但速度是数量级的差别。

通用教训:低精度推理不是免费的。自定义 attention mask + 单 query 长 KV 的形状组合,务必实测一下 SDPA 各后端的实际耗时。

七、局限与展望

直说短板:

  • 古诗生成、日常问答弱于原版基座——结构性替换的方向性取舍,后续训练轮次主攻;
  • 64-token 块调度,短序列(<128 token)场景收益有限;
  • RCA 分支 fp32 带来约 18.6 GB 显存需求;量化(int8/int4)未验证,理论上基座部分可量化,但 RCA 分支建议保持 fp32(见第六节)。

接下来我们计划:更大规模的领域补强训练、RCA 分支量化、以及把波前调度扩展到更长上下文。欢迎在 ModelScope 仓库提 issue 交流。

八、链接与引用

@misc{moti1_2026,
  title  = {Moti-1: Recursive Cross-Attention Wavefront Language Model},
  author = {XiaoSi Framework Researchers},
  year   = {2026},
  howpublished = {\url{https://modelscope.cn/models/ericsjq/Moti-1-7B}}
}

Moti-1(摩谛) · 小思框架 - 石京麒
如果这篇文章对你有帮助,欢迎点赞收藏,也欢迎在评论区聊你对注意力架构改造的看法。

目录
相关文章
|
23天前
|
人工智能 前端开发 数据安全/隐私保护
一个人、零预算,我们把公司知识库做成了会引用来源的RAG系统
一人、零预算,打造可溯源的RAG知识库骨架:聚焦考卷验证、文档切片、双路检索(关键词+语义)、严格引用与权限管控。非开箱即用服务,而是踩坑指南——重在验证路径、暴露问题、守住“答得对”底线。(239字)
|
23天前
|
JavaScript 网络协议 Shell
Claude Code 国内一键安装脚本:不装 Node.js、不手配环境变量,一条命令跑起来(2026 年 9 月)
本文介绍专为国内用户优化的Claude Code一键安装脚本:支持macOS/Linux/WSL(curl)和Windows(PowerShell),自动安装Node.js(便携版,免权限)、Claude Code客户端、浏览器配对码授权(免密钥复制)、配置环境变量,并真请求验证连通性。仅适用于接入国内API服务商,直连Anthropic官方API请用原生脚本。
|
23天前
|
人工智能 编解码 并行计算
2026 最新 AI 漫剧本地部署深度教程|基于 ComfyUI 私有化 AI 视频生成、解决帧闪烁与角色漂移工程方案
本文提出基于ComfyUI的AI漫剧本地私有化部署方案,直击云端生成的帧闪烁、角色漂移、画质压缩、成本高、数据不安全等痛点。支持8G/12G显卡,实现全离线推理、无限量产、特征锁定与无损高清输出,涵盖硬件适配、模型部署、稳定工作流及自动化批量渲染,兼具工程落地性与技术参考价值。(239字)
|
消息中间件 监控 Java
第144篇 Handler 消息机制:Looper、MessageQueue 与 ThreadLocal
Handler消息机制核心在于四要素:Looper循环取、MessageQueue按时间排序、Message对象池复用、dispatchMessage分发回调。关键前提为Handler与Looper绑定,而Looper通过ThreadLocal与线程一对一绑定——这是理解子线程需prepare、主线程可直用等行为的根基。机制本质是工程细节,非高深API。
96 0
|
23天前
|
存储 人工智能 弹性计算
阿里云万小智标准版和高级版有什么区别?轻量版15元1个月,差在哪?
阿里云万小智分轻量版(15元/月)、标准版(980元/年)和高级版(1980元/年)。轻量版仅支持静态展示,无视频、地图、支付等功能;标准版支持CMS、多语言及基础插件;高级版升级为10G数据库、100G创意存储、2核2G ECS+50M带宽、3个备案码、不限邮件+自接短信、三倍AI灵感值,适合中高负载与商业化场景。(239字)
116 1
|
23天前
|
安全 物联网 网络安全
扫描‑钓鱼工具链扣押事件下全球关键基础设施网络防御研究
本文剖析Flax Typhoon组织利用Microscan扫描与FishHub钓鱼工具链对全球关键基础设施实施“广撒网”式攻击的完整杀伤链,揭示其依托僵尸网络分布式探测、跨行业无差别钓鱼的新型威胁模式;客观评估FBI域名扣押执法的阶段性成效与固有局限——工具可快速重建、内网风险持续存在;提出收缩暴露面、强化多因素认证、行业情报协同、物联网治理及常态化人员演练等分层防御路径。(239字)
82 1
|
23天前
|
人工智能 自然语言处理 语音技术
小说怎么用 AI 做成动漫?心理描写转动作的提示词与检查表
本文用自拟小说片段演示心理描写转成动作与对白,提供改编记录和生成结果检查表。
|
23天前
|
域名解析 存储 人工智能
阿里云企业邮箱网页版入口登录:附企业邮箱费用价格及开通教程
阿里云企业邮箱官网入口:qiye.aliyun.com。注册需先选购版本(标准版600元/年起),再设置管理员密码、分配员工账号、完成域名MX/CNAME解析,全程支持自助开通与钉钉集成。阿里企业邮箱官网:https://t.aliyun.com/U/gNeTEB
301 1
|
23天前
|
存储 缓存 前端开发
无状态 Agent:研究状态交给 harness,token 省 84%–93%
arXiv 论文《Stateless Language Agents: Scaling Long-Horizon Automated Research》提出 SLA:有状态搜索、无状态智能体。harness 持有研究状态——候选解与实测结果,每次调用重建一份全新、针对角色的上下文,Agent 之间不传对话,连 Advisor 也无状态。论文把长时程自动研究的失效归因为重放历史、重复劳动、过早停机,并指出超长会话后期会落后。内核优化任务上追平最强基线,token 少用 84%–93%。
136 0
|
存储 缓存 监控
第149篇 图片加载原理:三级缓存与解码采样
图片加载框架核心解决三大问题:IO异步化、内存可控解码、复用场景下的请求-View精准绑定。其中第三点最易被忽视,却最易引发线上错图、闪白、崩溃等事故。关键在于理解完整链路与双重校验机制。
98 0

热门文章

最新文章