退出分布式 Tensorflow 执行后内存不足

Low memory after quitting distributed Tensorflow execution

我正在通过 Tensorflow 在 MNIST 中应用机器学习。我在一个集群上执行此操作,其中每个节点 运行 都是 Tensorflow 的分布式执行。我 运行 通过主节点上的 bash 脚本单独执行。此主节点使用 ssh 连接到集群中的一组节点,然后 运行s Python 脚本 运行ning Tensorflow。

当 Tensorflow 在节点上 运行ning 时,我经常收到以下错误消息,导致节点崩溃:

2017-03-29 20:34:02.749498: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:239] Started server with target: grpc://localhost:8338
Extracting /home/mvo010/.tmp/tensorflow/mnist/input_data/train-images-idx3-ubyte.gz
Extracting /home/mvo010/.tmp/tensorflow/mnist/input_data/train-labels-idx1-ubyte.gz
Extracting /home/mvo010/.tmp/tensorflow/mnist/input_data/t10k-images-idx3-ubyte.gz
Extracting /home/mvo010/.tmp/tensorflow/mnist/input_data/t10k-labels-idx1-ubyte.gz
Traceback (most recent call last):
  File "/home/mvo010/inf3203-1/mnist_softmax.py", line 173, in <module>
    tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
  File "/share/apps/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 44, in run
    _sys.exit(main(_sys.argv[:1] + flags_passthrough))
  File "/home/mvo010/inf3203-1/mnist_softmax.py", line 24, in main
    mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)
  File "/share/apps/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py", line 256, in read_data_sets
    train = DataSet(train_images, train_labels, dtype=dtype, reshape=reshape)
  File "/share/apps/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py", line 138, in __init__
    images = numpy.multiply(images, 1.0 / 255.0)
MemoryError

这是因为内存不足。当我登录一个节点检查内存时,我发现空闲内存真的很低。问题是当节点完成时节点上的内存不会被释放(或者在超时时被主 bash 脚本杀死)。

有没有简单的方法可以在退出 Tensorflow 应用程序后为节点清理内存?我没有任何 sudo 权限。

您是否尝试过关闭会话。我相信它是 sess.close().

我从 AWS (https://aws.amazon.com/blogs/compute/distributed-deep-learning-made-easy/) 的例子中得到了一些启发。

运行 pkill -f python 在我 运行 每个 worker 和参数服务器主机上的 python 脚本解决了这个问题之前。