Pytorch有一个可选函数来更改默认类型的张量set_default_tensor_type.在主脚本上应用默认类型:
>>> import torch
>>>
>>> if __name__ == '__main__':
... cuda = torch.cuda.is_available()
... if cuda:
... torch.set_default_tensor_type('torch.cuda.FloatTensor')
... a = torch.randn(3,3)
... print(a.device)
...
cuda:0
或者出于某种原因,这样做是件坏事吗?E、 g.有什么理由我不希望在默认情况下在cuda上完成所有张量/操作吗?
我找不到任何参考资料或文件来回答这个问题.然而,在我看来,这是为了避免GPU内存中的memory fragmentation.
我不是专家,但内存中的数据应该以有效的方式进行安排,否则,冗余空间会导致OOM.这就是为什么在默认情况下,无论模型有多少个参数,Tensorflow都会占用GPU的所有内存.只需将张量形状倍数设置为8 amp documents,即可提高空间和速度.
实际上,当A和B维度是8的倍数时,可以实现更高的性能.
总之,我认为最好是手动控制tensor设备,而不是将其设置为默认gpu.