我开始使用ray进行分布式机器学习,但是我已经遇到了一些问题。内存使用量不断增长直到程序崩溃。虽然我不断清除列表,但内存仍在泄漏。有任何想法为什么会这样吗?
我的规格: 操作系统和分配情况:Ubuntu 16.04 Ray安装来源:二进制 Ray版本:0.6.5 Python版本:3.6.8
我已经尝试使用实验性队列而不是DataServer类,但问题仍然存在。
import numpy as np
import ray
import time
ray.init(redis_max_memory=100000000)
@ray.remote
class Runner():
def __init__(self, dataList):
self.run(dataList)
def run(self,dataList):
while True:
dataList.put.remote(np.ones(10))
@ray.remote
class Optimizer():
def __init__(self, dataList):
self.optimize(dataList)
def optimize(self,dataList):
while True:
dataList.pop.remote()
@ray.remote
class DataServer():
def __init__(self):
self.dataList= []
def put(self,data):
self.dataList.append(data)
def pop(self):
if len(self.dataList) !=0:
return self.dataList.pop()
def get_size(self):
return len(self.dataList)
dataServer = DataServer.remote()
runner = Runner.remote(dataServer)
optimizer1 = Optimizer.remote(dataServer)
optimizer2 = Optimizer.remote(dataServer)
while True:
time.sleep(1)
print(ray.get(dataServer.get_size.remote()))
运行一段时间后,我收到以下错误信息:
ray.init(object_store_memory=10**9)
。但是,我怀疑其中一个Python actor正在使用越来越多的内存。建议查看Ray时间轴,以查看其是否符合预期(文档位于https://ray.readthedocs.io/en/latest/user-profiling.html#visualizing-tasks-in-the-ray-timeline)。 - Robert Nishihara