Paddle icon indicating copy to clipboard operation
Paddle copied to clipboard

PIR 动转静理想态单测推全验证任务列表(二期)🥳

Open DrRyanHuang opened this issue 2 years ago • 6 comments

一. BackGround 📚

任务背景:#58633

二. Task 🙋🏻‍♀️

✅:已经完全修复,所有单测都OK! 🟢:待合入,合入之后完全修复! 🟡:当前阶段不需要人力继续跟进,下阶段推进(Save、控制流、AMP、编译器、PyFuncOp、TrainStep整图导出) ❌:单测没有通过,需要人力跟进。 🚧:待分析,单测还没有进行分析,可以进行分析或者是修复。

整体进度(95/114):

单测总数 已完成覆盖 ✅ 即将合入 🟢 下阶段跟进 🟡 尚未支持 ❌
114 95 0 19 0
- 75% 0% 22% 0%
遗留问题修复(点击展开)
序号 认领人 文件 错误类型 case 问题 报错 pr
✅1 @SigureMo test_assert.py 控制流 TestAssertVariable.test_non_variable
✅2 @gouzil test_bert.py ? {test_train, test_train_composite} 段错误, 详细链接 The owner op type is:pd_op.full_like #60164, #60173
✅3 @DrRyanHuang @SigureMo test_container.py API TestSequential 需要适配OpResult.__eq__ TypeError: The type of 'input' in ConditionalBlock must be (<class 'paddle.base.framework.Variable'>, <class 'paddle.Tensor'>), but received <class 'paddle.base.libpaddle.pir.OpResult'>. #63190
✅4 test_convert_call.py API TestRecursiveCall2 需要适配paddle.nn.Layer.__call__或者paddle.nn.Layer._dygraph_call_func,含 cond OP,控制流尚不支持 ValueError: (InvalidArgument) linear(): argument 'weight' (position 1) must be Tensor, but got Parameter (at Paddle/paddle/fluid/pybind/eager_utils.cc:1136) [operator < linear > error] #61447
✅5 @DrRyanHuang test_convert_operators.py API test_variable OpResult 不支持 __eq__
✅6 @SigureMo test_grad.py ? TestGrad 段错误, 详细链接 #60621
test_grad.py Save/Load TestGradLinear
✅7 @SigureMo test_lac.py 跳过 #63192
🟡8 @SigureMo test_lstm.py Save/Load test_lstm_to_static
test_lstm.py API test_lstm_to_static ~~RNN 相关 API 没有适配~~ TypeError: Cannot interpret '<DataType.FLOAT32: 10>' as a data type
test_lstm.py ~~精度问题~~ test_lstm_to_static PIR + SOT 会导致精度不足 Not equal to tolerance rtol=1e-05, atol=0 #60343
test_lstm.py 动转静执行 test_lstm_to_static EagerTensor 传入到 API 中,需要将其转换为 Value,将会在 #59761 完成 #59761
✅9 @gouzil test_no_gradient.py 反向 #59764、#63216、#63694
🟡10 @DrRyanHuang test_program_translator.py API all 控制流
🟡11 @gouzil test_save_inference_model.py API TestDyToStaticSaveInferenceModel python/paddle/jit/dy2static/py_layer.pysave_for_backward有做类型检查,尝试解决后还需要解决paddle/static/nn/static_pylayer.py文件下一些方法的适配 ValueError: (InvalidArgument) Currently, we can only get name of OpResult that is persistable #60211
test_save_inference_model.py 动转静执行 TestPartialProgramRaiseError 需要适配PartialProgramLayer下的_check_params_all_inited AttributeError: 'paddle.base.libpaddle.pir.Program' object has no attribute 'blocks'
✅12 @SigureMo test_sentiment.py 动转静执行 all 段错误, 挂在forward里面了, https://github.com/PaddlePaddle/Paddle/pull/59314#pullrequestreview-1754310218 #63192
✅13 @gouzil test_seq2seq.py API all paddle.nn.functional.sequence_mask 尚不支持,该任务为 #58067 202 题,见 #59058,#60345 会支持该 API #60423、#60454
🟡14 @gouzil test_slice.py 控制流 {TestSliceInIf, TestSliceInWhileLoop, TestSliceInForLoop} #60200
~~test_slice.py~~ ~~依赖setitem~~ ~~{TestSetValueWithLayerAndSave, TestSetValue} setitem @建业~~
✅15 @SigureMo test_tensor_memcpy_on_cpu.py 动转静执行 test_tensor_cuda_on_default_cpu set_parameter 会导致插入 D2H copy 回 CPU #60363

