def METHOD_NAME(self) -> None:
    tuner_search_space = {label: mutable.as_legacy_dict() for label, mutable in self.model_space.simplify().items()}
    _logger.debug('Tuner search space: %s', tuner_search_space)
    with self._thread_lock:
        self.tuner.update_search_space(cast(SearchSpace, tuner_search_space))
    while self.engine.budget_available():
        if self.engine.idle_worker_available():
            with self._thread_lock:
                try:
                    param = self.tuner.generate_parameters(self._model_count)
                except nni.NoMoreTrialError:
                    _logger.warning('No more trial generated by tuner. Stopping.')
                    break
                _logger.debug('[%4d] Tuner generated parameters: %s', self._model_count, param)
                model = self.model_space.freeze(param)
                self._model_to_id[model] = self._model_count
                self._model_count += 1
            self.engine.submit_models(model)
        time.sleep(1.)