This repository was archived by the owner on Jan 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
🪄 PaddleSOT 喵喵大入侵计划 💥 #305
Comments
认领1.4、1.5 |
认领1.17 |
PaddleSOT 目前已于 PaddlePaddle/Paddle#57824 合入 Paddle,喵喵大入侵计划大成功!感谢各位为 PaddleSOT 做过贡献的喵喵们~
欢迎继续参与快乐开源的其他任务,也欢迎在 Paddle 主 repo 继续为 SOT 做贡献(迁移后的主体代码见 python/paddle/jit/sot) |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Uh oh!
There was an error while loading. Please reload this page.
🌌 前情提要
喵!距快乐喵喵开源任务 #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: