Измените 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», если вы хотите указать, где сохранять журнал (см. здесь ).

Конкретный пример:

  1. Определите своего настраиваемого создателя регистратора (вы можете просто изменить его по умолчанию):
      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
  1. Передайте этот 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()

Пожалуйста, перейдите по этой ссылке для получения дополнительной информации.

Другие вопросы по тегам