Skip to content

FAQ

Ray 会自动让所有 Python 程序变快吗?

不会。你需要把程序拆成合适粒度的 Task 或 Actor。任务太小、数据传输太大、循环里 ray.get,都可能让程序更慢。

ObjectRef 和 Future 有什么区别?

它们都代表未来结果。但 ObjectRef 是 Ray 对象系统的一部分,可以跨进程、跨节点传递,并参与对象存储、依赖解析和生命周期管理。

什么时候用 Task,什么时候用 Actor?

无状态、可独立并行的计算用 Task。需要保存状态、复用昂贵资源或维护长连接时用 Actor。

num_cpus 会限制函数只能用几个 CPU 吗?

不会。它主要是调度配额。底层 BLAS、PyTorch、TensorFlow 等库的线程数仍要单独配置。

为什么我的 Ray 程序比本地还慢?

常见原因:

  • 任务太细。
  • 数据序列化和传输成本过高。
  • 在循环里 ray.get
  • 单个 Actor 成为瓶颈。
  • 资源声明导致任务排队。

Mini Ray 能学到真实 Ray 的什么?

Mini Ray 能帮助你理解核心控制流:提交任务、返回引用、等待对象、调度资源、Actor 串行处理消息。它不能代表真实 Ray 的多进程、多节点、共享内存、容错和生产调试能力。

读 Ray 源码应该从哪里开始?

从 Python API 层开始:远程函数、Actor、Worker。然后跟到 Core Worker、Raylet、Object Store 和 GCS。不要一开始就读整个仓库。

生产环境应该先学哪些内容?

至少掌握:

  • Ray Core 的 Task / Actor / Object Store。
  • Dashboard 和 State API。
  • 资源声明和 Placement Group。
  • 对象存储内存和 spill。
  • Task/Actor 容错策略。
  • 你使用的上层库,例如 Ray Data、Train 或 Serve。

面向学习目的的 Ray Core 中文导读与 Mini Ray 机制预览。