chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
import inspect
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
import ray
|
||||
from ray.tune import choice, register_trainable, run, run_experiments
|
||||
from ray.tune.experiment import Experiment, Trial
|
||||
from ray.tune.result import TIMESTEPS_TOTAL
|
||||
from ray.tune.search.hyperopt import HyperOptSearch
|
||||
from ray.util.client.ray_client_helpers import ray_start_client_server
|
||||
|
||||
|
||||
def train_fn(config):
|
||||
for i in range(100):
|
||||
ray.tune.report(dict(timesteps_total=i))
|
||||
|
||||
|
||||
class RemoteTest(unittest.TestCase):
|
||||
def tearDown(self):
|
||||
ray.shutdown()
|
||||
|
||||
def testRemoteRunExperiments(self):
|
||||
register_trainable("f1", train_fn)
|
||||
exp1 = Experiment(
|
||||
**{
|
||||
"name": "foo",
|
||||
"run": "f1",
|
||||
}
|
||||
)
|
||||
[trial] = run_experiments(exp1, _remote=True)
|
||||
self.assertEqual(trial.status, Trial.TERMINATED)
|
||||
self.assertEqual(trial.last_result[TIMESTEPS_TOTAL], 99)
|
||||
|
||||
def testRemoteRun(self):
|
||||
analysis = run(train_fn, _remote=True)
|
||||
[trial] = analysis.trials
|
||||
self.assertEqual(trial.status, Trial.TERMINATED)
|
||||
self.assertEqual(trial.last_result[TIMESTEPS_TOTAL], 99)
|
||||
|
||||
def testRemoteRunArguments(self):
|
||||
def mocked_run(*args, **kwargs):
|
||||
capture_args_kwargs = (args, kwargs)
|
||||
return run(*args, **kwargs), capture_args_kwargs
|
||||
|
||||
with patch("ray.tune.tune.run", mocked_run):
|
||||
analysis, capture_args_kwargs = run(train_fn, _remote=True)
|
||||
args, kwargs = capture_args_kwargs
|
||||
self.assertFalse(args)
|
||||
kwargs.pop("run_or_experiment")
|
||||
kwargs.pop("_remote")
|
||||
kwargs.pop("progress_reporter") # gets autodetected and set
|
||||
|
||||
default_kwargs = {
|
||||
k: v.default for k, v in inspect.signature(run).parameters.items()
|
||||
}
|
||||
default_kwargs.pop("run_or_experiment")
|
||||
default_kwargs.pop("_remote")
|
||||
default_kwargs.pop("progress_reporter")
|
||||
|
||||
self.assertDictEqual(kwargs, default_kwargs)
|
||||
|
||||
def testRemoteRunWithSearcher(self):
|
||||
analysis = run(
|
||||
train_fn,
|
||||
search_alg=HyperOptSearch(),
|
||||
config={"a": choice(["a", "b"])},
|
||||
metric="timesteps_total",
|
||||
mode="max",
|
||||
_remote=True,
|
||||
)
|
||||
[trial] = analysis.trials
|
||||
self.assertEqual(trial.status, Trial.TERMINATED)
|
||||
self.assertEqual(trial.last_result[TIMESTEPS_TOTAL], 99)
|
||||
|
||||
def testRemoteRunExperimentsInClient(self):
|
||||
ray.init()
|
||||
assert not ray.util.client.ray.is_connected()
|
||||
with ray_start_client_server():
|
||||
assert ray.util.client.ray.is_connected()
|
||||
|
||||
register_trainable("f1", train_fn)
|
||||
exp1 = Experiment(
|
||||
**{
|
||||
"name": "foo",
|
||||
"run": "f1",
|
||||
}
|
||||
)
|
||||
[trial] = run_experiments(exp1)
|
||||
self.assertEqual(trial.status, Trial.TERMINATED)
|
||||
self.assertEqual(trial.last_result[TIMESTEPS_TOTAL], 99)
|
||||
|
||||
def testRemoteRunInClient(self):
|
||||
ray.init()
|
||||
assert not ray.util.client.ray.is_connected()
|
||||
with ray_start_client_server():
|
||||
assert ray.util.client.ray.is_connected()
|
||||
|
||||
analysis = run(train_fn)
|
||||
[trial] = analysis.trials
|
||||
self.assertEqual(trial.status, Trial.TERMINATED)
|
||||
self.assertEqual(trial.last_result[TIMESTEPS_TOTAL], 99)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
sys.exit(pytest.main(["-v", __file__]))
|
||||
Reference in New Issue
Block a user