跳到主要内容

G5 DSA compute 补全建模设计规格

版本:1.0.0 状态:Accepted 创建日期:2026-06-22 最后更新:2026-06-22 作者:xiang.li 前置G5-计算算子建模方法分层设计规格G5-计算建模设计规格G5-softmax算子建模设计规格

版本号规则 (SemVer):

  • major (X.0.0):DSA 算子分解体系重构、合成语义变更
  • minor (1.X.0):新增稀疏算子复用本契约、扩展访存边/域规则(向后兼容)
  • patch (1.0.X):修正笔误、补充说明

变更历史

版本日期变更说明
1.0.02026-06-22初版:补全 DSA compute 缺失项(indexer 全 N 评分 + topk 选择 + 稀疏 KV gather + softmax),含访存边不双算与带宽域分阶段契约

@tbl-spec-gdsa-01 文档变更历史


概述

本 spec 定义 G5 对 DSA(Deep Sparse Attention)稀疏注意力的算子分解补全:把当前「只发 5 个 matmul、用 topk 截断的 N 直接做稀疏注意力」补成「lightning indexer 全 N 评分 + topk 选择 + 稀疏 KV gather + 稀疏注意力(含 softmax)」的完整链。这是正确性补全——当前分解漏掉了 DSA 的主导计算项,与 DSA 是否有上下文并行拐点无关。

本 spec 是父 spec 方法分层在 DSA 稀疏注意力上的落地:indexer 评分走 matmul(算力受限)+ 向量算子(访存受限),topk 选择与 gather 走不规则算子方法(专用模型)。

背景

G5 当前的 DSA 算子分解漏掉 DSA 的主导计算。DSA 层只产出 5 个 matmul,稀疏注意力直接用 effective_kv = min(kv_seq_len, topk) 作收缩维,假设 topk 的 KV 已选好,跳过选择前的评分。三个量化缺口:

  • lightning indexer 全 N 评分整块缺失,且是长上下文主导项:DSA 选 topk 前要对全部 N 个 key 算 index score,是 $O(N^2)$ 全量扫描。indexer 评分与稀疏注意力的算力比为
$$\begin{equation} \frac{F_{\text{indexer}}}{F_{\text{sparse-attn}}} = \frac{N^2 \cdot n_h^I \cdot d^I}{N \cdot \text{topk} \cdot d_{\text{main}}} = \frac{N \cdot n_h^I \cdot d^I}{\text{topk} \cdot d_{\text{main}}} \label{eq:gdsa-indexer-ratio} \end{equation}$$

比值随 $N$ 线性增长(topk 固定),故长上下文下 indexer 评分主导 DSA 注意力计算。当前 G5 完全不算它——稀疏注意力($O(N \cdot \text{topk})$)独占 DSA 注意力计算,漏掉随 $N$ 增长的 indexer 主导项。

  • DSA 注意力无 softmax:DSA 走裸 matmul 发射路径,稀疏注意力的 softmax 未建模(其他 attention 的 softmax 已在前置 spec 建模,但 DSA 未接入)。
  • 稀疏 KV gather 无模型:按 topk 索引从 KV cache 收集 KV 是数据依赖的散列访存(token 级、不连续),当前无任何访存边表达。

驱动力:正确性。G5 的目标是可信的部署性能仿真,DSA 注意力漏掉主导计算使 DSA 的 compute 数字系统性偏低。补全与"DSA 有无拐点"无关——后者是另一个口径问题(拐点地图用同一不完整 compute 口径,其 DSA 结论需单独复核,不在本 spec)。

名词定义

下表钉死本 spec 用到的核心名词。

