# Mindspore+MIndformer训练plog报错halMemAlloc failed，drvRetCode=6

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): Ascend

软件环境: MindSpore 版本: 2.4.0

执行模式： 不限

Python 版本: 3.7.6

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

训练日志报错,plog 报错halMemAlloc failed，drvRetCode=6

2.2 报错信息

![](figures/zh-cn_image_0000002309039573.png)**3. 根因分析**

1.  训练日志报错“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'. ” 从训练日志看不出具体的报错原因。
2.  查看plog日志，通过grep -rn "ERROR" ./ |sort -t ":" -k 4,6 |head获取到首报错信息。
3.  错误信息“halMemAlloc failed，drvRetCode=6”说明HCCL通信显存申请失败。
4.  查看训练yaml配置参数max\_device\_memory的值。NPU总可用显存-max\_device\_memory=HCCL通信可用显存。 因此逐步降低max\_device\_memory的值来增大HCCL通信可使用的显存。

HCCL通信HBM不足导致。

**4. 解决方案**

方法1： 逐步降低max\_device\_memory，再次拉起训练。

方法2： 通过export HCCL\_BUFFSIZE=xxx设置环境变量的值降低通信域内存占用。例如export HCCL\_BUFFSIZE=100

每个HCCL通信组会默认占用200MB的内存，那么在通信组较多的场景下，就容易出现设备侧内存不足的报错。解决方法是设置HCCL\_BUFFSIZE环境变量修改通信域内存占用。

