【问题标题】:Why does tensorflow take more GPU RAM than the model file?为什么 tensorflow 比模型文件占用更多的 GPU RAM?
【发布时间】:2019-01-28 13:16:00
【问题描述】:

我有一个 tensorflow 模型以协议缓冲区格式保存为model.pb,即184 MB。当我使用会话加载它时,我看到该进程占用了 GPU RAM 的11 GB。这是为什么呢?

【问题讨论】:

  • 一方面,默认情况下,TF 在创建会话时分配(几乎)整个 GPU 内存,而不管模型实际需要多少内存(这使内存管理更加高效)。查找“启用 GPU 内存增长”。另一方面,protobuf 文件不代表模型在 RAM 中的权重,而只代表保存的参数。例如,您仍然需要输入、输出和中间缓冲区(以及一大堆其他东西,这只是说明这一点的一个例子),所以是的,期望您的内存大小更大。这很正常。

标签: python tensorflow


【解决方案1】:

Tensorflow 默认使用所有 GPU 内存来最小化内存碎片(参见documentation)。您可以通过使用 allow_growth 配置选项来防止这种行为:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

【讨论】:

    猜你喜欢
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多