查看tensorflow可配置运算资源以及配置使用GPU运算
因为还用不到分布式的tensorflow,自己没有尝试过所以就不写分布式tensorflow的使用了(等自己用上了再说),这里记录一下在跑神经网络时遇到GPU资源没有被使用,自己配置GPU运算的一些内容。一起来看看吧。
查看tensorflow可以调用的GPU/CPU资源
安装得时候我们会在cmd中通过nvidia-smi
查看CUDA的一些信息。
这里可以看到CUDA中加入了一个GTX得显卡,他的资源利用是百分之零。
我们再查看一下电脑中有那些CPU和GPU可以被分配:
import os
from tensorflow.python.client import device_lib
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "99"
print(device_lib.list_local_devices())
我这儿输出:
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 11540659828643787764
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 4865563033
locality {
bus_id: 1
links {
}
}
incarnation: 1407573613792857506
physical_device_desc: "device: 0, name: GeForce GTX 1660 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5"
]
如果只想关注有那些可用资源得编号可以这样获得:
from tensorflow.python.client import device_lib as _device_lib
local_device_protos = _device_lib.list_local_devices()
[x.name for x in local_device_protos if x.device_type == 'GPU']
当然把GPU改为CPU就得到是CPU的对应可用编号。
配置GPU运算
在我的电脑中可以看到的是:一个CPU一个GPU可以被支配,我们可以这样来配置tensorflow使用他们:
import tensorflow as tf
with tf.device("/gpu:0"):
a = tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[2,3])
b = tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[3,2])
c = tf.matmul(a,b)
#查看计算时硬件的使用情况
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))
把里面得gpu改为cpu他就会调用cpu运算了。配置GPU运算还有另外一种方法,代码如下:
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '0' #指定第一块GPU可用
查看资源使用情况
程序运行中可以通过nvidia-smi
查看:
前提是你的网络需要一致在运行着。
还可以通过任务管理器来查看在性能中我们可以自己电脑中的一些资源使用情况。
如果不嫌麻烦,也可以下载一个GPU-Z来查看:
写在最后
写这篇博客是因为自己电脑中安装了CPU版和GPU版的tensorflow,有一天突然发现GPU的资源在训练时没有被使用,所以就找了些资料看如何去查看资源以及分配资源。OK就记录到这里了,欢迎各位大佬在评论区进行纠错或者提出更好的方案,带着我一起进步。