名词定义与易混淆概念的区分
lightning indexerDSA 的轻量打分器:低秩 query + 多头 ReLU 加权和,头数/头维/精度远小于主注意力与主注意力区分:indexer 只算选择用的 index score,不产出注意力输出
index scoreindexer 给每个 (query, key) 算的相关性标量 $I_{t,s}$与注意力 score(QK^T)区分:低维、ReLU 加权、仅用于选 topk
全 N 评分对全部 N 个 key 算 index score 的 $O(N^2)$ 计算DSA 长上下文主导计算项
topk 选择按 index score 选分最高的 topk 个 key全局 argmax,需全 N 视野、不能提前剪枝
稀疏 KV gather按 topk 索引从 KV cache 收集对应 KV 的数据依赖访存token 级、不连续(散列),区别于块级连续 gather
稀疏注意力在选中的 topk 个 KV 上做标准 softmax 注意力$O(N \cdot \text{topk})$,区别于稠密 $O(N^2)$
访存边带域一条访存边占用的物理带宽资源类别(LMEM / NoC / HBM / C2C)gather 域随 prefill/decode 分,不固定
选择成本topk 选择的算子级成本模型(全 N 扫描量级,厂商中立)不复用厂商排序引擎专用公式
串行链评分 → 选择 → gather → 稀疏注意力 的依赖顺序必须连依赖边,否则 wall-clock 被并行算子掩盖
unvalidated 门控底层未标定时绝对计算时长不对外承诺、只支持相对比较继承父 spec

目标与非目标

目标 / 需求清单(逐条可核对):

  • 需求:DSA 算子分解补入 lightning indexer 全 N 评分——index score 计算分解为 q·K 点积(matmul 形,主导,复用 matmul 模型)+ ReLU + per-head 加权和(向量算子),收缩到全 N 维(非 topk)。
  • 需求:indexer 全 N 评分与现有稀疏注意力评分不双算(前者收缩维 = 全 N、低维 index head;后者 = topk、主注意力维,两个不同算子)。
  • 需求:DSA 稀疏注意力接入 softmax(复用前置 softmax 算子建模),使 softmax 串行计入 DSA 注意力时长。
  • 需求:稀疏 KV gather 建为数据依赖的散列访存边——按 topk 索引收集 KV,建模"散列收集 → 连续 buffer"的搬运量;稀疏注意力的 KV 访存边改为从该连续 buffer 读,与 gather 不双算 KV
  • 需求:gather 访存边带宽域随阶段分——prefill 的 KV 驻留片上、decode 的 KV 在 HBM cache,不固定单一带宽域;带域标签作升档钩子。
  • 需求:topk 选择建为厂商中立的选择成本(全 N 扫描量级),不复用厂商专用排序引擎公式;选择需全 N 视野、不能提前剪枝。
  • 需求:评分 → 选择 → gather → 稀疏注意力 串行链的依赖边连对,使各项串行计入 wall-clock、不被并行算子掩盖。
  • 需求:绝对计算时长在底层未标定时门控 unvalidated(继承父 spec),相对/趋势可信。

非目标(明确不做):

  • 非目标:A2(向量∥矩阵真重叠 + 带宽争用 + compute↔comm 真依赖)。
  • 非目标:KV 变放置 + 缓存命中率(hit rate)建模。变放置/hit-rate 是服务系统层概念,defer 请求级 DES(父 spec 已 defer KV-HBM 带宽共享);gather 访存边带域标签作其升档钩子。
  • 非目标:既有计算引擎的厂商命名(TIU/HAU 等)改功能名——独立架构议题,本 spec 只确保不新增厂商排序引擎依赖。
  • 非目标:DSA 训练(indexer 两阶段训练、梯度 detach)——本 spec 只建推理计算时长。
  • 非目标:indexer 评分的近似/分块优化(radix-select 等具体算法)——本 spec 建全 N 评分的算子成本,不建具体选择算法实现。
  • 非目标:绝对精度。无真机锚点,继承父 spec 相对可信 / 绝对门控。
  • 非目标:拐点地图 DSA 结论的复核。其 compute 口径缺主导项致结论可能错,属单独修正,不由本 spec 驱动。

用例说明

