barry-jin opened a new issue #20354:
URL: https://github.com/apache/incubator-mxnet/issues/20354
## Description
Two tests will break after switching to use Gluon2.0 in #20262 .
-
tests/python/mkl/subgraphs/test_conv_subgraph.py::test_pos_concat_scale_align
- Reason: Scale doesn't align in numpy for numpy operators
### Error Message
```python
def check_qsym_scale_align(qsym):
assert
''.join(qsym.attr_dict().keys()).find('quantized_sg_mkldnn_conv') != -1
init = False
for k, v in qsym.attr_dict().items():
if k.find('quantized_sg_mkldnn_conv') != -1:
assert 'min_calib_range' in v
assert 'max_calib_range' in v
if not init:
min_calib_range = v['min_calib_range']
max_calib_range = v['max_calib_range']
init = True
else:
> assert min_calib_range == v['min_calib_range']
E AssertionError
```
## To Reproduce
```python
import mxnet as mx
from mxnet.gluon import nn
from mxnet.contrib import quantization
class ConcatScaleAlign(nn.HybridBlock):
def __init__(self, **kwargs):
super(ConcatScaleAlign, self).__init__(**kwargs)
self.shared_weight = mx.gluon.Parameter('shared_weight', shape=(64,
4, 3, 3),
init=mx.init.Xavier(magnitude=2.24),
dtype='float32',
allow_deferred_init=True)
def forward(self, x):
conv1 = mx.npx.convolution(x, kernel=(3,3), num_filter=64,
weight=self.shared_weight.data(x.ctx),
no_bias=True)
conv2 = mx.npx.convolution(x, kernel=(3,3), num_filter=64,
weight=self.shared_weight.data(x.ctx)*2,
no_bias=True)
return mx.np.concatenate([conv1, conv2], axis=1)
concat = ConcatScaleAlign()
concat.initialize(init=mx.init.Normal(0.5), force_reinit=True)
data = mx.np.random.uniform(-1, 1.0, size=(64, 4, 10, 10), dtype='float32',
ctx=mx.current_context())
outputs = concat(data)
calib_data = mx.gluon.data.DataLoader(data, batch_size=1)
qnet = quantization.quantize_net(concat,
ctx=mx.current_context(),
exclude_layers=None,
exclude_operators=None,
quantized_dtype='int8',
calib_mode='naive',
calib_data=calib_data,
num_calib_batches=1,
quantize_mode='full',
quantize_granularity='tensor-wise')
qsym, _ = qnet.export(None)
init = False
for k, v in qsym.attr_dict().items():
if k.find('quantized_sg_mkldnn_conv') != -1:
assert 'min_calib_range' in v
assert 'max_calib_range' in v
if not init:
min_calib_range = v['min_calib_range']
max_calib_range = v['max_calib_range']
init = True
else:
assert min_calib_range == v['min_calib_range']
assert max_calib_range == v['max_calib_range']
```
- tests/python/mkl/subgraphs/test_fc_subgraph.py::test_fc_eltwise
- Reason: Operator square, square_root, abs, exp cannot be found in numpy
mode
### Error Message
```python
def check_fusion(net_original, data_shape, attrs_dict,
check_fp32_fusion=True, check_quantization=True,
out_types=['uint8', 'int8', 'auto'],
dedup_subgraph=True):
net_original.initialize()
net_original.hybridize(static_alloc=False, static_shape=False)
data = mx.np.random.uniform(size=data_shape, dtype='float32',
ctx=mx.current_context())
net_original(data)
net_fusion = copy.copy(net_original)
sym, params = net_original.export(None)
if check_fp32_fusion:
data_min = -1.0
data_max = 1.0
if ''.join(sym.get_internals().list_outputs()).find('sqrt') != -1:
check_quantization = False
data_min = 0
sym_sg = sym.optimize_for(SG_PASS_NAME,
dedup_subgraph=dedup_subgraph, skip_infer=True)
for name, attrs in attrs_dict.items():
if name in config:
op_name = config[name][OP_NAME]
else:
op_name = name
assert
''.join(sym_sg.get_internals().list_outputs()).find(op_name) != -1
if len(attrs):
found = False
for k, v in sym_sg.attr_dict().items():
if k.find(op_name) != -1:
found = True
for attr_name, attr_value in attrs.items():
assert v[attr_name].lower() == attr_value.lower()
> assert found
E AssertionError
```
## To Reproduce
```python
import mxnet as mx
from mxnet.gluon import nn
class FCEltwise(nn.HybridBlock):
def __init__(self, use_bias, flatten, **kwargs):
super(FCEltwise, self).__init__(**kwargs)
self.fc = nn.Dense(units=64, use_bias=use_bias, flatten=flatten,
weight_initializer=None)
def forward(self, x):
fc_out = self.fc(x)
out = mx.np.square(fc_out)
return out
attrs = {'fc': {'with_eltwise': 'true'}}
net = FCEltwise(True, True)
net.initialize()
net.hybridize(static_alloc=False, static_shape=False)
data = mx.np.random.uniform(size=(64, 4, 10, 10), dtype='float32',
ctx=mx.current_context())
net(data)
sym, params = net.export(None)
sym_sg = sym.optimize_for('MKLDNN', dedup_subgraph=True, skip_infer=True)
for name, attrs in attrs.items():
if len(attrs):
found = False
for k, v in sym_sg.attr_dict().items():
if k.find('sg_mkldnn_fully_connected') != -1:
found = True
for attr_name, attr_value in attrs.items():
assert v[attr_name].lower() == attr_value.lower()
assert found
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]