Using many devices while performing autotvm

Hi!

I am trying to test autotvm (tune_nnvm_arm.py) for my ARM device and found that it takes really long time with, e.g, n_trial = 1200 and early_stopping=None. :slight_smile:

BTW, I have several ARM devices.
If I can utilize several devices for one autotvm work, the total time to run autotvm for a model will be shortened.

It seems that measure_option currently accept only one RPC device. Would you let me know if there is any way to run several RPCRunners?

'measure_option': autotvm.measure_option(
    builder=autotvm.LocalBuilder(
        build_func='ndk' if use_android else 'default'),
    runner=autotvm.RPCRunner(
        device_key, host='localhost', port=9190,
        number=5,
        timeout=4,
    ),

Thank you!

If you use a large enough batch size, AutoTVM will automatically scale with more devices. Note that you need to have each device use the same device_key to do this. For example, if you have 64 rk3399 boards, each should register with the tracker using the same key. You do not need to use multiple RPCRunners.

You can track the utilization of devices with python3 -m tvm.exec.query_rpc_tracker --host [YOUR_TRACKER_ADDRESS] --port [YOUR_TRACKER_PORT].

That is amazing. Thank you for the answer!