-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Description
一、BackGround 📚
⭐️ 提交PR 模版 ⭐️:
- // ------- PR 标题 --------
【PIR API adaptor No.100】 Migrate paddle.sin into pir
- // ------- PR 内容 --------
### PR types
Others
### PR changes
APIs
### Description
PIR API 推全升级
将 `paddle.sin` 迁移升级至 pir,并更新单测
单测覆盖率:6/8
TODO:目前缺少适配 `test/legacy_test/test_activation_nn_grad.py` 内
`TestSinDoubleGradCheck` 和 `TestSinTripleGradCheck` 的单测。
原因是当前不支持 `gradient_checker.double_grad_check` 和 `gradient_checker.triple_grad_check` 在 pir 体系下运行,
具体的适配问题包括但不限于:目前缺少从 python 端获取 OpResult.name 的支持
后续做自动微分推全工作的时候,可以进行支持
注意事项:
- 我们适配的 API 对应的单测原则上是应开尽开 ,PR 描述里需要写清楚相关单测打开情况(即单测覆盖率):(xx/总数)
- 一个PR也可以提交多个赛题,多个赛题间以顿号或横线分隔,比如同时在一个 pr 提交 24, 26, 27, 28, 30 号赛题,则 PR 标题命名为:
【PIR API adaptor No.24、26-28、30】Migrate bitwise_not, bitwise_or, bitwise_xor, paddle.distribution.Cauchy into pir
PR 样板间 🥇
🏅 【PIR API adaptor No.54-56】Migrate some ops into pir
🏅 【PIR API adaptor No.24-26】Migrate paddle.bitwise_not/bitwise_or/bitwise_xor into pir
🏅 【PIR API adaptor No.139】 Migrate logsumexp into pir
🏅 【PIR API adaptor No.224】 Migrate paddle.tan
🏅 【PIR API adaptor No.27、29、102 】 Migrate bmm/broadcast_tensors/histogram into pir
奖励一览:
二、Task 🙋🏻♀️
💡 本期的任务建议尽量在11月30日之前完成 PR 合入~~
请大家以 comment 的形式认领任务,如:
【报名】:1、3、12-13
多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
PR 提交格式:在 PR 的标题中以 【PIR API adaptor No.xxx】 开头,注明任务编号
本期需要升级的 API 如下:
序号 | Python API/所在文件/单测覆盖率 | 认领人/状态/PR号 | 优先级 | 单测覆盖率 |
---|---|---|---|---|
1 | paddle.nn.L1Loss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | |
2 | paddle.Tensor.acos python/paddle/tensor/ops.py |
@MarioLulab |
p0 | 全(6/6) |
3 | paddle.Tensor.acosh python/paddle/tensor/ops.py |
@MarioLulab |
p0 | 全(6/6) |
4 | paddle.nn.functional.affine_grid python/paddle/nn/functional/vision.py |
@GreatV @enkilee |
p1 | 全 |
5 | paddle.Tensor.amax python/paddle/tensor/math.py |
@GreatV |
p1 | 全 |
6 | paddle.Tensor.amin python/paddle/tensor/math.py |
@GreatV |
p1 | 全 |
7 | paddle.Tensor.angle python/paddle/tensor/math.py |
@GreatV |
p1 | 5/5 |
8 | python/paddle/tensor/search.py |
@GreatV @0x45f |
全 | |
9 | paddle.argsort python/paddle/tensor/search.py |
@GreatV @enkilee |
p1 | 全 |
10 | paddle.Tensor.as_complex python/paddle/tensor/manipulation.py |
@enkilee |
p1 | 全(2/2) |
11 | paddle.Tensor.as_real python/paddle/tensor/manipulation.py |
@enkilee |
p1 | 全(2/2) |
12 | paddle.Tensor.asin python/paddle/tensor/ops.py |
@MarioLulab |
p0 | 全 |
13 | paddle.Tensor.asinh python/paddle/tensor/ops.py |
@MarioLulab |
p0 | 全 |
14 | paddle.nn.initializer.Assign python/paddle/nn/initializer/assign.py |
@Liyulingyue @MarioLulab |
p1 | 3/3 |
15 | paddle.nn.initializer.Bilinear python/paddle/nn/initializer/Bilinear.py |
@Liyulingyue @MarioLulab |
p1 | 1/1 |
16 | paddle.Tensor.atan python/paddle/tensor/ops.py |
@MarioLulab |
p0 | 6/6 |
17 | paddle.atan2 python/paddle/tensor/math.py |
@enkilee |
p1 | 7/7 |
18 | paddle.Tensor.atanh python/paddle/tensor/ops.py |
@MarioLulab |
p0 | 6/6 |
19 | paddle.incubate.ModelAverage python/paddle/incubate/optimizer/modelaverage.py |
@ooooo-create |
p1 | |
20 | paddle.nn.BCELoss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | |
21 | paddle.bernoulli python/paddle/tensor/random.py |
@Liyulingyue |
p1 | 2/2 |
22 | paddle.nn.functional.bilinear python/paddle/nn/functional/common.py |
@GreatV |
p1 | 1/1 |
23 | paddle.Tensor.bincount python/paddle/tensor/linalg.py |
@DrRyanHuang @GreatV |
p1 | 10/10 |
24 | paddle.Tensor.bitwise_not python/paddle/tensor/logic.py |
@enkilee |
p0 | 全(6/6) |
25 | paddle.Tensor.bitwise_or python/paddle/tensor/logic.py |
@enkilee |
p0 | 全(8/8) |
26 | paddle.Tensor.bitwise_xor python/paddle/tensor/logic.py |
@enkilee |
p0 | 全(8/8) |
27 | paddle.Tensor.bmm python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 全 |
28 | paddle.vision.ops.box_coder python/paddle/vision/ops.py |
@ooooo-create |
p1 | 6/7 |
29 | paddle.Tensor.broadcast_tensors python/paddle/tensor/manipulation.py |
@DrRyanHuang |
p1 | 4/5 |
30 | paddle.distribution.Cauchy python/paddle/distribution/distribution.py |
@Olive-2019 |
p1 | |
31 | paddle.distribution.Normal python/paddle/distribution/normal.py |
@ooooo-create |
p1 | |
32 | paddle.distribution.Uniform python/paddle/distribution/uniform.py |
@ooooo-create |
p1 | |
33 | paddle.Tensor.deg2rad python/paddle/tensor/math.py |
@enkilee @changeyoung98 |
p1 | 0/1 |
34 | paddle.nn.CELU python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 4/5 |
35 | paddle.nn.ChannelShuffle python/paddle/nn/layer/vision.py |
@fsczz |
p1 | |
36 | paddle.amp.debugging.check_numerics python/paddle/amp/debugging.py |
@Liyulingyue |
p1 | 全 |
37 | paddle.Tensor.cholesky python/paddle/tensor/linalg.py |
@enkilee |
p1 | 不全(5/6) |
38 | paddle.Tensor.cholesky_solve python/paddle/tensor/linalg.py |
@enkilee |
p1 | 不全(6/7) |
39 | paddle.nn.functional.class_center_sample python/paddle/nn/functional/common.py |
@DrRyanHuang |
p1 | 全 |
40 | paddle.nn.ClipGradByNorm python/paddle/nn/clip.py |
@fsczz |
p1 | |
41 | paddle.complex python/paddle/tensor/creation.py |
@enkilee |
p1 | 5/5 |
42 | paddle.Tensor.diff python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全 |
43 | paddle.Tensor.conj python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全 |
44 | paddle.Tensor.cosh python/paddle/tensor/ops.py |
@MarioLulab |
p0 | 5/6 |
45 | paddle.crop python/paddle/tensor/manipulation.py |
@longranger2 |
p1 | 7/10 |
46 | paddle.Tensor.cross python/paddle/tensor/linalg.py |
@longranger2 |
p1 | 5/5 |
47 | paddle.nn.functional.softmax_with_cross_entropy python/paddle/nn/functional/loss.py |
@longranger2 |
p1 | 43/44 |
48 | paddle.cummax python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 11/11 |
49 | paddle.cummin python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 11/11 |
50 | paddle.Tensor.cumprod python/paddle/tensor/math.py |
@longranger2 |
p0 | 7/7 |
51 | paddle.vision.ops.decode_jpeg python/paddle/vision/ops.py |
@longranger2 @enkilee |
p1 | 1/1 |
52 | paddle.vision.ops.deform_conv2d python/paddle/vision/ops.py |
@longranger2 @MarioLulab |
p1 | 23/23 |
53 | paddle.linalg.det python/paddle/tensor/linalg.py |
@longranger2 @zrr1999 |
p1 | 6/6 |
54 | paddle.diagflat python/paddle/tensor/creation.py |
@longranger2 |
p1 | 1/2 |
55 | paddle.nn.functional.diag_embed python/paddle/nn/functional/extension.py |
@longranger2 |
p1 | 3/3 |
56 | paddle.Tensor.diagonal python/paddle/tensor/math.py |
@longranger2 |
p1 | 9/9 |
57 | paddle.Tensor.digamma python/paddle/tensor/math.py |
@longranger2 |
p0 | 5/5 |
58 | paddle.distribution.Dirichlet python/paddle/distribution/dirichlet.py |
@longranger2 |
p1 | |
59 | paddle.Tensor.dist python/paddle/tensor/linalg.py |
@longranger2 |
p1 | 全 |
60 | paddle.vision.ops.distribute_fpn_proposals python/paddle/vision/ops.py |
@longranger2 |
p1 | 13/16 |
61 | paddle.linalg.eigh python/paddle/tensor/linalg.py |
@longranger2 |
p1 | 5/6 |
62 | paddle.Tensor.eigvals python/paddle/tensor/linalg.py |
@longranger2 |
p1 | |
63 | paddle.Tensor.eigvalsh python/paddle/tensor/linalg.py |
@longranger2 |
p1 | 4/6 |
64 | paddle.nn.ELU python/paddle/nn/layer/activation.py |
@longranger2 |
p1 | |
65 | paddle.empty_like python/paddle/tensor/creation.py |
@longranger2 |
p1 | 3/3 |
66 | paddle.Tensor.equal_all python/paddle/tensor/logic.py |
@longranger2 @zrr1999 |
p1 | 全(4/4) |
67 | paddle.Tensor.erfinv python/paddle/tensor/math.py |
@longranger2 |
p0 | 全 |
68 | paddle.Tensor.expand_as python/paddle/tensor/manipulation.py |
@zrr1999 @longranger2 |
p1 | 全(5/5) |
69 | paddle.eye python/paddle/tensor/creation.py |
@longranger2 |
p1 | 5/7 |
70 | paddle.nn.functional.scaled_dot_product_attention python/paddle/nn/functional/flash_attention.py |
@longranger2 |
p1 | |
71 | paddle.Tensor.fill_diagonal_tensor python/paddle/tensor/manipulation.py |
@longranger2 @enkilee |
p1 | 5/5 |
72 | paddle.Tensor.floor_divide python/paddle/tensor/math.py |
@longranger2 @enkilee |
p1 | 6/7 |
73 | paddle.Tensor.fmax python/paddle/tensor/math.py |
@xiaoyewww |
p1 | 5/5 |
74 | paddle.Tensor.fmin python/paddle/tensor/math.py |
@xiaoyewww |
p1 | 5/5 |
75 | paddle.nn.Fold python/paddle/nn/layer/common.py |
@longranger2 |
p1 | 5/6 |
76 | paddle.nn.functional.sigmoid_focal_loss python/paddle/nn/functional/loss.py |
@longranger2 |
p1 | 1/2 |
77 | paddle.nn.initializer.Dirac python/paddle/nn/initializer/dirac.py |
@longranger2 @MarioLulab |
p1 | 3/3 |
78 | paddle.incubate.nn.FusedMultiHeadAttention python/paddle/incubate/nn/layer/fused_transformer.py |
@MarioLulab |
p1 | 1/2 |
79 | paddle.incubate.nn.FusedBiasDropoutResidualLayerNorm python/paddle/incubate/nn/functional/fused_transformer.py |
@MarioLulab |
p1 | 未适配 |
80 | paddle.incubate.nn.functional.fused_layer_norm python/paddle/incubate/nn/functional/fused_layer_norm.py |
@MarioLulab |
p1 | 5/5 |
81 | paddle.incubate.nn.layer.fused_dropout_add.FusedDropoutAdd python/paddle/incubate/nn/layer/fused_dropout_add.py |
@MarioLulab |
p1 | 1/1 |
82 | paddle.incubate.nn.FusedFeedForward python/paddle/incubate/nn/layer/fused_transformer.py |
@MarioLulab |
p1 | 2/5 |
83 | paddle.incubate.nn.FusedLinear python/paddle/incubate/nn/layer/fused_linear.py |
@longranger2 @enkilee |
p1 | |
84 | paddle.incubate.nn.functional.fused_linear_activation python/paddle/incubate/nn/functional/fused_matmul_bias.py |
@longranger2 @enkilee |
p1 | |
85 | paddle.incubate.nn.functional.fused_matmul_bias python/paddle/incubate/nn/functional/fused_matmul_bias.py |
@longranger2 @enkilee |
p1 | |
86 | paddle.incubate.nn.FusedMultiTransformer python/paddle/incubate/nn/functional/fused_transformer.py |
@longranger2 @enkilee |
p1 | |
87 | paddle.incubate.nn.functional.fused_rotary_position_embedding python/paddle/incubate/nn/functional/fused_rotary_position_embedding.py |
@longranger2 @enkilee |
p1 | 1/1 |
88 | paddle.incubate.softmax_mask_fuse python/paddle/incubate/operators/softmax_mask_fuse.py |
@longranger2 |
p1 | |
89 | paddle.nn.functional.gather_tree python/paddle/nn/functional/extension.py |
@longranger2 @enkilee |
p1 | 4/4 |
90 | paddle.vision.ops.generate_proposals python/paddle/vision/ops.py |
@longranger2 |
p1 | |
91 | paddle.incubate.graph_khop_sampler python/paddle/incubate/operators/graph_khop_sampler.py |
@longranger2 |
p1 | |
92 | paddle.incubate.graph_reindex python/paddle/incubate/operators/graph_reindex.py |
@longranger2 |
p1 | |
93 | paddle.incubate.graph_sample_neighbors python/paddle/incubate/operators/graph_sample_neighbors.py |
@longranger2 |
p1 | |
94 | paddle.geometric.sample_neighbors python/paddle/geometric/sampling/neighbors.py |
@longranger2 |
p1 | |
95 | paddle.nn.functional.grid_sample python/paddle/nn/functional/vision.py |
@longranger2 |
p1 | 18/18 |
96 | paddle.nn.GroupNorm python/paddle/nn/layer/norm.py |
@MarioLulab |
p0 | 19/20 |
97 | paddle.nn.Hardshrink python/paddle/nn/layer/activation.py |
@BeingGod |
p1 | 3/5 |
98 | paddle.nn.Hardsigmoid python/paddle/nn/layer/activation.py |
@BeingGod |
p1 | 6/8 |
99 | paddle.nn.Hardswish python/paddle/nn/layer/activation.py |
@BeingGod |
p0 | 6/8 |
100 | paddle.nn.Hardtanh python/paddle/nn/layer/activation.py |
@BeingGod |
p1 | 3/4 |
101 | paddle.Tensor.heaviside python/paddle/tensor/math.py |
@enkilee |
p1 | 7/7 |
102 | paddle.Tensor.histogram python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 6/8 |
103 | paddle.nn.HSigmoidLoss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | |
104 | paddle.nn.SmoothL1Loss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | |
105 | paddle.Tensor.i0 python/paddle/tensor/math.py |
@PommesPeter |
p1 | 全 |
106 | paddle.Tensor.i0e python/paddle/tensor/math.py |
@PommesPeter |
p1 | 8/8 |
107 | paddle.Tensor.i1 python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全 |
108 | paddle.Tensor.i1e python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全 |
109 | paddle.incubate.identity_loss python/paddle/incubate/nn/loss.py |
@Liyulingyue |
p1 | 3/3 |
110 | paddle.Tensor.imag python/paddle/tensor/attribute.py |
@zrr1999 |
p1 | 不全(1/2) |
111 | paddle.index_add python/paddle/tensor/manipulation.py |
@zrr1999 |
p1 | 5/5 |
112 | paddle.index_put python/paddle/tensor/manipulation.py |
@zrr1999 |
p1 | 34/34 |
113 | paddle.index_sample python/paddle/tensor/search.py |
@zrr1999 |
p1 | 5/5 |
114 | paddle.Tensor.index_select python/paddle/tensor/search.py |
@zrr1999 |
p0 | 5/5 |
115 | 1. paddle.nn.InstanceNorm1D 2. paddle.nn.InstanceNorm2D 3. paddle.nn.InstanceNorm3D python/paddle/nn/layer/norm.py |
@MarioLulab |
p0 | 10/15 |
116 | paddle.linalg.inverse python/paddle/tensor/math.py |
@zrr1999 |
p1 | 7/7 |
117 | paddle.Tensor.is_empty python/paddle/tensor/logic.py |
@DrRyanHuang |
p1 | 3/4 |
118 | paddle.Tensor.isfinite python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 6/7 |
119 | paddle.Tensor.isinf python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 6/7 |
120 | paddle.nn.KLDivLoss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | |
121 | paddle.Tensor.kron python/paddle/tensor/math.py |
@enkilee |
p1 | 7/7 |
122 | paddle.Tensor.kthvalue python/paddle/tensor/search.py |
@enkilee |
p1 | 7/7 |
123 | paddle.nn.functional.label_smooth python/paddle/nn/functional/common.py |
@DrRyanHuang |
p1 | 全 |
124 | paddle.optimizer.Lamb python/paddle/optimizer/lamb.py |
@Liyulingyue |
p1 | 混合精度单测未适配 |
125 | paddle.Tensor.lerp python/paddle/tensor/math.py |
@enkilee |
p1 | 13/13 |
126 | paddle.Tensor.lgamma python/paddle/tensor/math.py |
@MarioLulab |
p0 | 4/4 |
127 | paddle.nn.quant.llm_int8_linear python/paddle/nn/quant/quantized_linear.py |
@Liyulingyue |
p1 | 全 |
128 | paddle.nn.functional.log_loss python/paddle/nn/functional/loss.py |
@Liyulingyue |
p1 | 3/3 |
129 | paddle.nn.LogSoftmax python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 18/19 |
130 | paddle.Tensor.log1p python/paddle/tensor/math.py |
@MarioLulab |
p0 | 7/7 |
131 | paddle.Tensor.log2 python/paddle/tensor/math.py |
@xiaoyewww |
p1 | 6/6 |
132 | paddle.Tensor.logcumsumexp python/paddle/tensor/math.py |
@xiaoyewww |
p1 | 4/5 |
133 | paddle.Tensor.logical_not python/paddle/tensor/logic.py |
@ccsuzzh |
p1 | 2/2 |
134 | paddle.Tensor.logical_or python/paddle/tensor/logic.py |
@ccsuzzh |
p1 | 2/2 |
135 | paddle.Tensor.logical_xor python/paddle/tensor/logic.py |
@ccsuzzh |
p1 | 2/2 |
136 | paddle.Tensor.logit python/paddle/tensor/math.py |
@zrr1999 |
p0 | 全(8/8) |
137 | paddle.nn.LogSigmoid python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 4/7 |
138 | paddle.logspace python/paddle/tensor/creation.py |
@enkilee |
p1 | 8/12 |
139 | paddle.Tensor.logsumexp python/paddle/tensor/math.py |
@MarioLulab |
p0 | 11/12 |
140 | paddle.linalg.lstsq python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | |
141 | paddle.linalg.lu python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | |
142 | paddle.linalg.lu_unpack python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 缺check grad |
143 | paddle.nn.functional.margin_cross_entropy python/paddle/nn/functional/loss.py |
@Tomoko-hjf |
p1 | 6/6 |
144 | paddle.incubate.nn.functional.masked_multihead_attention python/paddle/incubate/nn/functional/masked_multihead_attention.py |
@Tomoko-hjf |
p1 | 2/2 |
145 | paddle.Tensor.masked_select python/paddle/tensor/search.py |
@cocoshe |
p1 | 14/16 |
146 | paddle.Tensor.inner python/paddle/tensor/math.py |
@cocoshe |
p1 | 1/2 |
147 | paddle.Tensor.mm python/paddle/tensor/math.py |
@cocoshe |
p1 | 1/4 |
148 | paddle.Tensor.outer python/paddle/tensor/math.py |
@cocoshe |
p1 | 1/2 |
149 | paddle.vision.ops.matrix_nms python/paddle/vision/ops.py |
@cocoshe |
p1 | 3/4 |
150 | paddle.linalg.matrix_power python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 28/29 |
151 | paddle.linalg.matrix_rank python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 全 |
152 | paddle.nn.Maxout python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 3/4 |
153 | paddle.meshgrid python/paddle/tensor/creation.py |
@enkilee |
p0 | 7/12 |
154 | paddle.Tensor.mode python/paddle/tensor/search.py |
@ccsuzzh |
p1 | 7/10 |
155 | paddle.linalg.multi_dot python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 16/17 |
156 | paddle.Tensor.multiplex python/paddle/tensor/math.py |
@zrr1999 |
p1 | 5/5 |
157 | paddle.Tensor.mv python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 全 |
158 | paddle.Tensor.nanmedian python/paddle/tensor/stat.py |
@ccsuzzh @Liyulingyue |
p1 | 全 |
159 | paddle.Tensor.nextafter python/paddle/tensor/math.py |
@zrr1999 |
p1 | 2/2 |
160 | paddle.nn.NLLLoss python/paddle/nn/layer/loss.py |
@DrRyanHuang @ooooo-create |
p1 | 6/7 |
161 | paddle.vision.ops.nms python/paddle/vision/ops.py |
@ooooo-create |
p1 | 2/2 |
162 | paddle.nn.functional.one_hot python/paddle/nn/functional/input.py |
@ooooo-create |
p1 | 3/13 |
163 | paddle.nn.functional.normalize python/paddle/nn/functional/norm.py |
@ooooo-create @MarioLulab |
p1 | |
164 | 1. paddle.nn.Pad1D 2. paddle.nn.Pad2D 3. paddle.nn.Pad3D 4. paddle.nn.ZeroPad2D python/paddle/nn/layer/common.py |
@ooooo-create |
p1 | |
165 | paddle.nn.PixelShuffle python/paddle/nn/layer/vision.py |
@ooooo-create @MarioLulab |
p1 | |
166 | paddle.Tensor.polygamma python/paddle/tensor/math.py |
@PommesPeter |
p1 | 8/8 |
167 | 1. paddle.nn.AdaptiveAvgPool1D 2. paddle.nn.AvgPool1D python/paddle/nn/layer/pooling.py |
@DrRyanHuang |
p1 | 全 |
168 | 1. paddle.nn.AdaptiveAvgPool3D 2. paddle.nn.AvgPool3D python/paddle/nn/layer/pooling.py |
@DrRyanHuang |
p1 | 全 |
169 | paddle.nn.PReLU python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 38/42 |
170 | paddle.vision.ops.prior_box python/paddle/vision/ops.py |
@ccsuzzh |
p1 | 4/4 |
171 | paddle.vision.ops.PSRoIPool python/paddle/vision/ops.py |
@ooooo-create |
p1 | |
172 | paddle.Tensor.put_along_axis python/paddle/tensor/manipulation.py |
@xiaoyewww |
p0 | 4/4 |
173 | paddle.linalg.qr python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 全 |
174 | paddle.randint_like python/paddle/tensor/random.py |
@enkilee |
p1 | 1/1 |
175 | paddle.vision.ops.read_file python/paddle/vision/ops.py |
@enkilee |
p1 | 1/1 |
176 | paddle.Tensor.reciprocal python/paddle/tensor/ops.py |
@ccsuzzh |
p1 | 4/4 |
177 | paddle.geometric.reindex_graph python/paddle/geometric/reindex.py |
@ooooo-create |
p1 | 1/1 |
178 | paddle.nn.ReLU6 python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 4/6 |
179 | python/paddle/tensor/math.py |
@zrr1999 |
||
180 | paddle.renorm python/paddle/tensor/math.py |
@zrr1999 |
p1 | 1/1 |
181 | paddle.Tensor.repeat_interleave python/paddle/tensor/manipulation.py |
@zrr1999 |
p1 | 5/5 |
182 | paddle.optimizer.RMSProp python/paddle/optimizer/rmsprop.py |
@ooooo-create |
p1 | |
183 | 1. paddle.nn.GRU 2. paddle.nn.LSTM 3. paddle.nn.SimpleRNN python/paddle/nn/layer/rnn.py |
@ooooo-create @changeyoung98 |
p1 | 全 |
184 | paddle.vision.ops.RoIAlign python/paddle/vision/ops.py |
@DrRyanHuang |
p1 | 全 |
185 | paddle.vision.ops.RoIPool python/paddle/vision/ops.py |
@DrRyanHuang |
p1 | 全 |
186 | paddle.Tensor.roll python/paddle/tensor/manipulation.py |
@xiaoyewww @enkilee |
p0 | 10/10 |
187 | paddle.nn.RReLU python/paddle/nn/layer/activation.py |
@DrRyanHuang @xiaoyewww |
p1 | 11/14 |
188 | paddle.regularizer.L2Decay python/paddle/regularizer.py |
@xiaoyewww @MarioLulab |
p1 | |
189 | paddle.Tensor.rad2deg python/paddle/tensor/math.py |
@zrr1999 |
p1 | 1/1 |
190 | paddle.Tensor.scatter python/paddle/tensor/manipulation.py |
@enkilee |
p0 | 26/27 |
191 | paddle.Tensor.scatter_nd_add python/paddle/tensor/manipulation.py |
@enkilee |
p0 | 11/11 |
192 | paddle.searchsorted python/paddle/tensor/search.py |
@Olive-2019 @MarioLulab |
p1 | 8/9 |
193 | paddle.geometric.segment_max python/paddle/geometric/math.py |
@enkilee |
p1 | 5/6 |
194 | paddle.geometric.segment_mean python/paddle/geometric/math.py |
@enkilee |
p1 | 5/6 |
195 | paddle.geometric.segment_min python/paddle/geometric/math.py |
@enkilee |
p1 | 5/6 |
196 | paddle.geometric.segment_sum python/paddle/geometric/math.py |
@enkilee |
p1 | 5/6 |
197 | paddle.nn.SELU python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 3/4 |
198 | paddle.incubate.graph_send_recv python/paddle/incubate/operators/graph_send_recv.py |
@enkilee |
p1 | 全 |
199 | paddle.geometric.send_u_recv python/paddle/geometric/message_passing/send_recv.py |
@enkilee |
p1 | 全 |
200 | paddle.geometric.send_ue_recv python/paddle/geometric/message_passing/send_recv.py |
@enkilee |
p1 | 全 |
201 | paddle.geometric.send_uv python/paddle/geometric/message_passing/send_recv.py |
@enkilee |
p1 | 全 |
202 | paddle.nn.functional.sequence_mask python/paddle/nn/functional/extension.py |
@YuanRisheng |
p1 | 全 |
203 | paddle.Tensor.shard_index python/paddle/tensor/manipulation.py |
@enkilee |
p1 | 0/4 |
204 | paddle.nn.BCEWithLogitsLoss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | 4/4 |
205 | paddle.regularizer.L1Decay python/paddle/regularizer.py |
@YuanRisheng |
p1 | 全 |
206 | paddle.Tensor.sign python/paddle/tensor/math.py |
@enkilee |
p0 | 3/6 |
207 | paddle.Tensor.sinh python/paddle/tensor/ops.py |
@enkilee |
p0 | 全(6/6) |
208 | paddle.linalg.slogdet python/paddle/tensor/linalg.py |
@zrr1999 |
p1 | 6/6 |
209 | paddle.nn.Softplus python/paddle/nn/layer/activation.py |
@BeingGod |
p1 | 6/8 |
210 | paddle.nn.Softshrink python/paddle/nn/layer/activation.py |
@BeingGod |
p1 | 3/5 |
211 | paddle.nn.Softsign python/paddle/nn/layer/activation.py |
@BeingGod |
p1 | 3/5 |
212 | paddle.Tensor.vsplit python/paddle/tensor/manipulation.py |
@DrRyanHuang |
p1 | 全 |
213 | paddle.nn.CosineSimilarity python/paddle/nn/layer/common.py |
@DrRyanHuang |
p1 | 全 |
214 | paddle.Tensor.stanh python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全(除去error) |
215 | paddle.Tensor.strided_slice python/paddle/tensor/manipulation.py |
@enkilee |
p1 | 31/31 |
216 | addle.nn.MarginRankingLoss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | 7/13 |
217 | paddle.nn.functional.square_error_cost python/paddle/nn/functional/loss.py |
@MarioLulab |
p1 | 1/2 |
218 | paddle.nn.PairwiseDistance python/paddle/nn/layer/distance.py |
@DrRyanHuang |
p1 | 全 |
219 | paddle.linalg.pinv python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 差两个 |
220 | paddle.linalg.svd python/paddle/tensor/linalg.py |
@DrRyanHuang |
p1 | 全 |
221 | paddle.nn.Swish python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 3/4 |
222 | paddle.nn.SyncBatchNorm python/paddle/nn/layer/norm.py |
@xiaoyewww |
p1 | 3/4 |
223 | paddle.Tensor.take_along_axis python/paddle/tensor/manipulation.py |
@DrRyanHuang @xiaoyewww |
p1 | 全 |
224 | paddle.tan python/paddle/tensor/ops.py |
@xiaoyewww |
p0 | 4/4 |
225 | paddle.nn.Tanhshrink python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 3/4 |
226 | paddle.nn.functional.temporal_shift python/paddle/nn/functional/extension.py |
@enkilee |
p1 | 7/7 |
227 | paddle.nn.ThresholdedReLU python/paddle/nn/layer/activation.py |
@DrRyanHuang |
p1 | 3/4 |
228 | paddle.Tensor.moveaxis python/paddle/tensor/manipulation.py |
@DrRyanHuang |
p1 | 全 |
229 | paddle.t python/paddle/tensor/linalg.py |
@zrr1999 |
p1 | 全 |
230 | paddle.linalg.triangular_solve python/paddle/tensor/linalg.py |
@zrr1999 |
p1 | 全 |
231 | paddle.tril_indices python/paddle/tensor/creation.py |
@enkilee |
p1 | 全 |
232 | paddle.triu_indices python/paddle/tensor/creation.py |
@enkilee |
p1 | 全 |
233 | paddle.Tensor.trunc python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全(除去error) |
234 | paddle.Tensor.frac python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全 |
235 | paddle.Tensor.unbind python/paddle/tensor/manipulation.py |
@DrRyanHuang |
p1 | 全 |
236 | paddle.nn.Unfold python/paddle/nn/layer/common.py |
@DrRyanHuang |
p1 | 5/6 |
237 | paddle.nn.initializer.Uniform python/paddle/nn/initializer/uniform.py |
@MarioLulab |
p1 | 2/2 |
238 | paddle.nn.initializer.KaimingNormal python/paddle/nn/initializer/kaiming.py |
@YinKeYu @MarioLulab |
p1 | 1/1 |
239 | paddle.nn.initializer.KaimingUniform python/paddle/nn/initializer/kaiming.py |
@MarioLulab |
p1 | 1/1 |
240 | paddle.nn.initializer.XavierNormal python/paddle/nn/initializer/xavier.py |
@MarioLulab |
p1 | 1/1 |
241 | paddle.nn.initializer.XavierUniform python/paddle/nn/initializer/xavier.py |
@MarioLulab |
p1 | 1/1 |
242 | paddle.Tensor.unique_consecutive python/paddle/tensor/manipulation.py |
@DrRyanHuang |
p1 | 8/11 |
243 | 1. paddle.nn.MaxUnPool1D 2. paddle.nn.MaxUnPool2D python/paddle/nn/layer/pooling.py |
@DrRyanHuang |
p1 | 全 |
244 | paddle.nn.MaxUnPool3D python/paddle/nn/layer/pooling.py |
@DrRyanHuang |
p1 | 全 |
245 | paddle.Tensor.unstack python/paddle/tensor/manipulation.py |
@DrRyanHuang |
p1 | 全 |
246 | paddle.incubate.nn.functional.variable_length_memory_efficient_attention python/paddle/incubate/nn/functional/variable_length_memory_efficient_attention.py |
@Liyulingyue |
p1 | 1/1 |
247 | paddle.text.ViterbiDecoder python/paddle/text/viterbi_decode.py |
@Liyulingyue |
p1 | 2/2 |
248 | paddle.nn.CTCLoss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | 5/7 |
249 | paddle.nn.RNNTLoss python/paddle/nn/layer/loss.py |
@DrRyanHuang |
p1 | 4/5 |
250 | paddle.geometric.weighted_sample_neighbors python/paddle/geometric/sampling/neighbors.py |
@Liyulingyue |
p1 | 1/2 |
251 | paddle.vision.ops.yolo_box python/paddle/vision/ops.py |
@Liyulingyue |
p1 | 全 |
252 | paddle.vision.ops.yolo_loss python/paddle/vision/ops.py |
@Liyulingyue |
p1 | 全 |
253 | paddle.cumulative_trapezoid python/paddle/tensor/math.py |
@enkilee |
p1 | 9/9 |
254 | paddle.optimizer.lr.CyclicLR python/paddle/optimizer/lr.py |
@YuanRisheng |
p1 | 无 |
255 | paddle.incubate.nn.FusedTransformerEncoderLayer python/paddle/incubate/nn/layer/fused_transformer.py |
@MarioLulab |
p1 | |
256 | paddle.nn.GaussianNLLLoss python/paddle/nn/layer/loss.py |
@MarioLulab |
p1 | 0/2 |
257 | paddle.Tensor.gcd python/paddle/tensor/math.py |
@Olive-2019 @enkilee |
p1 | 5/5 |
258 | paddle.nn.functional.glu python/paddle/nn/functional/activation.py |
@DrRyanHuang |
p1 | |
259 | paddle.nn.HingeEmbeddingLoss python/paddle/nn/layer/loss.py |
@zade23 @MarioLulab |
p1 | 2/2 |
260 | paddle.audio.functional.hz_to_mel python/paddle/audio/functional/functional.py |
@MarioLulab |
p1 | 1/1 |
261 | paddle.is_tensor python/paddle/tensor/logic.py |
@DrRyanHuang |
p1 | 全 |
262 | paddle.distribution.Laplace python/paddle/distribution/laplace.py |
@YuanRisheng |
p1 | 全 |
263 | paddle.optimizer.LBFGS python/paddle/optimizer/lbfgs.py |
@YuanRisheng |
p1 | |
264 | paddle.incubate.optimizer.LBFGS python/paddle/incubate/optimizer/lbfgs.py |
@YuanRisheng |
p1 | 无 |
265 | paddle.Tensor.lcm python/paddle/tensor/math.py |
@enkilee |
p1 | 5/5 |
266 | paddle.Tensor.ldexp python/paddle/tensor/math.py |
@enkilee |
p1 | 1/1 |
267 | paddle.optimizer.lr.LinearWarmup python/paddle/optimizer/lr.py |
@YuanRisheng |
p1 | 全 |
268 | paddle.nn.LocalResponseNorm python/paddle/nn/layer/norm.py |
@YuanRisheng |
p1 | 全 |
269 | paddle.Tensor.logaddexp python/paddle/tensor/math.py |
@enkilee |
p1 | 0/0 |
270 | paddle.audio.features.LogMelSpectrogram python/paddle/audio/features/layers.py |
@0x45f |
p1 | |
271 | paddle.distribution.LogNormal python/paddle/distribution/lognormal.py |
@0x45f |
p1 | 全 |
272 | paddle.incubate.LookAhead python/paddle/incubate/optimizer/lookahead.py |
@0x45f |
p1 | 全 |
273 | paddle.Tensor.median python/paddle/tensor/stat.py |
@DrRyanHuang |
p1 | 全 |
274 | paddle.audio.functional.mel_frequencies python/paddle/audio/functional/functional.py |
@MarioLulab |
p1 | 0/1 |
275 | paddle.audio.functional.mel_to_hz python/paddle/audio/functional/functional.py |
@MarioLulab |
p1 | 1/1 |
276 | paddle.audio.features.MelSpectrogram python/paddle/audio/features/layers.py |
@MarioLulab |
p1 | 0/0 |
277 | paddle.audio.features.MFCC python/paddle/audio/features/layers.py |
@MarioLulab |
p1 | 0/0 |
278 | paddle.nn.Mish python/paddle/nn/layer/activation.py |
@MarioLulab |
p1 | 3/4 |
279 | paddle.nn.MultiLabelSoftMarginLoss python/paddle/nn/layer/loss.py |
@MarioLulab |
p1 | 1/1 |
280 | paddle.nn.MultiMarginLoss python/paddle/nn/layer/loss.py |
@MarioLulab |
p1 | 1/1 |
281 | paddle.nn.MultiHeadAttention python/paddle/nn/layer/transformer.py |
@MarioLulab |
p1 | |
282 | paddle.Tensor.nan_to_num python/paddle/tensor/math.py |
@DrRyanHuang @xiaoyewww |
p1 | 1/1 |
283 | paddle.Tensor.nanmean python/paddle/tensor/math.py |
@DrRyanHuang @xiaoyewww |
p1 | 全 |
284 | paddle.Tensor.nanquantile python/paddle/tensor/stat.py |
@xiaoyewww |
p1 | 1/2 |
285 | paddle.Tensor.nansum python/paddle/tensor/math.py |
@DrRyanHuang @xiaoyewww |
p1 | 全 |
286 | paddle.neg python/paddle/tensor/math.py |
@DrRyanHuang @xiaoyewww |
p1 | 全 |
287 | paddle.nn.functional.npair_loss python/paddle/nn/functional/loss.py |
@0x45f |
p1 | 全 |
288 | paddle.nn.initializer.Orthogonal python/paddle/nn/initializer/orthogonal.py |
@MarioLulab |
p1 | 6/6 |
289 | paddle.linalg.pca_lowrank python/paddle/tensor/linalg.py |
@0x45f |
p1 | 全 |
290 | paddle.nn.PoissonNLLLoss python/paddle/nn/layer/loss.py |
@zade23 @MarioLulab |
p1 | 8/8 |
291 | paddle.Tensor.polar python/paddle/tensor/creation.py |
@0x45f |
p1 | 全 |
292 | paddle.audio.functional.power_to_db python/paddle/audio/functional/functional.py |
@0x45f @MarioLulab |
p1 | 1/1 |
293 | paddle.Tensor.quantile python/paddle/tensor/stat.py |
@xiaoyewww |
p1 | 1/2 |
294 | paddle.vision.transforms.RandomAffine python/paddle/vision/transforms/transforms.py |
@0x45f |
p1 | |
295 | paddle.rank python/paddle/tensor/attribute.py |
@DrRyanHuang |
p1 | 无 |
296 | paddle.geometric.reindex_heter_graph python/paddle/geometric/reindex.py |
@0x45f |
p1 | 全 |
297 | paddle.distribution.ReshapeTransform python/paddle/distribution/transform.py |
@0x45f |
p1 | 全 |
298 | paddle.Tensor.rot90 python/paddle/tensor/manipulation.py |
@changeyoung98 |
p1 | 1/1 |
299 | paddle.Tensor.sgn python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全 |
300 | paddle.distribution.SigmoidTransform python/paddle/distribution/transform.py |
@changeyoung98 |
p1 | 全 |
301 | paddle.nn.SoftMarginLoss python/paddle/nn/layer/loss.py |
@zade23 @MarioLulab |
p1 | 1/1 |
302 | paddle.nn.Softmax2D python/paddle/nn/layer/activation.py |
@changeyoung98 |
p1 | 6/6 |
303 | paddle.nn.SpectralNorm python/paddle/nn/layer/norm.py |
@changeyoung98 |
p1 | 6/6 |
304 | paddle.audio.features.Spectrogram python/paddle/audio/features/layers.py |
@changeyoung98 |
p1 | |
305 | paddle.distribution.StackTransform python/paddle/distribution/transform.py |
@changeyoung98 |
p1 | 全 |
306 | paddle.distribution.StickBreakingTransform python/paddle/distribution/transform.py |
@changeyoung98 |
p1 | 全 |
307 | paddle.Tensor.take python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全 |
308 | paddle.Tensor.tensordot python/paddle/tensor/manipulation.py |
@Olive-2019 @MarioLulab |
p1 | 9/10 |
309 | paddle.nn.Transformer python/paddle/nn/layer/transformer.py |
@changeyoung98 |
p1 | |
310 | paddle.Tensor.trapezoid python/paddle/tensor/math.py |
@enkilee |
p1 | 13/13 |
311 | paddle.nn.TripletMarginLoss python/paddle/nn/layer/loss.py |
@zade23 @MarioLulab |
p1 | 3/3 |
312 | paddle.nn.TripletMarginWithDistanceLoss python/paddle/nn/layer/loss.py |
@zade23 @MarioLulab |
p1 | 4/4 |
313 | paddle.nn.Unflatten python/paddle/nn/layer/common.py |
@DrRyanHuang |
p1 | 全 |
314 | paddle.Tensor.vander python/paddle/tensor/math.py |
@DrRyanHuang |
p1 | 全 |
315 | paddle.var python/paddle/tensor/stat.py |
@DrRyanHuang |
p1 | 全 |
三、Tutorial 💼
对Python API进行适配升级,实现在 PIR 模式下,在 Python 端调用底层 C++ 端 PIR API。
-
以组网 api mean 举例:
升级前:def mean(x, axis=None, keepdim=False, name=None): if in_dygraph_mode(): # 动态图分支代码 return _C_ops.mean(x, axis, keepdim) else: # 静态图分支代码,省略
升级后:
def mean(x, axis=None, keepdim=False, name=None): if in_dynamic_or_pir_mode(): # 动态图 / PIR分支代码 return _C_ops.mean(x, axis, keepdim) # <----- 动静统一 else: # 静态图分支代码,省略
-
再比如concat:
升级前:def concat(x, axis=0, name=None): input = x if in_dynamic_mode(): # 动态图代码分支 if isinstance(axis, Variable): axis = axis.item(0) if not isinstance(input, Variable): input = [t for t in input if t.shape.count(0) == 0] return _C_ops.concat(input, axis) else: # 静态图代码分支
升级后:
def concat(x, axis=0, name=None): input = x if in_dynamic_mode(): # 动态图代码分支 if isinstance(axis, Variable): axis = axis.item(0) if not isinstance(input, Variable): input = [t for t in input if t.shape.count(0) == 0] return _C_ops.concat(input, axis) elif in_pir_mode(): # 新IR代码分支 if not isinstance(input, paddle.ir.Value): input = [t for t in input if t.shape.count(0) == 0] return _C_ops.concat(input, axis) else: # 静态图代码分支
本任务中,需要关注的有三种模式判断:
# python/paddle/fluid/framework.py
in_dygraph_mode() # 动态图模式下为 True
in_pir_mode() # PIR 模式下为 True
in_dynamic_or_pir_mode() # 动态图或者 PIR 模式下为 True
为了提高 Python 端的代码复用,提升代码简洁性降低维护成本,我们对 C++ 端 PIR API 和动态图 API 接口进行了统一。正如上述 mean 所示,_C_ops.mean
可以表示在 PIR 或者动态图下的 C++ 接口,所以为了能够在 PIR 模式下调用 C++ 接口,只需要将 in_dygraph_mode()
改为 in_dynamic_or_pir_mode()
即可,这样就实现了 Python 端支持 PIR API 调用。但是在 API concat当中,由于动态图中存在无法给新IR复用的代码,所以使用 in_pir_mode()
新开了一个分支。
四、单测验证 🔧
需要对 api 相关的单测进行修改以进行验证,单测文件中一般会有两种类型的单测:一种单测继承自 OpTest
,另一种单测继承自 TestCase
以 mean
为例,其单测在文件 test_mean_op.py
中,具有继承自 OpTest
和继承自 TestCase
两种类型的单测:
1. 对于继承自 OpTest
的单测
在单测函数中加入 check_pir = True
,即可实现对新 IR 下 api 的验证
2. 对于继承自 TestCase
的单测
首先需要确认一下这个单测是静态图模式下的代码,然后在单测函数上加装饰器 test_with_pir_api
运行单测有两种方式,任意一种跑通即可:
- 编译安装好 paddle 直接使用 python 命令执行单测文件
- 编译 paddle 后,在 build 目录下,使用命令
ctest -R test_mean_op
来运行
五、注意事项 💡
1. 关于 PR 的验收规范
我们适配的 API 对应的单测原则上是应开尽开,PR 描述里需要写清楚相关单测打开情况 (xx/总数),如果有的单测开了有解决不了的 bug,可以把 bug 截图添加到 PR 描述里记录为 TODO。以 paddle.mean
的在 test/legacy_test/test_mean_op.py
中的单测验证为例,说明如何统计单测验证的数量:
我们以继承自 OpTest
和 TestCase
的单测 class 为基本单位,如果下图所示的 TestMeanOp
和 TestMeanOp_ZeroDim
内的所有单测均正常运行,则单测打开数量计为 2
2. 关于问题记录和 BUG 修复
由于当前 PIR 还处于机制完善和验证阶段,且单测验证框架也可能存在问题,所以遇到不容易解决的问题先记录到 PR 的描述当中,有 Paddle 团队来解决。
遇到的 bug 可能会普遍出现在其他 API 适配的场景,因此为了降低开发成本,我们维护了一个 bug 修复手册 组网 API PIR 迁移 bug 修复手册 。建议把 bug 问题描述及解决方法在 组网 API PIR 迁移 bug 修复手册 以 comment 的形式进行记录。
看板信息
任务方向 | 任务数量 | 提交作品 / 任务认领 | 提交率 | 完成 | 完成率 |
---|---|---|---|---|---|
PIR Python API 适配升级 | 315 | 307 / 315 | 97.46% | 290 | 92.06% |
统计信息
排名不分先后 @DrRyanHuang (75) @MarioLulab (45) @enkilee (48) @GreatV (5) @0x45f (8) @Liyulingyue (12) @ooooo-create (7) @fsczz (2) @longranger2 (21) @zrr1999 (18) @xiaoyewww (11) @BeingGod (7) @PommesPeter (3) @ccsuzzh (6) @Tomoko-hjf (2) @cocoshe (5) @changeyoung98 (7) @YuanRisheng (8)
Metadata
Metadata
Labels
Type
Projects
Status