Skip to content

Commit 3fb7f24

Browse files
authored
Merge pull request #3405 from anzhella-pankratova/performance_test_update
Performance scope: add demos with dynamism
2 parents 12d782d + 546034f commit 3fb7f24

File tree

3 files changed

+38
-10
lines changed

3 files changed

+38
-10
lines changed

demos/tests/cases.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import collections
1616
import itertools
1717
import sys
18+
from copy import deepcopy
1819

1920
from args import (
2021
DataDirectoryArg, DataDirectoryOrigFileNamesArg, DataPatternArg,
@@ -41,6 +42,7 @@ def __init__(self, name, implementation, model_keys=None, device_keys=None, test
4142

4243
self._exec_name = self.subdirectory.replace('/', '_')
4344
self.parser = None
45+
self.supported_devices = None
4446

4547
Demo.IMPLEMENTATION_TYPES.add(implementation)
4648

@@ -50,6 +52,8 @@ def models_lst_path(self, source_dir):
5052
def device_args(self, device_list):
5153
if len(self.device_keys) == 0:
5254
return {'CPU': []}
55+
if self.supported_devices:
56+
device_list = list(set(device_list) & set(self.supported_devices))
5357
return {device: [arg for key in self.device_keys for arg in [key, device]] for device in device_list}
5458

5559
def get_models(self, case):
@@ -99,6 +103,10 @@ def only_models(self, models):
99103
continue
100104
return self
101105

106+
def only_devices(self, devices):
107+
self.supported_devices = devices
108+
return self
109+
102110
def set_precisions(self, precisions, model_info):
103111
for case in self.test_cases[:]:
104112
updated_options = {p: {} for p in precisions}
@@ -1407,4 +1415,4 @@ def single_option_cases(key, *args):
14071415
]
14081416

14091417

1410-
BASE = { demo.subdirectory : demo for demo in DEMOS }
1418+
BASE = { demo.subdirectory : deepcopy(demo) for demo in DEMOS }

demos/tests/performance_cases.py

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414

1515
import os
1616
import re
17-
from args import DataPatternArg
18-
from copy import deepcopy
17+
#from args import DataPatternArg
1918

2019
from cases import BASE, single_option_cases
2120

@@ -49,25 +48,46 @@ def write_to_csv(self, result, test_case, device):
4948

5049
if not os.path.isfile(self.filename):
5150
models_col = [f"Model {key}" for key in self.model_keys]
52-
columns = ','.join(['Device', *models_col, *result.keys()])
51+
precisions_col = [f"Precision {key}" for key in self.model_keys]
52+
columns = ','.join(['Device', *precisions_col, *models_col, *result.keys()])
5353
with open(self.filename, 'w') as f:
5454
print(columns, file=f)
5555

56+
precisions = [test_case.options[key].precision if key in test_case.options else '-'
57+
for key in self.model_keys]
5658
models_names = [test_case.options[key].name if key in test_case.options else '-'
5759
for key in self.model_keys]
58-
data = ','.join([device, *models_names, *result.values()])
60+
data = ','.join([device, *precisions, *models_names, *result.values()])
5961
with open(self.filename, 'a') as f:
6062
print(data, file=f)
6163

6264

6365
DEMOS = [
64-
deepcopy(BASE['interactive_face_detection_demo/cpp']).add_parser(PerformanceParser),
66+
BASE['interactive_face_detection_demo/cpp_gapi'].add_parser(PerformanceParser),
6567

66-
deepcopy(BASE['object_detection_demo/python'])
68+
BASE['interactive_face_detection_demo/cpp'].add_parser(PerformanceParser),
69+
70+
BASE['object_detection_demo/python']
6771
.only_models(['person-detection-0200', 'yolo-v2-tf'])
68-
.update_option({'-i': DataPatternArg('action-recognition')})
72+
# TODO: create large -i for performance scenario
73+
# .update_option({'-i': DataPatternArg('action-recognition')})
6974
.add_test_cases(single_option_cases('-nireq', '3', '5'),
7075
single_option_cases('-nstreams', '3', '4'),
7176
single_option_cases('-nthreads', str(THREADS_NUM), str(THREADS_NUM - 2)))
72-
.add_parser(PerformanceParser)
77+
.add_parser(PerformanceParser),
78+
79+
BASE['bert_named_entity_recognition_demo/python']
80+
.update_option({'--dynamic_shape': None})
81+
.only_devices(['CPU'])
82+
.add_parser(PerformanceParser),
83+
84+
BASE['gpt2_text_prediction_demo/python']
85+
.update_option({'--dynamic_shape': None})
86+
.only_devices(['CPU'])
87+
.add_parser(PerformanceParser),
88+
89+
BASE['speech_recognition_wav2vec_demo/python']
90+
.update_option({'--dynamic_shape': None})
91+
.only_devices(['CPU'])
92+
.add_parser(PerformanceParser),
7393
]

demos/tests/run_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def parse_args():
8383
parser.add_argument('--supported-devices', type=parser_paths_list, required=False,
8484
help='paths to Markdown files with supported devices for each model')
8585
parser.add_argument('--precisions', type=str, nargs='+', default=['FP16', 'FP16-INT8'],
86-
help='IR precisions for all models. By default, models are tested in FP16 precision')
86+
help='IR precisions for all models. By default, models are tested in FP16, FP16-INT8 precisions')
8787
parser.add_argument('--models-dir', type=Path, required=False, metavar='DIR',
8888
help='directory with pre-converted models (IRs)')
8989
return parser.parse_args()

0 commit comments

Comments
 (0)