已关闭
[Usage]: deepseek32预训练问题:RuntimeError: [7] is setting up HCCL communicator and retrieving hcclUniqueId from [0] via c10d key-value store by key '6:7' #1187
fandengdong创建于  2月12日关闭于  2月25日
fandengdong
fandengdong
2月12日 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

环境信息

例如:
- 操作系统
NAME="openEuler"
VERSION="22.03 (LTS-SP4)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 (LTS-SP4)"
ANSI_COLOR="0;31"
- 昇腾硬件信息
[root@bms1889 trainlogs]# npu-smi info
+------------------------------------------------------------------------------------------------+
| npu-smi 25.2.3                   Version: 25.2.3                                               |
+---------------------------+---------------+----------------------------------------------------+
| NPU   Name                | Health        | Power(W)    Temp(C)           Hugepages-Usage(page)|
| Chip  Phy-ID              | Bus-Id        | AICore(%)   Memory-Usage(MB)  HBM-Usage(MB)        |
+===========================+===============+====================================================+
| 0     Ascend910           | OK            | 168.3       41                0    / 0             |
| 0     0                   | 0000:9D:00.0  | 0           0    / 0          3106 / 65536         |
+------------------------------------------------------------------------------------------------+
| 0     Ascend910           | OK            | -           43                0    / 0             |
| 1     1                   | 0000:9F:00.0  | 0           0    / 0          2880 / 65536         |
+===========================+===============+====================================================+
| 1     Ascend910           | OK            | 163.7       41                0    / 0             |
| 0     2                   | 0000:99:00.0  | 0           0    / 0          3107 / 65536         |
+------------------------------------------------------------------------------------------------+
- CANN软件版本
CANN8.3RC1
- 安装的对应软件版本
(mindspeed_llm_0211) [root@bms1889 MindSpeed-LLM]# pip list | grep torch
gpytorch                                 1.14.2
torch                                    2.7.1
torch_npu                                2.7.1
torchdata                                0.11.0
torchinfo                                1.8.0
torchsummary                             1.5.1
torchvision                              0.22.1

使用场景及问题

mindspeed-llm版本:master分支(2025-2-11)
训练任务:deepseek-V32预训练
训练配置:默认配置examples/mcore/deepseek32/pretrain_deepseek32_671b_4k_A3_ptd.sh
资源配置:256节点(1024 910C卡)
镜像:cis-pengcheng.cmecloud.cn/ascendhub/mindspeed-llm:openeuler22.03-mindspeed-llm-2.3.0-a3-arm
报错信息:

[rank2044]:     losses_reduced = forward_backward_func(
[rank2044]:   File "/home/fdd/workspace/MindSpeed-LLM-0211/MindSpeed/mindspeed/core/transformer/moe/moe_feature/fb_overlap/vpp_schedules.py", line 581, in forward_backward_pipelining_with_interleaving
[rank2044]:     input_tensors[0].append(p2p_communication.recv_forward(tensor_shape, config))
[rank2044]:   File "/home/fdd/workspace/MindSpeed-LLM-0211/MindSpeed-LLM/megatron/core/pipeline_parallel/p2p_communication.py", line 440, in recv_forward
[rank2044]:     input_tensor, _, _ = _communicate(
[rank2044]:   File "/home/fdd/workspace/MindSpeed-LLM-0211/MindSpeed-LLM/megatron/core/pipeline_parallel/p2p_communication.py", line 375, in _communicate
[rank2044]:     p2p_reqs = p2p_func(
[rank2044]:   File "/home/fdd/workspace/MindSpeed-LLM-0211/MindSpeed-LLM/megatron/core/pipeline_parallel/p2p_communication.py", line 211, in _p2p_ops
[rank2044]:     recv_prev_req = torch.distributed.irecv(
[rank2044]:   File "/home/fdd/workspace/MindSpeed-LLM-0211/MindSpeed-LLM/mindspeed_llm/tasks/high_availability/communication_patch.py", line 80, in wrapper
[rank2044]:     return fn(*args, **kwargs)
[rank2044]:   File "/home/fdd/workspace/miniconda3/envs/mindspeed_llm_0211/lib/python3.10/site-packages/torch/distributed/distributed_c10d.py", line 2404, in irecv
[rank2044]:     return group.recv([tensor], group_src, tag)
[rank2044]: RuntimeError: [7] is setting up HCCL communicator and retrieving hcclUniqueId from [0] via c10d key-value store by key '6:7', but store->get('6:7') got error: failed to recv, got 0 bytes
[rank2044]: Exception raised from recvBytes at /pytorch/torch/csrc/distributed/c10d/Utils.hpp:678 (most recent call first):
[rank2044]: frame #0: c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) + 0xd4 (0xffff97c5fea4 in /home/fdd/workspace/miniconda3/envs/mindspeed_llm_0211/lib/python3.10/site-packages/torch/lib/libc10.so)
[rank2044]: frame #1: <unknown function> + 0x5db8060 (0xffff9d69d060 in /home/fdd/workspace/miniconda3/envs/mindspeed_llm_0211/lib/python3.10/site-packages/torch/lib/libtorch_cpu.so)

做过的尝试:

  1. 拉取最新mindspeed-llm代码(2025-2-11),按照文档更新mindspeed版本,Megatron-LLM版本,报错;
  2. 更换CANN版本,从CANN8.3RC1更换到CANN8.5.0,报错;
  3. 测试了llama-405b的256节点训练,是没有问题的;

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
fandengdongfandengdong
2月12日 修改了issue 的描述
tichang
tichang成员
2月12日 评论:

您好,能提供一下您当前的pretrain_deepseek32_671b_4k_A3_ptd.sh脚本内容吗

likedislike
ascend-robotascend-robot成员
2月12日 添加了label:usage
tichangtichang成员
2月12日 添加了label:pending
tichang
tichang成员
2月12日 评论:

/label add pending

likedislike
fandengdong
fandengdong
2月12日 评论:

您好,能提供一下您当前的pretrain_deepseek32_671b_4k_A3_ptd.sh脚本内容吗

@tichang

#!/bin/bash



export CUDA_DEVICE_MAX_CONNECTIONS=1
export CPU_AFFINITY_CONF=1
export TASK_QUEUE_ENABLE=2
export PYTORCH_NPU_ALLOC_CONF="expandable_segments:True"
export HCCL_CONNECT_TIMEOUT=3600
export STREAMS_PER_DEVICE=32

# NPUS_PER_NODE=16
# MASTER_ADDR=localhost #主节点IP
# MASTER_PORT=6000
# NNODES=32
# NODE_RANK=0
# WORLD_SIZE=$(($NPUS_PER_NODE*$NNODES))

# CKPT_SAVE_DIR="your model save ckpt path"
# DATA_PATH="your data path"
# TOKENIZER_PATH="your tokenizer path"
# CKPT_LOAD_DIR="your model ckpt path"
# 处理传入的参数:
# 1. 模型加载路径(tokenizer路径相同)
# 2. 预处理数据集通配符
CKPT_LOAD_DIR=$1
DATA_GLOB_PATTERN=$2

TOKENIZER_PATH=$CKPT_LOAD_DIR

# 日志与实验命名
# 从 TRAIN_SCRIPT 路径中提取文件名(不含路径)
script_filename=$(basename "$0")
# 提取不带 .sh 后缀的前缀
script_prefix="${script_filename%.sh}"
# 构造 log_dir,使用提取出的前缀
log_dir=TrainResults/$script_prefix

# date=$(date '+%Y%m%d_%H%M%S')
date=$MINDX_TASK_ID
log_dir=${log_dir}/$date
CKPT_SAVE_DIR=$log_dir
mkdir -p $log_dir

cp "$0" "$log_dir"

# 数据集自动处理
# PATTERN="part*"
# ===========================================
# 🔍 自动发现数据路径(生成 no_ext_files 数组)
# ===========================================
echo "[INFO] 正在从 DATA_GLOB_PATTERN='$DATA_GLOB_PATTERN'自动发现数据文件..."
files=($DATA_GLOB_PATTERN)
for f in "${files[@]}"; do
    if [[ -f "$f" ]]; then
        dir=$(dirname "$f")
        base=$(basename "$f" .bin)
        full_path_no_ext="$dir/$base"
        no_ext_files+=("$full_path_no_ext")
    fi
done
echo "[INFO] 发现以下数据:"
printf '  - %s\n' "${no_ext_files[@]}"
# 构建安全转义的路径参数字符串(用于 SSH 命令)
DATA_PATH=""
for path in "${no_ext_files[@]}"; do
    printf -v escaped '%q' "$path"
    DATA_PATH+="$escaped "
done

export ASCEND_PROCESS_LOG_PATH=$log_dir/plogs/$XDL_IP
export TTP_LOG_PATH=$log_dir/ttplogs/$XDL_IP-$RANK
export TRAIN_LOG_PATH=$log_dir/trainlogs/$XDL_IP-$RANK
mkdir -p $log_dir/plogs
mkdir -p $log_dir/ttplogs
mkdir -p $log_dir/trainlogs



TP=2
PP=8
EP=32
CP=1
CP_TYPE='ulysses_cp_algo'
NUM_LAYERS=64
SEQ_LEN=4096
MBS=1
GBS=8192

DISTRIBUTED_ARGS="
    --nproc_per_node $NPUS_PER_NODE \
    --nnodes $NNODES \
    --node_rank $NODE_RANK \
    --master_addr $MASTER_ADDR \
    --master_port $MASTER_PORT
"

MLA_ARGS="
    --multi-latent-attention \
    --qk-pos-emb-head-dim 64 \
    --qk-head-dim 128 \
    --q-lora-rank 1536 \
    --kv-lora-rank 512 \
    --v-head-dim 128 \
    --qk-layernorm \
    --mla-mm-split \
    --mla-fa-without-pad \
"

MOE_ARGS="
    --moe-grouped-gemm \
    --moe-permutation-async-comm \
    --moe-token-dispatcher-type alltoall \
    --moe-permute-fusion \
    --first-k-dense-replace 3 \
    --moe-layer-freq 1 \
    --moe-shared-expert-intermediate-size 2048 \
    --num-experts 256 \
    --moe-router-topk 8 \
    --moe-ffn-hidden-size 2048 \
    --moe-router-load-balancing-type none \
    --moe-router-num-groups 8 \
    --moe-router-group-topk 4 \
    --moe-router-topk-scaling-factor 2.5 \
    --moe-aux-loss-coeff 0.0001 \
    --seq-aux \
    --moe-router-score-function sigmoid \
    --moe-router-enable-expert-bias \
    --moe-router-dtype fp32 \
"

MTP_ARGS="
    --mtp-num-layers 1 \
    --mtp-loss-scaling-factor 0.3 \
"

DUALPIPE_ARGS="
    --moe-fb-overlap \
    --schedules-method dualpipev \
"

MEM_ARGS="
    --mtp-mem-efficient-logits \
    --swap-optimizer \
    --recompute-granularity full \
    --recompute-method block \
    --recompute-num-layers 8 \
"

ROPE_ARGS="
    --beta-fast 32 \
    --beta-slow 1 \
    --rope-scaling-factor 40 \
    --rope-scaling-mscale 1.0 \
    --rope-scaling-mscale-all-dim 1.0 \
    --rope-scaling-original-max-position-embeddings 4096 \
    --rope-scaling-type yarn
"

    # --noop-layers 61,62,63 \
        # --noop-layers 93,94,95 \
GPT_ARGS="
    --transformer-impl local \
    --spec mindspeed_llm.tasks.models.spec.deepseek_spec layer_spec \
    --reset-attention-mask \
    --gemm-gradient-accumulation-fusion \
    --noop-layers 61,62,63 \
    --manual-gc \
    --manual-gc-interval 50 \
    --no-shared-storage \
    --use-distributed-optimizer \
    --use-flash-attn \
    --use-mcore-models \
    --tensor-model-parallel-size ${TP} \
    --pipeline-model-parallel-size ${PP} \
    --expert-model-parallel-size ${EP} \
    --expert-tensor-parallel-size 1 \
    --sequence-parallel \
    --context-parallel-size ${CP} \
    --context-parallel-algo  ${CP_TYPE} \
    --num-layers ${NUM_LAYERS} \
    --hidden-size 7168 \
    --ffn-hidden-size 18432 \
    --num-attention-heads 128 \
    --tokenizer-type PretrainedFromHF  \
    --tokenizer-name-or-path ${TOKENIZER_PATH} \
    --seq-length ${SEQ_LEN} \
    --max-position-embeddings 163840 \
    --micro-batch-size ${MBS} \
    --global-batch-size ${GBS} \
    --make-vocab-size-divisible-by 1 \
    --lr 1.0e-5 \
    --train-iters 2000 \
    --lr-decay-style cosine \
    --untie-embeddings-and-output-weights \
    --disable-bias-linear \
    --attention-dropout 0.0 \
    --init-method-std 0.02 \
    --hidden-dropout 0.0 \
    --position-embedding-type rope \
    --normalization RMSNorm \
    --use-fused-rotary-pos-emb \
    --use-rotary-position-embeddings \
    --use-fused-swiglu \
    --use-fused-rmsnorm \
    --swiglu \
    --no-masked-softmax-fusion \
    --attention-softmax-in-fp32 \
    --min-lr 1.0e-7 \
    --weight-decay 1e-2 \
    --lr-warmup-iters 500 \
    --clip-grad 1.0 \
    --adam-beta1 0.9 \
    --adam-beta2 0.999 \
    --initial-loss-scale 65536 \
    --vocab-size 129280 \
    --padded-vocab-size 129280 \
    --rotary-base 10000 \
    --norm-epsilon 1e-6 \
    --no-load-optim \
    --no-load-rng \
    --bf16 \
    --distributed-timeout-minutes 120 \
"

DATA_ARGS="
    --data-path $DATA_PATH \
    --split 100,0,0
"

OUTPUT_ARGS="
    --log-interval 1 \
    --save-interval 2000 \
    --eval-interval 2000 \
    --eval-iters 0 \
    --no-save-optim \
    --no-save-rng
"

python -m torch.distributed.launch $DISTRIBUTED_ARGS pretrain_gpt.py \
    $GPT_ARGS \
    $DATA_ARGS \
    $OUTPUT_ARGS \
    $MLA_ARGS \
    $DUALPIPE_ARGS \
    $MEM_ARGS \
    $ROPE_ARGS \
    $MOE_ARGS \
    $MTP_ARGS \
    --save $CKPT_SAVE_DIR \
    --load $CKPT_LOAD_DIR \
    --transformer-impl local \
    --distributed-backend nccl 2>&1 | tee ${TRAIN_LOG_PATH}.log
likedislike
baymax_591
baymax_591
2月25日 评论:

@fandengdong 你好,这个问题解决了吗,碰到了相同的问题

likedislike
tichang
tichang成员
2月25日 评论:

该问题是由环境引起的,并非 MindSpeed-LLM 框架引入
由裸机环境更换为统一的docker镜像后报错不再出现。

likedislike
tichang
tichang成员
2月25日 评论:

@fandengdong 你好,这个问题解决了吗,碰到了相同的问题

@baymax_591

如果您也有类似的问题,请尝试检查不同机器之间的环境,保证不同机器环境之间一致,并测试多机之间能否正常打通。
希望我的回答有帮到您

likedislike
tichang
tichang成员
2月25日 评论:

如果您目前没有其他问题,我们将根据流程关闭此 issue。
如后续有新的疑问或补充内容,欢迎随时重新打开本 issue,或另起一个新的 issue 进行提问。
感谢您的理解与支持!

likedislike
tichangtichang成员
2月25日 添加了label:resolved;删除了label:pending
tichangtichang成员
2月25日 issue状态由 TODO 改变为 DONE
tichangtichang成员
2月25日 关闭了 issue
tichangtichang成员
2月25日 将 tichang 设为负责人
fandengdong
fandengdong
3月3日 评论:

该问题是由环境引起的,并非 MindSpeed-LLM 框架引入
由裸机环境更换为统一的docker镜像后报错不再出现。

@tichang

我们在镜像中利用k8s拉任务也有遇到过这种情况,有一定随机性。

likedislike
fandengdong
fandengdong
3月3日 评论:

@fandengdong 你好,这个问题解决了吗,碰到了相同的问题

@baymax_591

最近,在启动脚本中添加了算子预编译的指令,最近一天暂时没有遇到这个问题了。

python -c "import mindspeed; from mindspeed.op_builder import GMMOpBuilder; GMMOpBuilder().load()" &
python -c "import mindspeed; from mindspeed.op_builder import GMMV2OpBuilder; GMMV2OpBuilder().load()" &
python -c "import mindspeed; from mindspeed.op_builder import MatmulAddOpBuilder; MatmulAddOpBuilder().load()" &
python -c "import mindspeed; from mindspeed.op_builder import MoeTokenPermuteOpBuilder; MoeTokenPermuteOpBuilder().load()" &
python -c "import mindspeed; from mindspeed.op_builder import MoeTokenUnpermuteOpBuilder; MoeTokenUnpermuteOpBuilder().load()" &
python -c "import mindspeed; from mindspeed.op_builder import RotaryPositionEmbeddingOpBuilder; RotaryPositionEmbeddingOpBuilder().load()" &
python -c "import mindspeed; from mindspeed.op_builder import GroupMatmulAddOpBuilder; GroupMatmulAddOpBuilder().load()"
likedislike