假设本设计已实现,一个开发者评估 DSA 层 prefill 的计算时长:

  1. 输入:DSA 层描述——序列长 $S$、KV 长 $N$、index head 数 $n_h^I$、index head 维 $d^I$、topk、主注意力维。
  2. 投影(已有):q_proj / k_proj / weights_proj 三个 matmul。
  3. indexer 全 N 评分(补入):对全 N 个 key 算 index score——q·K 点积(matmul 形:$n_h^I$$[S, d^I] \times [d^I, N]$,FP8)+ ReLU + per-head 加权和(向量算子)。这是长上下文主导项。
  4. topk 选择(补入):在 N 个 index score 上选 topk——厂商中立选择成本(全 N 扫描量级)。
  5. 稀疏 KV gather(补入):按 topk 索引从 KV cache 散列收集 topk 个 KV → 连续 buffer。访存边带域:prefill 片上、decode HBM。
  6. 稀疏注意力(已有 matmul + 补 softmax):在 buffer 里的 topk KV 上做 attn_score + softmax + attn_out。KV 访存边从 buffer 读,不与 gather 双算。
  7. 合成:DSA 计算时长 = 投影 + indexer 评分 + 选择 + gather + 稀疏注意力,各项按串行链依赖计入。
  8. 输出:含全部缺失项的 DSA 计算时长(ns)。长上下文下 indexer 评分主导,不再被漏算;绝对值 unvalidated 门控。

详细设计

概念模型

DSA 计算时长由分解链各算子时长按依赖串成,每算子按其瓶颈选方法(父 spec 方法分层):

算子瓶颈/方法收缩维 / 量级
q/k/weights 投影算力 / matmul已有
indexer 全 N 评分(q·K)算力 / matmul(FP8,低维 index head)全 N,$O(N^2 \cdot n_h^I \cdot d^I)$主导
indexer ReLU + 加权和访存 / 向量算子全 N,小
topk 选择不规则 / 厂商中立选择成本全 N 扫描量级,小
稀疏 KV gather访存 / 数据依赖散列 DMAtopk 个 KV bytes
稀疏注意力 score + softmax + out算力 + 访存 / matmul + 向量topk

@tbl-gdsa-decomp DSA 算子分解与方法

合成:各算子时长按 的串行链依赖相加(A1 边界,不建真重叠)。

$$\begin{equation} t_{\text{DSA}} = t_{\text{proj}} + t_{\text{indexer}} + t_{\text{topk}} + t_{\text{gather}} + t_{\text{sparse-attn}} \label{eq:gdsa-serial} \end{equation}$$

其中 $t_{\text{indexer}} = t_{\text{qK}} + t_{\text{relu-wsum}}$$t_{\text{sparse-attn}} = t_{\text{score}} + t_{\text{softmax}} + t_{\text{out}}$

indexer 全 N 评分

index score 对全部 N 个 key 计算(非 topk),是 DSA 长上下文主导计算:

$$\begin{equation} I_{t,s} = \sum_{h=1}^{n_h^I} w_{t,h}^I \cdot \mathrm{ReLU}\!\left(\mathbf{q}_{t,h}^I \cdot \mathbf{K}_s^I\right) \label{eq:gdsa-index-score} \end{equation}$$

分解为:

  • q·K 点积(主导)$n_h^I$ 个头的 $[S, d^I] \times [d^I, N]$ 批量 matmul(MQA 共享 key),FP8 精度。复用 matmul 模型,收缩维 = 全 N。
  • ReLU + per-head 加权和:逐元素 ReLU + 跨头加权归约,访存受限向量算子。
  • indexer query 投影(小项):V4 indexer 用低秩 query(先降维到 latent 再上投影出 indexer head),V3.2 直接投影。该投影是 $\propto S$ 的小 matmul(远小于 $O(N^2)$ 评分),归到投影项建模(复用 matmul),不作主导项、也不忽略。

与稀疏注意力评分不双算:indexer 评分收缩维 = 全 N、维度 = 低维 index head($d^I$);稀疏注意力 score 收缩维 = topk、维度 = 主注意力维。两个不同 matmul,口径不重叠。

设计原理:indexer 是 $O(N^2)$ 全量扫描,常数小(低头维 + FP8)但长上下文下绝对量级主导。漏掉它使 DSA 注意力计算系统性偏低——这是本 spec 要补的核心缺口。

topk 选择

topk 选择在 N 个 index score 上选分最高的 topk 个,是全局 argmax:需对全 N 算完 score 才能选、不能提前剪枝、不能按块近似。

建为厂商中立的选择成本(全 N 扫描量级的参数化成本),不复用厂商专用排序引擎公式——厂商排序引擎的 cycle 模型不可得(参照源为占位),且选择非 DSA 主导成本。选择成本作小项,gated unvalidated。

