Cookiee235 opened a new issue, #17947:
URL: https://github.com/apache/tvm/issues/17947
When I optimized the model using MetaSchedule, the modified model produced
inconsistent inference results compared to the original model for the same
inputs. This suggests a potential bug in MetaSchedule's implementation. In my
view, MetaSchedule should always ensure semantically equivalent transformations
of the model.
### Actual behavior
```
Traceback (most recent call last):
File
"/data/qshenaf/remote_pc/TirFuzz/bugs/05-11_03-53/topi.expand_like_1.py", line
31, in <module>
np.testing.assert_allclose(
File
"/data/qshenaf/miniconda3/envs/tvm/lib/python3.12/site-packages/numpy/testing/_private/utils.py",
line 1715, in assert_allclose
assert_array_compare(compare, actual, desired, err_msg=str(err_msg),
File
"/data/qshenaf/miniconda3/envs/tvm/lib/python3.12/site-packages/numpy/testing/_private/utils.py",
line 921, in assert_array_compare
raise AssertionError(msg)
AssertionError:
Not equal to tolerance rtol=1e-05, atol=1e-05
An Inconsistent ouputs
Mismatched elements: 9 / 60 (15%)
Max absolute difference among violations: 502
Max relative difference among violations: inf
ACTUAL: array([[[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],...
DESIRED: array([[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],...
```
### Environment
tvm-0.21-dev0
### Steps to reproduce
```
import tvm
from tvm import te, topi, tir
from tvm import meta_schedule as ms
import numpy as np
def compile_mod(mod, np_input_list, output_shape, output_type, opt_level=3):
with tvm.transform.PassContext(opt_level):
ref_mod = tvm.build(mod, target='llvm')
mod_output = tvm.nd.empty(output_shape, dtype=output_type,
device=tvm.cpu(0))
tvm_inputs = [tvm.nd.array(x) for x in np_input_list]
ref_mod(*tvm_inputs, mod_output)
return mod_output
a = te.placeholder((5, 1), dtype='int16', name='a')
shape_like = te.placeholder((5, 4, 3), dtype='float64', name='shape_like')
op_output = topi.expand_like(a, shape_like=shape_like, axis=[2])
np_inputs = [np.random.uniform(-1, 1, size=(5,
1)).astype('int16'),np.random.uniform(-1, 1, size=(5, 4, 3)).astype('float64')]
sch = tir.Schedule(te.create_prim_func([a, shape_like,
op_output]).with_attr('target', tvm.target.Target('llvm')))
ref_output = compile_mod(sch.mod, np_inputs, op_output.shape,
op_output.dtype, opt_level=0)
database = ms.tir_integration.tune_tir(mod=sch.mod, target='llvm
--num-cores=16', work_dir='./tune_tmp', max_trials_global=1,
num_trials_per_iter=1)
sch = ms.tir_integration.compile_tir(database, sch.mod, 'llvm
--num-cores=16')
opt_mod_output = compile_mod(sch.mod, np_inputs, op_output.shape,
op_output.dtype, opt_level=0)
np.testing.assert_allclose(
ref_output.numpy(), opt_mod_output.numpy(), rtol=1e-5, atol=1e-5,
err_msg=f"An Inconsistent ouputs"
```
### Triage
* needs-triage
* tune:metaschedule
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]