benchmark_train.sh 4.37 KB
Newer Older
1
2
3
4
5
#!/bin/bash
source test_tipc/common_func.sh

# run benchmark sh 
# Usage:
LDOUBLEV's avatar
LDOUBLEV committed
6
# bash run_benchmark_train.sh config.txt params
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

function func_parser_params(){
    strs=$1
    IFS="="
    array=(${strs})
    tmp=${array[1]}
    echo ${tmp}
}

function func_sed_params(){
    filename=$1
    line=$2
    param_value=$3
    params=`sed -n "${line}p" $filename`
    IFS=":"
    array=(${params})
    key=${array[0]}
    value=${array[1]}
    if [[ $value =~ 'benchmark_train' ]];then
        IFS='='
        _val=(${value})
        param_value="${_val[0]}=${param_value}"
    fi
    new_params="${key}:${param_value}"
    IFS=";"
    cmd="sed -i '${line}s/.*/${new_params}/' '${filename}'"
    eval $cmd
}

function set_gpu_id(){
    string=$1
    _str=${string:1:6}
LDOUBLEV's avatar
LDOUBLEV committed
39
    IFS="C"
40
    arr=(${_str})
LDOUBLEV's avatar
LDOUBLEV committed
41
    M=${arr[0]}
42
    P=${arr[1]}
LDOUBLEV's avatar
LDOUBLEV committed
43
44
    gn=`expr $P - 1`
    gpu_num=`expr $gn / $M`
45
46
47
48
    seq=`seq -s "," 0 $gpu_num`
    echo $seq
}

LDOUBLEV's avatar
LDOUBLEV committed
49
50
51
52
53
54
55
function get_repo_name(){
    IFS=";"
    cur_dir=$(pwd)
    IFS="/"
    arr=(${cur_dir})
    echo ${arr[-1]}
}
56

LDOUBLEV's avatar
LDOUBLEV committed
57
58
59
60
61
FILENAME=$1
# MODE be one of ['benchmark_train']
MODE=$2
params=$3
# bash test_tipc/benchmark_train.sh test_tipc/configs/det_mv3_db_v2.0/train_benchmark.txt  benchmark_train dynamic_bs8_null_SingleP_DP_N1C1
LDOUBLEV's avatar
LDOUBLEV committed
62
63
IFS="\n"

LDOUBLEV's avatar
LDOUBLEV committed
64
65
66
# FILENAME="test_tipc/configs/det_mv3_db_v2.0/train_benchmark.txt"
# MODE="benchmark_train"
# params="dynamic_bs8_fp32_SingleP_DP_N1C4"
LDOUBLEV's avatar
LDOUBLEV committed
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

# parser params from input: modeltype_bs${bs_item}_${fp_item}_${run_process_type}_${run_mode}_${device_num}
IFS="_"
params_list=(${params})
model_type=${params_list[0]}
batch_size=${params_list[1]}
batch_size=`echo  ${batch_size} | tr -cd "[0-9]" `
precision=${params_list[2]}
run_process_type=${params_list[3]}
run_mode=${params_list[4]}
device_num=${params_list[5]}
device_num_copy=$device_num
IFS=";"

echo $precision
# sed batchsize and precision
func_sed_params "$FILENAME" "6" "$precision"
func_sed_params "$FILENAME" "9" "$batch_size"

# parser params from train_benchmark.txt
dataline=`cat $FILENAME`
# parser params
IFS=$'\n'
lines=(${dataline})
model_name=$(func_parser_value "${lines[1]}")

# 获取benchmark_params所在的行数
line_num=`grep -n "benchmark_params" $FILENAME  | cut -d ":" -f 1`
# for train log parser
line_num=`expr $line_num + 3`
ips_unit_value=$(func_parser_value "${lines[line_num]}")

line_num=`expr $line_num + 1`
skip_steps_value=$(func_parser_value "${lines[line_num]}")

line_num=`expr $line_num + 1`
keyword_value=$(func_parser_value "${lines[line_num]}")

line_num=`expr $line_num + 1`
convergence_key_value=$(func_parser_value "${lines[line_num]}")

line_num=`expr $line_num + 1`
flags_value=$(func_parser_value "${lines[line_num]}")

gpu_id=$(set_gpu_id $device_num)
repo_name=$(get_repo_name )

SAVE_LOG="benchmark_log"
LDOUBLEV's avatar
LDOUBLEV committed
115
status_log="benchmark_log/results.log"
LDOUBLEV's avatar
LDOUBLEV committed
116
117
118
119
120
121

if [ ${#gpu_id} -le 1 ];then
    log_path="$SAVE_LOG/profiling_log"
    mkdir -p $log_path
    log_name="${repo_name}_${model_name}_bs${batch_size}_${precision}_${run_process_type}_${run_mode}_${device_num}_profiling"
    func_sed_params "$FILENAME" "4" "0"  # sed used gpu_id 
LDOUBLEV's avatar
LDOUBLEV committed
122
    cmd="bash test_tipc/test_train_inference_python.sh ${FILENAME} benchmark_train > ${log_path}/${log_name} 2>&1 "
LDOUBLEV's avatar
LDOUBLEV committed
123
    echo $cmd
LDOUBLEV's avatar
LDOUBLEV committed
124
    eval $cmd
LDOUBLEV's avatar
LDOUBLEV committed
125
126
127
    last_status=${PIPESTATUS[0]}
    eval "cat ${log_path}/${log_name}"
    status_check $last_status "${command}" "${status_log}"
LDOUBLEV's avatar
LDOUBLEV committed
128
129
130
131
132
    # without profile
    log_path="$SAVE_LOG/train_log"
    mkdir -p $log_path
    log_name="${repo_name}_${model_name}_bs${batch_size}_${precision}_${run_process_type}_${run_mode}_${device_num}_log"
    func_sed_params "$FILENAME" "13" "null"  # sed used gpu_id 
LDOUBLEV's avatar
LDOUBLEV committed
133
    cmd="bash test_tipc/test_train_inference_python.sh ${FILENAME} benchmark_train > ${log_path}/${log_name} 2>&1 "
LDOUBLEV's avatar
LDOUBLEV committed
134
    echo $cmd
LDOUBLEV's avatar
LDOUBLEV committed
135
    eval $cmd
LDOUBLEV's avatar
LDOUBLEV committed
136
137
138
    last_status=${PIPESTATUS[0]}
    eval "cat ${log_path}/${log_name}"
    status_check $last_status "${command}" "${status_log}"
LDOUBLEV's avatar
LDOUBLEV committed
139
140
141
142
143
144
else
    log_path="$SAVE_LOG/train_log"
    mkdir -p $log_path
    log_name="${repo_name}_${model_name}_bs${batch_size}_${precision}_${run_process_type}_${run_mode}_${device_num}_log"
    func_sed_params "$FILENAME" "4" "$gpu_id"  # sed used gpu_id 
    func_sed_params "$FILENAME" "13" "$null"  # sed --profile_option as null
LDOUBLEV's avatar
LDOUBLEV committed
145
146
    cmd="bash test_tipc/test_train_inference_python.sh ${FILENAME} benchmark_train > ${log_path}/${log_name} 2>&1 "
    eval $cmd
LDOUBLEV's avatar
LDOUBLEV committed
147
148
149
    last_status=${PIPESTATUS[0]}
    eval "cat ${log_path}/${log_name}"
    status_check $last_status "${command}" "${status_log}"
LDOUBLEV's avatar
LDOUBLEV committed
150
fi
151
152