【问题标题】:Worker node-status on a Ray EC2 cluster: update-failedRay EC2 集群上的工作节点状态:更新失败
【发布时间】:2019-09-29 23:55:51
【问题描述】:

我现在有一个在 EC2 (Ubuntu 16.04) 上运行的 Ray 集群,它有一个 c4.8xlarge 主节点和一个相同的工作节点。我想检查是否使用了多线程,所以我运行测试以增加相同 9 秒任务的数字 (n)。由于该实例有 18 个 CPU,我预计该作业需要大约 9 秒,最多 n

相反,集群最多只能并行处理 14 个任务,然后执行时间跃升至 40 秒,并随着 n 的增加而继续增加。当我尝试使用 c4xlarge 主机(4 个 CPU)时,时间与 n 成正比,即它们是串行运行的。所以我推测master实际上需要4个系统CPU,而worker节点根本没有被使用。但是,如果我添加第二个工人,n>14 的时间比没有它的时间少约 40 秒。我还尝试了 target_utilization_factor 小于 1.0 的值,但这没有任何区别。

没有报告错误,但我注意到 EC2 实例控制台中工作程序的 ray-node-status 为“更新失败”。这很重要吗?谁能告诉我这种行为?

【问题讨论】:

  • 要查看事情是否并行安排,我建议查看 Ray 时间线。在命令行(在其中一个节点上)运行 ray timeline,然后在 Chrome Web 浏览器的 chrome://tracing 中加载生成的 JSON 文件。
  • 多么方便的跟踪工具!屏幕截图显示了运行 n=[8,18,28,38] 的结果。有 36 个工人,所以每个人都应该是一个真正的 CPU——我不知道哪个属于主人,哪个属于工人。然而,对于所有工人,只有第一个测试在 ~9s 运行。您是否认为这是一个资源问题:任务可能非常需要 RAM,并且如果每个工作人员都在竞争公共内存,这可能会导致瓶颈?我假设一个计算优化的实例在每个 worker 上都有足够多的 RAM。
  • 我将 EBS 卷大小增加到 100Gb,这改善了一些情况,但仍然不允许所有任务并行运行。然后我将工作节点增加到 3,并运行 n=[18,36,54,72] 给出时间 ~[11, 22, 27, 36];但是,跟踪显示这仍然只使用了 36 个 CPU!我删除了 with tmp.TemporaryDirectory() as path: block(参见stackoverflow.com/questions/55912710/… 中的代码),但这并没有什么区别。我还尝试将 EBS 增加到 200Gb:同样,没有真正的区别。

标签: amazon-ec2 parallel-processing cluster-computing ray


【解决方案1】:

集群似乎没有使用工作程序,因此跟踪显示只有 18 个实际 CPU 处理该任务。监视器(ray exec ray_conf.yaml 'tail -n 100 -f /tmp/ray/session_/logs/monitor')发现“更新失败”的意义在于设置命令,由 ray updater.py 调用,在工作节点上失败。具体来说,可能是尝试在它们上安装 C 构建必需的编译器包,这可能超出了工作程序的内存分配。我这样做只是为了抑制“setproctitle”安装警告——我现在明白无论如何都可以安全地忽略它。

【讨论】:

    猜你喜欢
    • 2013-04-24
    • 2018-01-27
    • 2014-06-28
    • 2020-11-16
    • 2015-01-23
    • 2023-01-30
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多