Skip to content

Commit 8382c53

Browse files
authored
Merge pull request #1 from PFCCLab/main
merge
2 parents 930d7dd + 9958abc commit 8382c53

File tree

30 files changed

+957
-0
lines changed

30 files changed

+957
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
### 姓名
2+
朱新明
3+
### 实习项目
4+
PIR 算子补全与兼容机制建设
5+
### 本周工作
6+
#### 分析mean API动转静执行的问题
7+
`paddle.mean`API在动转静时翻译失败。主要原因是现在的ProgramTranslato没有支持`VarDesc*`。在OpTranslator中适配从`mutable_attributes`
8+
得到`VarDesc*`,进而得到VarName,从`param_map`得到对应的`value`。这里从`param_map`中的到`value`的前提是该`VarDesc*`已经被前述Op定义。但是在
9+
动转静时没有插入对应的data_op。尝试进行插入,在实际执行时发现在`scope`中的Tensor对应的`holder_`为空,所以动转静时在新IR和就IR下都会失败。
10+
ProgramTranslator对`VarDesc*`的支持已经进行了适配。
11+
#### 分析fake_quantize_range_abs_max执行时OutScale的holder_为null问题
12+
`fake_quantize_range_abs_max`的参数`is_test``True`时,`OutScale``holder_``null`。因为当输入`x`的dtype为`float16`时,会选择在GPU上的Kernel执行。中间框架会插入`memcpy_d2h`算子,该算子负责将数据从GPU拷贝会主机。但是当`is_test``True`时,Kernel中并没有为`OutScale`中分配显存,所以会执行失败。
13+
目前的解决方法是当`is_test``True`时,将输出`OutScale``OutScales`加入到no_check_set中,在no_check_set中的属性不会通过`fetch`算子取出,所以一九不会
14+
涉及插入`memcpy_d2h`算子。
15+
#### review分布式算子注册issue相关PR
16+
在review `pull_gpups_sparse`算子注册时发现TestOpWithBackwardTranslator中并不会成功插入反向算子,原因是out的`stop_gradient`的属性值默认为`True`
17+
现在已经修正。
18+
19+
### 下周工作
20+
1. 推进分布式算子注册issue的合入,完成该issue中的内容
21+
2. review算子单测任务相关PR
22+
23+
### 导师点评
24+
对上述问题的分析很有帮助,继续努力!
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
### 姓名
2+
3+
田川
4+
5+
### 实习项目
6+
7+
PIR 动转静理想态单测推全验证任务(二期)
8+
9+
### 本周工作
10+
11+
#### **PIR 0 维单测适配结项**
12+
13+
任务issue: [#62652](https://github.com/PaddlePaddle/Paddle/issues/62652)
14+
15+
#### **PIR 动转静理想态单测推全验证任务(二期)**
16+
17+
##### 遇到的一些小问题
18+
19+
* 在动转静跑反向的时候 hold 不住反向 Program 导致跑反向时 Program 不存在的问题,整体上参考了[PR#63216](https://github.com/PaddlePaddle/Paddle/pull/63216)[PR#59764](https://github.com/PaddlePaddle/Paddle/pull/59764) 思路,修复 PR [#63694](https://github.com/PaddlePaddle/Paddle/pull/63694) (下周修复)
20+
21+
```python
22+
def static_func(x, no_grad_x):
23+
tx = 2 * no_grad_x
24+
tx.stop_gradient = True
25+
return 2 * x
26+
27+
28+
def main_func(x, index):
29+
tmp = paddle.gather(x, index)
30+
out = paddle.jit.to_static(static_func)(x, tmp) # program 被意外释放, 导致反向时找不到对应的 program
31+
return out
32+
33+
34+
class TestNoGradientCase(Dy2StTestBase):
35+
@test_ast_only
36+
@test_pir_only
37+
def test_no_gradient(self):
38+
paddle.disable_static()
39+
x = paddle.randn([10, 3])
40+
index = paddle.arange(0, 10, 1, dtype='int32')
41+
x.stop_gradient = False
42+
index.stop_gradient = True
43+
44+
func = main_func
45+
output = func(x, index).mean()
46+
output.backward() # 这里会报错
47+
```
48+
49+
### 下周工作
50+
51+
1. PIR 动转静理想态单测推全验证任务(二期)
52+
53+
### 导师点评
54+
55+
加油加油,下周继续 :doge:
56+
57+
LGTMeow <img src="https://www.gstatic.com/android/keyboard/emojikitchen/20220506/u1f381/u1f381_u1f43e.png" width="14" alt="🐾"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
### 姓名
2+
3+
周波涛
4+
5+
### 实习项目
6+
7+
算子支持复数计算专项
8+
9+
### 本周工作
10+
11+
1. 继续完善pow算子,在本地把factor设置为Scalar没啥问题,在跑ci时出现很多问题,实现上在ci上还有一些问题
12+
2. 提交PR:add complex support for rsqrt
13+
https://github.com/PaddlePaddle/Paddle/pull/63720
14+
3. 提交PR:add complex support for tanhshrink
15+
https://github.com/PaddlePaddle/Paddle/pull/63722
16+
17+
### 下周工作
18+
19+
1. 继续修改pow实现上的问题
20+
2. 开展新的算子
21+
22+
### 导师点评
23+
按预期正常推进
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
### 姓名
2+
3+
张玉涛
4+
5+
### 实习项目
6+
7+
算子支持复数计算专项
8+
9+
### 本周工作
10+
11+
1. 继续完善fill_constant_op算子,当支持Scalar后,跑CI时会出现较多问题,且涉及面较广,已按照分类整理好了问题。
12+
2. 提交PR:add complex support for channel_shuffle and shuffle_batch
13+
https://github.com/PaddlePaddle/Paddle/pull/61261 \
14+
注:请假了一段时间,后续会将这部分时间补回来。
15+
16+
### 下周工作
17+
18+
1. 继续修复fill_constant_op实现上的问题
19+
2. 尝试fill_any_like算子
20+
21+
### 导师点评
22+
23+
期待能如期完成fill_constant_op,fill_any_like的复数支持工作
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
### 姓名
2+
3+
李睿文
4+
5+
### 实习项目
6+
7+
框架 API 易用性提升
8+
9+
### 本周工作
10+
11+
1. **针对 `paddle.argsort``paddle.sort` 的功能增强**
12+
13+
- 新增功能需求:添加参数 `stable` 支持稳定排序。
14+
15+
- 提交 pr 并合入:
16+
- https://github.com/PaddlePaddle/Paddle/pull/63513
17+
- https://github.com/PaddlePaddle/PaddleCustomDevice/pull/1150
18+
- https://github.com/PaddlePaddle/PaddleCustomDevice/pull/1156
19+
20+
2. **分析 `paddle.nn.initializer.KaimingNormal``paddle.nn.initializer.KaimingUniform` 升级后在所有仓库中的不兼容问题**
21+
22+
- 对所有仓库中的存量代码进行搜索排查,找出可能存在的不兼容问题,并撰写不兼容升级评审报告。
23+
24+
3. **针对 `paddle.nn.functional.max_unpool1d``paddle.nn.functional.max_unpool2d``paddle.nn.functional.max_unpool3d` 的功能增强以及bug修复**
25+
26+
- 修复 `paddle.nn.functional.max_unpool1d` 的参数判断 bug:输入正确的 output_size 会报错。
27+
- 对输入参数 `x` 添加支持 int64 输入。
28+
29+
- 提交 pr 并合入: https://github.com/PaddlePaddle/Paddle/pull/63648
30+
31+
4. **针对 `paddle.nn.functional.kl_div` 的功能增强**
32+
33+
- 新增功能需求:添加参数 `log_target` 支持用户传入属于 log 空间的 `label` 参数。
34+
35+
- 提交 pr 并合入: https://github.com/PaddlePaddle/Paddle/pull/63860
36+
37+
#### 问题疑惑与解答
38+
39+
暂无
40+
41+
### 下周工作
42+
43+
1. 验证 paddle.distribution.Categorical 中 sample、entropy、log_prob 的底层计算逻辑是否和 PyTorch 一致
44+
2. 计划修改 paddle.nn.initializer.TruncatedNormal:增加参数 a, b
45+
3. 计划修改 paddle.nn.Layer 中的 named_sublayers:增加参数 memo
46+
47+
### 导师点评
48+
49+
李睿文近期工作取得较明显的进展,对kl_div、sort/argsort、group_norm等多个问题进行了开展。学习了XPU SDK的相关用法,并实现了xpu kernel的修改,后续继续保持工作的势头,多阅读paddle框架中已有的API/OP/kernel代码。
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
### 姓名
2+
3+
卢林军
4+
5+
### 实习项目
6+
7+
组合机制算子专项和机制建设
8+
9+
### 本周工作
10+
11+
本项目的主要工作是对尚未支持组合机制的算子添加组合机制并完善机制,本周主要工作如下:
12+
13+
1. 新增`reduce_as` op并修复其BUG
14+
15+
算子的新增,引起了`test_assign_pos_op`单测的错误,在本地cuda 11.2和cuda 12.0的环境下,均无法复现其错误。最后,是导师及其同事在CI环境中,发现`test_assign_pos_op`的动态图测试出现了问题,估计是和单测执行模式有关,最后将动态图测试从`test_assign_pos_op`拆解出来,并写入新的单测文件中,问题得以解决。
16+
17+
相关 PR:
18+
19+
- https://github.com/PaddlePaddle/Paddle/pull/63064
20+
21+
2. 解决`test_sub_graph_78`中,开启`with_prim=True`会导致单测报错的BUG。
22+
23+
`test_sub_graph_78`的单测是因为在使用`multiply_grad`的反向拆解时,调用反向拆解中的函数`get_reduce_dims_from_out(out_grad_dims, x_dims)`有问题。具体是说,在检测reduce的dim时,使用的索引错误,现已修改成正确的索引。
24+
25+
相关 PR:
26+
27+
- https://github.com/PaddlePaddle/Paddle/pull/63251
28+
29+
3. 补充组合机制开发文档中的动态图支持部分
30+
31+
32+
### 下周工作
33+
34+
1. 尝试对`reduce_as`完成`complex64/128``int8`的支持
35+
2. 补充`reduce_as`的中文文档
36+
3. 完善之前尚未merge的PR。
37+
4. sum_as的反向拆解
38+
### 导师点评
39+
开发能力强,积极性高:可以独立修复机制相关错误;可以开发独立算子
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
### 姓名
2+
YibinLiu666
3+
4+
### 实习项目
5+
高阶微分的性能分析和优化
6+
7+
### 本周工作
8+
1. 分析现有科学计算中性能相比 pytorch 较差的三个模型,发现瓶颈在于矩阵乘法的二阶微分组合实现,但是由于没有发现额外的计算,暂时没有做相关的优化
9+
2. 实现sigmoid的二阶微分组合算子 https://github.com/PaddlePaddle/Paddle/pull/63669
10+
3. 鉴于prod_grad在输入有0的时候梯度会出现nan的情况,参考TensorFlow的实现,评估prod_grad组合实现使用双向cumprod实现的可行性,目前的结论是可行性不高。
11+
12+
### 下周工作
13+
14+
1. 参考torch的prod_grad组合实现,解决prod_grad在输入有0的时候梯度会出现nan的情况。
15+
16+
### 导师点评
17+

0 commit comments

Comments
 (0)