Pytorch-Paddle代码转换工具开源任务
zhwesky2010 opened this issue · 30 comments
✨ 问题描述:
大家好,为了实现将 PyTorch 代码自动化的转写成 Paddle 代码,从而提升模型迁移的效率,我们建设了 代码自动转换工具: PaddlePaddle Code Convert Toolkits,目前已支持了1000+个Pytorch API的自动转换,我们此次对外开放408个API的转换规则开发,欢迎大家提 PR 来一起支持自动转换 🎉🎉🎉。
通过本次活动,你可以更详细地了解 PyTorch 框架与 Paddle 框架用法及设计差异,提升自己对深度学习框架的熟悉程度。
🍻 你需要做的是:
我们已将任务记录在《在线任务明细表》,为方便大家自由选择所熟悉的API,此次不对API进行分组,大家可自由选择一个或多个API来实现自动转换,认领时直接在本issue下回复认领的任务ID(至少1个,建议一次认领多个,且越多约好)。欢迎大家认领任务和提 PR~
-
Fork PaddlePaddle/docs 、PaddlePaddle/PaConvert 两个Github Reop。
-
书写API映射关系:PR提交到 PaddlePaddle/docs 下,需要为每个 API 新增对应的 md 文件并放入
docs/guides/model_convert/convert_from_pytorch/api_difference
对应的目录下,文件名为PyTorch API名。如果已存在该API的映射关系,则无需新增 md 文件,只需要检查并校正之前的文档是否正确,如果与后面的AST规则有差异,则需要修改文档。 -
API映射关系请参考 《API映射关系-格式规范》 ,PR标题格式:映射文档 No. xxx/yyy/zzz,PR描述附上本issue。请严格根据格式规范来书写文档,避免因格式问题增加不必要的review成本,不满足格式规范的PR将不予合入。
-
API映射关系相当于人工转换的思路,在其完成后,即可开发AST自动转换规则:参考《AST转换规则开发步骤》 中步骤3~5,PR标题格式:转换规则 No. xxx/yyy/zzz,PR描述附上本issue与上述文档PR。请严格根据文档要求来开发代码,避免增加不必要的review成本,不满足要求的PR将不予合入。
-
每1个任务No.xxx 均包含 1个映射关系文档PR + 1个转换规则PR,两者均合入该任务才算完成,请尽可能一次性提交多个任务,以提高review效率。
-
review方式:评论里 @zhwesky2010 review,请及时修改review意见,review通过后将合入代码。
✨ 注:
-
该任务时间:PR 截止合入时间是2023/10/30。
-
认领规则:直接在 issue 下回复认领的任务 ID(建议一次认领多个)。
-
提交PR前请参照官网安装pre-commit,检查代码格式。否则CI可能无法通过。
-
PR请先通过CI检查后再发起review,避免增加不必要的review成本。
-
PR标题格式:映射文档 No. xxx/yyy/zzz,转换规则 No. xxx/yyy/zzz,PR描述均需附上本issue,后者PR描述的
PR Docs
里需要写上前者PR的链接。 -
如果该API在paddle中存在 功能缺失、功能Bug、功能diff 等问题,导致无法转换,请直接在本issue下回复。我们会定期确认并记录API功能问题,同时对于此问题点,可暂不开发Matcher但仍需开发 屏蔽版本的测试case(单测屏蔽方式可查询开发文档或参考已有单测的代码)。问题描述参考如下格式:
torch.diff
问题:paddle仅支持n=1,torch的n可支持任意值torch.nonzero
问题:指定as_tuple时行为不一致,paddle会多一维且不合理torch.dstack
问题:功能缺失
-
任务明细表中已对映射关系的分类进行了初步粗略标注,仅供参考,最终以开发者分析为主。
-
历史上的 good first issue 列表,也欢迎来提 PR 解决~ 欢迎联系花花加入社区,和我们一起快乐开源!
🍻 任务列表(整体进度 258/408)
按 merge 的时间顺序,排名不分先后:@co63oc (229) @Li-fAngyU (4) @txyugood (6) @minleminzui (2) @GreatV (4) @enkilee (6) @RedContritio (1) @longranger2 (3) @shuaills (1) @Liyulingyue (1)
已认领 (355) 已取消(3)
此评论作为示例,不表示实际认领:
任务 ID | 认领人 Github | 文档 PR 链接 | 代码 PR 链接 |
---|---|---|---|
1、3、7、9 | @xxx | PaddlePaddle/docs#5699 | #101 |
任务 ID :94 95 96
认领人:Atlantisming
任务 ID | 认领人 Github | 文档 PR 链接 | 代码 PR 链接 | 状态 |
---|---|---|---|---|
case64 torch.nn.functional.max_pool1d, 不启用return_indices,两者表现相同,如果启用return_indices,则输出无法对齐,抛弃这个参数,paddle默认关闭时可以支持转换 #120
@txyugood @siriuslay @Victory8858
7月6日晚上19:00-20:00,PFCC例会有一个议题是 @Tomoko-hjf 分享代码转换工具,大家有兴趣的话可以来听一下。
点击链接入会,或添加至会议列表:
https://meeting.tencent.com/dm/n3DceaEH0DyX
#腾讯会议:572-650-012
passwd: 0706
PFCC组织,会通过定期分享技术知识与发布开发者主导任务的形式持续为飞桨框架做贡献,详情可见 https://github.com/luotao1 主页说明。
torch.nn.functional.poisson_nll_loss 参数full导致计算差异,目前没找出原因
torch.symeig
任务 No.29 已经在最新版(pytorch 2.0.0)中被移除了。torch.lu_solve
任务 No.21 paddle目前没有对应实现torch.matrix_exp
任务No.23 paddle目前没有对应实现
再认领个 NO 121,以及129到132 , 134到140
No.319 | torch.histogram, torch.Tensor.histogram: torch返回hist, bin_edges,paddle返回hist,返回Tensor数量不一致 | ||
No.274 | paddle.Tensor.is_coalesced 调用不存在 | ||
No.87 | torch.Tensor.lstsq 调用提示不支持,应使用torch.linalg.lstsq |
不一致的API信息,确认这些API是否支持
No.147-153
转换规则No64 torch.nn.functional.max_pool1d #120
你好,这个是index的dtype问题,还是其他的问题,如果只是dtype问题,可以设置 check_dtype=False
来跳过这个检查
注:功能缺失都无需开发Matcher,需写文档和单测
torch.histogram, torch.Tensor.histogram 功能缺失
paddle.Tensor.is_coalesced 功能缺失
torch.Tensor.lstsq 由于历史pytorch版本支持,仍需要支持转换
torch.testing.assert_close 这个已经写了Matcher,通过其他方式替代实现的,可以参考Matcher逻辑
torch.Tensor.is_signed 这个可能可以通过判断x.dtype not in [uint8, ] 的思路来替代实现
torch.Tensor.lu_solve 如果老的pytorch版本支持的话就也要实现,可能待转换的pytorch代码用了老写法
torch.cuda.seed 这个是设置随机种子,感觉对深度学习训练结果影响不大,建议以可删除的方式实现
torch.cuda.seed_all 同torch.cuda.seed,也需要实现
torch.cuda.initial_seed 返回随机种子,也需要实现
torch.cuda.comm.* 这些都是分布式API吗,是不是和分布式的torch.distributed.*是一个功能
下面有一些分布式的和torch.cuda.*
已经支持了Matcher,可以参考,distributions的有些可以支持,同类API可按相同方式处理,比如torch.random.initial_seed。其他实在无解法的就按功能缺失来。
- PaddlePaddle/docs#5919
49 - 51, 60, 61, 63 文档已存在 - PaddlePaddle/docs#5876
52, 56, 59 文档已存在 - PaddlePaddle/docs#5852
55 文档已存在 - PaddlePaddle/docs#5723
58 文档已存在
49 - 63
中尚需添加的文档:53, 54, 57, 62
- PaddlePaddle/docs#5915
208 - 213, 216 文档已存在
209 - 214
中尚需添加的文档: 214
认领75,77-79,88-91
认领44
44: torch.nn.functional.softmin 的matcher,test, json都已经存在了,是需要做什么修改么?
softmin
@shuaills 移除这个任务吧,可能扫描时漏掉了
认领4
264 torch.special.logit 已有测试文件 https://github.com/PaddlePaddle/PaConvert/blob/master/tests/test_Tensor_logit.py
274 torch.Tensor.is_coalesced 已合并PR #201
邀请 @co63oc 提交申请PaConvert下Committee,类似
https://github.com/PaddlePaddle/Paddle/issues?q=is%3Aissue+Committer+is%3Aclosed
方式:直接提交 issue 到 PaConvert Repo,通过后有write权限,可以自行编辑表单 #112 (comment) 了。
麻烦将101-111释放一下~
我想要认领143-146
Pytorch-Paddle代码转换工具开源任务 的剩余题目已打包进:【黑客松开源贡献个人挑战赛】42-47
感谢参与的小伙伴们!
@co63oc (229) @Li-fAngyU (4) @txyugood (6) @minleminzui (2) @GreatV (4) @enkilee (6) @RedContritio (1) @longranger2 (3) @shuaills (1) @Liyulingyue (1)