benchmark.py 2.1 KB
Newer Older
G
guru4elephant 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# 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.

import sys
G
guru4elephant 已提交
16 17 18
import time
import requests
from imdb_reader import IMDBDataset
G
guru4elephant 已提交
19 20
from paddle_serving_client import Client
from paddle_serving_client.utils import MultiThreadRunner
G
guru4elephant 已提交
21
from paddle_serving_client.utils import benchmark_args
G
guru4elephant 已提交
22

G
guru4elephant 已提交
23
args = benchmark_args()
M
MRXLT 已提交
24

G
guru4elephant 已提交
25 26 27 28 29
def single_func(idx, resource):
    imdb_dataset = IMDBDataset()
    imdb_dataset.load_resource(args.vocab)
    filelist_fn = args.filelist
    filelist = []
G
guru4elephant 已提交
30
    start = time.time()
G
guru4elephant 已提交
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
    with open(filelist_fn) as fin:
        for line in fin:
            filelist.append(line.strip())
    filelist = filelist[idx::args.thread]
    if args.request == "rpc":
        client = Client()
        client.load_client_config(args.model)
        client.connect([args.endpoint])
        for fn in filelist:
            fin = open(fn)
            for line in fin:
                word_ids, label = imdb_dataset.get_words_and_label(line)
                fetch_map = client.predict(feed={"words": word_ids},
                                           fetch=["prediction"])
    elif args.request == "http":
        for fn in filelist:
            fin = open(fn)
            for line in fin:
                word_ids, label = imdb_dataset.get_words_and_label(line)
                r = requests.post("http://{}/imdb/prediction".format(args.endpoint),
                                  data={"words": word_ids})
G
guru4elephant 已提交
52
    end = time.time()
G
guru4elephant 已提交
53
    return [[end - start]]
G
guru4elephant 已提交
54

G
guru4elephant 已提交
55 56 57
multi_thread_runner = MultiThreadRunner()
result = multi_thread_runner.run(single_func, args.thread, {})
print(result)