从jupyter笔记本中运行tensorflow代码时,我注意到了相当大的性能(速度)差异,而不是从命令行将其作为脚本运行。
例如,下面是运行MNIST CNN教程(https://www.tensorflow.org/code/tensorflow/examples/tutorials/mnist/fully_connected_feed.py)
的结果设置:
具有32 Xeon-CPUS,62GB内存,4 K520 GPUS(4GB内存)的AWS实例
Linux:3.13.0-79 Ubuntu
Tensorflow:0.10.0rc0(由支持GPU的源代码构建)
Python:3.5.2 | Anaconda custom(64位)|
CUDA库:libcublas.so.7.5,libcudnn.so.5,libcufft.so.7.5,libcuda.so.1,libcurand.so.7.5
培训步骤:2000
Jupyter笔记本执行时间:
这不包含导入和加载数据集的时间 - 只是培训阶段
CPU times: user 8min 58s, sys: 0 ns, total: 8min 58s
Wall time: 8min 20s
命令行执行:
这是执行完整脚本的时间。
real 0m18.803s
user 0m11.326s
sys 0m13.200s
GPU正在两种情况下使用,但利用率更高(在命令行的训练阶段通常为35%,而笔记本版本为2-3%)。我甚至尝试将其手动放置在不同的GPU上,但这对笔记本的执行时间没有太大影响。
关于为什么会这样做的任何想法/建议?
答案 0 :(得分:0)
我看到了相反的情况。笔记本中的GPU使用率优于命令行。
我一直在使用DQN训练乒乓球,使用命令行的帧速降至17fps,而使用笔记本的帧速降至100fps。
我看到了nvidia-smi的统计信息,其中显示了命令行方法294MB的使用量,木星笔记本方法的984MB的使用量。
不知道原因,但在colab中也有类似观察