Эффективно использовать компьютерные ресурсы в RLLIB config.build().train()Python

Программы на Python
Anonymous
Эффективно использовать компьютерные ресурсы в RLLIB config.build().train()

Сообщение Anonymous »

Я пытаюсь узнать, как лучше всего определять параметры, позволяющие эффективно использовать компьютерные ресурсы в RlLib. На моем ноутбуке 16 ядер процессора и 1 графический процессор. Я попробовал запустить скрипт ниже. (в частности, параметры в .env_runners)

Код: Выделить всё

import time
from ray.rllib.algorithms.ppo import PPOConfig

config = (
PPOConfig()
.api_stack(
enable_rl_module_and_learner=True,
enable_env_runner_and_connector_v2=True,
)
.env_runners(num_env_runners=15,
num_envs_per_env_runner=1,
num_cpus_per_env_runner=1,
num_gpus_per_env_runner=0,
rollout_fragment_length="auto")
.environment("CartPole-v1")
.learners(num_learners=1, num_gpus_per_learner=1)
.training(model={"uses_new_env_runners": True})

)

algo = config.build()

start = time.process_time()
for i in range(10):
result = algo.train()
print(time.process_time() - start)
Прежде всего, я просто хочу проверить свое понимание. Поправьте меня, если я ошибаюсь или что-то не хватает. Один num_env_runners представляет собой блок, содержащий копию политики для обучения, а также копию среды для обучения. Политика и среда взаимодействуют друг с другом эпизод за эпизодом, пока сумма выборок по всем num_env_runners не достигнет квоты, определенной train_batch_size (значение по умолчанию: 4000). Затем они объединяют эти образцы и передают их обучающемуся, который обучает политике с использованием обратного распространения ошибки (количество обучающихся определяется параметром num_learners). Затем env_runners получает новую обновленную версию политики и повторяет действия.
Вопрос 1
Назад в код, оператор печати возвращает около 2,5, и если я полностью удалю .env_runners() из конфигурации. Независимо от того, я получаю примерно одно и то же число. И я также попробовал установить num_env_runners на 1, 8, 15, все равно получил примерно то же число. Возможно, это связано с тем, что обратное распространение ошибки на учащемся и выборка для следующего пакета обучения на env_runner выполняются одновременно. А этап выборки всегда происходит быстрее, поэтому не имеет значения, насколько эффективна выборка? Пожалуйста, поправьте меня, если я ошибаюсь.
Вопрос 2
Предполагая, что я решил вышеуказанную проблему. Когда мне следует использовать несколько num_envs_per_env_runner и num_cpus_per_env_runners? num_gpus_per_env_runner всегда должно быть 0, это правильно? Поскольку вам это нужно для обратного распространения ошибки?
Вопрос 3
Пожалуйста, просветите меня, есть ли у меня какие-либо параметры или методы пропущено, это может помочь сократить время обучения.

Подробнее здесь: https://stackoverflow.com/questions/788 ... ffectively

Вернуться в «Python»