已合并
fix(ttk): fix GEIR numpy import, add e8m0fnu dtype alias, and preload plugin modules #182
fix(ttk): fix GEIR numpy import, add e8m0fnu dtype alias, and preload plugin modules #182
已合并
wangqi_ai创建于 13 天前
wangqi_ai
13 天前

问题背景

本次修改解决四个独立问题:

  1. GEIR 模式 FP4 输出处理报错ttk/core_modules/geir/profiling.py 中使用 numpy.dtype("uint8"),但该文件导入的是 import numpy as np,直接引用 numpy 会导致 NameError: name 'numpy' is not defined,影响 GEIR 模式下 FP4 输出的处理。

  2. ACLNN 模式 mxscale 输出报错:PyTorch 使用 float8_e8m0fnu 作为 E8M0 的 dtype 名称,但 TTK 的 DATA_TYPE_DICT 只包含 float8_e8m0,缺少 float8_e8m0fnu 映射。这会导致在 ACLNN 模式下为 mxscale 输出创建 aclTensor 时抛出 KeyError: 'float8_e8m0fnu'

  3. 插件懒加载导致校验误报:golden.py 模块在导入时调用 FrameworkApiInfoKeeper().register() 声明 OpOverloadPacket API 的参数信息。若插件未预先加载,用例校验会在插件懒加载之前执行,导致 INPUT_COUNT_EXCEEDED 误报。

  4. CI 静态检查失败:本 PR 触碰 dtypes.py 后,CI pre-commit 增量检查暴露了该文件预存的 ruff B904(except 内 raise 缺 from None)和 F841(未使用变量)违规,导致 /compile 触发的 CodeCheck 阶段失败。

修改内容

commit a4e7bd0

  1. ttk/core_modules/geir/profiling.py:将 numpy.dtype("uint8") 修正为 np.dtype("uint8"),与文件已有的 import numpy as np 保持一致。

  2. ttk/utilities/dtypes.py:在 DATA_TYPE_DICT 中新增 "float8_e8m0fnu": 37,与 PyTorch 的 dtype 命名对齐。

  3. ttk/cli/bridge.py:新增 _preload_plugin_modules() 函数(自 PR #173 迁移)。该函数在用例校验前导入 --plugin 目录下的所有 .py 模块,确保 golden.py 中声明的 API 参数信息在校验前已注册。

commit c32f03a

  1. ttk/utilities/dtypes.py 修复 ruff 违规:10 处 except 内 raisefrom None(B904);移除 4 处未使用变量(F841),包括 _mx_calculate_share_exp_nv 中的 FP32_EXPONENT_BIAS/FP32_MIN_NORMAL/ele_emax(copy-paste 残留死码,该函数用位操作算法不需要它们)以及 trans_np_fp4_e1m2_tensor_to_bfloat16/trans_np_fp4_e2m1_tensor_to_bfloat16 中的 out_tensor;并应用 pre-commit 安全修复(import 排序、无占位符 f-string 转普通字符串)。

commit a774858

  1. ttk/cli/bridge.pyttk/core_modules/geir/profiling.py:应用 pre-commit --fix 自动生成的安全风格修复,包括 import 排序、open() 冗余 "r" 参数移除、多行调用折叠,使本 PR 触碰的文件通过 CI 静态检查。

验证情况

  • GEIR 模式下 FP4 输出处理不再报 NameError,能正常完成 profiling。
  • ACLNN 模式下 mxscale 输出能正确创建 aclTensor,不再抛出 KeyError
  • 启用 --plugin 的用例不再出现 INPUT_COUNT_EXCEEDED 误报,校验流程正常通过。
  • pre-commit 全钩子通过(ruff-check/ruff-format/codespell 等)。
  • ruff 全规则检查 3 文件(dtypes.py/bridge.py/profiling.py)0 错误,ruff format --check 全部已格式化。
  • pytest tests/utilities/ tests/core_modules/comparison/ tests/core_modules/testcase_manager/test_normalize.py 共 227 个用例通过。
  • LSP 诊断 dtypes.py 无 error;模块导入、DATA_TYPE_DICT['float8_e8m0fnu']==37trans_np_fp4_*_mx_calculate_share_exp_nv 运行正常。

关联

  • _preload_plugin_modules() 实现迁移自 PR #173。
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 wangqi_ai 的贡献)
Wwangqi_ai
13 天前 创建了 pull request,commit 252b716b
atomgit-bot
atomgit-bot
13 天前 评论:

变更摘要

