forked from PaddlePaddle/PaddleClas
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
40 changed files
with
812 additions
and
302 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# benchmark使用说明 | ||
|
||
此目录所有shell脚本是为了测试PaddleClas中不同模型的速度指标,如单卡训练速度指标、多卡训练速度指标等。 | ||
|
||
## 相关脚本说明 | ||
|
||
一共有3个脚本: | ||
|
||
- `prepare_data.sh`: 下载相应的测试数据,并配置好数据路径 | ||
- `run_benchmark.sh`: 执行单独一个训练测试的脚本,具体调用方式,可查看脚本注释 | ||
- `run_all.sh`: 执行所有训练测试的入口脚本 | ||
|
||
## 使用说明 | ||
|
||
**注意**:为了跟PaddleClas中其他的模块的执行目录保持一致,此模块的执行目录为`PaddleClas`的根目录。 | ||
|
||
### 1.准备数据 | ||
|
||
```shell | ||
bash benchmark/prepare_data.sh | ||
``` | ||
|
||
### 2.执行所有模型的测试 | ||
|
||
```shell | ||
bash benchmark/run_all.sh | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#!/bin/bash | ||
dataset_url=$1 | ||
|
||
cd dataset | ||
rm -rf ILSVRC2012 | ||
wget -nc ${dataset_url} | ||
tar xf ILSVRC2012_val.tar | ||
ln -s ILSVRC2012_val ILSVRC2012 | ||
cd ILSVRC2012 | ||
ln -s val_list.txt train_list.txt | ||
cd ../../ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# 提供可稳定复现性能的脚本,默认在标准docker环境内py37执行: paddlepaddle/paddle:latest-gpu-cuda10.1-cudnn7 paddle=2.1.2 py=37 | ||
# 执行目录:需说明 | ||
# cd ** | ||
# 1 安装该模型需要的依赖 (如需开启优化策略请注明) | ||
# pip install ... | ||
# 2 拷贝该模型需要数据、预训练模型 | ||
# 3 批量运行(如不方便批量,1,2需放到单个模型中) | ||
|
||
model_mode_list=(MobileNetV1 MobileNetV2 MobileNetV3_large_x1_0 EfficientNetB0 ShuffleNetV2_x1_0 DenseNet121 HRNet_W48_C SwinTransformer_tiny_patch4_window7_224 alt_gvt_base) | ||
fp_item_list=(fp32) | ||
bs_list=(32 64 96 128) | ||
for model_mode in ${model_mode_list[@]}; do | ||
for fp_item in ${fp_item_list[@]}; do | ||
for bs_item in ${bs_list[@]};do | ||
echo "index is speed, 1gpus, begin, ${model_name}" | ||
run_mode=sp | ||
CUDA_VISIBLE_DEVICES=0 bash benchmark/run_benchmark.sh ${run_mode} ${bs_item} ${fp_item} 10 ${model_mode} # (5min) | ||
sleep 10 | ||
echo "index is speed, 8gpus, run_mode is multi_process, begin, ${model_name}" | ||
run_mode=mp | ||
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash benchmark/run_benchmark.sh ${run_mode} ${bs_item} ${fp_item} 10 ${model_mode} | ||
sleep 10 | ||
done | ||
done | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#!/usr/bin/env bash | ||
set -xe | ||
# 运行示例:CUDA_VISIBLE_DEVICES=0 bash run_benchmark.sh ${run_mode} ${bs_item} ${fp_item} 500 ${model_mode} | ||
# 参数说明 | ||
function _set_params(){ | ||
run_mode=${1:-"sp"} # 单卡sp|多卡mp | ||
batch_size=${2:-"64"} | ||
fp_item=${3:-"fp32"} # fp32|fp16 | ||
epochs=${4:-"10"} # 可选,如果需要修改代码提前中断 | ||
model_name=${5:-"model_name"} | ||
run_log_path="${TRAIN_LOG_DIR:-$(pwd)}/benchmark" # TRAIN_LOG_DIR 后续QA设置该参数 | ||
|
||
# 以下不用修改 | ||
device=${CUDA_VISIBLE_DEVICES//,/ } | ||
arr=(${device}) | ||
num_gpu_devices=${#arr[*]} | ||
log_file=${run_log_path}/clas_${model_name}_${run_mode}_bs${batch_size}_${fp_item}_${num_gpu_devices} | ||
} | ||
function _train(){ | ||
echo "Train on ${num_gpu_devices} GPUs" | ||
echo "current CUDA_VISIBLE_DEVICES=$CUDA_VISIBLE_DEVICES, gpus=$num_gpu_devices, batch_size=$batch_size" | ||
|
||
if [ ${fp_item} = "fp32" ];then | ||
model_config=`find ppcls/configs/ImageNet -name ${model_name}.yaml` | ||
else | ||
model_config=`find ppcls/configs/ImageNet -name ${model_name}_fp16.yaml` | ||
fi | ||
|
||
train_cmd="-c ${model_config} -o DataLoader.Train.sampler.batch_size=${batch_size} -o Global.epochs=${epochs}" | ||
case ${run_mode} in | ||
sp) train_cmd="python -u tools/train.py ${train_cmd}" ;; | ||
mp) | ||
train_cmd="python -m paddle.distributed.launch --log_dir=./mylog --gpus=$CUDA_VISIBLE_DEVICES tools/train.py ${train_cmd}" | ||
log_parse_file="mylog/workerlog.0" ;; | ||
*) echo "choose run_mode(sp or mp)"; exit 1; | ||
esac | ||
rm -rf mylog | ||
# 以下不用修改 | ||
timeout 15m ${train_cmd} > ${log_file} 2>&1 | ||
if [ $? -ne 0 ];then | ||
echo -e "${model_name}, FAIL" | ||
export job_fail_flag=1 | ||
else | ||
echo -e "${model_name}, SUCCESS" | ||
export job_fail_flag=0 | ||
fi | ||
kill -9 `ps -ef|grep 'python'|awk '{print $2}'` | ||
|
||
if [ $run_mode = "mp" -a -d mylog ]; then | ||
rm ${log_file} | ||
cp mylog/workerlog.0 ${log_file} | ||
fi | ||
} | ||
|
||
_set_params $@ | ||
_train |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
Global: | ||
rec_inference_model_dir: "./models/general_PPLCNet_x2_5_lite_v1.0_infer" | ||
batch_size: 32 | ||
use_gpu: True | ||
enable_mkldnn: True | ||
cpu_num_threads: 10 | ||
enable_benchmark: True | ||
use_fp16: False | ||
ir_optim: True | ||
use_tensorrt: False | ||
gpu_mem: 8000 | ||
enable_profile: False | ||
|
||
RecPreProcess: | ||
transform_ops: | ||
- ResizeImage: | ||
size: 224 | ||
- NormalizeImage: | ||
scale: 0.00392157 | ||
mean: [0.485, 0.456, 0.406] | ||
std: [0.229, 0.224, 0.225] | ||
order: '' | ||
- ToCHWImage: | ||
|
||
RecPostProcess: null | ||
|
||
# indexing engine config | ||
IndexProcess: | ||
index_method: "HNSW32" # supported: HNSW32, IVF, Flat | ||
image_root: "./drink_dataset_v1.0/gallery/" | ||
index_dir: "./drink_dataset_v1.0/index" | ||
data_file: "./drink_dataset_v1.0/gallery/drink_label.txt" | ||
index_operation: "new" # suported: "append", "remove", "new" | ||
delimiter: "\t" | ||
dist_type: "IP" | ||
embedding_size: 512 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
Global: | ||
infer_imgs: "./drink_dataset_v1.0/test_images/nongfu_spring.jpeg" | ||
det_inference_model_dir: "./models/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer" | ||
rec_inference_model_dir: "./models/general_PPLCNet_x2_5_lite_v1.0_infer" | ||
rec_nms_thresold: 0.05 | ||
|
||
batch_size: 1 | ||
image_shape: [3, 640, 640] | ||
threshold: 0.2 | ||
max_det_results: 5 | ||
labe_list: | ||
- foreground | ||
|
||
# inference engine config | ||
use_gpu: True | ||
enable_mkldnn: True | ||
cpu_num_threads: 10 | ||
enable_benchmark: True | ||
use_fp16: False | ||
ir_optim: True | ||
use_tensorrt: False | ||
gpu_mem: 8000 | ||
enable_profile: False | ||
|
||
DetPreProcess: | ||
transform_ops: | ||
- DetResize: | ||
interp: 2 | ||
keep_ratio: false | ||
target_size: [640, 640] | ||
- DetNormalizeImage: | ||
is_scale: true | ||
mean: [0.485, 0.456, 0.406] | ||
std: [0.229, 0.224, 0.225] | ||
- DetPermute: {} | ||
DetPostProcess: {} | ||
|
||
RecPreProcess: | ||
transform_ops: | ||
- ResizeImage: | ||
size: 224 | ||
- NormalizeImage: | ||
scale: 0.00392157 | ||
mean: [0.485, 0.456, 0.406] | ||
std: [0.229, 0.224, 0.225] | ||
order: '' | ||
- ToCHWImage: | ||
|
||
RecPostProcess: null | ||
|
||
# indexing engine config | ||
IndexProcess: | ||
index_dir: "./drink_dataset_v1.0/index/" | ||
return_k: 5 | ||
score_thres: 0.5 |
Oops, something went wrong.