设计原理:父 spec 把不规则算子归"专用模型 + trace 校验",但 DSA 的 topk 选择在主导成本(评分 matmul + gather)之外是小项,且无厂商 cycle 参照,故建轻量厂商中立选择成本即可,不投入精确排序网络建模。

稀疏 KV gather

gather 按 topk 索引从 KV cache 收集对应 KV,是 token 级、不连续的数据依赖散列访存。建为 DMA 访存边:

$$\begin{equation} t_{\text{gather}} = \frac{\text{bytes}_{\text{topk-KV}}}{\text{BW}_{\text{domain}(\text{stage})}} \label{eq:gdsa-gather-edge} \end{equation}$$

不双算约束:gather 建模"按 topk 索引散列收集 KV → 写入连续 buffer"的搬运量(topk 个 KV 的 bytes)。稀疏注意力的 KV 访存边改为从该连续 buffer 读,不再独立穿 KV cache——否则同一批 topk KV 被 gather 边与稀疏注意力 matmul 访存边各算一次。

带宽域随阶段分

  • prefill:KV 刚由 k_proj 算出、驻留片上(LMEM / 片内段),gather 走片内带宽域;
  • decode:KV 在 HBM cache,gather 走 HBM 带宽域。

不固定单一带宽域——prefill 按 HBM 算是错域(KV 在片上却按片外带宽,同跨芯片通信错走片内带宽的同构错误)。带域标签作升档钩子:未来请求级 DES / 缓存层级模型(变放置 + hit rate)可按域接管 gather 访存时间,不改本模型。

数据依赖性的处理:gather 散列访问的随机性代价本 spec 不建模(按搬运 bytes / 带宽的顺序口径占位,gated unvalidated),与父 spec「不规则算子专用模型 + 关键点校验」一致,随机访问惩罚待真机/trace 校验后补。

DSA 稀疏注意力与 softmax

DSA 稀疏注意力在 gather 得到的 topk KV 上做标准注意力:attn_score(topk 收缩)+ softmax + attn_out。softmax 复用前置 G5-softmax算子建模设计规格 的向量吞吐模型,串行计入。

DSA 稀疏注意力的 score/softmax/out 三项须走支持 softmax 串行计入的发射路径(当前 DSA 走裸 matmul 路径、不含 softmax)——使 softmax 在 DSA 注意力中不被漏算。

串行链与合成

评分 → 选择 → gather → 稀疏注意力 是数据依赖串行链(选择依赖全 N 评分、gather 依赖选择结果索引、稀疏注意力依赖 gather 的 KV)。各算子时长按依赖串行计入

依赖边必须连对:串行链各跨引擎依赖(matmul→向量→DMA→matmul)的依赖边须显式建立,否则后继算子被并行算子掩盖、wall-clock 零贡献(前置 softmax 已验证:发射算子但不连依赖边会被并行算子完全掩盖)。

A1 边界:串行计入,不建向量∥矩阵真重叠 + 带宽争用(A2)。

标定边界与门控

  • 结构正确性(本 spec 可证伪):DSA 分解含全部缺失项(indexer 评分 + 选择 + gather + softmax),各算子时长非零且按串行链计入;indexer 评分收缩维 = 全 N。
  • 绝对正确性(不承诺):各算子常数未对硅验证,绝对计算时长 unvalidated 门控(继承父 spec)。

集成点

  • 上游:DSA 层产出算子分解(投影 + indexer 评分 + 选择 + gather + 稀疏注意力)。
  • 下游:DSA 计算时长喂 G5 事件驱动时序层。
  • 与 matmul / softmax 模型:indexer q·K 复用 matmul 模型(FP8)、稀疏注意力 softmax 复用 softmax 模型。
  • 与请求级 DES:gather 访存边带域标签是与未来变放置 / hit-rate 模型的契约边界。

引用

备选方案

维度补全分解(选定)维持现状(topk 截断)topk 复用厂商排序引擎
indexer 全 N 评分补入(matmul + 向量),主导项不漏跳过,DSA compute 系统性偏低不涉及评分
topk 选择成本厂商中立选择成本(小项)不算厂商排序引擎 cycle 公式
厂商中立否(绑厂商排序引擎)
KV gather散列 DMA 访存边 + 分域 + 不双算不算不涉及

