diff --git a/python/examples/imagenet/benchmark.py b/python/examples/imagenet/benchmark.py index ece222f74c52614100a119e49c3754e22959b7c8..e531425770cbf9102b7ebd2f5b082c5c4aa14e71 100644 --- a/python/examples/imagenet/benchmark.py +++ b/python/examples/imagenet/benchmark.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- +# # Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,13 +15,16 @@ # limitations under the License. # pylint: disable=doc-string-missing +from __future__ import unicode_literals, absolute_import +import os import sys -from image_reader import ImageReader +import time from paddle_serving_client import Client from paddle_serving_client.utils import MultiThreadRunner from paddle_serving_client.utils import benchmark_args -import time -import os +import requests +import json +from image_reader import ImageReader args = benchmark_args() @@ -37,24 +42,31 @@ def single_func(idx, resource): client = Client() client.load_client_config(args.model) client.connect([resource["endpoint"][idx % len(resource["endpoint"])]]) - start = time.time() for i in range(1000): - img = reader.process_image(img_list[i]).reshape(-1) - fetch_map = client.predict(feed={"image": img}, fetch=["score"]) - end = time.time() - return [[end - start]] + if args.batch_size >= 1: + feed_batch = [] + for bi in range(args.batch_size): + img = reader.process_image(img_list[i]) + img = img.reshape(-1) + feed_batch.append({"image": img}) + result = client.predict(feed=feed_batch, fetch=fetch) + else: + print("unsupport batch size {}".format(args.batch_size)) + + elif args.request == "http": + raise ("no batch predict for http") + end = time.time() return [[end - start]] -if __name__ == "__main__": +if __name__ == '__main__': multi_thread_runner = MultiThreadRunner() endpoint_list = ["127.0.0.1:9393"] - #card_num = 4 - #for i in range(args.thread): - # endpoint_list.append("127.0.0.1:{}".format(9295 + i % card_num)) + #endpoint_list = endpoint_list + endpoint_list + endpoint_list result = multi_thread_runner.run(single_func, args.thread, {"endpoint": endpoint_list}) + #result = single_func(0, {"endpoint": endpoint_list}) avg_cost = 0 for i in range(args.thread): avg_cost += result[0][i] diff --git a/python/examples/imagenet/benchmark.sh b/python/examples/imagenet/benchmark.sh index 16fadbbac6cd7e616d11135653cfbcfeebe6d4f2..84885908fa89d050b3ca71386fe2a21533ce0809 100644 --- a/python/examples/imagenet/benchmark.sh +++ b/python/examples/imagenet/benchmark.sh @@ -1,9 +1,28 @@ rm profile_log -for thread_num in 1 2 4 8 16 +export CUDA_VISIBLE_DEVICES=0,1,2,3 +export FLAGS_profile_server=1 +export FLAGS_profile_client=1 +python -m paddle_serving_server_gpu.serve --model $1 --port 9292 --thread 4 --gpu_ids 0,1,2,3 2> elog > stdlog & + +sleep 5 + +#warm up +$PYTHONROOT/bin/python benchmark.py --thread 8 --batch_size 1 --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 + +for thread_num in 4 8 16 do - $PYTHONROOT/bin/python benchmark.py --thread $thread_num --model ResNet101_vd_client_config/serving_client_conf.prototxt --request rpc > profile 2>&1 - echo "========================================" - echo "batch size : $batch_size" >> profile_log +for batch_size in 1 4 16 64 256 +do + $PYTHONROOT/bin/python benchmark.py --thread $thread_num --batch_size $batch_size --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 + echo "model name :" $1 + echo "thread num :" $thread_num + echo "batch size :" $batch_size + echo "=================Done====================" + echo "model name :$1" >> profile_log + echo "batch size :$batch_size" >> profile_log $PYTHONROOT/bin/python ../util/show_profile.py profile $thread_num >> profile_log - tail -n 1 profile >> profile_log + tail -n 8 profile >> profile_log +done done + +ps -ef|grep 'serving'|grep -v grep|cut -c 9-15 | xargs kill -9 diff --git a/python/examples/imagenet/benchmark_batch.py b/python/examples/imagenet/benchmark_batch.py deleted file mode 100644 index e531425770cbf9102b7ebd2f5b082c5c4aa14e71..0000000000000000000000000000000000000000 --- a/python/examples/imagenet/benchmark_batch.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# pylint: disable=doc-string-missing - -from __future__ import unicode_literals, absolute_import -import os -import sys -import time -from paddle_serving_client import Client -from paddle_serving_client.utils import MultiThreadRunner -from paddle_serving_client.utils import benchmark_args -import requests -import json -from image_reader import ImageReader - -args = benchmark_args() - - -def single_func(idx, resource): - file_list = [] - for file_name in os.listdir("./image_data/n01440764"): - file_list.append(file_name) - img_list = [] - for i in range(1000): - img_list.append(open("./image_data/n01440764/" + file_list[i]).read()) - if args.request == "rpc": - reader = ImageReader() - fetch = ["score"] - client = Client() - client.load_client_config(args.model) - client.connect([resource["endpoint"][idx % len(resource["endpoint"])]]) - start = time.time() - for i in range(1000): - if args.batch_size >= 1: - feed_batch = [] - for bi in range(args.batch_size): - img = reader.process_image(img_list[i]) - img = img.reshape(-1) - feed_batch.append({"image": img}) - result = client.predict(feed=feed_batch, fetch=fetch) - else: - print("unsupport batch size {}".format(args.batch_size)) - - elif args.request == "http": - raise ("no batch predict for http") - end = time.time() - return [[end - start]] - - -if __name__ == '__main__': - multi_thread_runner = MultiThreadRunner() - endpoint_list = ["127.0.0.1:9393"] - #endpoint_list = endpoint_list + endpoint_list + endpoint_list - result = multi_thread_runner.run(single_func, args.thread, - {"endpoint": endpoint_list}) - #result = single_func(0, {"endpoint": endpoint_list}) - avg_cost = 0 - for i in range(args.thread): - avg_cost += result[0][i] - avg_cost = avg_cost / args.thread - print("average total cost {} s.".format(avg_cost)) diff --git a/python/examples/imagenet/benchmark_batch.sh b/python/examples/imagenet/benchmark_batch.sh deleted file mode 100644 index 4118ffcc755e6d47c69924efbb1b7d5474db8b00..0000000000000000000000000000000000000000 --- a/python/examples/imagenet/benchmark_batch.sh +++ /dev/null @@ -1,12 +0,0 @@ -rm profile_log -for thread_num in 1 2 4 8 16 -do -for batch_size in 1 2 4 8 16 32 64 128 256 512 -do - $PYTHONROOT/bin/python benchmark_batch.py --thread $thread_num --batch_size $batch_size --model ResNet101_vd_client_config/serving_client_conf.prototxt --request rpc > profile 2>&1 - echo "========================================" - echo "batch size : $batch_size" >> profile_log - $PYTHONROOT/bin/python ../util/show_profile.py profile $thread_num >> profile_log - tail -n 1 profile >> profile_log -done -done diff --git a/python/paddle_serving_app/models/model_list.py b/python/paddle_serving_app/models/model_list.py index 6709c8aea06c3fa0cce2acdc0cbaf7d4a9c9c64e..ad028378e93f64ff2111de85730a4bff23570c06 100644 --- a/python/paddle_serving_app/models/model_list.py +++ b/python/paddle_serving_app/models/model_list.py @@ -84,6 +84,22 @@ class ServingModels(object): self.model_dict[ key] = "https://paddle-serving.bj.bcebos.com/paddle_hub_models/image/ImageClassification/" + key + ".tar.gz" + #SemanticModel + for key in [ + "bert_cased_L-12_H-768_A-12", "bert_cased_L-24_H-1024_A-12", + "bert_chinese_L-12_H-768_A-12", + "bert_multi_cased_L-12_H-768_A-12", + "bert_multi_uncased_L-12_H-768_A-12", + "bert_uncased_L-12_H-768_A-12", "bert_uncased_L-24_H-1024_A-16", + "chinese-bert-wwm-ext", "chinese-bert-wwm", + "chinese-electra-base", "chinese-electra-small", + "chinese-electra-small", "chinese-roberta-wwm-ext", "ernie", + "ernie_tiny", "ernie_v2_eng_base", "ernie_v2_eng_large", "rbt3", + "rbtl3", "simnet_bow", "word2vec_skipgram" + ]: + self.model_dict[ + key] = "https://paddle-serving.bj.bcebos.com/paddle_hub_models/text/SemanticModel/" + key + ".tar.gz" + def get_model_list(self): return (self.model_dict.keys())