我已经设置了一个三节点手动集群设置,并使用rllib运行了一个示例ppo培训器,作为测试的一部分,我测试了40次迭代和240次迭代(请参阅代码中的for循环),每次运行时我都要更改工作程序( config [“ num_workers”])从1、4、8、16、24、32开始,执行时间最初按预期减少了1,4,8,16,但开始增加了24、32。因为我的集群有64个核心(我可以看到机器上总共有64个工作线程(16 + 16 + 32),我的期望是当我增加工作线程时,它应该减少执行时间,最多可有16个工作线程,然后开始对此增加任何想法?
import ray
import ray.rllib.agents.ppo as ppo
from ray.tune.logger import pretty_print
import time
ray.init(redis_address="HEADNODEIP:6379",redis_password="REDIS_PASSWORD")
config = ppo.DEFAULT_CONFIG.copy()
config["num_gpus"] = 0
config["num_workers"] = 16
config["eager"] = False
trainer = ppo.PPOTrainer(config=config, env="CartPole-v0")
start = time.time()
for i in range(40):
# Perform one iteration of training the policy with PPO
result = trainer.train()
trainer.workers.foreach_worker(lambda ev: print(ev.get_policy().get_weights()))
#print(pretty_print(result))
if i % 10 == 0:
checkpoint = trainer.save()
print("checkpoint saved at", checkpoint)
print('Total time to process in seconds : ', time.time() - start)