Код: Выделить всё
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)
Вопрос 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