目录

gollamago exp6 — add+rms_norm 融合算子 + 自适应算子调度

九源软件栈 + 沐曦(MetaX)llama 算子实战营 exp6 成果仓库。在 沐曦 MetaX C500 sGPU 上完成全链路验证:

  1. Phase 1 算子融合:用 MCUT(fused_add_rms_norm.maca + pybind11 绑定)把 Llama 前向中的 add + rms_norm 融合为单 kernel,每个 forward 32 个融合点,{add+norm} 类 kernel 数从 65 降到 33;运行时注册、对 gollamago 官方仓库零修改。
  2. Phase 2 自适应调度:轻量级路由器(特征 + 缓存 + MLP)在线选择每个 key 走 fused / maca_cpp / torch 三种后端,具备漂移自愈能力。
  3. Phase 3 官方对标:与课程官方评测协议(16 tok / 1+3 / “Hello” / seed 0)严格对标,并做 3 组交错复测解噪声。

核心数据速览

端到端吞吐(tokens/s,越长协议越接近真实负载)

协议 torch maca_cpp fused(本仓库) fused vs torch fused vs maca_cpp
长协议(64 tok / 3+10) 91.84851 99.24992 101.57398 +10.59% +2.34%
官方协议(16 tok / 1+3)单发 65.25221 75.30335 71.46549 +9.52% −5.10%
官方协议 × 3 组交错复测(中位) — — — — +2.52%(1.0252×)
  • 数值正确性:6 个舍入点全部对齐课程实现,生成 token IDs 与基线逐位一致(compare_results.py 4/4 通过)。
  • 官方协议单发 −5.10% 判定为共享宿主机噪声:基线自身摆动 83.76↔102.38 tps(±10%);交错复测加速比 [0.7654, 1.0252, 1.3003],中位 1.0252 与长协议 +2.34% 一致。

调度器(Phase 2)

指标 数值
路由器验证准确率 val_acc = 1.000(48 形状 × 3 候选画像,47/48 fused 获胜)
漂移自愈(注毒 F=10) static 23.96 → routed 56.13 tps,自愈收益 2.342×
命中路径开销 0.78–0.89 µs
监测开销阶梯 640.47 → 653.02 → 692.85 → 782.18 ms(se=∞/4096/64/4)
96-key 漂移分解 64 个被注毒 key 全部离开 fused(63 → maca_cpp,1 → torch 二跳),32 个未命中 key 保持 fused

门槛记分卡(预注册,诚实记分)

8✓ / 3✗ + G 条件通过(✓*)。失败项均事先注册、事后归因:

  • ✗ C:kernel 加速 0.0234 ms > 0.010 ms 目标(受 31.95% launch 税限制);
  • ✗ F:e2e +2.34% < 3% 目标(1B 模型 32 层的结构性上限);
  • ✗ I:routed ≥ 98%×static 仅 se=4096(98.08%)达标,se=64/4 未达。

测试

25 项单测全绿:tests/ 17 项(内核数值正确性)+ phase2_router/tests/ 8 项(路由缓存语义)。

仓库结构

├── DESIGN.md                  # 预注册实验设计(门槛 A–K)
├── REPORT.md                  # 完整实验报告(结论、归因、复现)
├── setup.py                   # C++ 扩展构建
├── src/
│   ├── fused_add_rms_norm.maca # MCUT 融合内核源码
│   └── bindings.cpp           # pybind11 绑定
├── benchmark/
│   ├── bench_kernel.py        # 内核微基准
│   ├── run_e2e.py             # e2e 驱动(--fused 开关注入)
│   └── probe_overhead.py / probe_wrapper_variants.py
├── run_official.sh            # Phase 3 官方协议单发三连
├── run_official_rep.sh        # Phase 3 三组交错复测
├── results/                   # Phase 1 + 3 全部 JSON 与官方日志
├── phase2_router/
│   ├── profile_fusion.py / train_router.py / run_e2e_routed.py
│   ├── router/                # features / model / cache
│   ├── tests/test_router_cache.py
│   └── results/               # 画像、训练曲线、router_full.pt、六组 e2e
└── tests/test_fused_add_rms_norm.py

快速复现

环境(沐曦 MACA 工具链 + /opt/conda/bin/python,模型 Llama-3.2-1B):

cd /root/exp6_fusion   # 或本仓库根目录
PY=/opt/conda/bin/python

# 单元测试(25 项)
$PY -m pytest tests/ phase2_router/tests/ -q

# Phase 1 e2e 长协议
$PY -u benchmark/run_e2e.py --model /root/models/Llama-3.2-1B \
    --prompts 'The capital of France is' --max-new-tokens 64 \
    --num-warmup-iterations 3 --num-profiling-iterations 10 \
    --seed 0 --target maca --device cuda --backend maca_cpp \
    --output-json results/e2e_baseline_maca.json
$PY -u benchmark/run_e2e.py ... --fused ... --output-json results/e2e_fused_maca.json

# Phase 3 官方协议
bash run_official.sh
bash run_official_rep.sh

# Phase 2 调度器
$PY phase2_router/train_router.py --variant full      # → results/router_full.pt
$PY -u phase2_router/run_e2e_routed.py --mode routed --sample-every 64 \
    --output-json phase2_router/results/e2e_phase2_routed_se64.json

完整参数与全部命令见 REPORT.md §7。

结论

  1. 融合算子本体可用、无害、有正收益:token IDs 逐位一致,vs torch 双协议 ≥ +9.5%,vs 课程 maca_cpp 稳定 +2.3% 量级,零侵入可随时回退。
  2. 调度器按需启用:干净负载 se=4096 或 static 直连;存在后端劣化风险(多租户争抢、热修)时开监测,自愈收益 2.34×。
  3. 下一步提升空间不在内核:突破 +2.3% 需更多融合点(flash-attention 级、GEMM+Norm)或 CUDA event 级监测计时。

License

MIT

关于

九源软件栈+沐曦 llama 算子实战营 exp6 成果:add+rms_norm 融合算子(maca_cpp)+ 自适应算子调度路由,在沐曦 MetaX C500 sGPU 上完成全链路验证。长协议端到端吞吐较 torch 基线 +10.6%、较 maca_cpp 基线 +2.3%;调度自愈 2.34×;25 项测试全绿;对 gollamago 官方仓库零修改。含完整代码、实验数据与报告。

2.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号