-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Compile_vs_Runtime Check Specification
huzhiqiang edited this page Feb 6, 2020
·
6 revisions
Compile_vs_runtime Check Is Required for Op Test (English Version)
规范概要:
- 第1节,背景
- 第2节,本规范检查内容
- 第3节,CI检查方法
- 第4节,未通过检查的修改建议
- 第5节,验证是否满足本规范
补充说明:
此规范在执行过程中,可能存在未考虑周全的地方。请大家积极反馈意见,在实施过程中不断补充与完善。
OP在编译时(compile-time)和运行时(runtime)会分别执行一次infershape()。为了保证两次运算信息的一致性,本规范在op_test里面添加了check_compile_vs_runtime方法,目前主要检查当输出为LoDTensor时,compile-time和runtime的lod_level是否一致。本规范在CI中添加了增量检查,除特殊情况外所有Op单测都需要调用check_compile_vs_runtime方法。
检查范围:Op的单测脚本中,所有继承了OpTest的测试样例,都会自动调用check_compile_vs_runtime方法进行“编译时/运行时信息一致性检查”。
特殊情况:
- 对于特殊情况:监控机制会通过白名单COMPILE_RUN_OP_WHITE_LIST将其豁免
白名单位置:python/paddle/fluid/tests/unittests/white_list/compile_vs_runtime_white_list.py,可以通过将op名称加入
COMPILE_RUN_OP_WHITE_LIST
跳过“编译时/运行时一致性检查”
除特殊情况外,其他的单测均被要求进行"编译时/运行时一致性”检查。
当白名单文件compile_vs_runtime_white_list.py
被修改时,会触发CI增量检测,需要特定人员审核并描述原因。
当单测未通过check_compile_vs_runtime的监控,可以参考以下建议进行修改:
- 检查op->infershape()方法是否设置了输出的lod_level,并与运行时的lod_level一致。请参考示例。
OP单测进行验证:
- 将该OP从白名单(python/paddle/fluid/tests/unittests/white_list/compile_vs_runtime_white_list.py中的COMPILE_RUN_OP_WHITE_LIST删除;
- 在本地或者提交PR执行该单测;
- 如果执行没有错误,则验证该OP单测满足本规范。如果报错提示无法通过统一误差阈值的前向和反向检查,则需要参考“4. 未满足本规范的修改建议”继续修改。
若遇到其他问题,请联系 @DannyIsFunny