2301_80063666 2025-03-17 09:16 采纳率: 8.3%
浏览 21

多机多卡,分布式学习

torch.distributed.DistNetworkError: Connection reset by peer


# 获取脚本路径和日志路径
SCRIPT_PATH="$(cd "$(dirname "$0")"; pwd -P)"
LOG_DIR="${SCRIPT_PATH}/logs"
mkdir -p "$LOG_DIR"
LOG_FILE="${LOG_DIR}/train.log-$(date +'%Y%m%d')"
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

# 固定 Master 地址和端口
MASTER_ADDR="(隐私,不方便透露)"
MASTER_PORT="39500"

# 解析 GPU_ID
GPU_IDS=$1
export CUDA_VISIBLE_DEVICES="$GPU_IDS"

# 记录启动信息
echo "-----------------------------------------------" | tee -a "$LOG_FILE"
echo "Starting distributed training" | tee -a "$LOG_FILE"
echo "Master Address: $MASTER_ADDR" | tee -a "$LOG_FILE"
echo "Master Port: $MASTER_PORT" | tee -a "$LOG_FILE"
echo "CUDA_VISIBLE_DEVICES: $CUDA_VISIBLE_DEVICES" | tee -a "$LOG_FILE"
echo "-----------------------------------------------" | tee -a "$LOG_FILE"

# 运行 Python 训练脚本
run_script() {
    local script_name=$1
    echo "Running $script_name..." | tee -a "$LOG_FILE"
    torchrun --nproc_per_node=1 --nnodes=2 \
             --node_rank=0 --master_addr=$MASTER_ADDR --master_port=$MASTER_PORT \
             "$script_name.py" --gpu_id "$GPU_IDS" 2>&1 | tee -a "$LOG_FILE"
    if [ $? -ne 0 ]; then
        echo "Error in $script_name. Check logs." | tee -a "$LOG_FILE"
        exit 1
    fi
}

run_script MyTrain_Val_ddp
run_script MyTesting_ddp
run_script eval_ddp

echo "All scripts executed successfully." | tee -a "$LOG_FILE"

关闭防火墙,检查了网络连接,还是出现这个报错。
这是一个多机多卡的分布式学习任务,一直因为这个无法启动

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-17 09:16
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    多机多卡,分布式学习遇到的问题

    你遇到了 torch.distributed.DistNetworkError: Connection reset by peer 错误,这个错误通常是由于分布式训练中网络连接被中断导致的。

    在分布式训练中,需要确保每个机器之间的网络连接稳定,可以尝试以下解决方案:

    1. 检查网络连接:确保每个机器之间的网络连接稳定,可以使用 ping 命令来检查网络连接是否正常。
    2. 调整网络参数:可以尝试调整网络参数,例如增加 buffer size 或者减少 packet size,以提高网络传输效率。
    3. 检查脚本路径和日志路径:在你的脚本中,检查 SCRIPT_PATHLOG_PATH 是否正确,如果不正确可能会导致错误。
    4. 检查分布式训练配置:检查分布式训练的配置文件,确保每个机器的配置文件正确。
    5. 尝试降低 batch size:如果 batch size 太大可能会导致网络连接被中断,可以尝试降低 batch size。

    如果以上解决方案都不能解决问题,可以提供更多的错误信息和代码,以便更好地 debug。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月17日