已合并
feat: add tensorflow e2e #90
RuiWang_创建于 14 天前
feat: add tensorflow e2e #90
已合并
RuiWang_创建于 14 天前
RuiWang_成员
14 天前

当前PR是否有AI参与:

[ ] 否
[x] 是
__1. AI Agent 平台: opencode
__2. AI 模型: glm
__3. Prompt上下文 : e2e模式支持tensorflow框架

PR功能描述 / 为什么需要这个合入**:

  1. 支持e2e 模式tensorflow框架
  2. 支持e2e模式保留msprof数据

该PR关联的issue

(格式为fixes #<issue号>, 或者resolves #<issue号>): fixes # https://gitcode.com/cann/ops-test-kit/issues/99

希望检视人员了解:

测试

文档更新

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 RuiWang_ 的贡献)
RRuiWang_成员
14 天前 创建了 pull request,commit 3ac1726f
atomgit-bot
atomgit-bot
14 天前 评论:

变更摘要

此 PR 为 TTK 测试工具添加了 TensorFlow 框架的端到端(e2e)测试支持。核心思路是将现有基于 PyTorch 的测试流程泛化为框架无关的架构:通过新增 framework_detectorTfBackend 后端体系、tf_param_extractor 参数解析器以及 TF 特有的 dtype 系统,使得同一个 e2e 管线可以同时驱动 torch_nputf.raw_ops.* / tf.nn.* 等 API 的测试,包括 golden 数据生成、性能分析和设备后端选择。CLI 层额外增加了从 CSV 自动检测框架的能力。

主要改动

  • TF 后端体系 (TfBackend / CpuTfBackend):新增 TfBackend 基类和 CpuTfBackend 子类,实现了 numpy ↔ tf.Tensor 互转(含 dtype 规范化)、tf.device 设备移动、设备探测与计数等接口,并通过 backends/__init__.py 中新增的 _probe_tf 和扩展的 get_backend(framework=...) 完成 TF 后端自动选择与回退。

  • 框架检测与路由:新增 framework_detector.detect_framework 函数,根据 api_name 前缀(tf. / tensorflow.)区分框架类型;CLI 层增加 _detect_framework_from_csv 从 CSV 的 api_name 列自动推断框架,并在 run_with_switches 中设置 sw.framework,贯穿 FrameworkApiInstanceprofilinggolden_generationinput_generation 等模块。

  • TF API 解析与参数提取api_resolver 增加对 tf.* API 的解析分支,委托给 resolve_callable_str;新增 tf_param_extractor.extract_tf_params,利用 inspect.signature 直接解析 TF op(包括 tf.raw_ops.* 的特殊 keyword-only 约定),输出与 PyTorch 兼容的 APIParamInfo / OverloadInfo 结构。

  • Golden 生成与性能分析框架化golden_generation.pyprofiling.pyinput_generation.py 等核心流程全面适配双框架——引入 _get_cpu_tf_backendnp_to_tf_inputsis_tf_dtype_support 等分支逻辑,TF 路径下禁用 graph 模式、使用 WallClockProfiler、绕过不可用的 format_cast,确保 eager 模式下的正确执行与性能测量。

  • TF dtype 系统与配置扩展dtypes.py 新增 _TF_DTYPE_MAP 映射表及 str_to_tf_dtype / is_tf_native_dtype 函数;default.yaml 增加 frameworks.tf.npu 配置项;SWITCHES 类新增 framework 属性,默认值为 "torch",确保向后兼容。

likedislike
atomgit-bot
atomgit-bot
14 天前 评论:

代码审查

审查总结

本次 PR 新增了 TensorFlow e2e 测试支持,涉及 25 个文件的修改(新增约 640 行,删除约 83 行)。整体代码结构合理,TF 与 torch 的框架分离做得较好,但存在以下问题:

按优先级统计

  • P2(3 个)_call_plugin_with_plan 未传递 framework 导致 TF 插件结果转换错误;generate_golden 在 golden_api 路径使用错误 framework;_TF_NON_TENSOR_PARAM_NAMES 集合不完整导致部分 TF op 标量参数误判为张量
  • P3(2 个)str_to_tf_dtype 为死代码;_detect_framework_from_csvexcept 吞没异常

各文件审查确认

文件 审查结果
examples/case_store/e2e/tf_ops.csv 无问题
ttk/cli/bridge.py 报告 1 个 P3
ttk/cli/e2e.py 无问题
ttk/config/default.yaml 无问题
ttk/core_modules/framework_api/api_resolver.py 无问题
ttk/core_modules/framework_api/backends/__init__.py 无问题
ttk/core_modules/framework_api/backends/base.py 无问题
ttk/core_modules/framework_api/backends/cpu_tf_backend.py 无问题
ttk/core_modules/framework_api/backends/tf_backend.py 无问题
ttk/core_modules/framework_api/framework_api_info_keeper.py 无问题
ttk/core_modules/framework_api/framework_detector.py 无问题
ttk/core_modules/framework_api/golden_generation.py 报告 2 个 P2
ttk/core_modules/framework_api/input_generation.py 无问题
ttk/core_modules/framework_api/instance.py 无问题
ttk/core_modules/framework_api/profiler.py 无问题
ttk/core_modules/framework_api/profiling.py 无问题
ttk/core_modules/framework_api/profiling_utils.py 无问题
ttk/core_modules/npu/op/input_generation.py 无问题
ttk/core_modules/testcase_manager/param_plan.py 无问题
ttk/core_modules/testcase_manager/testcase_e2e.py 无问题
ttk/core_modules/testcase_manager/testcase_tensor_api_base.py 无问题
ttk/test_spec/examples/06_golden_multi_path.py 无问题
ttk/utilities/classes.py 无问题
ttk/utilities/dtypes.py 报告 1 个 P3
ttk/utilities/tf_param_extractor.py 报告 1 个 P2

整体风险判断

中等风险。P2 问题都集中在 golden_generation.pytf_param_extractor.py,可能导致 TF golden 结果转换错误和参数解析错误,建议在合入前修复。P3 问题不影响核心功能,可随后续迭代处理。其余文件修改质量较好,TF/torch 框架分离清晰,惰性导入和条件分支处理得当。

类型 数量
🔴 阻塞 1
🟡 建议 5

⛔ 需要修改

likedislike
CANN-robotCANN-robot成员
14 天前 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
14 天前 添加了label:cann-cla/yes
此处折叠了197条消息 查看更多
CANN-robotCANN-robot成员
9 天前 添加了label:approved
sunday成员
9 天前 评论:

/lgtm
/approve

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