From c49b98cfc4ef68f0a3d53bb529c1da31a2a053b0 Mon Sep 17 00:00:00 2001 From: Richard Liaw Date: Sun, 1 Sep 2019 15:27:42 -0700 Subject: [PATCH] [tune] Add encoder for PBT (#5599) * Add encoder * Apply suggestions from code review --- python/ray/tune/schedulers/pbt.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python/ray/tune/schedulers/pbt.py b/python/ray/tune/schedulers/pbt.py index 26fa5f6d9..f6a48e116 100644 --- a/python/ray/tune/schedulers/pbt.py +++ b/python/ray/tune/schedulers/pbt.py @@ -13,6 +13,7 @@ import shutil from ray.tune.error import TuneError from ray.tune.result import TRAINING_ITERATION +from ray.tune.logger import _SafeFallbackEncoder from ray.tune.schedulers import FIFOScheduler, TrialScheduler from ray.tune.suggest.variant_generator import format_vars from ray.tune.trial import Trial, Checkpoint @@ -276,13 +277,13 @@ class PopulationBasedTraining(FIFOScheduler): ] # Log to global file. with open(os.path.join(trial.local_dir, "pbt_global.txt"), "a+") as f: - f.write(json.dumps(policy) + "\n") + print(json.dumps(policy, cls=_SafeFallbackEncoder), file=f) # Overwrite state in target trial from trial_to_clone. if os.path.exists(trial_to_clone_path): shutil.copyfile(trial_to_clone_path, trial_path) # Log new exploit in target trial log. with open(trial_path, "a+") as f: - f.write(json.dumps(policy) + "\n") + f.write(json.dumps(policy, cls=_SafeFallbackEncoder) + "\n") def _exploit(self, trial_executor, trial, trial_to_clone): """Transfers perturbed state from trial_to_clone -> trial.