This repository has been archived by the owner on Feb 8, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathrun_tuning.py
64 lines (53 loc) · 2.72 KB
/
run_tuning.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import argparse
import os
from functools import partial
import random
from shutil import copyfile
from time import time
import optuna
from racing.experiments.util import read_hyperparams
from racing.tuning.objective import objective
def main(args):
# load hyperparameters from files
args.default_params = read_hyperparams(file=args.default_params)
args.tunable_params = read_hyperparams(file=args.tunable_params)
# create a parametrized objective function
objective_fn = partial(objective, args=args)
# create or load the study
study = optuna.create_study(
study_name=args.study_name,
storage=args.storage,
pruner=optuna.pruners.HyperbandPruner(),
sampler=optuna.samplers.TPESampler(),
load_if_exists=True,
direction='maximize'
)
# if the study was just created, do a run with the default parameters
if len(study.trials) == 0:
study.enqueue_trial(args.default_params)
# start the optimization process
study.optimize(
func=objective_fn,
n_trials=args.trials,
gc_after_trial=True
)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Run hyperparameter tuning for a specified algorithm.')
parser.add_argument('--study_name', type=str, required=True)
parser.add_argument('--track', type=str, choices=['austria', 'columbia', 'treitlstrasse_v2'], required=True)
parser.add_argument('--task', type=str, choices=['max_progress', 'max_speed'], required=True)
parser.add_argument('--agent', type=str, choices=['d4pg', 'mpo', 'sac', 'ppo', 'lstm-ppo', 'lstm-mpo'], required=True)
parser.add_argument('--tunable_params', type=str, required=True, help='Path to file containing parameters to tune.')
parser.add_argument('--default_params', type=str, required=True, help='Path to file containing parameters to tune.')
parser.add_argument('--steps', type=int, required=True, help='Max. number of steps per trial.')
parser.add_argument('--epochs', type=int, required=True, help='Max. number of steps per trial.')
parser.add_argument('--trials', type=int, required=False, default=100)
parser.add_argument('--storage', type=str, required=False)
parser.add_argument('--training_time_limit', type=int, required=False, default=2000)
parser.add_argument('--eval_time_limit', type=int, required=False, default=4000)
parser.add_argument('--eval_interval', type=int, required=False, default=10_000)
parser.add_argument('--action_repeat', type=int, required=False, default=4)
parser.add_argument('--logdir', type=str, default='logs/tuning')
parser.add_argument('--seed', type=int, required=False, default=random.randint(0, 100_000_000))
args = parser.parse_args()
main(args)