tensorflow GPU使用问题

linux下查看GPU使用情况的命令

nvidia-smi

tensorflow GPU使用问题_第1张图片

几个观察参数
Fan:代表显卡转速,以百分比显示;
Temp:代表显卡温度;
Perf:性能等级,p1~p12,数字越小,性能较好。
Pwr:usage/cap :当前功率/总功率。
Memory-Usage:显卡的显存使用容量跟显卡总的大小
GPU-Util:显卡计算单元使用率。
ok,多说一句,显卡也分为两部分,即显卡跟计算单元,类似与内存跟CPU。

tensorflow的显卡使用方式

1、直接使用

with tf.Session() as sess:

这种方式会把当前机器上所有的显卡的剩余显存基本都占用,注意是机器上所有显卡的剩余显存。因此程序可能只需要一块显卡,但是程序就是这么霸道,我不用其他的显卡,或者我用不了那么多显卡,但是我就是要占用。

2、分配比例使用

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction=0.6
with tf.Session(config=config) as sess:

其中这种方式跟上面直接使用方式的差异就是,我不占用所有的显存了,例如这样写,我就占有每块显卡的60%。

3. 动态申请使用

config = tf.ConfigProto()
config.gpu_options.allow_growth=True
with tf.Session(config=config) as sess:

这种方式是动态申请显存的,只会申请内存,不会释放内存。而且如果别人的程序把剩余显卡全部占了,就会报错。

以上三种方式,应根据场景来选择。
第一种因为是全部占用内存,因此只要模型的大小不超过显存的大小,就不会产生显存碎片,影响计算性能。可以说合适部署应用的配置。
第二种和第三种适合多人使用一台服务器的情况,但第二种存在浪费显存的情况,第三种在一定程序上避免了显存的浪费,但极容易出现程序由于申请不到内存导致崩溃的情况。

4 指定GPU

在有多块GPU的服务器上运行tensorflow的时候,如果使用python编程,则可指定GPU,代码如下:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

你可能感兴趣的:(tensorflow)