Tvmc tune not creating autotuner records?

Given the following command line :

python3 -m tvm.driver.tvmc tune --target “llvm -mcpu=thunderxt88 -mtriple=aarch64-unknown-linux-gnu -mattr=+neon,+crc,+lse” --repeat 5 --number 2000 --min-repeat-ms 1000 --tuner xgb --output autotuner-records-mobilenet-2-1.0-224-fp.json ~/.tvm_test_data/tf/official/mobilenet_v2_1.0_224.tflite

The autotuner-records-mobilenet-2-1.0-224-fp.json file is never created.

Thoughts?

Did you see any message from TVM or TVMC?

None besides the usual output you’d expect. Example :

python3 -m tvm.driver.tvmc tune --target "llvm -mcpu=thunderxt88 -mtriple=aarch64-unknown-linux-gnu -mattr=+neon,+crc,+lse" --repeat 5 --number 2000 --min-repeat-ms 1000 --tuner xgb --output compiled/autotuner-records-mobilenet-2-1.0-224-fp.json --tuning-records compiled/autotuner-records-mobilenet-2-1.0-224-fp.json ~/.tvm_test_data/tf/official/mobilenet_v2_1.0_224.tflite
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.
For x86 target, NCHW layout is recommended for conv2d.
depthwise_conv2d NHWC layout is not optimized for x86.
For x86 target, NCHW layout is recommended for conv2d.

I’ll note I see the same behavior on 32bit arm as well.

I think it’s because your model is in NHWC layout which doesn’t have corresponding schedules to be tuned. You can try to add --desire-layout to convert the layout to NCHW.

I’ll see what I can accomplish via python outside of tvmc.

Hi Tom, I’ll try to reproduce the case you have here and report back.

Hi @leandron

So @comaniac gave a very important clue that I carelessly missed on the initial reading. Looking at things closely, with an NHWC layout model such as the noted tflite model of course the list of tuning tasks are going to be zero!

Ergo it’s absolutely no surprise that tvmc did what it did when asked to tune that particular model.

All that aside, maybe an error message might be in order ?