如何检查Tensorflow是否使用GPU
在这篇文章中,我们将看到如何检查TensorFlow是否使用GUP。
GPU是深度学习的新标准。GPU有更多的逻辑核心,通过它们可以达到更高的并行化水平,与CPU相比,可以提供更好和更快的计算结果。在深度学习任务中,需要训练的参数数量可以达到数十亿。我们知道,在神经网络中,调整权重矩阵的操作,如矩阵乘法,是一个昂贵的操作,需要在CPU上完成。为了更快地执行这些操作,需要同时进行多项操作。GPU有更好的并行化支持,而且深度学习模型所需的内存也很庞大,可以适用于GPU。
你可能有一个GPU,但你的模型可能没有使用它。在这种情况下,训练将默认在CPU上完成。因此,有必要检查Tensorflow是否在运行它所提供的GPU。
如果你想知道TensorFlow是否在使用GPU加速,我们可以简单地使用以下命令来检查。
import tensorflow as tf
tf.config.list_physical_devices('GPU')
输出:
输出应该提到一个GPU。如果GPU可用,tf.keras模型将默认在单个GPU上运行。如果你想使用多个GPU,你可以使用一个分布策略。
一旦你得到这个输出,现在去终端输入nvidia-smi。nvidia-smi是一个命令行工具,旨在监控NVIDIA的GPU设备。nvidia-smi是基于Nvidia管理库(NVML)。输入后,会产生与此类似的东西。
nvidia-smi
该命令将返回一个由Tensorflow正在运行的GPU信息组成的表格。它包含了你所使用的GPU的类型,它的性能,内存的使用和它正在运行的不同进程的信息。要知道你的ML模型是否正在GPU上进行训练,只需记下你的模型的进程ID,并将其与给定表格的进程标签进行比较。如果模型是在GPU上运行的,那么在进程标签中就会提到模型的进程ID。
你也可以将设备日志设置为真,以了解你的操作和张量被分配到哪个设备。这将让你知道哪个GPU在执行你的操作并存储结果。
tf.debugging.set_log_device_placement(True)
这应该返回” 在设备/job:localhost/replica:0/task:0/device:GPU:0中执行操作_EagerConst“
检查TensorFlow可用的设备
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
输出:
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 13414683734401945856
xla_global_id: -1
]