Skip to content

Tools 优化:重构并完善 PaddleAPITest 工具库及文档#643

Open
cangtianhuang wants to merge 1 commit into
PFCCLab:mainfrom
cangtianhuang:dev
Open

Tools 优化:重构并完善 PaddleAPITest 工具库及文档#643
cangtianhuang wants to merge 1 commit into
PFCCLab:mainfrom
cangtianhuang:dev

Conversation

@cangtianhuang

Copy link
Copy Markdown
Collaborator

概述

本 PR 对 tools/ 目录下的公用工具进行了全面的重构和优化,主要包括:

  1. 代码质量提升

    • 将所有脚本统一引入 argparse 参数解析,统一 parse_args()main(argv) 函数签名
    • 提取通用函数(如 collect_input_files, read_config_set, backup_file 等)以改善代码复用性
    • 统一错误处理和日志输出风格
    • 补充 --no-backup 等备份控制选项,提高工具灵活性
    • 补充 parse_args() 方法便于单元测试和脚本复用
  2. 文件组织优化 - 功能性重构

    • 配置集合工具(extract/merge/compare/retrieve):

      • get_api_set.pyextract_api_set.py(从配置文件提取 API 名集合)
      • get_config_set.pymerge_config_set.py(合并/去重/排序配置集合)
      • get_diff_config_set.pydiff_config_set.py(对比两个配置集合的差异)
      • retrieve_configs.pyretrieve_config_set.py(按关键词从配置文件召回配置)
    • 配置移除工具(remove/delete):

      • remove_configs.pyremove_config_set.py(完全重写,支持备份/回退/精简备份目录等高级功能)
      • remove_case_by_api.pyremove_lines_by_keyword.py(按关键词删除匹配行)
      • retest_remover.pyremove_retest_configs.py(从 checkpoint 移除指定类型配置)
    • API 用例提取工具(extract cases):

      • get_cases_from_csv.pyextract_cases_from_csv.py(从 CSV 中按 API 名提取用例)
      • move_config.pyextract_or_remove_api_cases.py(按 API 提取或删除配置用例)
    • 日志处理工具(新增):

      • seek_skip_configs.py(从 checkpoint 中扣除终态日志,生成 skip 配置)
      • shrink_large_configs.py(针对大 Tensor 配置缩小 shape,用于回归)
  3. 错误统计工具重构

    • error_stat/error_stat.py - 增强日志整理功能

      • 新增过滤条件(Too large tensor to get cached numpy, There is no grad op for inputs:
      • 参数化默认路径与结果目录名称
      • 统一 parse_args()main(argv) 接口
    • error_stat/csv_stat_stable.py - 优化精度统计

      • 新增 custom_op 特殊处理:识别 paddle._C_ops._run_custom_op() 中的具体操作名
      • 参数化 CSV 文件收集、数据加载、统计输出功能
      • 支持命令行配置 --chunk-size--max-workers
    • error_stat/csv_stat_tol.py - 对标 stable.py 进行对应优化

      • 新增 custom_op 特殊处理
      • 参数化配置与命令行接口统一
  4. 完整文档补充

    • 新增 tools/README.md - 完整工具使用指南
    • 涵盖 4 大类工具:配置集合工具、测试日志工具、错误统计工具、API Trace 工具
    • 包含每个工具的使用示例和注意事项

各文件功能说明

类别 文件名 功能说明
配置提取 extract_api_set.py 从配置文件中提取 API 名集合
配置合并 merge_config_set.py 合并多个配置文件,去重/排序,支持分片输出
配置对比 diff_config_set.py 对比两个配置集合,输出移除和新增的配置
配置召回 retrieve_config_set.py 按关键词从配置文件中召回匹配的配置
配置移除 remove_config_set.py 按清单从文件删除配置,支持备份/回退/精简备份
用例提取 extract_cases_from_csv.py 从 CSV 中按 API 名过滤用例,输出结果和错误配置
用例处理 extract_or_remove_api_cases.py 按 API 从配置目录提取或删除用例
关键词删除 remove_lines_by_keyword.py 按关键词文件删除匹配行,支持批量清理
重测移除 remove_retest_configs.py 从 checkpoint 移除 timeout/OOM/skip 配置,支持重测
Skip 筛选 seek_skip_configs.py 从 checkpoint 扣除已有终态日志,生成 skip 配置
Tensor 缩小 shrink_large_configs.py 缩小大 Tensor 配置,用于回归测试
日志整理 error_stat/error_stat.py 解析测试日志,按类型拆分配置和日志
精度统计 error_stat/csv_stat_stable.py 整理 stable*.csv,输出精度统计结果
精度统计 error_stat/csv_stat_tol.py 整理 tol*.csv,输出精度统计结果

修改统计

  • 文件重构:11 个脚本进行了功能性重构和参数化改造
  • 功能重写remove_config_set.py 从基础版本重写为支持备份/回退/精简的高级版本
  • 新增文档tools/README.md 完整工具使用指南
  • 总变更:+2,349 行,-908 行

关键改进

✅ 统一命令行接口设计(parse_args()main(argv) 可选参数)
✅ 代码复用性提升,减少重复逻辑
✅ 统一的参数解析、错误处理、日志输出风格
✅ 高级功能支持(备份/回退/精简、custom_op 识别、并行处理等)
✅ 清晰完整的使用文档与示例

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant