动转静单测时间统计和优化专项 #59339
Labels
HappyOpenSource
快乐开源活动issue与PR
PFCC
Paddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfcc
status/close
已关闭
背景
如 #58356 所述,动转静单测是现有静态图子图级别验证的主要入口,因此我们在动转静单测上开启了「AST」、「SOT」 2 种动转静模式 +「LEGACY_IR」、「PT 中间态」、「PIR 理想态」 3 种 IR 模式共 2x3=6 种组合的单测。而且在 #59191 添加了「SOT MIN_GRAPH_SIZE=10 + LEGACY_IR」一种 case,也就是单测组合达到了 7 种。
虽然目前大多数单测还没有开启所有组合,但是预期未来会达到最高 7 种组合的,这会导致单测时间大幅增加,因此我们需要前置考虑单测时间上的优化方案。
为了方便表示,这里我们将动转静模式系数表示为$t_{d2s}$ ,将 IR 模式系数表示为 $t_{ir}$ ,我们预期最大的时间为 $t_{d2s} = 2$ 、 $t_{ir} = 3$ 、 $t_{extra} = 1$ ,总时间为 $t_{d2s} \times t_{ir} + t_{extra} = 7$ 。
这里是一些关键单测时间发生变化的时间节点:
MIN_GRAPH_SIZE=10
test in dy2st tests #59191 增加SOT + MIN_GRAPH_SIZE=10
单测,增加额外系数LEGACY_IR
改为LEGACY_IR + PT
中间态,所以短短几个月过去动转静单测已经从 1 倍变成了接近 6 倍的时间,而且接下来我们还会继续增加到 7 倍……
本任务为 #58633 子项
任务细节
学习和了解动转静单测机制,分析动转静单测时间
首先可以通过 #57824 和 #58356 了解单测生成机制,学习了解整个单测机制。
之后修改单测机制,让单测恢复到 1x1+0 的状态以统计单测时间(注意本 PR 只用来测试 CI 时间,不会合入),这里可以考虑直接修改生成 case 部分完成:
Paddle/test/dygraph_to_static/dygraph_to_static_utils_new.py
Lines 235 to 246 in 959f0c2
提交 PR 后触发 CI,使用脚本统计 Download 下来的 PR-CI-Py3 log 中的单测时间(仅动转静目录)。
统计后在本 issue 中产出一份单测时间统计表格。
根据统计的单测时间设计和调整单测策略
根据单测时间来设计对单测时长的优化策略(同 @SigureMo 一起),细节待数据产出后再说
任务进展
说明
对要优化的文件进行搜索
def test_.*:
并且定义在 Dy2StTestBase 的子类中The text was updated successfully, but these errors were encountered: