已合并
TT量化场景支持StreamK #7449
chen-shuai创建于 7月13日
TT量化场景支持StreamK #7449
已合并
chen-shuai创建于 7月13日
chen-shuai成员
7月13日

描述

本 PR 为 QuantBatchMatmulV3 的非 MX per-tensor 量化场景新增 StreamK 支持。在 M/N 较小、K 较大的场景下,通过切分 K 维提升核利用率,并复用已有 MX StreamK 的 BlockScheduler 和 workspace reduce 流程。

  • x1 和输出为 ND,weight 支持 ND 和 FRACTAL_NZ。
  • 支持 NN、NT、TN、TT 四种转置组合。
  • 仅支持不带 batch 的场景。
  • scale 和可选 x1Scale 均为 per-tensor,shape 为 {1}
  • 不支持真正的 per-token、per-channel、per-block 等量化模式。

支持以下 dtype 组合:

  1. int8/int8,scale 为 int64/uint64,可选 int32 bias,输出 fp16/bf16。
  2. int8/int8,scale 为 fp32/bf16,可选 int32 或与 scale 类型一致的 bias,输出 bf16。
  3. FP8 或 hifloat8,scale 为 int64/uint64,可选 fp32 bias,输出 fp16/bf16/fp32。
  4. FP8 或 hifloat8,scale 和 x1Scale 均为 fp32,可选 fp32 bias,输出 fp16/bf16/fp32。

FP8 支持 e4m3fn/e5m2 组合;hifloat8 仅支持 hifloat8/hifloat8,不支持 hifloat8 与 FP8 交叉输入。

Host Tiling 修改

  • 扩展 QBMMV3StreamKTiling::IsCapable(),允许符合要求的非 MX per-tensor 场景参与 StreamK 收益判断。
  • 继续复用 EvaluateStreamKBenefitGate(),根据核利用率和 MTE2 重复搬运收益决定是否进入 StreamK。
  • 区分 MX scale tensor 和 per-tensor 标量 scale 的 MTE2 搬运量估算。
  • StreamK 的 singleCoreK 按 256 Byte 对齐,统一不同 dtype 和转置场景的 K 分片要求。
  • 浮点 bias 需要在反量化后累加时,仅允许全 StreamK 调度,避免 DP tile 缺少对应的 AIV 后处理。
  • WeightNZ 场景放开双 per-tensor scale,并继续拦截 dynamic T-C 等非目标量化模式。

Kernel 修改

  • 新增 TensorApi Blaze per-tensor StreamK kernel 入口。
  • 复用已有 StreamK BlockScheduler,将 K 分片计算结果写入 workspace。
  • AIV 对 workspace partial 进行 reduce,并在 UB 上通过 Vector 完成 scale 反量化、可选 bias 累加、类型转换及最终结果写回。
  • int32 bias 以及整数编码 scale 对应的 fp32 bias 在 MMAD 累加域处理。
  • 浮点 scale 对应的浮点 bias在 AIV 反量化后处理。
  • 复用已有 StreamK kernelType=15,通过 dtype 和 format 编译期条件增加非 MX per-tensor kernel 实例。

Device 侧依赖配套的 ops-tensor StreamK 实现:
https://gitcode.com/cann/ops-tensor/pull/142

关联的Issue

https://gitcode.com/cann/ops-nn/issues/4584

测试

回归用例精度以及性能

文档更新

不涉及

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 chen-shuai 的贡献)
Cchen-shuai成员
7月13日 创建了 pull request,commit 9161d683
Cchen-shuai成员
7月13日 update merge request[project id: 7665709, iid: 7449, commit_id: 58829557c8f613fc803e255f0a35b4c940001a30] virtual merging success
Cchen-shuai成员
7月13日 强制推送  133 个提交:9161d683-132 commits from branch mastera3929554-StreamK_TT
Cchen-shuai成员
7月13日 update merge request[project id: 7665709, iid: 7449, commit_id: 908c3f1532e97a08f49d0dd4a599a785c0725c34] virtual merging success
CANN-robotCANN-robot成员
7月13日 添加了label:cann-cla/yes
此处折叠了357条消息 查看更多
tangweiwei2成员
27 天前 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
27 天前 添加了label:lgtm
CANN-robotCANN-robot成员
27 天前 关闭了关联的issue
CANN-robotCANN-robot成员
27 天前 合入了pull request
CANN-robot
CANN-robot成员
27 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike