当增加三节点群集中的工作人员数量时,射线性能会降低

时间:2019-11-19 08:34:42

标签: ray

系统信息

  • OS平台和发行版(Linux redhat 7.6)
  • **使用pip install -U ray **安装的Ray:
  • Ray版本:0.8.0
  • Python版本:3.7

描述问题

我已经设置了一个三节点手动集群设置,并使用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个工作线程,然后开始对此增加任何想法?

我的测试结果

  • 40次迭代 -1名工人-5.9分钟,4名工人-3.4分钟,8名工人-3.1分钟,16名工人-2.9分钟,24名工人-3.2分钟,32名工人-4.3分钟
  • 240次迭代 -1名工人-35.6分钟,4名工人-20.4分钟,8名工人-18.2分钟,16名工人17.6分钟,24名工人19.5分钟,32名工人-25.2分钟

群集详细信息

  • 头节点-仅具有16个内核的Redhat linux 7.6 cpu,64GB内存
  • Worker Node1-仅具有16核cpu,64 GB内存的Redhat linux 7.6
  • Worker Node2-具有32核,128 GB内存的Redhat linux 7.6

代码

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)

0 个答案:

没有答案