From f8e8743347eeaa4c2f12642de0b0ecdd9d05f855 Mon Sep 17 00:00:00 2001 From: Eric Liang Date: Tue, 9 Apr 2019 20:59:17 -0700 Subject: [PATCH] [tune] Improve PBT example (#4575) --- doc/source/pbt.png | Bin 33328 -> 51130 bytes doc/source/tune-schedulers.rst | 2 +- python/ray/tune/examples/pbt_example.py | 119 +++++++++++++++--------- 3 files changed, 74 insertions(+), 47 deletions(-) diff --git a/doc/source/pbt.png b/doc/source/pbt.png index e05c1d89bae13931f942a1da3bdb888e52288404..7ff4e03a46962b43fb49ee6a29db0df81e37804d 100644 GIT binary patch literal 51130 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 literal 33328 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 diff --git a/doc/source/tune-schedulers.rst b/doc/source/tune-schedulers.rst index 4c6919fb3..cbb105ff5 100644 --- a/doc/source/tune-schedulers.rst +++ b/doc/source/tune-schedulers.rst @@ -36,7 +36,7 @@ Tune includes a distributed implementation of `Population Based Training (PBT) < When the PBT scheduler is enabled, each trial variant is treated as a member of the population. Periodically, top-performing trials are checkpointed (this requires your Trainable to support `checkpointing `__). Low-performing trials clone the checkpoints of top performers and perturb the configurations in the hope of discovering an even better variation. -You can run this `toy PBT example `__ to get an idea of how how PBT operates. When training in PBT mode, a single trial may see many different hyperparameters over its lifetime, which is recorded in its ``result.json`` file. The following figure generated by the example shows PBT discovering new hyperparams over the course of a single experiment: +You can run this `toy PBT example `__ to get an idea of how how PBT operates. When training in PBT mode, a single trial may see many different hyperparameters over its lifetime, which is recorded in its ``result.json`` file. The following figure generated by the example shows PBT with optimizing a LR schedule over the course of a single experiment: .. image:: pbt.png diff --git a/python/ray/tune/examples/pbt_example.py b/python/ray/tune/examples/pbt_example.py index 8ff0bea0c..7c8dda483 100755 --- a/python/ray/tune/examples/pbt_example.py +++ b/python/ray/tune/examples/pbt_example.py @@ -4,57 +4,83 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import numpy as np import argparse -import json -import os import random -import time import ray from ray.tune import Trainable, run from ray.tune.schedulers import PopulationBasedTraining -class MyTrainableClass(Trainable): - """Fake agent whose learning rate is determined by dummy factors.""" +class PBTBenchmarkExample(Trainable): + """Toy PBT problem for benchmarking adaptive learning rate. + + The goal is to optimize this trainable's accuracy. The accuracy increases + fastest at the optimal lr, which is a function of the current accuracy. + + The optimal lr schedule for this problem is the triangle wave as follows. + Note that many lr schedules for real models also follow this shape: + + best lr + ^ + | /\ + | / \ + | / \ + | / \ + ------------> accuracy + + In this problem, using PBT with a population of 2-4 is sufficient to + roughly approximate this lr schedule. Higher population sizes will yield + faster convergence. Training will not converge without PBT. + """ def _setup(self, config): - self.timestep = 0 - self.current_value = 0.0 + self.lr = config["lr"] + self.accuracy = 0.0 # end = 1000 def _train(self): - time.sleep(0.1) + midpoint = 100 # lr starts decreasing after acc > midpoint + q_tolerance = 3 # penalize exceeding lr by more than this multiple + noise_level = 2 # add gaussian noise to the acc increase + # triangle wave: + # - start at 0.001 @ t=0, + # - peak at 0.01 @ t=midpoint, + # - end at 0.001 @ t=midpoint * 2, + if self.accuracy < midpoint: + optimal_lr = 0.01 * self.accuracy / midpoint + else: + optimal_lr = 0.01 - 0.01 * (self.accuracy - midpoint) / midpoint + optimal_lr = min(0.01, max(0.001, optimal_lr)) - # Reward increase is parabolic as a function of factor_2, with a - # maxima around factor_1=10.0. - self.current_value += max( - 0.0, random.gauss(5.0 - (self.config["factor_1"] - 10.0)**2, 2.0)) + # compute accuracy increase + q_err = max(self.lr, optimal_lr) / min(self.lr, optimal_lr) + if q_err < q_tolerance: + self.accuracy += (1.0 / q_err) * random.random() + elif self.lr > optimal_lr: + self.accuracy -= (q_err - q_tolerance) * random.random() + self.accuracy += noise_level * np.random.normal() + self.accuracy = max(0, self.accuracy) - # Flat increase by factor_2 - self.current_value += random.gauss(self.config["factor_2"], 1.0) - - # Here we use `episode_reward_mean`, but you can also report other - # objectives such as loss or accuracy. - return {"episode_reward_mean": self.current_value} + return { + "mean_accuracy": self.accuracy, + "cur_lr": self.lr, + "optimal_lr": optimal_lr, # for debugging + "q_err": q_err, # for debugging + "done": self.accuracy > midpoint * 2, + } def _save(self, checkpoint_dir): - path = os.path.join(checkpoint_dir, "checkpoint") - with open(path, "w") as f: - f.write( - json.dumps({ - "timestep": self.timestep, - "value": self.current_value - })) - return path + return { + "accuracy": self.accuracy, + "lr": self.lr, + } - def _restore(self, checkpoint_path): - with open(checkpoint_path) as f: - data = json.loads(f.read()) - self.timestep = data["timestep"] - self.current_value = data["value"] + def _restore(self, checkpoint): + self.accuracy = checkpoint["accuracy"] def reset_config(self, new_config): - self.config = new_config + self.lr = new_config["lr"] return True @@ -64,35 +90,36 @@ if __name__ == "__main__": "--smoke-test", action="store_true", help="Finish quickly for testing") args, _ = parser.parse_known_args() if args.smoke_test: - ray.init(num_cpus=4) # force pausing to happen for test + ray.init(num_cpus=2) # force pausing to happen for test else: ray.init() pbt = PopulationBasedTraining( time_attr="training_iteration", - reward_attr="episode_reward_mean", - perturbation_interval=10, + reward_attr="mean_accuracy", + perturbation_interval=20, hyperparam_mutations={ - # Allow for scaling-based perturbations, with a uniform backing - # distribution for resampling. - "factor_1": lambda: random.uniform(0.0, 20.0), - # Allow perturbations within this set of categorical values. - "factor_2": [1, 2], + # distribution for resampling + "lr": lambda: random.uniform(0.0001, 0.02), + # allow perturbations within this set of categorical values + "some_other_factor": [1, 2], }) - # Try to find the best factor 1 and factor 2 - run(MyTrainableClass, + run( + PBTBenchmarkExample, name="pbt_test", scheduler=pbt, reuse_actors=True, verbose=False, **{ "stop": { - "training_iteration": 20 if args.smoke_test else 99999 + "training_iteration": 2000, }, - "num_samples": 10, + "num_samples": 4, "config": { - "factor_1": 4.0, - "factor_2": 1.0, + "lr": 0.0001, + # note: this parameter is perturbed but has no effect on + # the model training in this example + "some_other_factor": 1, }, })