Tensoflow模型占用大量显存的处理方法

Tensorflow在启动的时候会占用所有显存,然后自行对显存进行管理,这是tensorflow的显存管理机制,他可以申请到连续的显存地址然后进行分配,这样对显存的使用更高效,在实际使用中,由于显存资源比较紧张,所以可以通过一些简单的配置来让tensorflow运行时只分配实际所需的显存,后续需要的显存再进行动态申请和分配,主要有两种方法。

1.添加TF_FORCE_GPU_ALLOW_GROWTH环境变量

export TF_FORCE_GPU_ALLOW_GROWTH=true

或者在代码中进行设置

import os
os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'

2.通过tensorflow内的allow_growth来调整

import tensorflow as tfconfig = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True # 动态分配 GPU 内存
sess = tf.compat.v1.Session(config=config)

3.使用swap_memory将部分计算从GPU战役到CPU,使用RNN场景。

rnn_output = tf.nn.bidirectional_dynamic_rnn(cell_fw, cell_bw, inputs, swap_memory=True)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/1062

评论列表