Skip to content

Commit cbe5af1

Browse files
authored
移除CUDA_DEVICE_MAX_CONNECTIONS环境变量, 优化benchmark执行脚本 (#9500)
* CE case执行移除CUDA_DEVICE_MAX_CONNECTIONS环境变量 * 优化benchmark执行脚本 * update
1 parent 3ef14dc commit cbe5af1

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

tests/test_tipc/static/auto_parallel/llama2/benchmark_common/run_benchmark.sh

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,9 @@ monitor_log_file() {
6363
local training_pid="$2" # 获取训练进程的 PID
6464
local no_update_duration=0 # 初始化无更新时长计数
6565
local last_size=0
66+
local kill_flag_file="/tmp/monitor_killed_$training_pid"
6667

67-
echo "开始监控进程 $training_pid 和日志文件 $log_file..."
68+
echo "$(date '+%Y-%m-%d %H:%M:%S') 开始监控进程 $training_pid 和日志文件 $log_file..."
6869

6970
while true; do
7071
sleep 5 # 每隔 5 秒检查一次日志文件
@@ -74,7 +75,7 @@ monitor_log_file() {
7475
echo "日志文件 $log_file 不存在,检查进程状态..."
7576
# 如果日志文件不存在,直接判断进程是否结束
7677
if ! ps -p $training_pid > /dev/null; then
77-
echo "进程 $training_pid 已经结束。"
78+
echo "$(date '+%Y-%m-%d %H:%M:%S') 进程 $training_pid 已经结束。"
7879
break
7980
fi
8081
continue # 如果文件不存在,跳过后续逻辑,继续循环
@@ -86,23 +87,26 @@ monitor_log_file() {
8687
if [ "$last_size" -eq "$new_size" ]; then
8788
# 文件大小未变化,增加无更新时长计数
8889
no_update_duration=$((no_update_duration + 5))
89-
90+
echo "$(date '+%Y-%m-%d %H:%M:%S') 文件未写入..."
9091
if [ "$no_update_duration" -ge 180 ]; then
91-
echo "文件在过去的 3 分钟内没有继续写入,准备杀掉进程 $training_pid."
92+
echo "$(date '+%Y-%m-%d %H:%M:%S') 文件在过去的 3 分钟内没有继续写入,准备杀掉进程 $training_pid."
93+
# 创建标志文件
94+
touch "$kill_flag_file"
95+
ls -l "$kill_flag_file"
9296
kill -9 $training_pid # 杀掉进程
93-
echo "进程 $training_pid 已经被杀掉。"
97+
echo "$(date '+%Y-%m-%d %H:%M:%S') 进程 $training_pid 已经被杀掉。"
9498
break
9599
fi
96100
else
97101
# 文件大小有变化,重置无更新时长计数
98-
echo "文件仍在写入..."
102+
echo "$(date '+%Y-%m-%d %H:%M:%S') 文件仍在写入..."
99103
no_update_duration=0
100104
last_size=$new_size
101105
fi
102106

103107
# 如果训练进程已经结束,退出监控
104108
if ! ps -p $training_pid > /dev/null; then
105-
echo "进程 $training_pid 已经结束。"
109+
echo "$(date '+%Y-%m-%d %H:%M:%S') 进程 $training_pid 已经结束。"
106110
break
107111
fi
108112
done
@@ -126,8 +130,8 @@ function _train(){
126130
log_file=${train_log_file}
127131
fi
128132

129-
# 70b需要关闭这个开关,否则会hang
130-
if [[ "${MODEL_TYPE}" =~ "70b" ]]; then
133+
# 70b和7b需要关闭这个开关
134+
if [[ "${MODEL_TYPE}" =~ "70b" || "${MODEL_TYPE}" =~ "7b" ]]; then
131135
unset CUDA_DEVICE_MAX_CONNECTIONS
132136
fi
133137
# Disable for hanging bug
@@ -211,6 +215,16 @@ function _train(){
211215

212216
if [ ${exit_code} -ne 0 ];then
213217
echo -e "${model_name}, FAIL"
218+
# 如果程序是主动报错退出,不是monitor_log_file函数kill掉的情况下,需要等待其它机器被kill
219+
# 标志文件位置
220+
kill_flag_file="/tmp/monitor_killed_$training_pid"
221+
if [ -f "$kill_flag_file" ]; then
222+
echo "$(date '+%Y-%m-%d %H:%M:%S') 训练进程 $training_pid 是被 monitor_log_file 函数杀掉的。"
223+
rm -f "$kill_flag_file" # 清理标志文件
224+
else
225+
echo "$(date '+%Y-%m-%d %H:%M:%S') 训练进程 $training_pid 是主动报错退出的。"
226+
sleep 120
227+
fi
214228
else
215229
echo -e "${model_name}, SUCCESS"
216230
fi
@@ -229,6 +243,7 @@ export PYTHONPATH=$(dirname "$PWD"):$PYTHONPATH
229243
# 如不设置参数为1,则默认选择不带tensor fusion的sharding stage1版本
230244
export FLAGS_enable_sharding_stage1_tensor_fusion=1
231245

246+
# 只有13b的任务需要打开CUDA_DEVICE_MAX_CONNECTIONS,7b与13b关闭
232247
export CUDA_DEVICE_MAX_CONNECTIONS=1
233248
export PARALLEL_CROSS_ENTROPY=true
234249

0 commit comments

Comments
 (0)