diff --git a/python/examples/imagenet/get_model.sh b/python/examples/imagenet/get_model.sh index 72fa0c268caa12b1dde13eebdb098ed7fb8053b8..35a22183075d68583d3970bfcb3b5fc6c0a846ed 100644 --- a/python/examples/imagenet/get_model.sh +++ b/python/examples/imagenet/get_model.sh @@ -1,2 +1,2 @@ -wget https://paddle-serving.bj.bcebos.com/imagenet-example/conf_and_model.tar.gz +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/conf_and_model.tar.gz tar -xzvf conf_and_model.tar.gz diff --git a/python/examples/imagenet/image_classification_service_gpu.py b/python/examples/imagenet/image_classification_service_gpu.py new file mode 100644 index 0000000000000000000000000000000000000000..8fc92d918867142c6c442cb9eba61e2a9fb1f0e5 --- /dev/null +++ b/python/examples/imagenet/image_classification_service_gpu.py @@ -0,0 +1,45 @@ +# 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. + +from paddle_serving_server_gpu.web_service import WebService +import sys +import os +import base64 +from image_reader import ImageReader + + +class ImageService(WebService): + """ + preprocessing function for image classification + """ + + def preprocess(self, feed={}, fetch=[]): + reader = ImageReader() + if "image" not in feed: + raise ("feed data error!") + sample = base64.b64decode(feed["image"]) + img = reader.process_image(sample) + res_feed = {} + res_feed["image"] = img.reshape(-1) + return res_feed, fetch + + +image_service = ImageService(name="image") +image_service.load_model_config(sys.argv[1]) +gpu_ids = os.environ["CUDA_VISIBLE_DEVICES"] +gpus = [int(x) for x in gpu_ids.split(",")] +image_service.set_gpus(gpus) +image_service.prepare_server( + workdir=sys.argv[2], port=int(sys.argv[3]), device="gpu") +image_service.run_server() diff --git a/python/examples/imagenet/image_http_client.py b/python/examples/imagenet/image_http_client.py index 510723326878fd85369432af2e80eae7e3a7da5a..74cafaa850aa02122127ce2457af07f853e1ac94 100644 --- a/python/examples/imagenet/image_http_client.py +++ b/python/examples/imagenet/image_http_client.py @@ -15,6 +15,7 @@ import requests import base64 import json +import time def predict(image_path, server): @@ -22,10 +23,14 @@ def predict(image_path, server): req = json.dumps({"image": image, "fetch": ["score"]}) r = requests.post( server, data=req, headers={"Content-Type": "application/json"}) - print(r.json()["score"]) if __name__ == "__main__": - server = "http://127.0.0.1:9393/image/prediction" + server = "http://127.0.0.1:9292/image/prediction" image_path = "./data/n01440764_10026.JPEG" - predict(image_path, server) + start = time.time() + for i in range(1000): + predict(image_path, server) + print(i) + end = time.time() + print(end - start) diff --git a/python/examples/imagenet/image_rpc_client.py b/python/examples/imagenet/image_rpc_client.py index 385d4fe853f69b7eeb2c1532f7f1d218376921e9..ad1f808bc0a867b280726c97c06b71021bb1674e 100644 --- a/python/examples/imagenet/image_rpc_client.py +++ b/python/examples/imagenet/image_rpc_client.py @@ -15,15 +15,21 @@ import sys from image_reader import ImageReader from paddle_serving_client import Client +import time client = Client() client.load_client_config(sys.argv[1]) -client.connect(["127.0.0.1:9393"]) +client.connect(["127.0.0.1:9292"]) reader = ImageReader() -with open("./data/n01440764_10026.JPEG") as f: - img = f.read() -img = reader.process_image(img).reshape(-1) -fetch_map = client.predict(feed={"image": img}, fetch=["score"]) +start = time.time() +for i in range(1000): + with open("./data/n01440764_10026.JPEG") as f: + img = f.read() + img = reader.process_image(img).reshape(-1) + fetch_map = client.predict(feed={"image": img}, fetch=["score"]) + print(i) +end = time.time() +print(end - start) -print(fetch_map["score"]) +#print(fetch_map["score"]) diff --git a/python/paddle_serving_server_gpu/serve.py b/python/paddle_serving_server_gpu/serve.py index 104c9973105a6e4248b261ac03b26132f753cff5..ea00030a7c7488c225bcd635d49b251fbdee8245 100644 --- a/python/paddle_serving_server_gpu/serve.py +++ b/python/paddle_serving_server_gpu/serve.py @@ -64,6 +64,7 @@ def start_gpu_card_model(gpuid, args): # pylint: disable=doc-string-missing def start_multi_card(args): # pylint: disable=doc-string-missing gpus = "" if args.gpu_ids == "": + import os gpus = os.environ["CUDA_VISIBLE_DEVICES"] else: gpus = args.gpu_ids.split(",") diff --git a/python/paddle_serving_server_gpu/web_serve.py b/python/paddle_serving_server_gpu/web_serve.py index de7130afb90b38cc867edab8134c297ad326989d..734e6d7b93b4f3ad22f330b1545b63c6ac6f2838 100644 --- a/python/paddle_serving_server_gpu/web_serve.py +++ b/python/paddle_serving_server_gpu/web_serve.py @@ -36,4 +36,4 @@ if __name__ == "__main__": web_service.set_gpus(gpus) web_service.prepare_server( workdir=args.workdir, port=args.port, device=args.device) - service.run_server() + web_service.run_server() diff --git a/python/paddle_serving_server_gpu/web_service.py b/python/paddle_serving_server_gpu/web_service.py index 6d2039040178c118f48a09563735d97cca3c10c7..d30f1bfb0c0b7c40e32fe62e53e9882dce4cd18b 100755 --- a/python/paddle_serving_server_gpu/web_service.py +++ b/python/paddle_serving_server_gpu/web_service.py @@ -107,6 +107,8 @@ class WebService(object): if "fetch" not in request.json: abort(400) feed, fetch = self.preprocess(request.json, request.json["fetch"]) + if "fetch" in feed: + del feed["fetch"] fetch_map = client_list[0].predict(feed=feed, fetch=fetch) fetch_map = self.postprocess( feed=request.json, fetch=fetch, fetch_map=fetch_map)