test_serving.sh 8.81 KB
Newer Older
MissPenguin's avatar
MissPenguin committed
1
#!/bin/bash
LDOUBLEV's avatar
rename  
LDOUBLEV committed
2
source test_tipc/common_func.sh
MissPenguin's avatar
MissPenguin committed
3
4

FILENAME=$1
tink2123's avatar
tink2123 committed
5
dataline=$(awk 'NR==1, NR==18{print}'  $FILENAME)
MissPenguin's avatar
MissPenguin committed
6
7
8
9
10
11

# parser params
IFS=$'\n'
lines=(${dataline})

# parser serving
tink2123's avatar
tink2123 committed
12
model_name=$(func_parser_value "${lines[1]}")
tink2123's avatar
tink2123 committed
13
python_list=$(func_parser_value "${lines[2]}")
tink2123's avatar
tink2123 committed
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
trans_model_py=$(func_parser_value "${lines[3]}")
infer_model_dir_key=$(func_parser_key "${lines[4]}")
infer_model_dir_value=$(func_parser_value "${lines[4]}")
model_filename_key=$(func_parser_key "${lines[5]}")
model_filename_value=$(func_parser_value "${lines[5]}")
params_filename_key=$(func_parser_key "${lines[6]}")
params_filename_value=$(func_parser_value "${lines[6]}")
serving_server_key=$(func_parser_key "${lines[7]}")
serving_server_value=$(func_parser_value "${lines[7]}")
serving_client_key=$(func_parser_key "${lines[8]}")
serving_client_value=$(func_parser_value "${lines[8]}")
serving_dir_value=$(func_parser_value "${lines[9]}")
web_service_py=$(func_parser_value "${lines[10]}")
web_use_gpu_key=$(func_parser_key "${lines[11]}")
web_use_gpu_list=$(func_parser_value "${lines[11]}")
web_use_mkldnn_key=$(func_parser_key "${lines[12]}")
web_use_mkldnn_list=$(func_parser_value "${lines[12]}")
web_cpu_threads_key=$(func_parser_key "${lines[13]}")
web_cpu_threads_list=$(func_parser_value "${lines[13]}")
web_use_trt_key=$(func_parser_key "${lines[14]}")
web_use_trt_list=$(func_parser_value "${lines[14]}")
web_precision_key=$(func_parser_key "${lines[15]}")
web_precision_list=$(func_parser_value "${lines[15]}")
pipeline_py=$(func_parser_value "${lines[16]}")
tink2123's avatar
tink2123 committed
38
39
image_dir_key=$(func_parser_key "${lines[17]}")
image_dir_value=$(func_parser_value "${lines[17]}")
MissPenguin's avatar
MissPenguin committed
40

LDOUBLEV's avatar
rename  
LDOUBLEV committed
41
42
LOG_PATH="../../test_tipc/output"
mkdir -p ./test_tipc/output
MissPenguin's avatar
MissPenguin committed
43
44
45
46
47
48
49
50
51
52
53
54
55
status_log="${LOG_PATH}/results_serving.log"

