[tune] enable more tests (#13969)

* try-this

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* fix

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* test

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* fix-tests

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* address

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* fix

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* real-ray

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* fix-client

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* fix-race-condition

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* revert-new-tune-tests

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* Revert "revert-new-tune-tests"

This reverts commit 3866b920bc47ac4b5cb9dab8f7b9d50e4acdb27a.

* format

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* update

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>

* build

Signed-off-by: Richard Liaw <rliaw@berkeley.edu>
This commit is contained in:
Richard Liaw
2021-02-15 09:19:55 -08:00
committed by GitHub
parent bcb51a27c6
commit 4d727e4cdf
3 changed files with 50 additions and 34 deletions
+1 -1
View File
@@ -87,7 +87,7 @@ py_test(
py_test(
name = "test_function_api",
size = "small",
size = "medium",
srcs = ["tests/test_function_api.py"],
deps = [":tune_lib"],
tags = ["exclusive"],
@@ -1,3 +1,4 @@
import math
import numpy as np
import ray
@@ -15,33 +16,41 @@ def loss(config, reporter):
class ConvergenceTest(unittest.TestCase):
"""Test convergence in gaussian process."""
def shutDown(self):
ray.shutdown()
def test_convergence_gaussian_process(self):
np.random.seed(0)
ray.init(local_mode=True, num_cpus=1, num_gpus=1)
space = {
"x": (0, 20) # This is the space of parameters to explore
}
# This is the space of parameters to explore
space = {"x": tune.uniform(0, 20)}
resources_per_trial = {"cpu": 1, "gpu": 0}
# Following bayesian optimization
gp = BayesOptSearch(
space, metric="loss", mode="min", random_search_steps=10)
gp = BayesOptSearch(random_search_steps=10)
gp.repeat_float_precision = 5
gp = ConcurrencyLimiter(gp, 1)
# Execution of the BO.
analysis = tune.run(
loss,
metric="loss",
mode="min",
# stop=EarlyStopping("loss", mode="min", patience=5),
search_alg=gp,
config={},
config=space,
num_samples=100, # Number of iterations
resources_per_trial=resources_per_trial,
raise_on_failed_trial=False,
fail_fast=True,
verbose=1)
assert len(analysis.trials) == 41
assert len(analysis.trials) in {13, 43} # it is 43 on the cluster?
assert math.isclose(analysis.best_config["x"], 0, abs_tol=1e-8)
ray.shutdown()
if __name__ == "__main__":
import pytest
import sys
sys.exit(pytest.main(["-v", __file__]))
+32 -25
View File
@@ -6,7 +6,6 @@ import tempfile
import unittest
import ray
import ray.cloudpickle as cloudpickle
from ray.rllib import _register_all
from ray import tune
@@ -230,7 +229,7 @@ class FunctionCheckpointingTest(unittest.TestCase):
new_trainable2 = wrapped(logger_creator=self.logger_creator)
new_trainable2.restore(checkpoint)
result = new_trainable2.train()
self.assertEquals(result[TRAINING_ITERATION], 1)
self.assertEqual(result[TRAINING_ITERATION], 1)
checkpoint = new_trainable2.save()
new_trainable2.stop()
@@ -405,14 +404,15 @@ class FunctionApiTest(unittest.TestCase):
def testEnabled(self):
def train(config, checkpoint_dir=None):
is_active = tune.is_session_enabled()
result = {"active": is_active}
if is_active:
tune.report(active=is_active)
return is_active
tune.report(**result)
return result
assert train({}) is False
assert train({})["active"] is False
analysis = tune.run(train)
t = analysis.trials[0]
assert t.last_result["active"]
assert t.last_result["active"], t.last_result
def testBlankCheckpoint(self):
def train(config, checkpoint_dir=None):
@@ -450,11 +450,11 @@ class FunctionApiTest(unittest.TestCase):
trial_1, trial_2 = tune.run(
with_parameters(train, data=data), num_samples=2).trials
self.assertEquals(data.data[101], 0)
self.assertEquals(trial_1.last_result["metric"], 500_000)
self.assertEquals(trial_1.last_result["hundred"], 1)
self.assertEquals(trial_2.last_result["metric"], 500_000)
self.assertEquals(trial_2.last_result["hundred"], 1)
self.assertEqual(data.data[101], 0)
self.assertEqual(trial_1.last_result["metric"], 500_000)
self.assertEqual(trial_1.last_result["hundred"], 1)
self.assertEqual(trial_2.last_result["metric"], 500_000)
self.assertEqual(trial_2.last_result["hundred"], 1)
self.assertTrue(str(trial_1).startswith("train_"))
# With checkpoint dir parameter
@@ -465,11 +465,11 @@ class FunctionApiTest(unittest.TestCase):
trial_1, trial_2 = tune.run(
with_parameters(train, data=data), num_samples=2).trials
self.assertEquals(data.data[101], 0)
self.assertEquals(trial_1.last_result["metric"], 500_000)
self.assertEquals(trial_1.last_result["cp"], "DIR")
self.assertEquals(trial_2.last_result["metric"], 500_000)
self.assertEquals(trial_2.last_result["cp"], "DIR")
self.assertEqual(data.data[101], 0)
self.assertEqual(trial_1.last_result["metric"], 500_000)
self.assertEqual(trial_1.last_result["cp"], "DIR")
self.assertEqual(trial_2.last_result["metric"], 500_000)
self.assertEqual(trial_2.last_result["cp"], "DIR")
self.assertTrue(str(trial_1).startswith("train_"))
def testWithParameters2(self):
@@ -482,7 +482,9 @@ class FunctionApiTest(unittest.TestCase):
tune.report(metric=len(data.data))
trainable = tune.with_parameters(train, data=Data())
dumped = cloudpickle.dumps(trainable)
# ray.cloudpickle will crash for some reason
import cloudpickle as cp
dumped = cp.dumps(trainable)
assert sys.getsizeof(dumped) < 100 * 1024
def testReturnAnonymous(self):
@@ -494,8 +496,8 @@ class FunctionApiTest(unittest.TestCase):
"a": tune.grid_search([4, 8])
}).trials
self.assertEquals(trial_1.last_result[DEFAULT_METRIC], 4)
self.assertEquals(trial_2.last_result[DEFAULT_METRIC], 8)
self.assertEqual(trial_1.last_result[DEFAULT_METRIC], 4)
self.assertEqual(trial_2.last_result[DEFAULT_METRIC], 8)
def testReturnSpecific(self):
def train(config):
@@ -506,8 +508,8 @@ class FunctionApiTest(unittest.TestCase):
"a": tune.grid_search([4, 8])
}).trials
self.assertEquals(trial_1.last_result["m"], 4)
self.assertEquals(trial_2.last_result["m"], 8)
self.assertEqual(trial_1.last_result["m"], 4)
self.assertEqual(trial_2.last_result["m"], 8)
def testYieldAnonymous(self):
def train(config):
@@ -519,8 +521,8 @@ class FunctionApiTest(unittest.TestCase):
"a": tune.grid_search([4, 8])
}).trials
self.assertEquals(trial_1.last_result[DEFAULT_METRIC], 4 + 9)
self.assertEquals(trial_2.last_result[DEFAULT_METRIC], 8 + 9)
self.assertEqual(trial_1.last_result[DEFAULT_METRIC], 4 + 9)
self.assertEqual(trial_2.last_result[DEFAULT_METRIC], 8 + 9)
def testYieldSpecific(self):
def train(config):
@@ -532,5 +534,10 @@ class FunctionApiTest(unittest.TestCase):
"a": tune.grid_search([4, 8])
}).trials
self.assertEquals(trial_1.last_result["m"], 4 + 9)
self.assertEquals(trial_2.last_result["m"], 8 + 9)
self.assertEqual(trial_1.last_result["m"], 4 + 9)
self.assertEqual(trial_2.last_result["m"], 8 + 9)
if __name__ == "__main__":
import pytest
sys.exit(pytest.main(["-v", __file__]))