其他的有依赖项的具体分类见下面 comments

DrRyanHuang avatar Dec 19 '23 02:12 DrRyanHuang

Save/Load

序号 认领人 文件 错误类型 case 问题 报错 pr
✅8 test_layer_hook.py Save/Load 绕过Save:待合入 #59532
✅14 test_bmn.py Save/Load 绕过Save:单侧通过 待合入 @2742195759 遗留Save适配 #59532
✅61 test_save_load.py Save/Load all paddle.jit.api.save需要适配 AttributeError: 'list' object has no attribute 'type'
✅66 test_declarative.py Save/Load test_with_input_spec 需要适配jit.api.save方法
✅25 test_mobile_net.py Save/Load 待合入 绕过Save:精度问题(依赖BN反向修复)同test_ResNet单侧 AttributeError: 'list' object has no attribute 'type'
✅33 test_typing.py Save/Load all 需要适配jit.api.save方法 AttributeError: 'list' object has no attribute 'type'
✅58 test_build_strategy.py Save/Load 依赖BatchNorm反向修复 @儒婷
✅38 test_se_resnet.py Save/Load
✅11 test_save_inference_model.py Save/Load TestDyToStaticSaveInferenceModel
test_save_inference_model.py PyLayer
🟡8 test_lstm.py Save/Load test_lstm_to_static
✅45 test_for_enumerate.py Save/Load TestForZip Save Load 不支持

该方向具体支持 tracking issue 见 #64098

DrRyanHuang avatar Dec 19 '23 03:12 DrRyanHuang

CINN

序号 认领人 文件 错误类型 case 问题 报错 pr
✅10 @SigureMo test_cinn_prim_mean.py CINN all ~~需要单独适配单测中check_prim方法~~确认移除 AttributeError: 'RunableProgram' object has no attribute 'block' #63311
✅18 @SigureMo test_cinn_prim.py CINN ~~{TestPrimForwardAndBackward, TestPrimForward}.check_prim 单测需要修改~~确认移除 #63311
test_cinn_prim.py CINN TestBackend 最终态尚未打通 CINN,这里能跑过应该是 CINN 没有生效
✅65 @SigureMo test_cinn.py CINN all 确认移除 #63311
✅67 @SigureMo test_fallback.py CINN {test_case_func_fallback, test_case_net_fallback, test_case_net_error, test_case_training, test_case_save_error_2} ~~CINN暂不支持~~ 确认移除 #63309
✅80 @SigureMo test_cinn_prim_gelu.py CINN all 确认移除 #63311
✅37 @SigureMo test_cinn_prim_layer_norm.py 待明确 all ~~需要带 CINN 编译,应该也跑不通~~确认移除 NotImplementedError: (Unimplemented) Currently we only support CINN Pass for Pir under @to_static, please compile PaddlePaddle with CINN #63311

DrRyanHuang avatar Dec 19 '23 03:12 DrRyanHuang

控制流

