Open YuanRisheng opened 3 weeks ago
飞桨新IR(PIR)功能建设已经基本完成,当前CI流水线上静态图依然是以飞桨旧IR运行,我们想将CI默认运行的IR切换至PIR,从而能顺利支持未来飞桨基于PIR下的代码提交与验证。但是当前依然有很多单测在PIR模式下的运行会存在问题,修复这些问题成为实现默认切换PIR的必要条件。
对于存在问题的单测,我们已统一放置在了test/deprecated目录下,我们的任务主要是修复这个目录下单测的问题,然后将单测从deprecated目录移出来恢复到正常目录。如下所示,我们假设有test_a和test_b俩个单测文件,并且在test/deprecated/legacy_test目录下,待我们修复问题后,将其移出到test/legacy_test目录里:
test/deprecated
test/deprecated/legacy_test
test/legacy_test
具体而言,可以遵循以下原则去分析问题:
首先确认单测是否不兼容PIR,判断标准:
使用到了废弃组网API的单测。大部分paddle.static.nn命名空间下的组网API为废弃组网API,其他废弃组网API的情况可以看单测情况单独沟通讨论
paddle.static.nn
使用到了Python端旧IR组件的单测,主要包括Variable,Operator,LayerHelper等结构,这些结构一般都是在PIR下已经具备了同样功能的组件
Variable
Operator
LayerHelper
使用到了一些函数方法,但这些函数方法操作的是废弃组网或者是旧IR的组件
如果单测是不兼容类型的,给单测文件加上"_deprecated后缀"(有时候一个单测文件既包含PIR可执行单测,也包含不兼容单测,这种情况需要将单测文件拆开),如果是兼容类型的,可参考后续的处理方法
in_pir_mode
in_dynamic_or_pir_mode
如果不是上述情况,比如是模式切换(动态图/静态图切换,或者旧IR/PIR切换)出现的异常或者是其他的和适配PIR无关的问题,可直接针对具体问题修复并将单测移出deprecated目录
本地问题复现及修复完成后的验证,可以在本地执行如下命令: FLAGS_enable_pir_api=1 ctest -R 单测名称
FLAGS_enable_pir_api=1 ctest -R 单测名称
请大家以 comment 的形式认领任务,如:
【报名】:1、3、12-13
多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
排名不分先后 @YuanRisheng (26) @wanghuancoder (18) @SigureMo (13) @xiaoguoguo626807 (1) @Aurelius84 (2)
【报名】:1-5
【报名】:125、147、481
【报名】:6-15
【报名】:57
【报名】:84,146
【报名】:428
【报名】:135
【报名】:16-18、20-27
【报名】:60-64
【报名】:65-70
【报名】:213、277
【报名】:71-75
【报名】:163 262 293
一、BackGround 📚
飞桨新IR(PIR)功能建设已经基本完成,当前CI流水线上静态图依然是以飞桨旧IR运行,我们想将CI默认运行的IR切换至PIR,从而能顺利支持未来飞桨基于PIR下的代码提交与验证。但是当前依然有很多单测在PIR模式下的运行会存在问题,修复这些问题成为实现默认切换PIR的必要条件。
二、Task Introduction📚
对于存在问题的单测,我们已统一放置在了
test/deprecated
目录下,我们的任务主要是修复这个目录下单测的问题,然后将单测从deprecated目录移出来恢复到正常目录。如下所示,我们假设有test_a和test_b俩个单测文件,并且在test/deprecated/legacy_test
目录下,待我们修复问题后,将其移出到test/legacy_test
目录里:具体而言,可以遵循以下原则去分析问题:
1. 针对不兼容类型的单测错误解决方式:
首先确认单测是否不兼容PIR,判断标准:
使用到了废弃组网API的单测。大部分
paddle.static.nn
命名空间下的组网API为废弃组网API,其他废弃组网API的情况可以看单测情况单独沟通讨论使用到了Python端旧IR组件的单测,主要包括
Variable
,Operator
,LayerHelper
等结构,这些结构一般都是在PIR下已经具备了同样功能的组件使用到了一些函数方法,但这些函数方法操作的是废弃组网或者是旧IR的组件
如果单测是不兼容类型的,给单测文件加上"_deprecated后缀"(有时候一个单测文件既包含PIR可执行单测,也包含不兼容单测,这种情况需要将单测文件拆开),如果是兼容类型的,可参考后续的处理方法
2. 针对PIR适配的单测错误解决方式:
in_pir_mode
或者in_dynamic_or_pir_mode
的代码),这个单测在以前没跑过PIR,现在跑PIR有问题3. 针对PIR未适配的单测错误解决方式:
4. 针对其他类型的错误解决方式:
如果不是上述情况,比如是模式切换(动态图/静态图切换,或者旧IR/PIR切换)出现的异常或者是其他的和适配PIR无关的问题,可直接针对具体问题修复并将单测移出deprecated目录
三、Task Submit📚
1. 单测验证
本地问题复现及修复完成后的验证,可以在本地执行如下命令:
FLAGS_enable_pir_api=1 ctest -R 单测名称
2. 认领方式
请大家以 comment 的形式认领任务,如:
多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
3. PR提交
看板信息
四、Task List📚
统计信息