-
Notifications
You must be signed in to change notification settings - Fork 5.7k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
【PIR】PIR下的分布式算子注册 #60436
Labels
PFCC
Paddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfcc
status/close
已关闭
Comments
Closed
【报名】:6、7、16 |
【报名】:1、3 |
【报名】:24、25 |
【报名】:13、14、15 |
This was referenced Jan 15, 2024
Open
This was referenced Mar 5, 2024
【报名】12、17、26 |
【报名】4、5、8、10、11 |
Closed
This was referenced Mar 14, 2024
【报名】:20 |
【报名】:19 |
【报名】:22 |
【PIR】PIR下的分布式算子注册 已全部完成,感谢参与的小伙伴们!
欢迎继续参与快乐开源的其他任务! |
# for free
to join this conversation on GitHub.
Already have an account?
# to comment
Labels
PFCC
Paddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfcc
status/close
已关闭
一、需求背景
飞桨正在构建一套新的IR体系.在新IR下飞桨基于动态图的更规范的算子定义(ops.yaml、legacy_ops.yaml)生成了新IR体系下的算子.在新的IR体系下仍然需要保证旧IR的兼容性.为此飞桨提供了
ProgramTranslator
(相关代码位于paddle/fluid/ir_adaptor/translator/
),它可以将旧IR表示下的计算图翻译为新IR下的计算图.目前,ProgramTranslator
的核心工作是完成单个OP
的翻译.也就是将旧IR下定义的OP
(一般定义在paddle/fluid/operators
文件夹下)翻译为新IR下定义的算子.现在有一部分分布式算子在新IR下是没有定义的.我们需要在新IR下为它们补充定义并保证
ProgramTranslator
可以成功完成翻译.需要注册的分布式算子如下:
@enkilee
@enkilee
@xiaoyewww
@enkilee
@enkilee
@enkilee
@xingmingyyj
PR提交模板
【PIR Dist Op Reg No.1】 reg c_reduce_min
认领方式
请大家以 comment 的形式认领任务,如:
多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
PR 提交格式:在 PR 的标题中以 【PIR OpTest Fix No.xxx】 开头,注明任务编号
看板信息
二、Tutorial
每个任务的主要工作可以分为
三个部分,下面展开介绍:
2.1 算子注册
关于算子注册的步骤可以参考 #59382 的
二、Tutorial
.2.2 编写单测
为了验证我们新注册的分布式算子可以被成功的翻译.需要编写一个单测进行验证.
首先,编写的所有单测需要放置在
test/ir/pir/translator
文件夹下,并且继承并且继承TestOpTranscriber
.TestOpTranslator
或TestOpWithBackwardTranslator
,对于只需要注册前向算子的单测需要继承TestOpTranslator
,前向和反向算子同时注册时需要继承TestOpWithBackwardTranslator
.继承继承TestOpTranscribe
时,TestOpTranslator
时,需要重写append_op
方法,在组网时将待测试的Op
加入.check
的主要思路是将旧IR下表示的计算图使用ProgramTranslator
翻译为新IR表示的计算图,然后将新IR表示的计算图进行打印,如果计算图中包含待注册的Op,则说明翻译成功.这里的类名统一采用
TestXXXOpTranslator
的形式,上述代码是对
c_reduce_min
进行测试的例子.2.3 修改test/ir/pir/translator/CMakeLists.txt
因为现在注册的是分布式算子,如果编译选项
WITH_DISTRIBUTE
不打开的话,这部分算子是不会被编译注册的.所以,即便完成上述操作在某些CI上仍然可能遇到下述问题:解决方法是修改CMakeLists.
可以看出
DISTRIBUTED_OP_TRANSLATOR_TEST
中记录了分布式算子对应的单测,在WITH_DISTRIBUTE
选项没有打开时,这些单测将会从TEST_INTERP_CASES
删除,这样在CI上就不会执行该单测了.以
c_allreduce_min
这个算子为例,单测名称对应为test_c_allreduce_min_translator
,所以,set(DISTRIBUTED_OP_TRANSLATOR_TEST test_c_reduce_min_translator test_c_allreduce_min_translator)
将对应单测名称加入集合就可以了.
三、Q&A
1.反向算子定义的位置?
A:取决于前向算子定义的位置.如果前向定义在paddle/phi/api/yaml/ops.yaml, 反向就需要定义在 paddle/phi/api/yaml/backward.yaml.如果前向定义在 paddle/fluid/pir/dialect/operator/ir/ops.yaml,就把反向定义在paddle/fluid/pir/dialect/operator/ir/ops_backward.yaml.
统计信息
The text was updated successfully, but these errors were encountered: