performance - TensorFlow/Keras 性能更好,GPU 内存更少?
问题描述
减少 GPU 内存分配会提高我的 CNN 模型的训练速度。我期望相反 - 速度应该随着分配的内存而降低。我怀疑这与将数据传入和传出 GPU 所需的时间有关。
我运行了分配 a) 所有 GPU 内存和 b) 大约一半 (46%) 的 GPU 内存的案例。使用所有 GPU 内存(无限制)训练速度为 153 epochs/hour。当分配 46% 的 GPU 内存时,训练速度为 199 epochs/hour。
我通过以下方式设置 GPU 内存:
gpu_memory_fraction = 0.46 # Values tested: 0.46 and 1
config = tf.compat.v1.ConfigProto()
if gpu_memory_fraction < 1.0:
config.gpu_options.per_process_gpu_memory_fraction = gpu_memory_fraction
K.tensorflow_backend.set_session(tf.Session(config=config))
我使用 kerasmodel.fit()
方法进行训练。批量大小 = 64。
环境:
- 蟒蛇 3.7.5
- keras 2.2.4
- 张量流 1.15.0
- 康达 4.7.12
- CUDA 10.2
- 英伟达驱动 440.44
- Ubuntu 18.04.3
- GPU:英伟达 GTX 1080Ti,11GB 内存
- CPU Intel i9-9900K 3.6 GHz,RAM 64 GB,SSD 120 GB
任何人都可以提供解释吗?
解决方案
推荐阅读
- rpm-spec - Linux rpm 将包重定位到多个前缀
- c++ - GPU cuda 代码是否可以在多个 GPU 卡上工作而无需任何实现?
- bash - 为什么 curl -o 输出包含像“^[[38;5;250m”这样的序列,而“surf”输出看起来不错?
- javascript - 用嵌套列表值包装嵌套字典
- javascript - 回调没有像预期的那样被调用多次
- xml - 如何使用 xpath (1.0) 迭代/选择元素对?
- python - 如何正确找到并关闭那些未正确关闭的json
- python - 将重复的行值重塑为列 - python
- node.js - 我们可以使用 Apache Server 进行 Angular Web 应用程序的服务器端渲染,还是必须坚持使用 NodeJs
- javascript - 为什么我的导航栏会干扰我的 Stripe 令牌创建?