def create(experiment_group): suggestions = base.get_suggestions(experiment_group=experiment_group) if not suggestions: logger.error('Experiment group `%s` could not create any suggestion.', experiment_group.id) experiment_group.set_status( ExperimentGroupLifeCycle.FAILED, message='Experiment group could not create new suggestions.') return experiment_group.iteration_manager.create_iteration( num_suggestions=len(suggestions)) def send_chunk(): workers.send(HPCeleryTasks.HP_BO_CREATE_EXPERIMENTS, kwargs={ 'experiment_group_id': experiment_group.id, 'suggestions': chunk_suggestions }) chunk_suggestions = [] for suggestion in suggestions: chunk_suggestions.append(suggestion) if len(chunk_suggestions) == conf.get(GROUPS_CHUNKS): send_chunk() chunk_suggestions = [] if chunk_suggestions: send_chunk() workers.send(HPCeleryTasks.HP_BO_START, kwargs={ 'experiment_group_id': experiment_group.id, 'auto_retry': True })
def create(experiment_group): # This is a bit different since hyperband requires an iteration to work correctly # May search manager's needs to be updated. experiment_group.iteration_manager.create_iteration() suggestions = base.get_suggestions(experiment_group=experiment_group) if not suggestions: logger.error('Experiment group `%s` could not create any suggestion.', experiment_group.id) experiment_group.set_status(ExperimentGroupLifeCycle.FAILED, message='Experiment group could not create new suggestions.') return experiment_group.iteration_manager.update_iteration_num_suggestions( num_suggestions=len(suggestions)) def send_chunk(): celery_app.send_task( HPCeleryTasks.HP_HYPERBAND_CREATE_EXPERIMENTS, kwargs={'experiment_group_id': experiment_group.id, 'suggestions': chunk_suggestions}, countdown=1) chunk_suggestions = [] for suggestion in suggestions: chunk_suggestions.append(suggestion) if len(chunk_suggestions) == conf.get('GROUP_CHUNKS'): send_chunk() chunk_suggestions = [] if chunk_suggestions: send_chunk() celery_app.send_task( HPCeleryTasks.HP_HYPERBAND_START, kwargs={'experiment_group_id': experiment_group.id, 'auto_retry': True}, countdown=1)
def create(experiment_group): suggestions = base.get_suggestions(experiment_group=experiment_group) if not suggestions: logger.error('Experiment group `%s` could not create any suggestion.', experiment_group.id) experiment_group.set_status( ExperimentGroupLifeCycle.FAILED, message='Experiment group could not create new suggestions.') return experiment_group.iteration_manager.create_iteration( num_suggestions=len(suggestions)) def send_chunk(): celery_app.send_task(HPCeleryTasks.HP_GRID_SEARCH_CREATE_EXPERIMENTS, kwargs={ 'experiment_group_id': experiment_group.id, 'suggestions': chunk_suggestions }, countdown=1) chunk_suggestions = [] for suggestion in suggestions: chunk_suggestions.append(suggestion) if len(chunk_suggestions) == settings.GROUP_CHUNKS: send_chunk() chunk_suggestions = [] if chunk_suggestions: send_chunk() celery_app.send_task(HPCeleryTasks.HP_GRID_SEARCH_START, kwargs={ 'experiment_group_id': experiment_group.id, 'auto_retry': True }, countdown=1)