华为910B3同时训练多个模型报错 Failed to bind the IP port. Reason: The IP address and port have been bound already.
Reminder
- I have read the above rules and searched the existing issues.
System Info
LLamafactory版本:0.9.4.dev0 python version:3.9.9 服务器:Altas 800T 8张910B3 64G 操作系统: 5.10.0-282.0.0.185.oe2203sp4.aarch64
Reproduction
启动脚本如下: #!/bin/bash
================== 配置区 ==================
source llamafactory/bin/activate export HF_ENDPOINT='https://hf-mirror.com/' BASE_PORT=7862 # 起始端口 MASTER_PORT=29500 NUM_SERVICES=5 # 启动的服务数量 LOG_DIR="./logs1" # 日志存储目录 SCRIPT="llamafactory-cli webui" # 启动命令 DEVICES="0,1,2,3,4,5,6,7" # 每个服务可见的设备(全部8张卡)
创建日志目录
mkdir -p $LOG_DIR
================== 启动服务 ==================
start_services() { for i in $(seq 0 $((NUM_SERVICES - 1))); do PORT=$((BASE_PORT + i)) MASTER_PORT1=$((MASTER_PORT + i)) CACHE_DIR1=cache$((i+1)) CONFIG_DIR1=config$((i+1)) LOG_FILE="$LOG_DIR/service_${i}port${PORT}.log" PID_FILE="$LOG_DIR/service${i}.pid"
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p $PID > /dev/null 2>&1; then
echo "⚠️ 服务 $i (端口 $PORT) 已在运行,PID: $PID,跳过启动。"
continue
else
echo "发现残留 PID 文件,清理中..."
rm -f "$PID_FILE"
fi
fi
export DEFAULT_CACHE_DIR=$CACHE_DIR1
export DEFAULT_CONFIG_DIR=$CONFIG_DIR1
export MASTER_PORT=$MASTER_PORT1
export HCCL_WHITELIST_DISABLE=1
echo " 启动服务 $i: 端口 $PORT, MASTER端口:$MASTER_PORT1, 使用设备 $DEVICES"
ASCEND_RT_VISIBLE_DEVICES=$DEVICES \
GRADIO_SHARE=0 \
GRADIO_SERVER_PORT=$PORT \
GRADIO_SERVER_NAME="0.0.0.0" \
nohup $SCRIPT > "$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
sleep 3 # 给服务一点时间启动,避免端口冲突
done
echo "✅ 所有 $NUM_SERVICES 个服务已启动"
}
================== 停止服务 ==================
stop_services() { for i in $(seq 0 $((NUM_SERVICES - 1))); do PID_FILE="$LOG_DIR/service_${i}.pid" if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if ps -p $PID > /dev/null 2>&1; then echo " 停止服务 $i (PID: $PID)" kill $PID else echo " 服务 $i (PID: $PID) 已停止或不存在" fi rm -f "$PID_FILE" else echo " 服务 $i 无 PID 文件,可能未启动" fi done echo " 所有服务已停止" }
================== 主逻辑 ==================
case "$1" in start) start_services ;; stop) stop_services ;; restart) stop_services sleep 3 start_services ;; *) echo " 用法: $0 {start|stop|restart}" echo " 示例:" echo " $0 start # 启动5个服务(端口7862~7866)" echo " $0 stop # 停止所有服务" echo " $0 restart # 重启所有服务" exit 1 ;; esac
启动五个webui之后,使用两个webui对Qwen3-0.6B和Qwen3-8B进行微调,后启动的报错训练会报错:
Others
No response
Source: hiyouga/LlamaFactory