如何降低 Tensorflow 中的 RAM 消耗?
How to lower RAM consumption in Tensorflow?
你好,
我正在尝试在我的 Nvidia Jetson Nano 上使用 DarkFlow,它是 YOLO 的 Python 实现(使用 Tensorflow 作为后端)来检测物体。我得到了所有的设置和东西,但它不想训练。我将其设置为 GPU 模式,输出中的一行内容如下:
Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 897MB memory) -> physical GPU (device: 0, name: NVIDIA Tegra X1, pci bus id: 0000:00:00.0, compute capability: 5.3)
这是它在训练 "Killed" 没有任何进一步消息之前输出的最后一行。因为它是一个重卷积神经网络,我认为原因是 RAM 过度消耗。现在我只能在我的 Jetson Nano 中使用这个 GPU,所以有人建议如何降低它或如何解决问题吗?
提前感谢您的回答!
您可以尝试将 batch_size
降低到 1 并降低 width,height
值,但不建议在 jetson nano
上进行训练。它的有限功能(4 GB 共享 RAM)阻碍了学习过程。为了克服这些限制,您可以尝试遵循 this post or this 一个来增加 swap_area
,它充当 RAM,但我仍然建议仅使用 nano 进行推理。
EDIT1:另外众所周知,Tensorflow
倾向于尝试分配所有可用的 RAM,这使得进程被 OS 杀死。要解决此问题,您可以使用 tf.GPUOptions
来限制 Tensorflow
的 RAM 使用。
示例:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.4)
session = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
我们选择 per_process_gpu_memory_fraction
作为 0.4,因为最好不要让 Tensorflow
分配超过可用资源一半的 RAM。(也因为它是共享的)
祝你好运。
你好,
我正在尝试在我的 Nvidia Jetson Nano 上使用 DarkFlow,它是 YOLO 的 Python 实现(使用 Tensorflow 作为后端)来检测物体。我得到了所有的设置和东西,但它不想训练。我将其设置为 GPU 模式,输出中的一行内容如下:
Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 897MB memory) -> physical GPU (device: 0, name: NVIDIA Tegra X1, pci bus id: 0000:00:00.0, compute capability: 5.3)
这是它在训练 "Killed" 没有任何进一步消息之前输出的最后一行。因为它是一个重卷积神经网络,我认为原因是 RAM 过度消耗。现在我只能在我的 Jetson Nano 中使用这个 GPU,所以有人建议如何降低它或如何解决问题吗?
提前感谢您的回答!
您可以尝试将 batch_size
降低到 1 并降低 width,height
值,但不建议在 jetson nano
上进行训练。它的有限功能(4 GB 共享 RAM)阻碍了学习过程。为了克服这些限制,您可以尝试遵循 this post or this 一个来增加 swap_area
,它充当 RAM,但我仍然建议仅使用 nano 进行推理。
EDIT1:另外众所周知,Tensorflow
倾向于尝试分配所有可用的 RAM,这使得进程被 OS 杀死。要解决此问题,您可以使用 tf.GPUOptions
来限制 Tensorflow
的 RAM 使用。
示例:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.4)
session = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
我们选择 per_process_gpu_memory_fraction
作为 0.4,因为最好不要让 Tensorflow
分配超过可用资源一半的 RAM。(也因为它是共享的)
祝你好运。