def testCustomResources2(self): ray.init(num_cpus=4, num_gpus=2, resources={"a": 2}) runner = TrialRunner() resource1 = Resources(cpu=1, gpu=0, extra_custom_resources={"a": 2}) self.assertTrue(runner.has_resources(resource1)) resource2 = Resources(cpu=1, gpu=0, custom_resources={"a": 2}) self.assertTrue(runner.has_resources(resource2)) resource3 = Resources(cpu=1, gpu=0, custom_resources={"a": 3}) self.assertFalse(runner.has_resources(resource3)) resource4 = Resources(cpu=1, gpu=0, extra_custom_resources={"a": 3}) self.assertFalse(runner.has_resources(resource4))
def choose_trial_to_run(self, trial_runner: TrialRunner): """ Ensures all trials get fair share of time (as defined by time_attr). This enables the PBT scheduler to support a greater number of concurrent trials than can fit in the cluster at any given time. """ candidates = [] for trial in trial_runner.get_trials(): if trial.status in [ Trial.PENDING, Trial.PAUSED ] and trial_runner.has_resources(trial.resources): candidates.append(trial) candidates.sort(key=lambda trial: self._trials_states_dict[trial]. last_perturbation_time) return candidates[0] if candidates else None