def run_param_specs(param_specs): '''Run the given param_specs in parallel trials using ray. Used for benchmarking.''' ray.init() ray_trials = tune.run( ray_trainable, name='param_specs', config={ 'spec': tune.grid_search(param_specs), 'trial_index': 0, }, resources_per_trial=infer_trial_resources(param_specs[0]), num_samples=1, reuse_actors=False, server_port=util.get_port(), ) ray.shutdown()
def run_ray_search(spec): ''' Method to run ray search from experiment. Uses RandomSearch now. TODO support for other ray search algorithms: https://ray.readthedocs.io/en/latest/tune-searchalg.html ''' logger.info(f'Running ray search for spec {spec["name"]}') # generate trial index to pass into Lab Trial global trial_index # make gen_trial_index passable into ray.run trial_index = -1 def gen_trial_index(): global trial_index trial_index += 1 return trial_index ray.init() ray_trials = tune.run( ray_trainable, name=spec['name'], config={ 'spec': spec, 'trial_index': tune.sample_from(lambda spec: gen_trial_index()), **build_config_space(spec) }, resources_per_trial=infer_trial_resources(spec), num_samples=spec['meta']['max_trial'], reuse_actors=False, server_port=util.get_port(), ) trial_data_dict = {} # data for Lab Experiment to analyze for ray_trial in ray_trials: ray_trial_data = ray_trial.last_result['trial_data'] trial_data_dict.update(ray_trial_data) ray.shutdown() return trial_data_dict