enable --compress_to_fp16=True by default in MO (#15488)
* enable --compress_to_fp16 by default in MO * corrected docs, added warning if user did't specify --compress_to_fp16 explicitly * fix failing MO unit-tests * do not wipe out data_type if user defined it explicitly by cli argument * updated warning message and docs * corrected phrasing * corrected phrasing in FP16_Compression.md * set compress_to_fp16=False for convert tests * leftover: set compress_to_fp16=False for convert tests * minor correction * print info message in main.py, som minor changes * typos fix * fix losing information whether arguments set by user or got from defaults * returned back default values instead of None * more selective correcting of test_mo_convert_pytorch.py; added test for cases when compression is enabled/disabled or left by default * fix test_mo_convert_pytorch.py
This commit is contained in:
@@ -421,10 +421,60 @@ def create_pytorch_nn_module_mean_list(tmp_dir):
|
||||
parameter_list = [param1, param2]
|
||||
ref_model = Model([sigm], parameter_list, "test")
|
||||
|
||||
return pt_model, ref_model, {'input_shape': [shape, shape], 'mean_values': [[0, 0, 0], [0, 0, 0]],
|
||||
'onnx_opset_version': 11, 'compress_to_fp16': False, "use_legacy_frontend": True}
|
||||
|
||||
|
||||
def create_pytorch_nn_module_mean_list_default_compression(tmp_dir):
|
||||
# by default compression should be enabled (same as setting 'compress_to_fp16': True)
|
||||
# therefore decompression Converts will be present
|
||||
pt_model = make_pt_model_two_inputs()
|
||||
shape = [1, 10, 10, 3]
|
||||
|
||||
shape = PartialShape(shape)
|
||||
param1 = ov.opset8.parameter(shape)
|
||||
param2 = ov.opset8.parameter(shape)
|
||||
const1 = ov.opset8.constant([[[[0, 0, 0]]]], dtype=np.float16)
|
||||
const1_decompressed = ov.opset8.convert(const1, destination_type=np.float32)
|
||||
const2 = ov.opset8.constant([[[[0, 0, 0]]]], dtype=np.float16)
|
||||
const2_decompressed = ov.opset8.convert(const2, destination_type=np.float32)
|
||||
sub1 = ov.opset8.subtract(param1, const1_decompressed)
|
||||
sub2 = ov.opset8.subtract(param2, const2_decompressed)
|
||||
add = ov.opset8.add(sub1, sub2)
|
||||
relu = ov.opset8.relu(add)
|
||||
sigm = ov.opset8.sigmoid(relu)
|
||||
|
||||
parameter_list = [param1, param2]
|
||||
ref_model = Model([sigm], parameter_list, "test")
|
||||
|
||||
return pt_model, ref_model, {'input_shape': [shape, shape], 'mean_values': [[0, 0, 0], [0, 0, 0]],
|
||||
'onnx_opset_version': 11, "use_legacy_frontend": True}
|
||||
|
||||
|
||||
def create_pytorch_nn_module_mean_list_compressin_enabled(tmp_dir):
|
||||
pt_model = make_pt_model_two_inputs()
|
||||
shape = [1, 10, 10, 3]
|
||||
|
||||
shape = PartialShape(shape)
|
||||
param1 = ov.opset8.parameter(shape)
|
||||
param2 = ov.opset8.parameter(shape)
|
||||
const1 = ov.opset8.constant([[[[0, 0, 0]]]], dtype=np.float16)
|
||||
const1_decompressed = ov.opset8.convert(const1, destination_type=np.float32)
|
||||
const2 = ov.opset8.constant([[[[0, 0, 0]]]], dtype=np.float16)
|
||||
const2_decompressed = ov.opset8.convert(const2, destination_type=np.float32)
|
||||
sub1 = ov.opset8.subtract(param1, const1_decompressed)
|
||||
sub2 = ov.opset8.subtract(param2, const2_decompressed)
|
||||
add = ov.opset8.add(sub1, sub2)
|
||||
relu = ov.opset8.relu(add)
|
||||
sigm = ov.opset8.sigmoid(relu)
|
||||
|
||||
parameter_list = [param1, param2]
|
||||
ref_model = Model([sigm], parameter_list, "test")
|
||||
|
||||
return pt_model, ref_model, {'input_shape': [shape, shape], 'mean_values': [[0, 0, 0], [0, 0, 0]],
|
||||
'onnx_opset_version': 11, 'compress_to_fp16': True, "use_legacy_frontend": True}
|
||||
|
||||
|
||||
def create_pytorch_nn_module_scale_list(tmp_dir):
|
||||
pt_model = make_pt_model_two_inputs()
|
||||
shape = [1, 10, 10, 3]
|
||||
@@ -443,10 +493,60 @@ def create_pytorch_nn_module_scale_list(tmp_dir):
|
||||
parameter_list = [param1, param2]
|
||||
ref_model = Model([sigm], parameter_list, "test")
|
||||
|
||||
return pt_model, ref_model, {'input_shape': [shape, shape], 'scale_values': [[1, 1, 1], [1, 1, 1]],
|
||||
'onnx_opset_version': 11, 'compress_to_fp16': False, "use_legacy_frontend": True}
|
||||
|
||||
|
||||
def create_pytorch_nn_module_scale_list_default_compression(tmp_dir):
|
||||
# by default compression should be enabled (same as setting 'compress_to_fp16': True)
|
||||
# therefore decompression Converts will be present
|
||||
pt_model = make_pt_model_two_inputs()
|
||||
shape = [1, 10, 10, 3]
|
||||
|
||||
shape = PartialShape(shape)
|
||||
param1 = ov.opset8.parameter(shape)
|
||||
param2 = ov.opset8.parameter(shape)
|
||||
const1 = ov.opset8.constant([[[[1, 1, 1]]]], dtype=np.float16)
|
||||
const1_decompressed = ov.opset8.convert(const1, destination_type=np.float32)
|
||||
const2 = ov.opset8.constant([[[[1, 1, 1]]]], dtype=np.float16)
|
||||
const2_decompressed = ov.opset8.convert(const2, destination_type=np.float32)
|
||||
sub1 = ov.opset8.multiply(param1, const1_decompressed)
|
||||
sub2 = ov.opset8.multiply(param2, const2_decompressed)
|
||||
add = ov.opset8.add(sub1, sub2)
|
||||
relu = ov.opset8.relu(add)
|
||||
sigm = ov.opset8.sigmoid(relu)
|
||||
|
||||
parameter_list = [param1, param2]
|
||||
ref_model = Model([sigm], parameter_list, "test")
|
||||
|
||||
return pt_model, ref_model, {'input_shape': [shape, shape], 'scale_values': [[1, 1, 1], [1, 1, 1]],
|
||||
'onnx_opset_version': 11, "use_legacy_frontend": True}
|
||||
|
||||
|
||||
def create_pytorch_nn_module_scale_list_compression_enabled(tmp_dir):
|
||||
pt_model = make_pt_model_two_inputs()
|
||||
shape = [1, 10, 10, 3]
|
||||
|
||||
shape = PartialShape(shape)
|
||||
param1 = ov.opset8.parameter(shape)
|
||||
param2 = ov.opset8.parameter(shape)
|
||||
const1 = ov.opset8.constant([[[[1, 1, 1]]]], dtype=np.float16)
|
||||
const1_decompressed = ov.opset8.convert(const1, destination_type=np.float32)
|
||||
const2 = ov.opset8.constant([[[[1, 1, 1]]]], dtype=np.float16)
|
||||
const2_decompressed = ov.opset8.convert(const2, destination_type=np.float32)
|
||||
sub1 = ov.opset8.multiply(param1, const1_decompressed)
|
||||
sub2 = ov.opset8.multiply(param2, const2_decompressed)
|
||||
add = ov.opset8.add(sub1, sub2)
|
||||
relu = ov.opset8.relu(add)
|
||||
sigm = ov.opset8.sigmoid(relu)
|
||||
|
||||
parameter_list = [param1, param2]
|
||||
ref_model = Model([sigm], parameter_list, "test")
|
||||
|
||||
return pt_model, ref_model, {'input_shape': [shape, shape], 'scale_values': [[1, 1, 1], [1, 1, 1]],
|
||||
'onnx_opset_version': 11, 'compress_to_fp16': True, "use_legacy_frontend": True}
|
||||
|
||||
|
||||
def create_pytorch_nn_module_shapes_list_static(tmp_dir):
|
||||
pt_model = make_pt_model_two_inputs()
|
||||
ref_model = make_ref_pt_model_two_inputs([1, 3, 20, 20])
|
||||
@@ -607,7 +707,11 @@ class TestMoConvertPyTorch(CommonMOConvertTest):
|
||||
create_pytorch_nn_module_layout_list,
|
||||
create_pytorch_nn_module_layout_list_case2,
|
||||
create_pytorch_nn_module_mean_list,
|
||||
create_pytorch_nn_module_mean_list_default_compression,
|
||||
create_pytorch_nn_module_mean_list_compressin_enabled,
|
||||
create_pytorch_nn_module_scale_list,
|
||||
create_pytorch_nn_module_scale_list_default_compression,
|
||||
create_pytorch_nn_module_scale_list_compression_enabled,
|
||||
create_pytorch_nn_module_shapes_list_static,
|
||||
create_pytorch_nn_module_shapes_list_dynamic,
|
||||
create_pytorch_nn_module_shapes_list_dynamic_single_input,
|
||||
|
||||
Reference in New Issue
Block a user