Skip to content

LogWriter 可读性优化:优化日志分类与打印体系#651

Open
cangtianhuang wants to merge 1 commit into
PFCCLab:mainfrom
cangtianhuang:opt/refine-log-type
Open

LogWriter 可读性优化:优化日志分类与打印体系#651
cangtianhuang wants to merge 1 commit into
PFCCLab:mainfrom
cangtianhuang:opt/refine-log-type

Conversation

@cangtianhuang

Copy link
Copy Markdown
Collaborator

🎯 主要改进

1. 日志分类体系完全重设计

将原有混乱的分类体系梳理为四个明确层级:

层级 分类 文件 含义
Paddle 问题 paddle_error api_config_paddle_error.txt Paddle 执行异常,非 OOM/CUDA fatal
paddle_accuracy api_config_paddle_accuracy.txt 精度对比失败,超出容忍阈值(原 accuracy_error
paddle_bitwise api_config_paddle_bitwise.txt bitwise 零容忍对比不一致(原 accuracy_diff
paddle_cuda api_config_paddle_cuda.txt Paddle 侧 CUDA fatal(原 cuda_error
paddle_crash api_config_paddle_crash.txt Paddle 侧 worker 异常退出(原 crash
资源/时间问题 oom api_config_oom.txt 显存/内存不足
timeout api_config_timeout.txt 执行超时
框架阻塞问题 torch_error api_config_torch_error.txt Torch 对照侧异常
config_input api_config_config_input.txt 输入生成失败(原 numpy_error
config_parse api_config_config_parse.txt 配置解析失败(原 match_error
config_convert api_config_config_convert.txt Torch 转换失败(原 paddle_to_torch_failed
通过/跳过 pass api_config_pass.txt 测试通过
skip api_config_skip.txt 已知不支持或规则主动跳过

2. 打印前缀标准化

  • 终态分类[category] ... 格式,如 [pass][paddle_accuracy][paddle_cuda]
  • 非终态上下文key=value 格式,如 mode=forwardphase=backwardidx=0comp=T1P1
  • 示例:
    [paddle_accuracy] phase=forward idx=0 paddle.xxx(...)
    [paddle_bitwise] comp=T1P1 paddle.xxx(...)
    mode=forward paddle.xxx(...)
    

3. 大张量内存管理优化

  • 定期日志输出:改进内存等待机制,每 60 秒打印一次可用内存状态,避免长时间静默
  • 进程退出码标准化
    • 99 → Paddle CUDA fatal
    • 98 → OOM
    • 97 → Torch 对照侧 fatal
  • 运行时状态追踪:新增 show_runtime_status 选项,可选输出测试前后的显存占用

4. Checkpoint 与终态管理机制

  • 新增 write_terminal_log() / has_terminal_log() / write_checkpoint() 函数
  • 同一 case 已写非 pass 终态后,后续 pass 日志不再覆盖(防止误判)
  • 终态一旦确定,engineV2 立即写入 checkpoint,便于中断后恢复

5. 统计信息细分

日志汇总时新增三个维度统计:

  • Paddle 问题 cases:需要重点定位 Paddle bug 或稳定性问题
  • 可重测 cases:资源/时间调整后可重测(OOM、timeout)
  • 框架阻塞 cases:测试框架或对照侧问题(Torch error、配置问题)

📝 具体改动

核心文件修改

  • engineV2.py:内存等待、退出码、checkpoint 管理
  • tester/accuracy.pytester/accuracy_stable.pytester/paddle_only.py:统一日志分类、错误处理逻辑
  • tester/base.py:新增 report_runtime_error() 方法、集中化错误分类函数
  • tester/api_config/log_writer.py:分类映射表、别名支持、终态管理
  • tools/ 下的统计工具:日志前缀同步更新

向后兼容:通过 LOG_ALIASES 字典自动映射旧分类名,降低切换风险

rename log type, remake classification method, update tools
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