function func_serving(){
    IFS='|'
    _python=$1
    _script=$2
    _model_dir=$3
    # pdserving
    set_dirname=$(func_set_params "${infer_model_dir_key}" "${infer_model_dir_value}")
    set_model_filename=$(func_set_params "${model_filename_key}" "${model_filename_value}")
    set_params_filename=$(func_set_params "${params_filename_key}" "${params_filename_value}")
    set_serving_server=$(func_set_params "${serving_server_key}" "${serving_server_value}")
    set_serving_client=$(func_set_params "${serving_client_key}" "${serving_client_value}")
tink2123's avatar
tink2123 committed
56
    set_image_dir=$(func_set_params "${image_dir_key}" "${image_dir_value}")
tink2123's avatar
tink2123 committed
57
58
    python_list=(${python_list})
    trans_model_cmd="${python_list[0]} ${trans_model_py} ${set_dirname} ${set_model_filename} ${set_params_filename} ${set_serving_server} ${set_serving_client}"
MissPenguin's avatar
MissPenguin committed
59
60
61
62
    eval $trans_model_cmd
    cd ${serving_dir_value}
    unset https_proxy
    unset http_proxy
tink2123's avatar
tink2123 committed
63
64
    for python in ${python_list[*]}; do
        if [ ${python} = "cpp" ]; then
tink2123's avatar
tink2123 committed
65
66
            for use_gpu in ${web_use_gpu_list[*]}; do
                if [ ${use_gpu} = "null" ]; then
tink2123's avatar
tink2123 committed
67
68
69
70
                    web_service_cpp_cmd="${python_list[0]} -m paddle_serving_server.serve --model ppocr_det_mobile_2.0_serving/ ppocr_rec_mobile_2.0_serving/ --port 9293"
                    eval $web_service_cpp_cmd
                    last_status=${PIPESTATUS[0]}
                    status_check $last_status "${web_service_cpp_cmd}" "${status_log}"
MissPenguin's avatar
MissPenguin committed
71
                    sleep 2s
tink2123's avatar
tink2123 committed
72
                    _save_log_path="${LOG_PATH}/server_infer_cpp_cpu_pipeline_usemkldnn_False_threads_4_batchsize_1.log"
tink2123's avatar
tink2123 committed
73
                    pipeline_cmd="${python_list[0]}  ocr_cpp_client.py ppocr_det_mobile_2.0_client/ ppocr_rec_mobile_2.0_client/"
MissPenguin's avatar
MissPenguin committed
74
                    eval $pipeline_cmd
tink2123's avatar
tink2123 committed
75
                    last_status=${PIPESTATUS[0]}
MissPenguin's avatar
MissPenguin committed
76
77
78
                    status_check $last_status "${pipeline_cmd}" "${status_log}"
                    sleep 2s
                    ps ux | grep -E 'web_service|pipeline' | awk '{print $2}' | xargs kill -s 9
tink2123's avatar
tink2123 committed
79
                else
tink2123's avatar
tink2123 committed
80
81
                    web_service_cpp_cmd="${python_list[0]}  -m paddle_serving_server.serve --model ppocr_det_mobile_2.0_serving/ ppocr_rec_mobile_2.0_serving/ --port 9293 --gpu_id=0"
                    eval $web_service_cpp_cmd
tink2123's avatar
tink2123 committed
82
83
                    sleep 2s
                    _save_log_path="${LOG_PATH}/server_infer_cpp_cpu_pipeline_usemkldnn_False_threads_4_batchsize_1.log"
tink2123's avatar
tink2123 committed
84
                    pipeline_cmd="${python_list[0]}  ocr_cpp_client.py ppocr_det_mobile_2.0_client/ ppocr_rec_mobile_2.0_client/"
tink2123's avatar
tink2123 committed
85
                    eval $pipeline_cmd
tink2123's avatar
tink2123 committed
86
                    last_status=${PIPESTATUS[0]}
tink2123's avatar
tink2123 committed
87
88
89
90
                    status_check $last_status "${pipeline_cmd}" "${status_log}"
                    sleep 2s
                    ps ux | grep -E 'web_service|pipeline' | awk '{print $2}' | xargs kill -s 9                
                fi
MissPenguin's avatar
MissPenguin committed
91
92
            done
        else
tink2123's avatar
tink2123 committed
93
94
95
96
97
98
            # python serving
            for use_gpu in ${web_use_gpu_list[*]}; do
                if [ ${use_gpu} = "null" ]; then
                    for use_mkldnn in ${web_use_mkldnn_list[*]}; do
                        for threads in ${web_cpu_threads_list[*]}; do
                            set_cpu_threads=$(func_set_params "${web_cpu_threads_key}" "${threads}")
tink2123's avatar
tink2123 committed
99
                            web_service_cmd="${python} ${web_service_py} ${web_use_gpu_key}="" ${web_use_mkldnn_key}=${use_mkldnn} ${set_cpu_threads} &"
tink2123's avatar
tink2123 committed
100
                            eval $web_service_cmd
tink2123's avatar
tink2123 committed
101
102
                            last_status=${PIPESTATUS[0]}
                            status_check $last_status "${web_service_cmd}" "${status_log}"
tink2123's avatar
tink2123 committed
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
                            sleep 2s
                            for pipeline in ${pipeline_py[*]}; do
                                _save_log_path="${LOG_PATH}/server_infer_cpu_${pipeline%_client*}_usemkldnn_${use_mkldnn}_threads_${threads}_batchsize_1.log"
                                pipeline_cmd="${python} ${pipeline} ${set_image_dir} > ${_save_log_path} 2>&1 "
                                eval $pipeline_cmd
                                last_status=${PIPESTATUS[0]}
                                eval "cat ${_save_log_path}"
                                status_check $last_status "${pipeline_cmd}" "${status_log}"
                                sleep 2s
                            done
                            ps ux | grep -E 'web_service|pipeline' | awk '{print $2}' | xargs kill -s 9
                        done
                    done
                elif [ ${use_gpu} = "0" ]; then
                    for use_trt in ${web_use_trt_list[*]}; do
                        for precision in ${web_precision_list[*]}; do
                            if [[ ${_flag_quant} = "False" ]] && [[ ${precision} =~ "int8" ]]; then
                                continue
                            fi
                            if [[ ${precision} =~ "fp16" || ${precision} =~ "int8" ]] && [ ${use_trt} = "False" ]; then
                                continue
                            fi
                            if [[ ${use_trt} = "False" || ${precision} =~ "int8" ]] && [[ ${_flag_quant} = "True" ]]; then
                                continue
                            fi
                            set_tensorrt=$(func_set_params "${web_use_trt_key}" "${use_trt}")
tink2123's avatar
tink2123 committed
129
130
131
                            if [ ${use_trt} = True ]; then
                                device_type=2
                            fi
tink2123's avatar
tink2123 committed
132
133
134
                            set_precision=$(func_set_params "${web_precision_key}" "${precision}")
                            web_service_cmd="${python} ${web_service_py} ${web_use_gpu_key}=${use_gpu} ${set_tensorrt} ${set_precision} & "
                            eval $web_service_cmd
tink2123's avatar
tink2123 committed
135
136
                            last_status=${PIPESTATUS[0]}
                            status_check $last_status "${web_service_cmd}" "${status_log}"
tink2123's avatar
tink2123 committed
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
                        
                            sleep 2s
                            for pipeline in ${pipeline_py[*]}; do
                                _save_log_path="${LOG_PATH}/server_infer_gpu_${pipeline%_client*}_usetrt_${use_trt}_precision_${precision}_batchsize_1.log"
                                pipeline_cmd="${python} ${pipeline} ${set_image_dir}> ${_save_log_path} 2>&1"
                                eval $pipeline_cmd
                                last_status=${PIPESTATUS[0]}
                                eval "cat ${_save_log_path}"
                                status_check $last_status "${pipeline_cmd}" "${status_log}"
                                sleep 2s
                            done
                            ps ux | grep -E 'web_service|pipeline' | awk '{print $2}' | xargs kill -s 9
                        done
                    done
                else
                    echo "Does not support hardware other than CPU and GPU Currently!"
                fi
            done
MissPenguin's avatar
MissPenguin committed
155
156
157
158
159
        fi
    done
}


tink2123's avatar
tink2123 committed
160
#set cuda device
MissPenguin's avatar
MissPenguin committed
161
162
GPUID=$2
if [ ${#GPUID} -le 0 ];then
tink2123's avatar
tink2123 committed
163
    env="export CUDA_VISIBLE_DEVICES=0"
MissPenguin's avatar
MissPenguin committed
164
165
166
167
else
    env="export CUDA_VISIBLE_DEVICES=${GPUID}"
fi
eval $env
tink2123's avatar
tink2123 committed
168
echo $env
MissPenguin's avatar
MissPenguin committed
169
170
171


echo "################### run test ###################"
tink2123's avatar
tink2123 committed
172
173
174

export Count=0
IFS="|"
tink2123's avatar
tink2123 committed
175
func_serving "${web_service_cmd}"