如何检查PyTorch是否使用GPU?nvidia-smi命令可以检测GPU活动,但我想直接从Python脚本中检查它。
当前回答
这些函数应该有助于:
>>> import torch
>>> torch.cuda.is_available()
True
>>> torch.cuda.device_count()
1
>>> torch.cuda.current_device()
0
>>> torch.cuda.device(0)
<torch.cuda.device at 0x7efce0b03be0>
>>> torch.cuda.get_device_name(0)
'GeForce GTX 950M'
这告诉我们:
CUDA是可用的,可以在一台设备上使用。 Device 0指GPU GeForce GTX 950M,目前被PyTorch选中。
其他回答
在GPU上创建一个张量,如下所示:
$ python
>>> import torch
>>> print(torch.rand(3,3).cuda())
不要退出,打开另一个终端,检查python进程是否使用该GPU:
$ nvidia-smi
在你开始运行训练循环后,如果你想在终端上手动观察你的程序是否在利用GPU资源,以及利用到什么程度,那么你可以简单地使用watch,如下所示:
$ watch -n 2 nvidia-smi
这将持续更新使用统计每2秒,直到你按ctrl+c
如果你需要更多的GPU统计数据的控制,你可以使用更复杂的nvidia-smi版本——query-gpu=....下面是一个简单的例子:
$ watch -n 3 nvidia-smi --query-gpu=index,gpu_name,memory.total,memory.used,memory.free,temperature.gpu,pstate,utilization.gpu,utilization.memory --format=csv
这将输出统计信息如下:
注意:在——query-gpu=....中,以逗号分隔的查询名之间不能有空格否则,这些值将被忽略,不返回统计信息。
此外,你可以通过以下方法检查PyTorch安装是否正确检测到CUDA安装:
In [13]: import torch
In [14]: torch.cuda.is_available()
Out[14]: True
True状态意味着PyTorch配置正确,并且正在使用GPU,尽管你必须在代码中使用必要的语句移动/放置张量。
如果你想在Python代码中执行此操作,请查看以下模块:
https://github.com/jonsafari/nvidia-ml-py或在pypi中:https://pypi.python.org/pypi/nvidia-ml-py/
这些函数应该有助于:
>>> import torch
>>> torch.cuda.is_available()
True
>>> torch.cuda.device_count()
1
>>> torch.cuda.current_device()
0
>>> torch.cuda.device(0)
<torch.cuda.device at 0x7efce0b03be0>
>>> torch.cuda.get_device_name(0)
'GeForce GTX 950M'
这告诉我们:
CUDA是可用的,可以在一台设备上使用。 Device 0指GPU GeForce GTX 950M,目前被PyTorch选中。
步骤1:导入火炬库
import torch
#步骤2:创建张量
tensor = torch.tensor([5, 6])
#步骤3:查找设备类型
#输出1:在下面的输出中,我们可以得到size(tensor.shape), dimension(tensor.ndim), #和处理张量的设备
tensor, tensor.device, tensor.ndim, tensor.shape
(tensor([5, 6]), device(type='cpu'), 1, torch.Size([2]))
#or
#输出2:在下面,输出我们可以得到的唯一设备类型
tensor.device
device(type='cpu')
#由于我的系统使用cpu处理器“第11代英特尔(R)酷睿(TM) i5-1135G7 @ 2.40GHz 2.42 GHz”
#find,如果张量处理GPU?
print(tensor, torch.cuda.is_available()
# the output will be
tensor([5, 6]) False
#上面的输出是假的,因此它不在gpu上
#快乐编码:)
这里几乎所有的答案都引用torch.cuda.is_available()。然而,这只是硬币的一部分。它告诉你GPU(实际上是CUDA)是否可用,而不是它是否实际被使用。在一个典型的设置中,你会像这样设置你的设备:
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
但在更大的环境中(例如研究),通常也会给用户更多的选择,因此根据输入,他们可以禁用CUDA,指定CUDA id,等等。在这种情况下,是否使用GPU不仅仅取决于GPU是否可用。在设备被设置为torch设备之后,您可以获取它的type属性来验证它是否是CUDA。
if device.type == 'cuda':
# do something
推荐文章
- “克隆”行或列向量
- 在python shell中按方向键时看到转义字符
- 在pip install中方括号是什么意思?
- 使用Matplotlib以非阻塞的方式绘图
- 使用sklearn缩放Pandas数据框架列
- 如何创建关键或附加一个元素的关键?
- virtualenv的问题-无法激活
- 是否可以使用scikit-learn K-Means聚类来指定自己的距离函数?
- 如何在Python中删除文本文件的文件内容?
- 一个干净、轻量级的Python扭曲的替代品?
- 在Python中从字符串中移除所有非数字字符
- 在Python中,如何以排序的键顺序遍历字典?
- Python中的多行f-string
- 批量归一化和退出的排序?
- Python中的“@=”符号是什么意思?