1 系统环境
- 硬件环境(Ascend/GPU/CPU): Ascend
- MindSpore版本: mindspore=2.3
- 执行模式(PyNative/ Graph): Graph
- Python版本: Python=3.9
- 操作系统平台: Linux
2 报错信息
2.1 问题描述
在服务器上使用mindspore.train.Model训练Qwen-7B(TP=8),前2个epoch正常,第3个epoch中途报错。
2.2 报错信息
[ERROR] HCCL(1234): hccl_timeout_error.cc:45] Timeout occurred, rank 5 is not responding.
[ERROR] GE(1234): graph_manager.cc:210] Graph execution failed.
3 根因分析
Qwen模型中的Rotary Embedding(RoPE)算子在MindSpore 2.3中存在HCCL AllGather死锁风险,当序列长度>2048且梯度累积步数>1时,rank间同步会超时。
4 解决方案
根据报错分析,可以通过以下三个方面解决这个问题。
- 升级
CANN至7.0.RC2或更高(含RoPE算子修复),避免RoPE被锁死的风险。
# 华为官网下载 CANN 7.0.RC2+
sudo ./Ascend-cann-toolkit_{version}_linux-aarch64.run --install
- 修改训练脚本:禁用梯度累积或缩短序列。
# 若无法升级,临时规避
train_config = {
"batch_size": 16, # 原为 32
"seq_length": 2048, # 原为 4096
"gradient_accumulation_steps": 1 # 原为 2
}
- 启用
HCCL超时延长。
export HCCL_EXEC_TIMEOUT=1800 # 默认 600 秒
export HCCL_CONNECT_TIMEOUT=1200