Ray 调试教程

最后更新:04/23/2025

作者:Ao Shen.

如何调试?

Ray 分布式调试 VSCode 扩展(推荐)

  1. 从 Ray 2.39 开始,Anyscale 推出了 Ray 分布式调试器 VSCode 扩展。请遵循扩展的安装说明,然后使用您之前获取的仪表板 URL 添加集群。

    Ray 分布式调试器 VSCode 扩展截图
  2. 先决条件。

    确保已安装以下组件(有关更多详细信息,请参阅扩展的 README):

    • Visual Studio Code

    • ray[default] >= 2.9.1

    • debugpy >= 1.8.0

    VSCode 和 Ray 先决条件
  3. 环境变量。

    要启用事后调试,请设置:

    export RAY_DEBUG_POST_MORTEM=1
    

    注意

    在启动 Ray 之前,请务必删除任何旧的标志:

    • RAY_DEBUG=legacy

    • –ray-debugger-external

  4. 配置断点。在代码中设置 breakpoint() 并将作业提交到集群。然后,扩展程序将显示断点信息。

    1. 在远程函数中插入 breakpoint() 调用。

    2. 将作业提交到集群。

    该扩展将检测活动的断点并在 VSCode 中显示它们。

    注意: 断点仅支持在用 @ray.remote 装饰的函数内部。

  5. 启动调试器。

    直接从命令行运行作业(请勿使用 launch.json):

    python job.py
    
  6. 附加到断点。

    一旦进程遇到第一个 breakpoint(),请单击 VSCode 侧边栏中的 Ray 分布式调试器图标以附加调试器。

    将 VSCode 调试器附加到 Ray 进程
  7. 使用多个 breakpoint() 进行调试。

    对于每个后续任务,请先断开当前调试器会话,然后再次单击扩展图标以附加到下一个断点。

    断开和重新连接调试器

旧版 Ray 调试器

  1. Ray 包含一个内置的旧版 调试器,可用于调试分布式应用程序。要启用调试器,請使用 RAY_DEBUG=legacy--ray-debugger-external 启动 Ray 集群。

# 启动头节点
RAY_DEBUG=legacy ray start --head --dashboard-host=0.0.0.0 --ray-debugger-external
# 启动工作节点
RAY_DEBUG=legacy ray start --address='10.124.46.192:6379' --ray-debugger-external
  1. 在代码中设置断点,然后将作业提交到集群。之后运行 ray debug 以等待断点:

https://github.com/eric-haibin-lin/verl-community/blob/main/docs/ray/legacy.png?raw=true