Измените Logdir обучения Ray RLlib вместо ~/ray_results
Я использую Ray и RLlib для обучения агентов RL в системе Ubuntu. Tensorboard используется для отслеживания прогресса обучения, указывая на него~/ray_results
где хранятся все файлы журнала для всех запусков. Ray Tune не используется.
Например, при запуске нового учебного прогона Ray / RLlib новый каталог будет создан в
~/ray_results/DQN_ray_custom_env_2020-06-07_05-26-32djwxfdu1
Чтобы визуализировать прогресс обучения, нам нужно запустить Tensorboard, используя
tensorboard --logdir=~/ray_results
Вопрос: Можно ли настроить Ray / RLlib на изменение каталога вывода файлов журнала с~/ray_results
в другое место?
Кроме того, вместо входа в каталог с именем вроде DQN_ray_custom_env_2020-06-07_05-26-32djwxfdu1
, можем ли мы установить это имя каталога?
Неудачная попытка: пробная настройка
os.environ['TUNE_RESULT_DIR'] = '~/another_dir`
перед запуском ray.init()
, но файлы журнала результатов все еще записывались в ~/ray_results
.
3 ответа
Без использования Tune вы можете изменить logdir с помощью «Trainer» rllib. Класс «Trainer» принимает необязательный «logger_creator», если вы хотите указать, где сохранять журнал (см. здесь ).
Конкретный пример:
- Определите своего настраиваемого создателя регистратора (вы можете просто изменить его по умолчанию):
def custom_log_creator(custom_path, custom_str):
timestr = datetime.today().strftime("%Y-%m-%d_%H-%M-%S")
logdir_prefix = "{}_{}".format(custom_str, timestr)
def logger_creator(config):
if not os.path.exists(custom_path):
os.makedirs(custom_path)
logdir = tempfile.mkdtemp(prefix=logdir_prefix, dir=custom_path)
return UnifiedLogger(config, logdir, loggers=None)
return logger_creator
- Передайте этот logger_creator тренеру и начните обучение:
trainer = PPOTrainer(config=config, env='CartPole-v0',
logger_creator=custom_log_creator(os.path.expanduser("~/another_ray_results/subdir"), 'custom_dir'))
for i in range(ITER_NUM):
result = trainer.train()
Вы найдете результаты обучения (например, файл событий TensorBoard, параметры, модель и т. д.), сохраненные в папке «~/another_ray_results/subdir» с указанным соглашением об именах.
Можно ли настроить Ray/RLlib на изменение каталога вывода файлов журнала с ~/ray_results на другое место?
В настоящее время нет возможности настроить это с помощью инструмента RLib CLI (rllib
).
Если вас устраивает Python API, то, как описано в документации,local_dir
параметр tune.run
отвечает за указание каталога вывода, по умолчанию ~/ray_results
.
Кроме того, вместо входа в каталог с именем вроде DQN_ray_custom_env_2020-06-07_05-26-32djwxfdu1, можем ли мы сами задать это имя каталога?
Это регулируется trial_name_creator
параметр tune.run
. Это должна быть функция, которая принимает пробный объект и форматирует его в строку следующим образом:
def trial_name_id(trial):
return f"{trial.trainable_name}_{trial.trial_id}"
tune.run(...trial_name_creator=trial_name_id)
Только для тех, кто сталкивается с этой проблемой с Ray Tune.
Вы можете указатьlocal_dir
дляrun_config
в пределахtune.Tuner
:
# This logs to 2 different trial folders:
# ./results/test_experiment/trial_name_1 and ./results/test_experiment/trial_name_2
# Only trial_name is autogenerated.
tuner = tune.Tuner(trainable,
tune_config=tune.TuneConfig(num_samples=2),
run_config=air.RunConfig(local_dir="./results", name="test_experiment"))
results = tuner.fit()
Пожалуйста, перейдите по этой ссылке для получения дополнительной информации.