该 PR 主要修复 TTK 在 GEIR 与 ACLNN 模式下因命名导入错误和缺失 dtype 别名导致的崩溃,并从 PR #173 迁移了插件模块预加载逻辑以消除验证阶段的误报失败。具体包括:将 geir/profiling.py 中的 numpy.dtype() 修正为 np.dtype()(该文件以 numpy as np 方式导入,原写法在处理 FP4 输出时会触发 NameError);在 utilities/dtypes.pyDATA_TYPE_DICT 中为 torch 使用的 dtype 名称 float8_e8m0fnu 增加别名(值为 37,与 float8_e8m0 一致),避免 ACLNN 模式下创建 aclTensor 时抛出 KeyError;并在 cli/bridge.py 中新增 _preload_plugin_modules(),在测试用例校验前提前导入 --plugin 目录下的 .py 模块,确保 golden.py 中的 FrameworkApiInfoKeeper().register() 在验证前完成 API 参数信息注册,避免因插件延迟加载导致的 INPUT_COUNT_EXCEEDED 误报。

主要改动

  • GEIR numpy 导入修复geir/profiling.py 中将 numpy.dtype("uint8") 改为 np.dtype("uint8"),消除处理 FP4 输出时的 NameError: name numpy is not defined 崩溃。
  • 新增 float8_e8m0fnu dtype 别名:在 utilities/dtypes.pyDATA_TYPE_DICT 中加入 "float8_e8m0fnu": 37,使其与现有 float8_e8m0 映射一致,避免 ACLNN 模式为 mxscale 输出创建 aclTensor 时的 KeyError
  • 插件模块预加载:在 cli/bridge.py 中新增 _preload_plugin_modules(sw),在 run_with_switches 的测试用例校验前遍历 sw.plugin_path 下的所有非下划线开头 .py 模块并执行导入,同时以 logging.debug 记录失败模块,从而保证插件注册信息在验证前生效。
likedislike
不准确?
atomgit-bot
atomgit-bot
13 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
13 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
13 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/ops-test-kit 王瑞, 王林木 (2/2) 王瑞, 王林木 (2/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

wangqi_ai, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robotCANN-robot成员
13 天前 将dengguojie,zhou-qilong,wangrui_,rxtfeng,loov1,chenqi317,fullt,llimwang,gubaocheng,liujun2025,OpSphere设为评审人
CANN-robotCANN-robot成员
13 天前 将dengguojie,zhou-qilong,wangrui_,rxtfeng,loov1,chenqi317,fullt,llimwang,gubaocheng,liujun2025,OpSphere设为审查人
Wwangqi_ai
13 天前 修改了pull request 的描述
wangqi_ai
13 天前 评论:

compile

likedislike
Wwangqi_ai
13 天前 update merge request[project id: 9872633, iid: 182, commit_id: 2a4046811bee6791330f3a08c341fa320ab2e3aa] virtual merging success
CANN-robotCANN-robot成员
13 天前 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
13 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
13 天前 添加了label:ci-pipeline-failed
wangqi_ai
13 天前 评论:

compile

likedislike
CANN-robotCANN-robot成员
13 天前 删除了label:ci-pipeline-failed
此处折叠了8条事件消息 查看更多
CANN-robotCANN-robot成员
13 天前 添加了label:cann-cla/yes
wangqi_ai
13 天前 评论:

compile

likedislike
Wwangqi_ai
13 天前 update merge request[project id: 9872633, iid: 182, commit_id: f5e9102c54bb87a1199d951b51b08d2baaf2f6a2] virtual merging success
CANN-robotCANN-robot成员
13 天前 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
13 天前 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
13 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
13 天前 添加了label:ci-pipeline-passed
Wwangqi_ai
13 天前 修改了pull request 的描述
RuiWang_成员
13 天前 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
13 天前 添加了label:approved
TangPC
TangPC
13 天前 评论:

/lgtm
/approve

likedislike
CANN-robot
CANN-robot成员
13 天前 评论:

The following users do not have permission to comment /lgtm or /approve on any module in this PR:
汤平川

likedislike
CANN-robot
CANN-robot成员
13 天前 评论:

The following users do not have permission to comment /lgtm or /approve on any module in this PR:
汤平川

likedislike
llimwang成员
13 天前 评论:

/lgtm
/approve

likedislike
CANN-robot
CANN-robot成员
13 天前 评论:

The following users do not have permission to comment /lgtm or /approve on any module in this PR:
汤平川

likedislike
CANN-robotCANN-robot成员
13 天前 添加了label:lgtm
CANN-robotCANN-robot成员
13 天前 合入了pull request