0
点赞
收藏
分享

微信扫一扫

GPU的使用说明

一脸伟人痣 2022-02-03 阅读 143

文章目录

GPU的使用说明

查看显卡信息

!nvidia-smi

计算设备

import tensorflow as tf

tf.device('/CPU:0'), tf.device('/GPU:0'), tf.device('/GPU:1')

查询GPU数量

len(tf.config.experimental.list_physical_devices('GPU'))

张量与GPU
我们可以查询张量所在的设备。 默认情况下,张量是在CPU上创建的。

x = tf.constant([1, 2, 3])
x.device

存储在GPU上
我们需要确保不创建超过GPU显存限制的数据。

with try_gpu():
    X = tf.ones((2, 3))

假设你至少有两个GPU,下面的代码将在第二个GPU上创建一个随机张量。

with try_gpu(1):
    Y = tf.random.uniform((2, 3))

复制

with try_gpu(1):
    Z = X
print(X)
print(Z)

现在数据在同一个GPU上(Z和Y都在),我们可以将它们相加。

假设变量Z已经存在于第二个GPU上。 如果我们仍然在同一个设备作用域下调用Z2 = Z会发生什么? 它将返回Z,而不会复制并分配新内存。

with try_gpu(1):
    Z2 = Z
    
Z2 is Z
#True

神经网络与GPU
类似地,神经网络模型可以指定设备。 下面的代码将模型参数放在GPU上。

strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
    net = tf.keras.models.Sequential([
        tf.keras.layers.Dense(1)])

当输入为GPU上的张量时,模型将在同一GPU上计算结果。

net(X)

让我们确认模型参数存储在同一个GPU上。

net.layers[0].weights[0].device, net.layers[0].weights[1].device

所有的数据和参数都在同一个设备上, 我们就可以有效地学习模型

小结

  • 我们可以指定用于存储和计算的设备,例如CPU或GPU。默认情况下,数据在主内存中创建,然后使用CPU进行计算。

  • 深度学习框架要求计算的所有输入数据都在同一设备上,无论是CPU还是GPU。

  • 不经意地移动数据可能会显著降低性能。一个典型的错误如下:计算GPU上每个小批量的损失,并在命令行中将其报告给用户(或将其记录在NumPy ndarray中)时,将触发全局解释器锁,从而使所有GPU阻塞。最好是为GPU内部的日志分配内存,并且只移动较大的日志。

举报

相关推荐

0 条评论