tvm
tvm copied to clipboard
[AutoTVM] Introducing multi_filter into ConfigSpace autotvm
multi_filter can restrict combination of parameters in difference to the knob filter, that restricts only single parameter.
Here is a small example to show the workflow and the difference:
Pre-requisites
candidates = [[16, 64], [32, 32], [64, 16]]
filter = lambda v: v.size[0] != 16
multi_filter = lambda e: (e["tile_x"].size[0] + e["tile_y"].size[0]) <= 64
Case 1 - without filtering
cfg.define_split("tile_x", x, num_outputs=2, policy="candidate", candidate=candidates)
cfg.define_split("tile_y", y, num_outputs=2, policy="candidate", candidate=candidates)
[('tile_x', [16, 64]), ('tile_y', [16, 64])],None,0 [('tile_x', [32, 32]), ('tile_y', [16, 64])],None,1 [('tile_x', [64, 16]), ('tile_y', [16, 64])],None,2 [('tile_x', [16, 64]), ('tile_y', [32, 32])],None,3 [('tile_x', [32, 32]), ('tile_y', [32, 32])],None,4 [('tile_x', [64, 16]), ('tile_y', [32, 32])],None,5 [('tile_x', [16, 64]), ('tile_y', [64, 16])],None,6 [('tile_x', [32, 32]), ('tile_y', [64, 16])],None,7 [('tile_x', [64, 16]), ('tile_y', [64, 16])],None,8
Case 2 - with filter
cfg.define_split("tile_x", x, num_outputs=2, policy="candidate", candidate=candidates, filter=filter)
cfg.define_split("tile_y", y, num_outputs=2, policy="candidate", candidate=candidates, filter=filter)
[('tile_x', [32, 32]), ('tile_y', [32, 32])],None,0 [('tile_x', [64, 16]), ('tile_y', [32, 32])],None,1 [('tile_x', [32, 32]), ('tile_y', [64, 16])],None,2 [('tile_x', [64, 16]), ('tile_y', [64, 16])],None,3
Case 3 - with filter and multi_filter
cfg.define_split("tile_x", x, num_outputs=2, policy="candidate", candidate=candidates, filter=filter)
cfg.define_split("tile_y", y, num_outputs=2, policy="candidate", candidate=candidates, filter=filter)
cfg.multi_filter(filter=multi_filter)
[('tile_x', [32, 32]), ('tile_y', [32, 32])],None,0
Co-authored-by: Andrey Malyshev [email protected] Co-authored-by: Egor Churaev [email protected]
CC @merrymercy @eqy
cc @csullivan
cc @vinx13 @junrushao @masahi
@masahi @merrymercy could you please take a look?
CC @tqchen @merrymercy this PR makes some in depth changes to autoTVM, PTAL
can we merge this PR into main?