状态(Status): Draft 作者(Authors): @clc2025 创建日期(Created): 2026-08-24 更新日期(Updated): 2026-08-24 相关 Issue/PR: #123(关联 Issue/PR 以便追踪背景)
TENPU(TransformerEngineNPU)是对标 NVIDIA Transformer Engine(NVTE)的昇腾实现。为保证 TENPU 与 NVTE 的 API 一致性(签名、语义、数值),本提案设计一套基于 ATK 算子测试工具 的一致性看护体系:以 Megatron-Core 对 TE 的静态调用分析(110 个唯一 API / 507 处调用)为需求源,对需要数值看护的接口建立 ATK golden 闭环(NPU 执行 TENPU ↔ CUDA 采集 NVTE golden ↔ 数值 + API 契约对比),对纯接口兼容类用轻量 pytest 契约检查。
apply_rotary_pos_emb
Float8Tensor
ops.GroupedLinear
npu_layernorm_grad
aclnnLayerNormBackward
tests/pytorch
目标:
非目标:
[语义+性能+内存]
约束:NPU 需 910B 系列;CUDA 主机需 pinned NVTE + GPU;golden 与运行端必须同版适配器代码(契约 exact-compare)。
以 Megatron-Core r0.18.0 TE API 分析表(Megatron_Core_r0.18.0_TE_API_Analysis_一致性看护细化.xlsx)为需求源,按表格分类分层看护:
Megatron_Core_r0.18.0_TE_API_Analysis_一致性看护细化.xlsx
核心模式:no-CPU-reference golden 闭环
atk case(生成用例 JSON) → collect_nvte_golden.py(CUDA 主机,跑 NVTE,产出 input.bin + output_*.pt + manifest) → atk task --input_data(NPU 主机,跑 TENPU,accuracy_load 节点对比 golden) → 数值(mare/mixed_tolerance)+ 契约(exact)对比 → 报告
<name>.yaml
generate_<name>.py
function_<name>.py
collect_nvte_golden.py
nodes_npu_vs_golden.yaml
result_schema.json
README.md
BenchmarkDevice
_data
符号级判定(精度看护范围收窄):
cast_master_weights_to_fp8
QuantizedTensor
BasicLinear
Bias
LayerNorm
模块清单(已建 10 个):linear、rmsnorm、layernorm_linear、grouped_linear、dot_product_attention、rope、fused_activation、quantization、fused_optimizer、multi_tensor。
linear
rmsnorm
layernorm_linear
grouped_linear
dot_product_attention
rope
fused_activation
quantization
fused_optimizer
multi_tensor
核心流程(以量化为例):
atk case
_sanitize_args
atk task --input_data
契约设计:只含跨端必然一致的字段(fp8_format/shapes/dtypes 等),数据依赖浮点(amax/scale)排除——因契约 exact-compare,任何端差异字段都会误报。
性能:small 层 presubmit 快跑,real 层合入前跑;用例数 8~32/模块,单模块数秒~分钟。
_comparators.py
--deterministic-mode
已沉淀的硬约束(自动化生成前置):
api_type
multi_tensor_l2norm
nesterov
transformer_engine
cpu
standard.acc
<name>_mare
mixed_tolerance
register_module_comparators
调用示例(fused_optimizer 流程):
atk case -f tests/atk/module/fused_optimizer/fused_optimizer.yaml -p tests/atk/module/fused_optimizer/generate_fused_optimizer.py # CUDA 主机 python tests/atk/module/fused_optimizer/collect_nvte_golden.py --cases result/.../all_fused_optimizer.json --input-dir ./fused_optimizer_inputs --golden-dir ./fused_optimizer_goldens # NPU 主机 atk task -c result/.../all_fused_optimizer.json -n tests/atk/module/fused_optimizer/nodes_npu_vs_golden.yaml -p tests/atk/module/fused_optimizer/function_fused_optimizer.py --input_data ./fused_optimizer_inputs -tk accuracy
各模块 README 即使用手册(范围/工作流/设备验证清单/golden 重采规则);总体流程见 tests/atk/REPORT.md §5。
tests/atk/REPORT.md
atk task
/home/c00893505/atk-tenpu/ATK
aclnnLayerNorm(Backward)
TENPU_LayerNorm_设计文档.md
atk/case_generator
atk/tasks/executors
golden 闭环
no-CPU-reference
mare/mixed_tolerance
欢迎加入社区,感谢您对社区的贡献 🎉!
状态(Status): Draft
作者(Authors): @clc2025
创建日期(Created): 2026-08-24
更新日期(Updated): 2026-08-24
相关 Issue/PR: #123(关联 Issue/PR 以便追踪背景)
1. 概述
1.1 简介
TENPU(TransformerEngineNPU)是对标 NVIDIA Transformer Engine(NVTE)的昇腾实现。为保证 TENPU 与 NVTE 的 API 一致性(签名、语义、数值),本提案设计一套基于 ATK 算子测试工具 的一致性看护体系:以 Megatron-Core 对 TE 的静态调用分析(110 个唯一 API / 507 处调用)为需求源,对需要数值看护的接口建立 ATK golden 闭环(NPU 执行 TENPU ↔ CUDA 采集 NVTE golden ↔ 数值 + API 契约对比),对纯接口兼容类用轻量 pytest 契约检查。
1.2 动机
apply_rotary_pos_emb导入路径、Float8Tensorlegacy shim、LayerNorm dummy、ops.GroupedLinear未导出、npu_layernorm_grad与aclnnLayerNormBackward数值差)。tests/pytorch单元测试,但缺 与 NVTE 的跨实现数值一致性 看护。1.3 目标
目标:
非目标:
[语义+性能+内存]链路级行为(checkpoint/offload/fp8 上下文,表格注明由上层 case 覆盖)2. 用例分析
约束:NPU 需 910B 系列;CUDA 主机需 pinned NVTE + GPU;golden 与运行端必须同版适配器代码(契约 exact-compare)。
3. 方案设计
3.1 总体方案
以 Megatron-Core r0.18.0 TE API 分析表(
Megatron_Core_r0.18.0_TE_API_Analysis_一致性看护细化.xlsx)为需求源,按表格分类分层看护:核心模式:no-CPU-reference golden 闭环
<name>.yaml/generate_<name>.py/function_<name>.py/collect_nvte_golden.py/nodes_npu_vs_golden.yaml/result_schema.json/README.md3.2 技术选型
BenchmarkDevice无 GPU,不用其内置 single_bm_data是 float8、NVTE 是 uint8,需统一位视图符号级判定(精度看护范围收窄):
cast_master_weights_to_fp8/QuantizedTensor/ 通信算子(AllReduce/ReduceScatter/gather/reduce_scatter_along_first_dim)/ 抽象基类:无数值分叉目标 → 免 ATK 精度 guard,走 pytest 语义/API 兼容BasicLinear/Bias/LayerNorm:与 module 同 kernel → 免独立 ops guard(module guard 覆盖)3.3 功能与性能设计
模块清单(已建 10 个):
linear、rmsnorm、layernorm_linear、grouped_linear、dot_product_attention、rope、fused_activation、quantization、fused_optimizer、multi_tensor。核心流程(以量化为例):
atk case生成用例(small/real 两层,128 对齐预留)collect_nvte_golden.py产 golden(含_sanitize_args去 numpy 标量)atk task --input_data加载同一 input.bin,TENPU 执行,与 golden 对比契约设计:只含跨端必然一致的字段(fp8_format/shapes/dtypes 等),数据依赖浮点(amax/scale)排除——因契约 exact-compare,任何端差异字段都会误报。
性能:small 层 presubmit 快跑,real 层合入前跑;用例数 8~32/模块,单模块数秒~分钟。
3.4 安全隐私与 DFX 设计
_comparators.py兼容老 ATK);导入路径按报告 API 清单字段取、不假设顶层导出(FusedAdam 在 optimizers、Float8Tensor 需 legacy shim)。--deterministic-mode/seed);golden 可重采。已沉淀的硬约束(自动化生成前置):
atk case静态统计 KeyError)api_type不能含 "tensor"/"method" 子串(ATK 子串匹配误判需额外 input 文件)multi_tensor_l2norm已踩)nesterov需 momentum>0 等)3.5 编程与调用设计
3.5.1 编程模型基本设计
transformer_engine(TENPU)editable 安装。function_<name>.py只走设备执行路径,cpubackend 显式 raise。3.5.2 接口定义与设计(模块文件)
<name>.yamlstandard.acc选比较器(<name>_mare/mixed_tolerance)generate_<name>.pyfunction_<name>.pyregister_module_comparators;BaseApi 拒 cpu;符号按报告路径导入collect_nvte_golden.py_sanitize_args去 numpy 标量;manifest 记录 SHAnodes_npu_vs_golden.yamlresult_schema.jsonREADME.md调用示例(fused_optimizer 流程):
atk case -f tests/atk/module/fused_optimizer/fused_optimizer.yaml -p tests/atk/module/fused_optimizer/generate_fused_optimizer.py # CUDA 主机 python tests/atk/module/fused_optimizer/collect_nvte_golden.py --cases result/.../all_fused_optimizer.json --input-dir ./fused_optimizer_inputs --golden-dir ./fused_optimizer_goldens # NPU 主机 atk task -c result/.../all_fused_optimizer.json -n tests/atk/module/fused_optimizer/nodes_npu_vs_golden.yaml -p tests/atk/module/fused_optimizer/function_fused_optimizer.py --input_data ./fused_optimizer_inputs -tk accuracy3.5.3 编程手册设计
各模块 README 即使用手册(范围/工作流/设备验证清单/golden 重采规则);总体流程见
tests/atk/REPORT.md§5。4. 测试设计
_sanitize_args。atk taskNPU vs CUDA-NVTE golden,确定性下通过率。linear/rmsnorm/layernorm_linear/grouped_linear/dot_product_attention/rope/fused_activation/multi_tensor(8/8)quantization(9/10,case9 stale golden 已重采,10/10 复测待低精设备)、fused_optimizer(8/8 待复测)5. 缺点和风险
6. 现有技术
/home/c00893505/atk-tenpu/ATK):昇腾算子测试工具,提供用例生成/多节点执行/精度对比/报告。aclnnLayerNorm(Backward)等;npu_layernorm_grad等独立自定义 op。7. 未解决问题
附录
Megatron_Core_r0.18.0_TE_API_Analysis_一致性看护细化.xlsx;tests/atk/REPORT.md;TENPU_LayerNorm_设计文档.md;ATKatk/case_generator、atk/tasks/executors。golden 闭环= CUDA 采 NVTE + NPU 对比;no-CPU-reference= 适配器不实现 CPU 参考;mare/mixed_tolerance= ATK 单标杆/混合容差精度标准。欢迎加入社区,感谢您对社区的贡献 🎉!