我正在编写一个项目,该项目多次使用相同的数据进行写入,并且我一直在使用 ray 在集群设置中对其进行扩展,但是文件太大而无法来回发送/保存射线对象一直存储。有没有办法在远程函数调用之间将 python 对象保存在本地节点上?
最佳答案
在分布式系统中写入文件总是很棘手,因为常规文件系统不会在机器之间共享。 Ray 通常不会干扰文件系统,但我认为您在这里有几个选择。
扩展对象存储大小:您可以通过设置
--object-store-memory
和-- 更改 plasma 存储大小及其存储到更大文件的位置plasma-directory
标志。使用分布式文件系统:NFS 等分布式文件系统允许您跨机器共享部分文件系统。如果您手动设置 NFS 共享,则可以指示 Ray 写入 NFS 中的文件。
不要使用文件系统:虽然从技术上讲这不是答案,但可以说这是分布式系统最典型的方法。考虑写入 S3 或类似的 KV 存储或 Blob 存储,而不是写入文件系统。
这些方法的缺点:
(1) 的最大缺点是,如果您不小心,可能会严重影响您的表现。
(2) 的最大缺点是它可能很慢。特别是,如果您需要从多个节点读取和写入数据。第二个缺点是您必须自己设置 NFS。
(3) 的最大缺点是您现在依赖于外部服务,并且可以说它不是您问题的直接解决方案。
关于python - 在 Ray 中的远程函数之间存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64840392/