performance - GPU RTX 2080 Ti tensorflow 运行速度比 CPU tensorflow 慢?
问题描述
我正在使用 python 和 tensorflow 来训练机器学习模型(特别是 CNN),使用我自己定义的超重(最初有 4 个嵌套循环且计算复杂)的损失函数。为了使其更快,我使用 tf.map_fn 对所有嵌套循环进行矢量化,这会导致大量 RAM 使用,但是,我已经确认它使损失函数更快。该模型是一个相当大的 CNN 模型,有大约 200 万个参数,我用 10000 个样本进行训练,批次大小为 128。我的主要问题是,当我只使用 CPU (2.1GHz) 运行代码时,它至少运行了 100 次比在 GPU 上运行的相同代码更快(GeForce RTX 2080 Ti 计算能力:7.5)。现在的问题是我需要运行大量 epoch 的训练代码,而且需要很长时间(CPU 上 7 天,甚至超过 GPU 上的时间)。当我使用 GPU 时,我预计会看到一些速度提升,但这里似乎存在一个真正的问题。
有关基础设施设置的详细信息:1- GeForce RTX 2080 Ti 计算能力:7.5 coreClock:1.545GHz coreCount:68 deviceMemorySize:10.76GiB deviceMemoryBandwidth:573.69GiB/s 2- tensorflow-gpu 2.4.1 3- cudatoolkit 10.1.243 4- cudnn 7.6。 5 5-蟒蛇3.9.5
如果你们能帮助我理解为什么会这样以及如何解决它,我将不胜感激。
解决方案
推荐阅读
- c++ - 输入数字和字母时 cin.fail 不起作用
- hive - Hive 如何根据一些列将 tmp 表合并到历史表中。如果存在则忽略,如果不存在则插入
- typescript - 使用 react-native-reanimated 时出现样式转换属性的类型错误
- graphql - 如何使用 Apollo 工具开发 AppSync 模式
- xamarin - 当我添加服务参考时,UWP 无法获取方法
- java - 如何在棒棒糖前使用它的名字显示国旗
- python - 在 Python 中查找未知值
- java - 使用 Swing 控件实现一个简单的计算器 GUI
- django - pre_delete 信号在特定目录中不起作用
- many-to-many - 如何使用 DDD 为股票跟踪模型设计聚合根?