Beispiel #1
0
 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))
Beispiel #2
0
    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