gpt4 book ai didi

python - 了解经过训练的神经网络内存使用情况

转载 作者:行者123 更新时间:2023-11-28 22:27:17 24 4
gpt4 key购买 nike

背景

我有一个单层、256 个隐藏单元的 RNN,我已经用 Keras 训练过它,现在我想部署它。理想情况下,我想将此 RNN 的多个实例部署到 GPU 上。但是,此时,当我使用 keras.models.load_model() 加载模型时,它似乎使用了我可用的 12Gb GPU 内存中的 11Gb。

问题

  1. 为什么我的网络很小,却占用了这么多内存?我只想预测,不想训练。我是否以错误的方式加载模型?
  2. 有什么方法可以让我大致了解我的 RNN 结构与它将使用的 GPU 内存量之间的映射?
  3. 鉴于这种理解,我该如何减少我的 RNN 消耗的内存量?

目前的理解

我当前对我的网络应该使用多少内存的估计是根据超参数的数量给出的:

  • 256 个输入权重
  • 256个输出权重
  • 256x256 循环权重
  • 256 个隐藏单元
  • 256 个隐藏单元偏差

总计:32 位/参数 x (4 x 256 + 256 x 256) 参数 = 260e6 位

这比我目前看到的要少得多。所以我的假设是 Keras 认为我仍在训练我的模型,因此正在尝试缓存批处理错误大小。但是我还应该如何加载我的模型?

最佳答案

不是,只是gpu内存使用的一种策略。 Keras 通常基于 tensorflow,而 tensorflow 默认映射所有可用的 gpu 内存,以避免动态内存分配,无论您实际使用多少内存。

你可以像下面这样配置它:

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3 # or any valid options.
set_session(tf.Session(config=config))

关于python - 了解经过训练的神经网络内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44124918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com