如何禁用 ray 进行调试

问题描述 投票:0回答:3

在我的代码中,我使用 ray 来管理多个工作人员,但我意识到,即使我将工作人员数量设置为 1,我仍然无法使用 PyCharm 来调试我的代码(这似乎是一个已知问题)。我真正希望能够做的是在“调试模式”下运行代码,比如说,我根本不使用射线。目前我所有的工作人员都用类似的东西初始化:

@ray.remote(num_gpus=0.25)
def worker_function():
    ...

并从主脚本中调用,类似于

worker_function.remote()
。所以我想我想以某种方式使 @ray.remote(...) 可选。有没有好的方法来做这样的事情?

pycharm ray
3个回答
4
投票

有 2 种可能的方法可以做到这一点。

  1. 本地模式下初始化Ray。这将使所有光线任务和参与者在单个进程中串行运行,从而允许您使用本机调试器。请注意,由于您的程序现在已序列化,因此它的行为方式可能略有不同。本地模式已启用

    ray.init(local_mode=True)

  2. 如果您没有使用 pycharm 调试器,Ray 还通过其自己的 Ray 调试器在真实集群上提供相当大的 pdb 行为子集。

你可以做

@ray.remote(num_gpus=0.25)
def worker_function():
    breakpoint()
    ...

在远程函数中设置断点,然后通过命令行上的

ray debug
运行程序。


1
投票

嗨@Henry Charlesworth!

在尝试理解 https://github.com/YeWR/EfficientZero 源代码时,我在 PyCharm 上调试不同的射线工作人员时遇到了同样的情况。

EfficientZero 算法针对不同类型的工作负载启动多个工作线程(例如,自行玩 atari 游戏、实现重放缓冲区、重新分析体验等)。

这就是我调试的方法,例如,2 个不同的工作线程(在本例中是自播放工作线程和重播缓冲区工作线程):

  1. 使用 pip 将 pydevd-pycharm 安装到您的项目中(撰写此消息时的版本为 221.5591.52)
pip install pydevd-pycharm~=221.5591.52
  1. 为 self-play Worker 创建一个
    Remote Debug Server
    配置。
  2. 调整 self-play Worker 的代码以在创建时连接到新配置
  3. 为重放缓冲区工作线程创建另一个
    Remote Debug Server
    配置。
  4. 调整重播缓冲区工作线程的代码以在创建时连接到新配置

这些是您需要添加到代码中的所有更改。

现在,您只需按正确的顺序启动所有配置即可:

  1. 自玩工作者的远程调试器
  2. 重播缓冲区工作者的远程调试器
  3. 主程序

执行此操作后,您应该在 Pycharm 的“调试”部分看到 3 个选项卡:

现在,通过选择这些选项卡中的任何一个,您可以同时调试 3 个进程...例如,您可以在重播缓冲区工作程序上命中断点... 与此同时,您在自我游戏工作人员上遇到了另一个断点......

仅此而已...我希望这对您和我一样有帮助。

致以诚挚的问候,

大卫


0
投票

我已成功在远程计算机上使用 pycharm 调试光线演员。我想您也可以跳过端口转发以在本地计算机上执行此操作。这是我的步骤。我使用6067端口

  1. 设置反向 ssh 端口转发
    ssh -R localhost:6067:localhost:6067 <name_of_machine>
  2. 在本地计算机上
  3. 设置调试服务器。使用主机名
    localhost
    和端口 6067。您还需要设置项目路径映射,以便看到代码,但您可以稍后再做,或者在触发断点时使用自动下载
  4. 按照调试服务器创建中描述的步骤进行操作: 在远程环境上:
    pip install pydevd-pycharm~=241.14494.241
    (版本应该与您不同,确切的版本显示在调试服务器配置中) 修改你的代码(我已经在需要调试的光线演员的构造函数中运行了它)
import pydevd_pycharm
pydevd_pycharm.settrace('localhost', port=6067, stdoutToServer=True, stderrToServer=True)
  1. 在pycharm中启动调试服务器
  2. 运行要调试的脚本。现在应该触发断点
© www.soinside.com 2019 - 2024. All rights reserved.