This repository has been archived by the owner on Jan 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 25
🪄 PaddleSOT 喵喵大入侵计划 💥 #305
Comments
认领1.4、1.5 |
认领1.17 |
PaddleSOT 目前已于 PaddlePaddle/Paddle#57824 合入 Paddle,喵喵大入侵计划大成功!感谢各位为 PaddleSOT 做过贡献的喵喵们~
欢迎继续参与快乐开源的其他任务,也欢迎在 Paddle 主 repo 继续为 SOT 做贡献(迁移后的主体代码见 python/paddle/jit/sot) |
github-project-automation
bot
moved this from In Progress
to Done
in Call for Contributions
Oct 13, 2023
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
🌌 前情提要
喵!距快乐喵喵开源任务 #133 发布已经过去两个月了,在各位大佬的帮助下,PaddleSOT 目前在「功能性」上已经基本打磨完备,我们下一阶段将会冲击「性能」优化,以及进行下 Python 3.11 版本的支持,以推动 Paddle 启用 SOT 动转静的能力,为之后的发(ru)布(qin)做准备~
⚡️ 性能优化项 1 —— Builtin 函数调用支持
任务描述
对于 Python 一些 C 语言中定义的原生函数,我们在模拟执行阶段是需要针对每一个函数进行特殊处理的,而对于没有支持的函数,我们会进行 Break Graph 处理,使该函数运行在动态图下,以保证 SOT 的正确性。
这种方式的好处是我们可以较为容易地实现 100% 的转静成功率,但在初期会有较为多的子图打断出现,因此我们需要对一些常用的函数进行支持,以减少子图打断,增大子图,提高性能。
这里统计了一些较为常用但却没有支持的 Builtin 函数,欢迎大家尝试支持一下~
任务要求
Dispatcher.register
),并实现相应的模拟执行逻辑tests/
下(如果可以复用已有文件的话最好不要新建文件)参考资料
getitem
,setitem
,delitem
andbool
#198任务详情
str.format
支持hasattr
支持💡
zip
支持💡
list
无参数调用(list()
)支持💡
dict
无参数调用(dict()
)支持💡
str.lower
无参数调用支持sum
List[Const] 和 Tensor 支持💡
pow
支持💡
reversed
List 支持💡
math.ceil
Const 支持math.floor
Const 支持chr
Const 支持💡
ord
Const 支持💡
max
List 支持💡
min
List 支持💡
math.sqrt
Const 支持💡
map
支持💡
⚙️ 性能优化项 2 —— 字节码支持
任务描述
对于用户传入的函数,我们会取出其 CodeObject,对其中每一条字节码进行模拟执行,当然我们并不可能一开始就支持所有字节码,因此我们的策略是当遇到不支持的字节码时,整个函数 Fallback 回动态图执行,以保证 SOT 的正确性和转静的成功率。
当然,为了保证 SOT 的性能,我们需要尽可能地支持更多的字节码,以减少 Fallback 的次数(毕竟全 Fallback 就没意义了嘛),这里整理了一些常用但却没有支持的字节码,欢迎大家尝试实现一下~
任务要求
sot/opcode_translator/executor/opcode_executor.py
中的OpcodeExecutor
类中实现相应的函数tests/
下(如果可以复用已有文件的话最好不要新建文件)参考资料
ceval.c
源码sot/opcode_translator/executor/opcode_executor.py
中其他字节码的实现任务详情
2.1LOAD_NAME
中等MAP_ADD
(dictcomp)UNARY_NOT
UNPACK_EX
(a, *b = c
)IMPORT_NAME
✨ 性能优化项 3 —— 其他
TensorVariable
unpack 支持ObjectVariable
setattr side effect 支持🔥 Python 3.11 支持
即 中国软件开源创新大赛:飞桨框架任务挑战赛 赛题十:为 PaddleSOT 项目添加 Python3.11 版本支持,tracking issue 见 #360
💥 合入 Paddle
本 repo 只是用于孵化项目,快速迭代的临时 repo,PaddleSOT 将会在近期合入 Paddle,完成「入侵」~
🥷 刺探军情
欢迎各位喵喵参与其他任务包括 Paddle 之艾尔登(IR Dialect)快乐勇士挑战赛、在飞桨框架中引入 clang-tidy、[xdoctest] 分批次修改已有代码的示例(啊不对这是自家的,不需要刺探)等等,成为全能型喵喵~
The text was updated successfully, but these errors were encountered: