PaddlePaddle / PaddleCustomDevice

PaddlePaddle custom device implementaion. (『飞桨』自定义硬件接入实现)
Apache License 2.0
70 stars 148 forks source link

PaddleSeg模型跑训练报错,OSError:(External)ACL error,the error code is:500002 #994

Closed PlayerJian closed 7 months ago

PlayerJian commented 8 months ago

1,环境

昇腾910b cann7.0 官方镜像registry.baidubce.com/device/paddle-npu:cann701-910B-ubuntu18-aarch64 paddleseg版本2.9

2,训练启动命令

cd ./contrib/PP-HumanSeg python ../../tools/train.py --config configs/human_pp_humansegv2_lite.yml --save_dir output/human_pp_humansegv2_lite --save_interval 100 --do_eval --use_vdl --device npu

3,问题

5cdc13966a3f2799ef716faa1b340a2 报错OSError:(External)ACL error,the error code is:500002

YanhuiDua commented 8 months ago

你好,这个报错信息是来自于华为底层算子抛错,错误码信息可以参考:https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC1alpha002/apiref/appdevgapi/aclpythondevg_01_0901.html,根据以往经验,这个错误码是由于CANN算子计算错误

请问这个错误是训练到什么阶段出现的呢?例如是刚开始训练,或是训练到第几个epoch?

如果就刚启动训练就出现报错,建议使用下面步骤进行调试:

  1. 设置环境变量:export FLAGS_npu_blocking_run=1,开启npu算子同步执行,重新执行一次;由于算子异步执行等机制,开启同步后出现报错的位置才是实际计算错误的算子;
  2. 对于实际计算错误的算子,dump其输入,作为算子单测的输入,查看能否复现问题
YanhuiDua commented 8 months ago

你好,也可以Paddle/PaddleCustomDevice切换到release/2.6版本,PaddleSeg切换到release/2.8版本,再尝试一下

qili93 commented 7 months ago

hi,请问您切换分支之后还有问题吗?谢谢

PlayerJian commented 7 months ago

你好,这个报错信息是来自于华为底层算子抛错,错误码信息可以参考:https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC1alpha002/apiref/appdevgapi/aclpythondevg_01_0901.html,根据以往经验,这个错误码是由于CANN算子计算错误;

请问这个错误是训练到什么阶段出现的呢?例如是刚开始训练,或是训练到第几个epoch?

如果就刚启动训练就出现报错,建议使用下面步骤进行调试:

  1. 设置环境变量:export FLAGS_npu_blocking_run=1,开启npu算子同步执行,重新执行一次;由于算子异步执行等机制,开启同步后出现报错的位置才是实际计算错误的算子;
  2. 对于实际计算错误的算子,dump其输入,作为算子单测的输入,查看能否复现问题

还没到训练这一步就报错了,应该是在加载激活函数时报的错,试用了这个方法,paddleseg2.9和2.8虽然不报错了,但是运行在这个位置就不动了 475dc0016dfdccc15e766350f9dc507

PlayerJian commented 7 months ago

你好,也可以Paddle/PaddleCustomDevice切换到release/2.6版本,PaddleSeg切换到release/2.8版本,再尝试一下

已经是2.6版本了,PaddleSeg切换版本不管用

PlayerJian commented 7 months ago

hi,请问您切换分支之后还有问题吗?谢谢

如上

PlayerJian commented 7 months ago

如果是硬件的问题就不打扰大家了

YanhuiDua commented 7 months ago

你好,可以贴一下加载激活函数时的报错截图

PlayerJian commented 7 months ago

你好,可以贴一下加载激活函数时的报错截图

image

YanhuiDua commented 7 months ago

这个方法有尝试吗?设置环境变量:export FLAGS_npu_blocking_run=1,开启npu算子同步执行,重新执行一次;由于算子异步执行等机制,开启同步后出现报错的位置才是实际计算错误的算子;可以这么尝试下,然后再贴下报错

PlayerJian commented 7 months ago

这个方法有尝试吗?设置环境变量:export FLAGS_npu_blocking_run=1,开启npu算子同步执行,重新执行一次;由于算子异步执行等机制,开启同步后出现报错的位置才是实际计算错误的算子;可以这么尝试下,然后再贴下报错

abe048448d7d63539d680ef81fecbd1

YanhuiDua commented 7 months ago

好的 我这里尝试复现下

YanhuiDua commented 7 months ago

你好,请试一下 export CUSTOM_DEVICE_BLACK_LIST=hardswish,把hardswish加到black list里,也就是将harsswish算子异构到cpu上,重新跑下看看;我这边可以正常跑起来训练

