I am trying to use gluoncv.auto.tasks.object_detection
in order to do a hyper parameter search on multiple object detection models, but I am facing a problem when using the following config:
from gluoncv.auto.tasks.object_detection import ObjectDetection
import autogluon.core as ag
train = ObjectDetection.Dataset.from_voc(
'https://autogluon.s3.amazonaws.com/datasets/tiny_motorbike.zip')
train, val, test = train.random_split(val_size=0.1, test_size=0.1)
time_limits = 60 * 60 # 1hr
search_args = {'lr': ag.Categorical(1e-3, 1e-2),
'num_trials': 4,
'transfer': ag.Categorical(
'center_net_resnet50_v1b_coco',
'ssd_512_resnet50_v1_coco',
'faster_rcnn_resnet50_v1b_coco',
'yolo3_darknet53_coco'
),
'epochs': 10,
'num_workers': 16,
'batch_size': 4,
'ngpus_per_trial': 1,
'search_strategy': 'random',
'time_limits': time_limits}
task = ObjectDetection(search_args)
detector = task.fit(train, val)
It runs ok with num_trials=1
, but whenever I set num_trials
above 1, I get:
~/Programs/miniconda3/envs/mxnet-py3.8/lib/python3.8/site-packages/autogluon/core/task/base/base_task.py in create_scheduler(train_fn, scheduler, scheduler_options)
31 def create_scheduler(train_fn, scheduler, scheduler_options):
32 if isinstance(scheduler, str):
---> 33 scheduler_cls = schedulers[scheduler.lower()]
34 else:
35 assert callable(scheduler)
KeyError: 'random'
But the source code on gluoncv.auto.tasks.object_detection
explicitly sets the scheduler to random
or to search_strategy
value.
I have tried to use other scheduler, as defined in miniconda3/envs/mxnet-py3.8/lib/python3.8/site-packages/autogluon/core/task/base/base_task.py
schedulers = {
'local': LocalSequentialScheduler,
'fifo': FIFOScheduler,
'rl': RLScheduler,
'hyperband_stopping': HyperbandScheduler,
'hyperband_promotion': HyperbandScheduler,
}
But when I try all other scheduler names in the search_strategy
param, I get:
AssertionError: searcher 'fifo' is not supported
I could not figure out how to work around this error, if someone has any experience with gluoncv auto.