【问题标题】:Using CUDA with pytorch?将 CUDA 与 pytorch 一起使用?
【发布时间】:2018-11-29 22:57:31
【问题描述】:

我在这里搜索过,但只找到过时的帖子。

我想在我的 GPU 上运行训练。我在一些论坛上发现,我需要将.cuda() 应用于任何我想使用 CUDA 的东西(我已经将它应用于所有我能做的事情,而不会导致程序崩溃)。令人惊讶的是,这会使训练变得更慢。

然后,我发现你可以使用这个torch.set_default_tensor_type('torch.cuda.FloatTensor') 来使用CUDA。两者都启用后,没有任何变化。发生了什么?

有没有办法在整个模型上可靠地启用 CUDA?


另外,MyModel() 是什么意思?我需要更具体的示例,例如代码示例。 (This is the post I am referring to)

【问题讨论】:

标签: python pytorch torch


【解决方案1】:

您可以使用tensor.to(device) 命令将张量移动到设备。

.to() 命令还用于将整个模型移动到设备上,就像您链接到的帖子中一样。

另一种可能性是在创建过程中使用device= 关键字参数设置张量的设备,例如t = torch.tensor(some_list, device=device)

要在代码中动态设置设备,可以使用

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

如果可能,将 cuda 设置为您的设备。

PyTorch Tutorials 和上面链接的文档中有各种代码示例可以帮助您。

【讨论】:

  • 调用tensor.to(device)时,device参数可以使用'cpu'、'cuda'、'cuda:0'、'cuda:1'等。'cuda'和' cuda:0' 在大多数情况下意味着同样的事情。单击 d2l.ai 的 Section 5.6.1 中的 PyTorch 选项卡以了解更多详细信息。
  • 您可以通过打印tensor.device来检查张量是否位于GPU上。
【解决方案2】:

两者都启用,没有任何变化。

那是因为您已经将每个张量都设置为 GPU。

有没有办法在整个模型上可靠地启用 CUDA?

model.to('cuda')

我已经把它应用到我能做的所有事情上

您只需将其应用于模型将与之交互的张量,通常:

  • 模特儿model.to('cuda')
  • 特征数据features = features.to('cuda')
  • 目标数据targets = targets.to('cuda')

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2021-01-23
    • 2019-07-07
    • 2020-02-23
    相关资源
    最近更新 更多