-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Enable Eager Mode in Paddle CI
概要:
- 第1节,背景
- 第2节,PR-CI-Py3流水线单测失败的复现方法
- 第3节,PR-CI-Windows-OPENBLAS流水线单测失败的复现方法
- 第4节,PR-CI-Coverage-Eager-Test流水线单测失败的复现方法
- 第5节,跳过失败单测方法
为了监控新动态图模式下单测的正确性,防止开发的PR导致新动态图功能错误,需要让CI流水线执行在新动态图eager模式下。
目前,已将PR-CI-Py3,PR-CI-Windows-OPENBLAS流水线切换至新动态图eager模式下执行(其他流水线暂时仍然执行在老动态图模式下)。
在PR-CI-Py3流水线中,已设置export FLAGS_enable_eager_mode=1
,启用新动态图模式进行编译、执行单测。
在PR-CI-Windows-OPENBLAS流水线中,已设置set FLAGS_enable_eager_mode=1
,启用新动态图模式进行编译、执行单测。
由于PR-CI-Py3流水线已执行在新动态图模式下,在本地复现PR-CI-Py3流水线的单测问题时,需要开启FLAGS_enable_eager_mode=1
环境变量来执行单测,让本地单测也执行在新动态图模式下:
FLAGS_enable_eager_mode=1 python test_xxx.py
复现问题后需要修复单测,直至新动态图模式下该单测通过。
若 PR-CI-Windows-OPENBLAS 流水线执行失败,在本地复现单测问题时,需要使用set FLAGS_enable_eager_mode=1
进配置环境变量,确保单测跑在新动态图模式下。
若 PR-CI-Coverage-Eager-Test 流水线执行失败,在本地复现单测问题时,需要将 python/paddle/fluid/framework.py 内的 _in_eager_mode_ = (os.environ.get('FLAGS_enable_eager_mode') == '1')
改为 _in_eager_mode_ = True
进行全局切换,确保单测跑在新动态图模式下。
如果有特殊原因,需要跳过新动态图模式下对该单测的检查,可以尝试让该单测只执行在老动态图模式下。方法如下:
- 在新动态图模式下报错的单测文件中,调用
_enable_legacy_dygraph
方法,让该单测切换到老动态图模式下执行。from paddle.fluid.framework import _enable_legacy_dygraph _enable_legacy_dygraph()
注:
- 需要注释说明该单测无法执行在新动态图模式下的原因,并且需要特殊人员审核,否则PR-CI-APPROVAL无法通过。
- 在单测文件中,设置环境变量FLAGS_enable_eager_mode=0,无法让单测切换到老动态图执行。