Skip to content

Commit 0e5a7a1

Browse files
lvliang-intelxin3he
authored andcommitted
Disable multi instance for ITEX GPU benchmark (#204)
Signed-off-by: Lv, Liang1 <[email protected]>
1 parent 4c3a94e commit 0e5a7a1

File tree

3 files changed

+60
-13
lines changed

3 files changed

+60
-13
lines changed

neural_compressor/adaptor/tf_utils/graph_converter.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,7 @@ def _inference(self, model):
163163
# ITEX optimization has broken INC calibration process.
164164
# INC needs turn off ITEX optimization pass in calibration stage.
165165
# TODO ITEX will provide API to replace setting environment variable.
166-
if self.itex_mode:
167-
os.environ["ITEX_REMAPPER"] = "0"
166+
os.environ["ITEX_REMAPPER"] = "0"
168167
sess = model.sess
169168
iter_op = model.iter_op
170169
input_tensor = model.input_tensor
@@ -225,26 +224,25 @@ def check_shape(tensor, data):
225224
return True
226225

227226
disorder_tensors = []
228-
disorder_inputs = []
227+
disorder_inputs = []
229228
for idx, sort_tensor in enumerate(input_tensor):
230229
sort_input = inputs[idx]
231230
if check_shape(sort_tensor, sort_input):
232-
feed_dict.update({sort_tensor: sort_input})
231+
feed_dict.update({sort_tensor: sort_input})
233232
else:
234233
disorder_tensors.append(sort_tensor)
235234
disorder_inputs.append(sort_input)
236235
for i, dis_tensor in enumerate(disorder_tensors):
237-
for j, dis_input in enumerate(disorder_inputs):
238-
if check_shape(dis_tensor, dis_input):
239-
feed_dict.update({dis_tensor: dis_input})
240-
break
236+
for j, dis_input in enumerate(disorder_inputs):
237+
if check_shape(dis_tensor, dis_input):
238+
feed_dict.update({dis_tensor: dis_input})
239+
break
241240
_ = sess.run(output_tensor, feed_dict) if iter_op==[] \
242241
else iterator_sess_run(sess, iter_op, \
243242
feed_dict, output_tensor, self.calib_iteration)
244243
if idx + 1 == self.calib_iteration:
245244
break
246-
if self.itex_mode:
247-
os.environ["ITEX_REMAPPER"] = "1"
245+
os.environ["ITEX_REMAPPER"] = "1"
248246

249247
def _check_tf_version(self):
250248
is_supported_version = False

neural_compressor/experimental/benchmark.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,8 @@ def __call__(self, mode='performance'):
181181
assert cfg.evaluation is not None, 'benchmark evaluation filed should not be None...'
182182
assert sys.platform in ['linux', 'win32'], 'only support platform windows and linux...'
183183
set_all_env_var(deep_get(cfg, 'evaluation.{}.configs'.format(mode)))
184-
# disable multi-instance for accuracy mode
185-
if mode == "accuracy":
184+
# disable multi-instance for accuracy mode or running bechmark on GPU device
185+
if mode == "accuracy" or cfg.device == 'gpu':
186186
set_env_var('NC_ENV_CONF', True, overwrite_existing=True)
187187

188188
logger.info("Start to run Benchmark.")

test/itex/test_tensorflow_itex_basic.py

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
import os
66
import shutil
77
import yaml
8+
import platform
89
import numpy as np
910
from neural_compressor.adaptor.tf_utils.quantize_graph.quantize_graph_for_intel_cpu import QuantizeGraphForIntel
1011
from neural_compressor.adaptor.tf_utils.graph_rewriter.generic.strip_unused_nodes import StripUnusedNodesOptimizer
1112
from neural_compressor.adaptor.tf_utils.graph_rewriter.generic.fold_batch_norm import FoldBatchNormNodesOptimizer
1213
from neural_compressor.adaptor.tensorflow import TensorflowQuery
1314
from neural_compressor.adaptor.tf_utils.util import disable_random
14-
from neural_compressor.experimental import Quantization, common
15+
from neural_compressor.experimental import Quantization, Benchmark, common
1516
from neural_compressor.utils.utility import CpuInfo
1617
from neural_compressor.adaptor.tf_utils.util import version1_lt_version2, version1_gte_version2
1718

@@ -217,5 +218,53 @@ def test_depthwiseconv2d_case(self):
217218
reshape_counter += 1
218219
self.assertEqual(reshape_counter, 2)
219220

221+
@disable_random()
222+
@unittest.skipIf(version1_lt_version2(tf.version.VERSION, '2.8.0') or \
223+
platform.system().lower() == "windows", "Only supports tf greater 2.7.0 and Linux")
224+
def test_itex_benchmark_gpu(self):
225+
x = tf.compat.v1.placeholder(tf.float32, [1, 56, 56, 16], name="input")
226+
top_relu = tf.nn.relu(x)
227+
paddings = tf.constant([[0, 0], [1, 1], [1, 1], [0, 0]])
228+
x_pad = tf.pad(top_relu, paddings, "CONSTANT")
229+
conv_weights = tf.compat.v1.get_variable("weight", [3, 3, 16, 16],
230+
initializer=tf.compat.v1.random_normal_initializer())
231+
conv = tf.nn.conv2d(x_pad, conv_weights, strides=[1, 2, 2, 1], padding="VALID")
232+
normed = tf.compat.v1.layers.batch_normalization(conv)
233+
conv_weights2 = tf.compat.v1.get_variable("weight2", [3, 3, 16, 16],
234+
initializer=tf.compat.v1.random_normal_initializer())
235+
conv2 = tf.nn.conv2d(top_relu, conv_weights2, strides=[1, 2, 2, 1], padding="SAME")
236+
normed2 = tf.compat.v1.layers.batch_normalization(conv2)
237+
add = tf.raw_ops.Add(x=normed, y=normed2, name='addv2')
238+
relu = tf.nn.relu(add)
239+
relu6 = tf.nn.relu6(relu, name='op_to_store')
240+
out_name = relu6.name.split(':')[0]
241+
with tf.compat.v1.Session() as sess:
242+
sess.run(tf.compat.v1.global_variables_initializer())
243+
output_graph_def = graph_util.convert_variables_to_constants(
244+
sess=sess,
245+
input_graph_def=sess.graph_def,
246+
output_node_names=[out_name])
247+
248+
quantizer = Quantization('fake_yaml_2.yaml')
249+
dataset = quantizer.dataset('dummy', shape=(100, 56, 56, 16), label=True)
250+
quantizer.eval_dataloader = common.DataLoader(dataset)
251+
quantizer.calib_dataloader = common.DataLoader(dataset)
252+
quantizer.model = output_graph_def
253+
output_graph = quantizer.fit()
254+
255+
evaluator = Benchmark('fake_yaml_2.yaml')
256+
evaluator.b_dataloader = common.DataLoader(dataset)
257+
evaluator.model = output_graph
258+
evaluator('performance')
259+
260+
found_multi_instance_log = False
261+
for file_name in os.listdir(os.getcwd()):
262+
if file_name.endswith(".log"):
263+
found_multi_instance_log = True
264+
break
265+
266+
self.assertEqual(found_multi_instance_log, False)
267+
268+
220269
if __name__ == '__main__':
221270
unittest.main()

0 commit comments

Comments
 (0)