paddle和torch前向对齐,有误差
Yang-Changhui opened this issue · 6 comments
请提出你的问题 Please ask your question
你好,我现在有一个简单的前向,initencoder,相同的网络,相同输入,相同权重,使用reprod_log检查,误差为0.00067,这是最小测试单元,
paddle_torch_forward_error:https://aistudio.baidu.com/projectdetail/7781433?sUid=650866&shared=1&ts=1713940796780 ,麻烦您帮忙检查一下,谢谢
F.interpolate
存在diff好像是符合预期的,可以试下在CPU上运行上述程序,印象里CPU的结果能跟torch的GPU对齐。
好的,谢谢。但是,这段测试代码,经过判断条件后,并没有进入generalize_padding函数,没有用到F.interpolate,这个能麻烦您再看一下吗
好的,谢谢。但是,这段测试代码,经过判断条件后,并没有进入generalize_padding函数,没有用到F.interpolate,这个能麻烦您再看一下吗
可以使用这个工具具体定位一下是具体哪一层导致的diff,https://github.com/PaddlePaddle/PaDiff
@HydrogenSulfate 你好,设置"rtol":1e-6,"atol":1e-6,显示linear层有误差,但是linear的权重是一样的;
设置"rtol":1e-4,"atol":1e-7,可以 通过;但是使用reprod_log误差在相同的机器上为0.001,之前torch使用3060,paddle使用A100,误差为0.0006
@HydrogenSulfate 你好,设置"rtol":1e-6,"atol":1e-6,显示linear层有误差,但是linear的权重是一样的; 设置"rtol":1e-4,"atol":1e-7,可以 通过;但是使用reprod_log误差在相同的机器上为0.001,之前torch使用3060,paddle使用A100,误差为0.0006
- 确认对于同样的输入,F.pad在上述代码中是否能产生完全一致的结果
- 含有XXXNorm层时,输出的diff达到1e-4是有可能的,可以尝试把双方的norm层全部注释掉再对齐
@HydrogenSulfate 你好,设置"rtol":1e-6,"atol":1e-6,显示linear层有误差,但是linear的权重是一样的; 设置"rtol":1e-4,"atol":1e-7,可以 通过;但是使用reprod_log误差在相同的机器上为0.001,之前torch使用3060,paddle使用A100,误差为0.0006
- 确认对于同样的输入,F.pad在上述代码中是否能产生完全一致的结果
- 含有XXXNorm层时,输出的diff达到1e-4是有可能的,可以尝试把双方的norm层全部注释掉再对齐
另外对齐的时候尽量使用同样的卡,避免GPU硬件不同带来的的影响