选择理由:补全分解在正确性上胜出——indexer 全 N 评分是 DSA 长上下文主导计算,维持现状漏掉它使 DSA 数字系统性偏低(违 No Simplify)。topk 选择不复用厂商排序引擎:其参照 cycle 模型不可得(占位)、且选择非主导成本,厂商中立轻量选择成本即可,避免新增厂商引擎依赖。否决"维持现状"=漏主导项;否决"复用厂商排序引擎"=无参照 + 绑厂商 + 非主导。父 spec 附录 A 已有完整建模路径对比,本篇为其在 DSA 上的落地,不重做业界调研。

非功能性需求

维度本 spec 的考虑
性能(仿真精度)结构正确性:分解含全部缺失项。绝对精度:不承诺(无真机锚点),相对可信
性能(仿真速度)各算子闭式 / 解析成本,indexer 评分复用 matmul 模型,不进事件驱动热循环瓶颈
兼容性indexer / 选择 / gather 参数下沉芯片或模型配置,需同步 _template;新增不破坏既有算子。gather 带宽域字段用 _gb_per_s 后缀(项目命名规则)
可靠性串行链依赖边连对防 wall-clock 掩盖;gather 不双算 / 分域防口径错误
安全性 / 隐私N/A——内部仿真器

局限与后续工作

局限(本设计的代价)

风险 / 局限影响缓解措施
各算子常数未对硅验证DSA 绝对计算时长精度未知门控 unvalidated;结构正确性可证伪;待真机锚点
gather 散列随机访问惩罚不建模gather 时长按顺序 bytes/带宽偏乐观;DSA token 级散列 gather 相对 NSA 块级连续 gather 的访存劣势在本模型暂不体现,DSA-vs-NSA 访存对比不可据此下结论顺序口径占位;带域标签预留升档;待 trace/真机校验
topk 选择成本厂商中立、非精确小项,选择绝对成本不精确作小项 gated;非主导,影响有限
KV 变放置 + hit-rate 不建模prefill/decode 二分外的缓存层级不表达defer 请求级 DES;带域标签作升档钩子
A1 串行、不建真重叠串行链各项相加偏保守A1 边界;真重叠留 A2

后续工作

  • 请求级 DES 层(高优先级,独立 spec)——KV 变放置 + hit-rate + 带宽域共享,按 gather 带域标签接管。
  • gather 随机访问惩罚标定(中优先级,前置:trace / 真机)——散列访问的随机性代价。
  • 真机标定锚点(高优先级,前置:真机渠道)——升相对到绝对。
  • 拐点地图 DSA 结论复核(中优先级,独立)——用补全后的 compute 口径重算 DSA ratio,复核拐点存活性。
  • 真重叠建模(中优先级,A2)——向量∥矩阵 + 带宽争用。

验收标准

场景指标目标值测试方法
indexer 评分补入DSA 分解含 indexer 全 N 评分算子收缩维 = 全 N(非 topk),非零构造 DSA 层验分解含 indexer 评分、收缩维 = N
indexer 主导性(趋势,非绝对量级)indexer 评分占 DSA 注意力计算的比随 S 单调上升比值随 S 单调增( 的 ∝N 签名);验趋势,不验具体倍数扫 S 验 indexer/稀疏注意力比单调上升
评分不双算indexer 评分 vs 稀疏注意力 score收缩维/维度不重叠(全 N 低维 vs topk 主维)比对两 matmul 收缩维与张量
DSA 含 softmaxDSA 稀疏注意力计算时长含非零 softmax 项、串行计入跑 DSA 验 softmax 分量非零
gather 不双算gather 访存边 vs 稀疏注意力 KV 访存边topk KV bytes 不重复计(gather 收集,attn 从 buffer 读)比对两访存边覆盖
gather 分域gather 带域标签prefill 片内域 / decode HBM 域各阶段验 bandwidth_domain
topk 厂商中立选择成本不依赖厂商排序引擎、随参数变注入参数验成本变、无厂商引擎依赖
topk 全 N 视野选择成本随全 N 扫描量级变成本随 N 线性增(非随 topk),体现"全 N 视野不剪枝"固定 topk 扫 N 验选择成本随 N 增
串行链不掩盖评分→选择→gather→稀疏注意力 wall-clock各项串行计入,后继 start ≥ 前驱 endwall-clock 区间断言后继不与前驱并行
门控unvalidated 置位绝对查询返回相对、不返回绝对置位标志调绝对查询