序号 认领人 文件 错误类型 case 问题 报错 pr
✅9 winter-wang test_logical.py 控制流 all 最终态尚不支持控制流
✅31 test_warning.py 控制流 trueblock为warning,falseblock 为bool 输出 暂不支持控制流 TypeError: The type of 'input' in ConditionalBlock must be <class 'paddle.base.framework.Variable'>, but received <class 'paddle.base.libpaddle.pir.OpResult'>.
✅39 test_cache_program.py 控制流 TestToOutputWithCache 需要适配paddle.static.nn.control_flow.While._complete方法,WhileGuard 报错 ValueError: (InvalidArgument) Currently, we can only get name of OpResult that is persistable
🟡41 test_return.py 控制流 all 暂不支持控制流 TypeError: The type of 'input' in ConditionalBlock must be <class 'paddle.base.framework.Variable'>, but received <class 'paddle.base.libpaddle.pir.OpResult'>.
✅47 test_tensor_shape.py 控制流 {TestOpNumWithTensorShapeInIf1, TestOpNumWithTensorShapeInFor1, TestOpNumWithTensorShapeInWhile1}
✅52 test_set_dynamic_shape.py 控制流
✅54 test_loop.py 控制流 {TestTransformWhileLoop, TestTransformForLoop} 暂不支持控制流
test_loop.py API TestForLoopMeetDict 需要适配jit.api.save方法 AttributeError: 'list' object has no attribute 'type'
✅74 test_full_name_usage.py 控制流
✅79 test_lambda.py 控制流 {test_call_lambda_in_func, test_call_lambda_with_if_expr} 段错误,但应该是控制流问题
✅86 test_break_continue.py 控制流 TestOptimBreakInFor RuntimeError: Unable to cast Python instance to C++ type (#define PYBIND11_DETAILED_ERROR_MESSAGES or compile in debug mode for details) #63287 使用 FLAGS_new_executor_sequential_run 绕过
✅97 test_jit_setitem.py 控制流(while) TestCase12
✅101 test_ifelse.py 控制流
✅6 test_list.py 控制流 TestListWithoutControlFlow 大量控制流单侧
✅7 test_write_python_container.py 控制流 all 大量控制流单侧 TypeError: 'paddle.base.libpaddle.pir.OpResult' object cannot be interpreted as an integer
✅45 test_for_enumerate.py 控制流 TestForInRange 控制流 While ValueError: (InvalidArgument) Currently, we can only get name of OpResult that is persistable (at /workspace/Paddle/paddle/fluid/pybind/pir.cc:745)
test_for_enumerate.py Save/Load TestForZip Save Load 不支持
test_for_enumerate.py API & 控制流 TestForIterVarList OpResult 没有 append
test_for_enumerate.py 控制流 TestForEnumerateVarWithNestedRange 面的大多数修好了,但是继承自 TestForIterVarNumpy 的 TestForEnumerateVarWithNestedRange 包含控制流,所以不支持;另外注意这个 case 中间态也有问题,中间态会在 Win 和 mac CI 上挂掉,本地没问题
✅10 test_program_translator.py 控制流 仅有两个 控制流
✅14 test_slice.py 控制流 {TestSliceInIf, TestSliceInWhileLoop, TestSliceInForLoop} #61440

DrRyanHuang avatar Dec 19 '23 03:12 DrRyanHuang

AMP

序号 认领人 文件 错误类型 case 问题 报错 pr
✅26 @0x45f test_resnet_amp.py AMP TestResnet GPU 环境,AMP 尚不支持 NotImplementedError: not implement error. #62606
test_resnet_amp.py 反向 TestResnet CPU 会报 paddle.Tensor.backward api 报错, 看样子是 c++ 的检查 PreconditionNotMetError: The meta data must be valid when call the mutable data function
✅36 @0x45f test_resnet_pure_fp16.py AMP all 动转静 AMP 尚未支持 NotImplementedError: not implement error. #62606
✅111 @0x45f test_mnist_amp.py AMP #62606
✅113 @0x45f test_mnist_pure_fp16.py AMP #62606

DrRyanHuang avatar Dec 19 '23 03:12 DrRyanHuang

整图导出(train step)

序号 认领人 文件 错误类型 case 问题 报错 pr
🟡103 test_train_step_resnet18_sgd.py 整图导出 all 同 train_step
🟡105 test_train_step_resnet18_adam.py 整图导出 all
🟡46 test_train_step.py 整图导出 all train_step 整图导出暂不支持 PIR AttributeError: 'paddle.base.libpaddle.pir.OpResult' object has no attribute 'backward'

DrRyanHuang avatar Dec 19 '23 03:12 DrRyanHuang

其它

序号 认领人 文件 错误类型 case 问题 报错 pr
🟡32 test_op_attr.py 量化 CheckOpAttr.test_set_op_attrs paddle.base.framework.Program下没有blocks api 需要适配 AttributeError: 'paddle.base.libpaddle.pir.Program' object has no attribute 'blocks'
🟡21 test_tensor_hook.py 依赖PyFuncOp迁移 剩余case OpResult.register_hook需要适配, 连锁适配paddle.static.py_func AttributeError: 'paddle.base.libpaddle.pir.OpResult' object has no attribute 'register_hook'
✅114 test_pylayer.py PyLayer 由 @MarioLulab 开发 PIR PyLayer 并适配 #60359、#63319

SigureMo avatar Dec 20 '23 03:12 SigureMo