Python 如何检查Pytork是否正在使用GPU?
我想知道Pytork是否正在使用我的GPU。使用Python 如何检查Pytork是否正在使用GPU?,python,memory-management,gpu,nvidia,pytorch,Python,Memory Management,Gpu,Nvidia,Pytorch,我想知道Pytork是否正在使用我的GPU。使用nvidiasmi可以检测在这个过程中是否有来自GPU的任何活动,但是我想要用python脚本编写一些东西 有办法吗?这应该可以: import torch torch.cuda.is_available() >>> True torch.cuda.current_device() >>> 0 torch.cuda.device(0) >>> <torch.cuda.device a
nvidiasmi
可以检测在这个过程中是否有来自GPU的任何活动,但是我想要用python
脚本编写一些东西
有办法吗?这应该可以:
import torch
torch.cuda.is_available()
>>> True
torch.cuda.current_device()
>>> 0
torch.cuda.device(0)
>>> <torch.cuda.device at 0x7efce0b03be0>
torch.cuda.device_count()
>>> 1
torch.cuda.get_device_name(0)
>>> 'GeForce GTX 950M'
导入火炬
torch.cuda.U是否可用()
>>>真的
torch.cuda.CUU当前设备()
>>> 0
火炬.cuda.装置(0)
>>>
torch.cuda.device_count()
>>> 1
torch.cuda.get_设备_名称(0)
>>>“GeForce GTX 950M”
这告诉我GPUGeForce GTX 950M
正在被PyTorch
使用,这应该可以工作:
import torch
torch.cuda.is_available()
>>> True
torch.cuda.current_device()
>>> 0
torch.cuda.device(0)
>>> <torch.cuda.device at 0x7efce0b03be0>
torch.cuda.device_count()
>>> 1
torch.cuda.get_device_name(0)
>>> 'GeForce GTX 950M'
导入火炬
torch.cuda.U是否可用()
>>>真的
torch.cuda.CUU当前设备()
>>> 0
火炬.cuda.装置(0)
>>>
torch.cuda.device_count()
>>> 1
torch.cuda.get_设备_名称(0)
>>>“GeForce GTX 950M”
这告诉我,在开始运行训练循环后,
PyTorch
正在使用GPUGeForce GTX 950M
,如果您想从终端手动观察程序是否在使用GPU资源以及使用到什么程度,那么您可以简单地使用watch
,如下所示:
$ watch -n 2 nvidia-smi
这将每隔2秒持续更新使用情况统计信息,直到您按ctrl+c
如果您需要更多的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代码中执行此操作,请查看此模块:
或者在这里的pypi中:在开始运行训练循环后,如果您想从终端手动观察程序是否正在使用GPU资源以及使用的程度,那么您可以简单地使用
观察,如下所示:
$ watch -n 2 nvidia-smi
这将每隔2秒持续更新使用情况统计信息,直到您按ctrl+c
如果您需要更多的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代码中执行此操作,请查看此模块:
或者在pypi中:在GPU上创建一个张量,如下所示:
$ python
>>> import torch
>>> print(torch.rand(3,3).cuda())
不要退出,打开另一个终端并检查python进程是否正在使用GPU,方法是:
$ nvidia-smi
在GPU上创建张量,如下所示:
$ python
>>> import torch
>>> print(torch.rand(3,3).cuda())
不要退出,打开另一个终端并检查python进程是否正在使用GPU,方法是:
$ nvidia-smi
在office站点和get start页面上,检查PyTorch的GPU,如下所示:
import torch
torch.cuda.is_available()
参考资料:在办公网站和get start页面上,检查PyTorch的GPU,如下所示:
import torch
torch.cuda.is_available()
参考资料:因为这里没有提出,所以我添加了一个方法,在正确的设备
上初始化张量时也可以使用,因为这非常方便
# setting device on GPU if available, else CPU
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print('Using device:', device)
print()
#Additional Info when using cuda
if device.type == 'cuda':
print(torch.cuda.get_device_name(0))
print('Memory Usage:')
print('Allocated:', round(torch.cuda.memory_allocated(0)/1024**3,1), 'GB')
print('Cached: ', round(torch.cuda.memory_reserved(0)/1024**3,1), 'GB')
编辑:torch.cuda.memory\u cached
已重命名为torch.cuda.memory\u reserved
。因此,对于较旧的版本,请使用缓存的内存
输出:
torch.rand(10).to(device)
torch.rand(10, device=device)
如上所述,使用设备
可以:
- 将张量移动到相应的
设备
:
torch.rand(10).to(device)
torch.rand(10, device=device)
- 直接在
设备上创建张量
:
torch.rand(10).to(device)
torch.rand(10, device=device)
这使得在CPU和GPU之间的切换非常舒适,无需更改实际代码
编辑:
由于对缓存和分配的内存存在一些问题和困惑,我将添加一些关于它的附加信息:
返回缓存分配器管理的最大GPU内存(以字节为单位)
给定设备。
返回给定设备的当前GPU内存使用量(以字节为单位)
您可以直接将设备
交给本帖上文进一步指定的用户,也可以将其保留为无,然后使用
附加说明:具有Cuda计算能力3.0或更低版本的旧图形卡可能可见,但Pytorch无法使用
感谢您指出这一点!-“发现GPU0 GeForce GT 750M具有cuda能力3.0。PyTorch不再支持此GPU,因为它太旧了。我们支持的最小cuda能力是3.5。”由于这里没有提出,我添加了一种方法,因为这非常方便,在正确的设备上初始化张量时也使用
# setting device on GPU if available, else CPU
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print('Using device:', device)
print()
#Additional Info when using cuda
if device.type == 'cuda':
print(torch.cuda.get_device_name(0))
print('Memory Usage:')
print('Allocated:', round(torch.cuda.memory_allocated(0)/1024**3,1), 'GB')
print('Cached: ', round(torch.cuda.memory_reserved(0)/1024**3,1), 'GB')
编辑:torch.cuda.memory\u cached
已重命名为torch.cuda.memory\u reserved
。因此,对于较旧的版本,请使用缓存的内存
输出:
torch.rand(10).to(device)
torch.rand(10, device=device)
如上所述,使用设备
可以:
- 将张量移动到相应的
设备
:
torch.rand(10).to(device)
torch.rand(10, device=device)
- 直接在
dev上创建张量