单元测试关键 case

  • DSA 层分解含 indexer 全 N 评分(收缩维 = N)+ 选择 + gather + softmax,缺一即红。
  • 扫 S(128K→1M)验 indexer 评分占 DSA 注意力比随 S 增($O(N^2)$ 签名),证补全改变了 DSA compute 口径。
  • gather 与稀疏注意力 KV 访存边不双算(比对覆盖张量)。
  • 删 indexer 评分发射 / 串行依赖边 → 对应 case 变红(变异有效)。

附录

附录 A:业界调研

本篇是父 spec 方法分层在 DSA 上的落地,完整建模路径对比见父 spec 附录 A。DSA 机制参照:

参照机制与本篇关系
DeepSeek DSA (V3.2) / CSA (V4)lightning indexer(低秩 query + ReLU 加权 + FP8)$O(N^2)$ 全 N 评分 → topk 选择 → 稀疏注意力算子分解三段的来源;indexer 主导性依据
NSA (Native Sparse Attention)压缩/选择/滑窗三分支,块级连续 gather对比:NSA 块级 gather 连续,DSA token 级散列
MoBA块级 gating,$O(N/B)$ 选择对比:粒度粗、gather 连续
TPUPerfHAU 排序 cal_cycle 占位、gather 当 GDMA bytes 搬运无随机访问惩罚参照点:topk 无厂商 cycle 参照、gather 按 bytes 口径

@tbl-gdsa-survey DSA 机制与建模参照

本篇差异化:补全 G5 的 DSA 算子分解,把当前漏掉的 indexer 全 N 评分(主导)+ topk 选择 + 散列 gather + softmax 建出来,使 DSA compute 口径完整。indexer 评分复用 matmul、softmax 复用前置 spec、topk/gather 走不规则算子轻量模型。

引用(DOI 优先):

附录 B:实现说明

  • gather 带宽域复用既有引擎、零新增常数:prefill 域路由到既有片内 SDMA 引擎带宽、decode 域路由到既有 GDMA(HBM)引擎带宽,不硬编新带宽常数。未知域 panic。独立 KV-cache 带宽段待请求级 DES 加专门字段。
  • op_count 为代码固化常量、与 workload 层对齐:softmax / ReLU-wsum / topk-select 的子步骤 op_count 是跨厂商算法常数,固化在 Rust(VectorConfig),与 workload 层算子的 compute_ops 同口径(如 ReLU-wsum op_count=3)防两侧漂移,非 YAML 字段。
  • indexer 评分批量维 G 折进 M:indexer 全 N 评分是 batch matmul(G=batch·n_index_heads),时序上 G 折进 M 维计(等价),避免少算 G 倍。
  • 串行链跨引擎依赖:评分(matmul)→ReLU-wsum(vec 等 tiu)→topk(vec 等 vec)→gather(sdma 等 vec)→稀疏注意力(dma 等 sdma) 用三类引擎依赖边(vec dep_engine / vec_dep / sdma_dep)逐跳连,防 wall-clock 掩盖。

附录 C:参数实例

DSA / indexer 参数(来源:DeepSeek DSA/V4 参照),落地配置:

参数含义参照值(V4 CSA)
$n_h^I$index head 数64
$d^I$(权威源记 $c^I$index head 维128
indexer 精度index score 计算精度FP8
topk选择的 KV 数2048
MQAindexer head 共享 key

@tbl-gdsa-params DSA / indexer 参数实例

indexer 评分精度 FP8 影响其 matmul 成本;topk / $n_h^I$ / $d^I$ 影响 $O(N^2)$ 主导项常数。具体取值随模型配置,V4 CSA 作参照实例。indexer / 选择 / gather 参数缺字段时 raise 带字段名(继承父 spec 与 softmax spec 的配置加载契约,不取默认)。