在 Ray 中的远程函数之间存储对象

Store objects between remote functions in Ray

我正在编写一个项目,该项目多次使用相同的数据进行写入,并且我一直在使用 ray 在集群设置中对其进行扩展,但是文件太大而无法发回 forth/save 一直在射线对象存储上。有没有办法在远程函数调用之间将 python 对象保存在本地节点上?

在分布式系统中写入文件总是很棘手,因为常规文件系统不在机器之间共享。 Ray 通常不会干扰文件系统,但我认为您在这里有一些选择。

  1. 扩展对象存储大小:您可以通过设置 --object-store-memory--plasma-directory 标志来更改 Plasma 存储大小及其存储到更大文件的位置。

  2. 使用分布式文件系统:像 NFS 这样的分布式文件系统允许您跨机器共享文件系统的一部分。如果你手动设置一个 NFS 共享,你可以让 Ray 写入 NFS 中的一个文件。

  3. 不要使用文件系统:虽然这在技术上不是答案,但可以说这是分布式系统最典型的方法。考虑写入 S3 或类似的 KV 存储或 Blob 存储,而不是写入文件系统。

这些方法的缺点:

(1) 的最大缺点是,如果您不小心,可能会严重影响您的表现。

(2) 的最大缺点是它可能很慢。特别是,如果您需要从多个节点读取和写入数据。第二个缺点是您必须自己设置 NFS。

(3) 的最大缺点是您现在依赖于外部服务,并且可以说它不是您问题的直接解决方案。