PlayerJian commented 7 months ago

你好,请试一下 export CUSTOM_DEVICE_BLACK_LIST=hardswish,把hardswish加到black list里,也就是将harsswish算子异构到cpu上,重新跑下看看;我这边可以正常跑起来训练

还是不行,还是报ACL,500002,可以说下你的运行环境么

YanhuiDua commented 7 months ago

你给我一个邮箱,我把我用的whl包发给你?在 2024年3月22日,15:51,PlayerJian @.***> 写道:

你好,请试一下 export CUSTOM_DEVICE_BLACK_LIST=hardswish,把hardswish加到black list里,也就是将harsswish算子异构到cpu上,重新跑下看看;我这边可以正常跑起来训练

还是不行,还是报ACL,500002,可以说下你的运行环境么

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

PlayerJian commented 7 months ago

你给我一个邮箱,我把我用的whl包发给你?在 2024年3月22日,15:51,PlayerJian @.> 写道: 你好,请试一下 export CUSTOM_DEVICE_BLACK_LIST=hardswish,把hardswish加到black list里,也就是将harsswish算子异构到cpu上,重新跑下看看;我这边可以正常跑起来训练 还是不行,还是报ACL,500002,可以说下你的运行环境么 —Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.>

lfjrx0123@163.com

YanhuiDua commented 7 months ago

你好,paddle请使用:python -m pip install paddlepaddle==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple; paddle_custom_npu请使用release2.6分支,commit为2d0b24105e1faae88b9d6805f6502a62ec768a77 。 编译好的whl包已发至你的邮箱。注意,运行前指定环境变量: export CUSTOM_DEVICE_BLACK_LIST=hardswish。

若训练过程中,loss有问题,可以尝试在config.yml中修改loss的类型,去掉LovaszSoftmaxLoss

PlayerJian commented 7 months ago

你好,paddle请使用:python -m pip install paddlepaddle==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple; paddle_custom_npu请使用release2.6分支,commit为2d0b24105e1faae88b9d6805f6502a62ec768a77 。 编译好的whl包已发至你的邮箱。注意,运行前指定环境变量: export CUSTOM_DEVICE_BLACK_LIST=hardswish。

若训练过程中,loss有问题,可以尝试在config.yml中修改loss的类型,去掉LovaszSoftmaxLoss 8fc997b03e21e13f9c4d8e6e6aed4cf

不报错了,但是没有任何输出,没有打印日志,没有输出模型,就停在这不动了,但是npu的显存是占满了

YanhuiDua commented 7 months ago

把log_iter设置为1,看下是否有loss输出

PlayerJian commented 7 months ago

把log_iter设置为1,看下是否有loss输出

不行,没有,而且不管batch_size设置为多少张,显存都是30g 24a6cf283efe9c473ccdacea8076c29

YanhuiDua commented 7 months ago

再跟你对齐下版本: 镜像:registry.baidubce.com/device/paddle-npu:cann701-910B-ubuntu18-aarch64 PaddleSeg: release/2.9: 166f366047777c1b61c4c71bcef9d2e3ed77960a Paddle: e032331bf78b0f9b51806c6761254c8b977f02b4 PaddleCustomDevice: 2d0b24105e1faae88b9d6805f6502a62ec768a77

如果以上版本都没问题,建议的debug步骤: 设置环境变量GLOG_v=4(数字越高,代表输出log的等级越高,最高可以到10),重新运行训练,查看log,观察是否一直在计算;若hang在某个算子,检查该算子的输入是否有问题;

或者在模型结构里 手动打印log,确定是否确实hang住

PlayerJian commented 7 months ago

再跟你对齐下版本: 镜像:registry.baidubce.com/device/paddle-npu:cann701-910B-ubuntu18-aarch64 PaddleSeg: release/2.9: 166f366047777c1b61c4c71bcef9d2e3ed77960a Paddle: e032331bf78b0f9b51806c6761254c8b977f02b4 PaddleCustomDevice: 2d0b241

如果以上版本都没问题,建议的debug步骤: 设置环境变量GLOG_v=4(数字越高,代表输出log的等级越高,最高可以到10),重新运行训练,查看log,观察是否一直在计算;若hang在某个算子,检查该算子的输入是否有问题;

或者在模型结构里 手动打印log,确定是否确实hang住

好的谢谢辛苦了

YanhuiDua commented 7 months ago

你好,还有问题吗?

PlayerJian commented 7 months ago

没有了

YanhuiDua commented 7 months ago

好的,那这个issue先关闭了哈,有问题欢迎再提问~