Explorar el Código

提交跑DDP的shell脚本

node04 hace 1 mes
padre
commit
b8357b7fb3
Se han modificado 5 ficheros con 114 adiciones y 0 borrados
  1. 7 0
      start_node01.sh
  2. 8 0
      start_node02.sh
  3. 7 0
      start_node03.sh
  4. 7 0
      start_node04.sh
  5. 85 0
      start_vj_vision.sh

+ 7 - 0
start_node01.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+SCRIPT_NAME="main_tr.py"
+LOG_NAME="nohup_node01.log"
+rm nohup_*.log
+/usr/bin/pkill -f "torchrun.*${SCRIPT_NAME}" || true
+sleep 2
+nohup ~/anaconda3/bin/torchrun --nproc_per_node=4 --nnodes=4 --node_rank=1 --master_addr=node04 --master_port=29600 ~/yuzhou/jiangcang_vj/${SCRIPT_NAME} > ~/yuzhou/jiangcang_vj/${LOG_NAME} 2>&1 &

+ 8 - 0
start_node02.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+SCRIPT_NAME="main_tr.py"
+LOG_NAME="nohup_node02.log"
+rm nohup_*.log
+/usr/bin/pkill -f "torchrun.*${SCRIPT_NAME}" || true
+sleep 2
+nohup ~/anaconda3/bin/torchrun --nproc_per_node=2 --nnodes=4 --node_rank=2 --master_addr=node04 --master_port=29600 ~/yuzhou/jiangcang_vj/${SCRIPT_NAME} > ~/yuzhou/jiangcang_vj/${LOG_NAME} 2>&1 &
+

+ 7 - 0
start_node03.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+SCRIPT_NAME="main_tr.py"
+LOG_NAME="nohup_node03.log"
+rm nohup_*.log
+/usr/bin/pkill -f "torchrun.*${SCRIPT_NAME}" || true
+sleep 2
+nohup ~/anaconda3/bin/torchrun --nproc_per_node=4 --nnodes=4 --node_rank=3 --master_addr=node04 --master_port=29600 ~/yuzhou/jiangcang_vj/${SCRIPT_NAME} > ~/yuzhou/jiangcang_vj/${LOG_NAME} 2>&1 &

+ 7 - 0
start_node04.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+SCRIPT_NAME="main_tr.py"
+LOG_NAME="nohup_node04.log"
+rm nohup_*.log
+/usr/bin/pkill -f "torchrun.*${SCRIPT_NAME}" || true
+sleep 2
+nohup ~/anaconda3/bin/torchrun --nproc_per_node=4 --nnodes=4 --node_rank=0 --master_addr=node04 --master_port=29600 ~/yuzhou/jiangcang_vj/${SCRIPT_NAME} > ~/yuzhou/jiangcang_vj/${LOG_NAME} 2>&1 &

+ 85 - 0
start_vj_vision.sh

@@ -0,0 +1,85 @@
+#!/bin/bash
+
+# 定义远程节点列表
+nodes=("node02" "node01" "node03")
+
+# 定义本地和远程目录
+local_dir="$HOME/yuzhou/jiangcang_vj/"
+remote_dir="~/yuzhou/jiangcang_vj"
+
+echo "=== 清理本地日志文件 ==="
+rm -f "$local_dir/output.log" "$local_dir/nohup.out"
+
+echo "=== 远端目录初始化 ==="
+
+for node in "${nodes[@]}"; do
+    echo "初始化 $node 的目录结构..."
+
+    ssh "$node@$node" "
+        set -e
+        mkdir -p \
+            $remote_dir \
+            $remote_dir/data_shards \
+            $remote_dir/photo
+    "
+
+    echo "✅ $node 目录就绪"
+done
+
+
+echo "=== 开始同步文件到远程节点 ==="
+
+# 遍历远程节点并同步文件
+for node in "${nodes[@]}"; do
+    echo "正在同步到 $node..."
+    
+    # 只同步当前目录文件, 不同步任何子目录
+    rsync -avz \
+        --files-from=<(find "$local_dir" -maxdepth 1 -type f -printf "%f\n") \
+        "$local_dir" "$node@$node:$remote_dir/"
+    
+    if [ $? -ne 0 ]; then
+        echo "⚠️  警告: 同步到 $node 失败,跳过该节点。"
+        continue  # 继续同步下一个节点
+    fi
+    echo "✅ 同步到 $node 完成。"
+done
+
+echo -e "\n\n"
+
+echo "=== 开始在远程节点上执行对应的 start_nodeXX.sh ==="
+#         nohup setsid ./$script_name > ~/yuzhou/jiangcang_vj/nohup_$node.log 2>&1 &
+# 在远程节点执行 `start_nodeXX.sh`
+for node in "${nodes[@]}"; do
+    script_name="start_${node}.sh"
+    echo "正在执行 $node 上的 $script_name..."
+
+    # 修改后的执行命令,捕获所有输出信息
+    ssh "$node@$node" "
+        cd $remote_dir && chmod +x $script_name;
+         ./$script_name
+    "
+
+    if [ $? -ne 0 ]; then
+        echo "⚠️  警告: 在 $node 上执行 $script_name 失败,跳过该节点。"
+        continue  # 继续执行下一个节点
+    fi
+    echo "✅ 在 $node 上成功执行 $script_name。"
+done
+
+echo -e "\n\n"
+
+echo "=== 在本地执行 start_node04.sh ==="
+
+# 在本地执行 `start_node04.sh`
+cd "$local_dir"
+chmod +x start_node04.sh && ./start_node04.sh
+if [ $? -ne 0 ]; then
+    echo "❌ 错误: 本地执行 start_node04.sh 失败,请检查问题!"
+    exit 1
+fi
+
+echo "🎉 所有任务执行完毕!"
+
+echo -e "\n\n"
+