-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【快乐开源】PIR SaveLoad 体系单测适配 #64098
Labels
PFCC
Paddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfcc
status/close
已关闭
type/others
其他问题
Comments
【报名】:18 |
Closed
【报名】:19 |
paddle-bot
bot
added
the
PFCC
Paddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfcc
label
May 9, 2024
【报名】 20-21 |
【报名】 12, 22-23 |
【报名】 1-6, 8-10, 13, 15 |
This was referenced May 21, 2024
Merged
github-project-automation
bot
moved this from In Progress
to Done
in Call for Contributions
May 30, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
PFCC
Paddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfcc
status/close
已关闭
type/others
其他问题
问题描述 Please describe your issue
一、BackGround 📚
飞桨新IR(PIR)save load 功能建设已经基本完成,涉及到2组API的相关单测开启适配。分别是动转静api
paddle.jit.save / paddle.jit.load
;以及推理apipaddle.static.save_inference_model / paddle.static.load_inference_model
.二、Task Introduction📚
任务分为多期进行:首先发布动转静API相关的第一期任务,此任务需要为指定单测文件中涉及到
paddle.jit.save / paddle.jit.load
的单测增加装饰器test_with_dygraph_pir,
进行旧ir +pir 下的测试。此装饰器可以保证动转静运行在动态图模式下,转静后运行在pir 模式下。参考test_jit_save_load.py
中相关样例。dygraph_to_static 目录下相关单测装饰器为@test_legacy_and_pt_and_pir, 大部分单测已增加装饰器,只需将pir 分支下的jit.save,jit.load 内容打开进行调试。
P0, P1 单测常见的调试问题如下:参考https://github.com/PaddlePaddle/Paddle/pull/63958/files
问题1: 动转静to_static的参数需要增加 full_graph=True 确保动转静运行在AST整图模式下。
问题2:动转静to_static 如果在layer 的class 中以装饰器实现,会在装饰器外完成动转静,导致模式错误,InputSpec数据类型错误,需要将to_static写在测试的函数内。
问题3: 动转静输入输出的shape 在pir 模式下是list [], 旧ir模式下是tuple () 。需要在单测中加分支处理。
问题4: paddle.jit.save 中如需传递output_spec, output_spec 需要从动转静的layer中获取(value),不能是执行结果(tensor)
注意事项:
确保jit.save 和 jit.load 在同一模式下,有些样例save在整个测试类的启动位置,无法使用装饰器进行测试,此时需要单独写一个新类只在pir模式下测试。例如TestTranslatedLayer
如遇到原始单测跑不通的情况,可以单独执行pir 模式测试,(if not paddle.framework.use_pir_api())仍有相同报错的可@SigureMo 协助修复。
P2 单测常见的调试问题如下:参考https://github.com/PaddlePaddle/Paddle/pull/64151/files
问题1. pir 的model 存储后缀为
.json
与旧ir 的pdmodel
不同, 因此需要单独适配文件后缀问题2. 目前推理的predictor 未开发完成 predict_analysis_inference 函数需要在pir模式下跳过。
Task Submit📚
1. 单测验证
修复完成后,可以在本地执行验证:
ctest -R 单测名称
或python 单测名称
2. 认领方式
请大家以 comment 的形式认领任务,如:
【报名】:1、3、12-13
多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
3. PR提交
看板信息
四、Task List📚
统计信息
The text was updated successfully, but these errors were encountered: