【问题标题】:GPU support for TensorFlow & PyTorch对 TensorFlow 和 PyTorch 的 GPU 支持
【发布时间】:2020-08-20 07:12:22
【问题描述】:

好的,所以我现在参与了很多深度学习项目和实习,而且我从来不需要进行大量训练。但最近我一直在考虑做一些迁移学习,为此我需要在 GPU 上运行我的代码。现在我有一个带有 Windows 10 和专用 NVIDIA GeForce 940M GPU 的系统。我一直在网上做了很多研究,但我仍然有点困惑。我还没有在我的系统上安装 NVIDIA Cuda Toolkit 或 cuDNN 或 tensorflow-gpu。我目前使用 tensorflow 和 pytorch 来训练我的 DL 模型。这是我的疑问 -

  1. 当我在 tf 或 pytorch 中定义一个张量时,它默认是一个 cpu 张量。所以,到目前为止我所做的所有训练都是在 CPU 上进行的。所以,如果我确保安装正确版本的 Cuda 和 cuDNN 和 tensorflow-gpu(特别是用于 tensorflow),我可以使用 tf-gpu 和 pytorch 在我的 GPU 上运行我的模型,就这样吗? (我知道 pytorch 中的 torch.cuda.is_available() 以确保 pytorch 可以访问我的 GPU 和 tf 中的 device_lib 模块以检查我的 gpu 是否对 tensorflow 可见)(我也知道 tf不支持所有 Nvidia GPU)

  2. 为什么 tf 有一个单独的模块来支持 GPU? PyTorch 似乎没有,您需要做的就是将您的张量从 cpu() 转换为 cuda() 以在它们之间切换。

  3. 为什么要安装 cuDNN?我知道它是一个高级 API CUDA,用于支持在 GPU 上训练深度神经网络。但是 tf-gpu 和 torch 在 gpu 上训练时会在后端使用这些吗?

  4. 在 tf == 1.15 之后,他们是否将 CPU 和 GPU 支持合二为一?

【问题讨论】:

    标签: tensorflow pytorch gpu


    【解决方案1】:

    首先不幸的是,940M 是一种用于训练的弱 GPU。我建议您使用 Google colab 进行更快的训练,但当然,它会比 CPU 更快。所以这里是我对你的四个问题的回答。

    1-) 是的,如果您正确安装了要求,那么您可以在 GPU 上运行。您也可以手动将数据放入 GPU。您可以检查 TensorFlow 上的实现。在 PyTorch 中,您应该指定要使用的设备。正如您所说,您应该使用device = torch.device("cuda" if args.cuda else "cpu"),然后对于模型和数据,您应该始终调用.to(device),如果可用,它将自动使用GPU。

    2-) PyTorch 还需要额外的安装(模块)来支持 GPU。然而,随着最近的更新,TF 和 PyTorch 都可以轻松用于 GPU 兼容代码。

    3-) Tensorflow 和 PyTorch 都基于 cuDNN。您可以在没有 cuDNN 的情况下使用它们,但据我所知,这会损害性能,但我不确定这个主题。

    4-) 不,它们仍然是不同的包。 tensorflow-gpu==1.15 and tensorflow==1.15 他们对 tf2 所做的就是让 tensorflow 更像 Keras。所以它比 1.15 或之前的版本更加简化。

    【讨论】:

    • 在您的第二个答案中,您是什么意思 PyTorch 还需要额外安装?我假设您的意思是使用 PyTorch 安装兼容版本的 Cuda 和 cuDNN 对吧?
    • @vikram71198 是的,对于 cuda,您应该安装不同的 PyTorch 模块(例如 torch==1.6.0+cu101)。我不确定 cuDNN 是先决条件,但 cudatoolkit 是。
    【解决方案2】:

    关于 3) cudNN 优化层和硬件级别的此类操作已经回答了其余的问题,这些实现是纯粹的黑魔法。编写正确利用 GPU 的 CUDA 代码非常困难(如何将数据加载到 GPU 中,如何使用矩阵实际执行它们等)

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 2021-02-04
      • 2018-05-19
      • 1970-01-01
      • 2018-04-13
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多