SAMU / RG‑LRU H800 对比方法

比较对象

主结果只使用:

  • 标准 SAMU:单组共享控制、复用 Hawk 输入分支形成复数写入、通用指数/正弦/余弦;
  • RG‑LRU 对照:固定 RecurrentGemma 提交、论文方程、分段重置、16 个门分块;H800 Triton 内核由本项目实现并通过官方方程审计。

主结果明确排除分组控制、直接控制、低阶特殊函数近似和压缩分块转移。这些候选改变参数化或没有形成实测收益。

数值正确性

RG‑LRU Triton 输出对照未修改的 recurrentgemma.torch.layers.RGLRU,覆盖普通位置与 segment_pos == 0 的分段重置。整个 Hawk 残差块还会逐张量复制固定官方提交的权重,比较归一化、投影、因果卷积、RG‑LRU 序列、末状态和整块输出。SAMU Triton 对照标准 PyTorch 方程。任一正确性门槛不通过时脚本立即停止,不写入速度结论。

状态与精度

  • 训练驻留参数、梯度和 AdamW 动量:FP32;
  • 训练矩阵与激活:BF16 自动混合精度;推理权重:BF16;
  • 递推累加与缓存:FP32;
  • M 个 SAMU 复数模态按 2M 个实状态量计;
  • Section 5 单层轨道使用 D_RNN=2560,因此双方状态均为每序列 10 KiB。

Griffin 第 4 节轨道

形状对应附录图 8(a):

  • B=8;
  • 1024 个实状态量;
  • L=2048、4096、8192、16384;
  • 投影完成后开始计时;
  • 比较顺序 Triton 与分块大小 32 的 Triton;
  • 每种方法按正序和反序运行,减少测量顺序偏差。

这条轨道只测前向递推,因此只用于解释扫描内核。完整训练步由独立的完整模型轨道报告。

完整训练轨道

每个完整模型都包含相同的词嵌入、归一化、双输入分支、因果逐通道卷积、乘法连接、输出投影和门控前馈网络,唯一切换项是 SAMU 或 RG‑LRU 混合器。系统速度直接使用表 2 的 12 层 400M 与 24 层 1.3B 配置。

  • 长度缩放:L=2048、4096、8192,对应 B=4、2、1,总词元固定为 8192。
  • 模型缩放:直接使用 Griffin 表 2 的 400M 与 1.3B 宽度、递推宽度、层数以及 32K 词表,所有公开点都真实运行。
  • 计时范围:前向、交叉熵、反向、梯度裁剪和 AdamW 更新。
  • 峰值显存:在每个长度点预热后清零统计,再记录计时窗口内最大已分配显存。
  • 输入语义:随机词元只用于建立固定形状和完整交叉熵计算,不用于准确率、损失或收敛结论。

扫描后端分成“实现诊断”和“架构主对比”两层。实现诊断同时运行 PyTorch 逐时间步参考、片上顺序 Triton、BF16/FP32 结合扫描以及 16/32 步精确分块;其中 RG‑LRU 的 PyTorch 路径保持官方 RecurrentGemma 扫描语义,但它只用于正确性参考和量化未优化开销,不代表 H800 性能上限。架构主对比从三个精确 GPU 候选(片上顺序、16 步分块、32 步分块)中为 SAMU 与 RG‑LRU 分别选择最快者,再用未参与选择的新样本按正序与逆序复测完整训练步。相对 PyTorch 参考的倍数称为“GPU 实现加速”,双方最佳内核之间的差异才称为“架构对比”。

Griffin 第 5 节轨道

主推理结果使用 Griffin 表 2 的 1.3B 配置:模型宽度 2048、递推宽度 2560、24 层和 32K 词表。随机权重只用于系统速度,不用于质量结论;每个生成步执行完整递推块和词表投影:

  • B=16;
  • 空提示与 4096-token 提示;
  • 连续执行 128、256、512、1024、2048、4096 步;
  • 提示处理时间不计入生成延迟;
  • 每一步把上一输出送入下一步,保持真实时间依赖;
  • 每一步都计入词嵌入、24 个完整递推块、最终归一化、词表投影和下一词元选择;
  • SAMU 计入控制投影、转移重建、复数状态更新和写入;
  • RG‑LRU 计入两组块对角门投影、官方归一化写入和实数状态更新;
  • CUDA Graph 只消除 Python 提交开销,不删除任何模型算子。

吞吐先在共同的 B=1、4、16、32、64、96、128、192、256、384、512 候选集合中完成 64 步探针,再让每轮最高的候选完成 512、1024、2048、4096 步整条轨迹。候选范围跨过 H800 实测屋顶线约 294 FLOP/字节所对应的批量区域,用于确认吞吐已进入平台或回落;最终值只从完成对应整条轨迹的候选中选择。AB/BA 两种模型顺序分别运行。

解码内核也独立调优:SAMU 在融合、打包与 16/32/64 模态分块之间选择;RG‑LRU 同时搜索低批量的单内核门投影,以及高批量的 Tensor Core 分组矩阵乘,再分别搜索 1/2/4/8 或 2/4/8 个线程束。选择只看三次 64 步轨迹的中位数;正式 128–4096 步延迟与 512–4096 步吞吐使用另一组连续轨迹,因此不会把一次短探针的偶然最低值直接报告为最终结果。

计时

编译和预热在记录前完成。延迟由 CUDA event 记录,保留原始样本、P10、P95 和中位数。正式轨道按 SAMU→RG‑LRU 与 RG‑LRU→SAMU 两种顺序运行。

硬件计数器

租用节点返回 ERR_NVGPUCTRPERM,宿主机关闭了 NVIDIA 性能计数器。DRAM 字节、L2 流量、特殊函数指令数和实际占用率保持为空,不用理论值代替测量值。参数字节、状态字节和 CUDA 启动数来自张量形状与实际调用路径,并明确标为逻辑统计。

单卡实验的边界

  • 多卡模型并行或 ZeRO 效率;
  • 1.3B 推理使用随机权重,只报告完整系统速度、缓存和显存指标。

当前结果支持单张 H800 上公开的 400M/1.3B 完整优化器步骤、1.3B 配置推理和递推内核分解。多卡问题需要独立的张量并行或 ZeRO 实验。