【问题描述】
训练日志报错,plog 报错halMemAlloc failed,drvRetCode=6
【产品及版本】
- MindSpore2.4.0
【问题原因】
- HCCL通信HBM不足导致
【处理过程】
- 训练日志报错“MindSpore dataset is terminated with err msg: Exception thrown from dataset pipeline. Refer to ‘Dataset Pipeline Error Message’. Tdt Send data failed. The details refer to ‘Ascend Error Message’. ” 从训练日志看不出具体的报错原因
- 查看plog日志,通过grep -rn “ERROR” ./ |sort -t “:” -k 4,6 |head获取到首报错信息
- 错误信息“halMemAlloc failed,drvRetCode=6”说明HCCL通信显存申请失败
- 查看训练yaml配置参数max_device_memory的值。NPU总可用显存-max_device_memory=HCCL通信可用显存。 因此逐步降低max_device_memory的值来增大HCCL通信可使用的显存
# 【解决方案】
方法1: 逐步降低max_device_memory,再次拉起训练。
方法2: 通过export HCCL_BUFFSIZE=xxx设置环境变量的值降低通信域内存占用。例如export HCCL_BUFFSIZE=100
每个HCCL通信组会默认占用200MB的内存,那么在通信组较多的场景下,就容易出现设备侧内存不足的报错。解决方法是设置HCCL_BUFFSIZE环境变量修改通信域内存占用

