Я начал использовать 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()))
По прошествии некоторого времени я получаю это сообщение об ошибке:
top
). 2) Еще можно попробоватьray.init(object_store_memory=10**9)
. Однако я подозреваю, что это один из участников Python, который использует все больше и больше памяти. Я бы посоветовал взглянуть на временную шкалу Ray, чтобы убедиться, что она выглядит так, как ожидалось (документация на ray.readthedocs.io/en/latest/). - person Robert Nishihara   schedule 18.04.2019