Можно ли указать «episodes_this_iter» с помощью алгоритма поиска ray Tune? - PullRequest
1 голос
/ 09 января 2020

Я новичок в программировании / ray и у меня простой вопрос о том, какие параметры можно указать при использовании Ray Tune. В частности, в документации по настройке луча говорится, что все автоматически заполненные поля (steps_this_iter, episodes_this_iter, et c.) Могут использоваться в качестве условий остановки или в спецификации планировщика / алгоритма поиска.

Однако следующее работает только после того, как я удалил спецификацию "episodes_this_iter". Это работает только как часть критериев остановки?

ray.init()
tune.run(
    PPOTrainer,
    stop = {"training_iteration": 1000},
    config={"env": qsdm.QSDEnv,
          "env_config": defaultconfig,
            "num_gpus": 0,
            "num_workers": 1,
            "lr": tune.grid_search([0.00005, 0.00001, 0.0001]),}, 
    "episodes_this_iter": 2500, 
)

1 Ответ

0 голосов
/ 20 января 2020

tune.run() - это то, что заполняет эти поля, чтобы мы могли использовать их в другом месте. И критерий остановки - это только одно из мест, где мы можем их использовать.

Чтобы понять, почему пример не работает, рассмотрим более простой аналог: episodes_total: 100

Сам тренер это увеличение числа эпизодов, поэтому остальная часть системы знает, как далеко мы продвинулись. Это не работает на них, если мы пытаемся изменить это или исправить это к определенному значению. То же рассуждение применимо и к другим полям в списке .


Что касается планировщика и алгоритмов поиска , у меня нет опыта с. Но мы хотим поместить эти условия в расписание или сам алгоритм поиска , а не в тренере напрямую .

Вот пример с Байесовский оптимизационный поиск , хотя я не знаю, что бы это значило:

from ray.tune.suggest.bayesopt import BayesOptSearch

tune.run(

        # ...

        # 10 trials
        num_samples=10,

        search_alg=BayesOptSearch(

                # look for learning rates within this range:
                {'lr': (0.1, 0.00001)},

                # optimise for this metric:
                metric='episodes_this_iter',  # <------- auto-filled field here
                mode='max',

                utility_kwargs={
                        'kind': 'ucb',
                        'kappa': '2.5',
                        'xi': 0.0
                }
        )
)
...