相关疑难解决方法(0)

如何防止张量流分配GPU内存的全部?

我在一个共享计算资源的环境中工作,也就是说,我们有一些服务器机器配备了几个Nvidia Titan X GPU.

对于小到中等大小的型号,12GB的Titan X通常足以让2-3人在同一GPU上同时进行训练.如果模型足够小以至于单个模型没有充分利用Titan X的所有计算单元,那么与在另一个训练过程之后运行一个训练过程相比,这实际上可以导致加速.即使在并发访问GPU确实减慢了单个培训时间的情况下,仍然可以灵活地让多个用户同时在GPU上运行.

TensorFlow的问题在于,默认情况下,它在启动时会在GPU上分配全部可用内存.即使对于一个小的2层神经网络,我也看到12 GB的Titan X已用完.

有没有办法让TensorFlow只分配4GB的GPU内存,如果有人知道这个数量对于给定的模型来说足够了?

python tensorflow nvidia-titan

252
推荐指数
12
解决办法
13万
查看次数

如何引发张量流内存不足错误的异常

我正在sess.run()循环中使用多个tensorflow推论,碰巧有些推论对我的GPU来说太重了。

我收到如下错误:

2019-05-23 15:37:49.582272: E tensorflow/core/common_runtime/executor.cc:623] 
Executor failed to create kernel. Resource exhausted: OOM when allocating tensor of shape [306] and type float
Run Code Online (Sandbox Code Playgroud)

我希望能够捕获这些特定的OutOfMemory错误,但不能捕获其他错误(这可能是由于错误的输入格式或损坏的图形所致。)

显然,其结构类似于:

try:
   sess.run(node_output, feed_dict={node_input : value_input})
except:
    do_outOfMemory_specific_stuff()
Run Code Online (Sandbox Code Playgroud)

不起作用,因为其他类型的错误将导致对该do_outOfMemory_specific_stuff函数的调用。

任何想法如何捕获这些OutOfMemory错误?

python exception python-3.x tensorflow

5
推荐指数
1
解决办法
290
查看次数

标签 统计

python ×2

tensorflow ×2

exception ×1

nvidia-titan ×1

python-3.x ×1