Python Ray共享内存访问
Python Ray shared memory access
我有一个关于在 Ray 框架内访问共享内存的问题。
想象一下 1 台机器 上的以下设置:
- 启动 Ray 集群
- 启动一个process/workerpython脚本w1.py,它将对象O1放入通过 ray.put(O1)
共享内存
- 启动一个process/workerpython脚本w2.py,试图获取O1从共享内存通过 ray.get(...)
有没有办法从另一个worker访问对象O1(从w1.py进程放入共享内存)处理 w2.py?
当我从 w2.py 执行 ray.objects() 时,我得到了对象引用字符串,但是我怎么能从共享内存中检索对象呢?我无法在 w2.py
中初始化 ObjectRef 对象
这不受本机支持。原因是 ray 的对象具有用于各种功能的各种元数据(例如,性能优化或使用引用计数的自动内存管理)。
如果你想实现这个,我认为有两种解决方案。
使用独立的演员api。分离的 actors 是其生命周期不是 fare-sharing 驱动程序的 actors。一旦创建了分离的 actor,就可以使用 ray.get_actor API 获取 actor 句柄。这样,您可以将对象放入分离的 actor 中并从多个驱动程序访问。
还有一种方法是用cloudpickle,不过我对这种方法不是很熟悉,就不写了。请转到 Ray 在其 Github 存储库中的讨论页面以询问有关它的更多详细信息。
我有一个关于在 Ray 框架内访问共享内存的问题。
想象一下 1 台机器 上的以下设置:
- 启动 Ray 集群
- 启动一个process/workerpython脚本w1.py,它将对象O1放入通过 ray.put(O1) 共享内存
- 启动一个process/workerpython脚本w2.py,试图获取O1从共享内存通过 ray.get(...)
有没有办法从另一个worker访问对象O1(从w1.py进程放入共享内存)处理 w2.py?
当我从 w2.py 执行 ray.objects() 时,我得到了对象引用字符串,但是我怎么能从共享内存中检索对象呢?我无法在 w2.py
中初始化 ObjectRef 对象这不受本机支持。原因是 ray 的对象具有用于各种功能的各种元数据(例如,性能优化或使用引用计数的自动内存管理)。
如果你想实现这个,我认为有两种解决方案。
使用独立的演员api。分离的 actors 是其生命周期不是 fare-sharing 驱动程序的 actors。一旦创建了分离的 actor,就可以使用 ray.get_actor API 获取 actor 句柄。这样,您可以将对象放入分离的 actor 中并从多个驱动程序访问。
还有一种方法是用cloudpickle,不过我对这种方法不是很熟悉,就不写了。请转到 Ray 在其 Github 存储库中的讨论页面以询问有关它的更多详细信息。