Paddle
Paddle copied to clipboard
[SOT] Add kernel stats in SOT mode
PR Category
Execute Infrastructure
PR Types
Devs
Description
为 SOT 添加 kernel 信息统计工具,基于 Paddle Profiler,添加两个 TracerEventType,分别为 DygraphKernelCall 和 StaticKernelCall,用于标记 kernel 调用,这样通过 profiler 就可以直接获取动态图调用的 Kernel 数、时间以及静态图调用的 Kernel 数和时间,以用于 SOT 指标建设,相比于之前的 OP 数量,这会是一个更加稳定的绝对参考值
使用方式:
# SOT 用法不用改
$ ENABLE_SOT_STEP_PROFILER=1 python test.py
dygraph kernel count: 0
static kernel count: 178
percentage dygraph kernel count: 100.00%
dygraph kernel duration: 0.00 ms
static kernel duration: 1908620.37 ms
percentage dygraph kernel duration: 100.00%
[!NOTE]
请不要和
Profiler混用,本工具本质是会额外创建一个Profiler实例,相互之间会有影响
TODOs:
- [x] 确认 struct kernel 是否需要统计,如果需要,动态图是否有等价的逻辑?-> ~~需要确认下~~ 基本都是通信算子,暂时不统计
- [x] 确认 full、full_int_array 是否需要统计,不然静态图可能会与动态图有细微差别(多 Full)?-> 动静都不统计
- [x] device 侧 kernel 时间的统计
- [x] 统计数据的 coldstart 和 warmup 的输出,coldstart 在第一个 step 完成后打印,warmup 在 atexit 打印
- [x] 确认循环没问题
- [x] 确认 PIR 没问题
- [x] 确认 device 时间精确性
- [x] 添加单测
Future works
- 增加更多统计,提供更方便简洁的统计 APIs
- 考虑捕获 SOT 端到端、执行器、kernel 多级时间,并统计下,
Pcard-67164
你的PR提交成功,感谢你对开源项目的贡献! 请关注后续CI自动化测试结果,详情请参考Paddle-CI手册。 Your PR has been submitted. Thanks for your contribution! Please wait for the result of CI firstly. See Paddle CI Manual for details.