-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtext.sh
More file actions
executable file
·81 lines (63 loc) · 2.62 KB
/
Copy pathtext.sh
File metadata and controls
executable file
·81 lines (63 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/bash
# 定义要遍历的seed列表
SEEDS=(10 20 30 40 50)
# 定义数据集列表及其对应的GPU和端口偏移量
declare -A DATASET_CONFIG=(
["Rotten_Tomatoes"]="0 0" # GPU 0, 端口偏移量 0
["imdb"]="1 10" # GPU 1, 端口偏移量 10
["ag_news"]="2 20" # GPU 2, 端口偏移量 20
["20_newsgroups"]="3 30" # GPU 3, 端口偏移量 30
)
# 定义模型配置(只保留base模型),每个元素是模型偏移量、配置文件后缀
MODELS=(
"0 transformer_base.yaml" # 模型偏移量 0
"1 conv_base.yaml" # 模型偏移量 1
)
# 基础端口号
BASE_PORT=20700
# 遍历每个seed
for SEED in "${SEEDS[@]}"; do
echo "开始运行seed: $SEED"
# 存储当前seed批次的所有进程ID
PIDS=()
# 遍历每个数据集
for DATASET in "${!DATASET_CONFIG[@]}"; do
echo " 开始处理数据集: $DATASET"
# 获取该数据集对应的GPU和端口偏移量
read GPU DATASET_PORT_OFFSET <<< "${DATASET_CONFIG[$DATASET]}"
# 遍历所有base模型配置
for MODEL in "${MODELS[@]}"; do
# 解析配置参数
read MODEL_OFFSET CFG_SUFFIX <<< "$MODEL"
# 根据数据集和模型配置构建完整路径和唯一端口
CFG="cfgs/${DATASET}/${CFG_SUFFIX}"
# 计算唯一端口:基础端口 + 数据集偏移 + 模型偏移 + seed
PORT=$((BASE_PORT + DATASET_PORT_OFFSET + MODEL_OFFSET + SEED))
# 构造标签
TAG="seed_${SEED}"
# 检查配置文件是否存在
if [ ! -f "$CFG" ]; then
echo " 警告: 配置文件 $CFG 不存在,跳过..."
continue
fi
# 后台运行命令并记录PID
nohup env CUDA_VISIBLE_DEVICES=$GPU torchrun --nproc_per_node=1 --master-port=$PORT main.py \
--cfg "$CFG" --seed $SEED --tag "$TAG" > /dev/null 2>&1 &
# 保存进程ID
PID=$!
PIDS+=($PID)
echo " 启动: GPU=$GPU, PORT=$PORT, CFG=$CFG, TAG=$TAG, PID=$PID"
done
done
# 等待当前seed的所有任务完成
if [ ${#PIDS[@]} -gt 0 ]; then
echo " 等待seed $SEED 的所有任务完成..."
for PID in "${PIDS[@]}"; do
wait $PID
echo " 进程 $PID 已完成"
done
fi
echo "seed $SEED 的所有任务执行完毕"
echo "========================================"
done
echo "所有seed的任务都已完成!"