Skip to content

Conversation

@cszdrg
Copy link
Contributor

@cszdrg cszdrg commented Aug 20, 2025

PR Category

Operator Mechanism

PR Types

Bug fixes

Description

pr目的:为median nanmedian反向添加均分

返回索引的情况:

  1. 如果索引是一个值且mode为min 则返回中位数索引
  2. mode为avg 或者 如果索引是列表、None 则不返回中位数索引

均分的情况:

  1. 如果返回索引 不做均分
  2. 如果不返回索引 进行均分

设计思路

1.仿照nanmeidan为median添加kernel
2. cpu反向添加均分:遍历得到相同值 进行存储 在进行均分 如果是avg 会找不到相同值 则单独处理 赋予梯度
2. Gpu反向添加均分:如果是avg 将选取的两个值都改为中位数的值 再使用ReduceCudaAMaxAMinGrad计算均分
由于增加均分 性能有所下降


代码改动

  1. 以nanmedian代码为原型 为median增加内核
  2. 内核中新增ignore参数 区分nan的处理
  3. 内核中新增evenly参数 根据mode和索引值 决定是否进行均分 如果均分 走新代码 否则 走原有代码
  4. 反向ymal和函数中增加data 回传中位数值 进行计算
  5. 为ReduceCudaAMaxAMinGrad新增参数 来处理为nan进行分配梯度的操作

测试结果

PAddleAPITest下所有测试通过
截屏2025-08-20 14 11 07

在大tensor下存在索引不同的情况,相关误差来自于topk的索引误差
截屏2025-08-21 12 17 42

均分情况
截屏2025-08-26 10 18 35


另:paddle的topk与torch在nan上的逻辑并未对齐 torch会将nan作为最大值参与排序 但是paddle会出现nan和inf等莫名错误,后续看是否有修复计划

@paddle-bot
Copy link

paddle-bot bot commented Aug 20, 2025

你的PR提交成功,感谢你对开源项目的贡献!
请关注后续CI自动化测试结果,详情请参考Paddle-CI手册
Your PR has been submitted. Thanks for your contribution!
Please wait for the result of CI firstly. See Paddle CI Manual for details.

@codecov-commenter
Copy link

codecov-commenter commented Aug 21, 2025

Codecov Report

❌ Patch coverage is 84.93976% with 50 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (develop@4d37570). Learn more about missing BASE report.

Files with missing lines Patch % Lines
paddle/phi/kernels/cpu/nanmedian_kernel.cc 2.32% 42 Missing ⚠️
paddle/phi/kernels/cpu/median_kernel.cc 97.27% 4 Missing ⚠️
paddle/phi/kernels/cpu/median_grad_kernel.cc 95.23% 3 Missing ⚠️
paddle/phi/kernels/cpu/nanmedian_grad_kernel.cc 96.66% 1 Missing ⚠️

❌ Your patch status has failed because the patch coverage (84.93%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             develop   #74767   +/-   ##
==========================================
  Coverage           ?   84.98%           
==========================================
  Files              ?        7           
  Lines              ?      333           
  Branches           ?        0           
==========================================
  Hits               ?      283           
  Misses             ?       50           
  Partials           ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@cszdrg cszdrg changed the title 为median使用内核 为median添加内核 Aug 25, 2025
zyfncg
zyfncg previously approved these changes Aug 27, 2025
lshpku
lshpku previously approved these changes Aug 27, 2025
@cszdrg cszdrg dismissed stale reviews from lshpku and zyfncg via 65ae993 August 27, 2025 14:04
XiaoguangHu01
XiaoguangHu01 previously approved these changes Aug 28, 2025
zyfncg
zyfncg previously approved these changes Aug 28, 2025
@swgu98 swgu98 merged commit 356087d into PaddlePaddle:develop Aug 28, 2025
81 of 88 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants