ags*_*lid 22 nvidia machine-learning keras tensorflow
我的机器有以下规格:
CPU:Xeon E5-1620 v4
GPU:Titan X(Pascal)
Ubuntu 16.04
Nvidia车手375.26
CUDA取得8.0
cuDNN 5.1
我已经使用Tensorflow作为支持参考的以下Keras示例进行了基准测试:
SCRIPT NAME GPU CPU
stated_lstm.py 5sec 5sec
babi_rnn.py 10sec 12sec
imdb_bidirectional_lstm.py 240sec 116sec
imbd_lstm.py 113sec 106sec
Run Code Online (Sandbox Code Playgroud)
我的gpu显然在非lstm模型中执行我的cpu.
SCRIPT NAME GPU CPU
cifar10_cnn.py 12sec 123sec
imdb_cnn.py 5sec 119sec
mnist_cnn.py 3sec 47sec
Run Code Online (Sandbox Code Playgroud)
还有其他人经历过这个吗?
Ale*_*hev 16
批量太小.试着增加.
我的GTX1050Ti的结果:
imdb_bidirectional_lstm.py batch_size time 32 (default) 252 64 131 96 87 128 66 imdb_lstm.py batch_size time 32 (default) 108 64 50 96 34 128 25
小智 5
我这里也有类似的问题:
CPU:Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
乌班图14.04
imdb_bidirectional_lstm.py:155秒
显卡:GTX 860M
英伟达驱动程序:369.30
CUDA 工具包:v8.0
cuDNN:v6.0
imdb_bidirectional_lstm.py:450秒
当我观察GPU负载曲线时,我发现了一件有趣的事情:
这主要是由于 LSTM 层的顺序计算造成的。请记住,LSTM 需要顺序输入来迭代计算隐藏层权重,换句话说,您必须等待 时刻的隐藏状态t-1才能计算 时刻的隐藏状态t。
这对于 GPU 核心来说不是一个好主意,因为它们有很多小核心,喜欢并行计算,顺序计算无法充分利用它们的计算能力。这就是为什么我们大多数时候看到 GPU 负载在 10% - 20% 左右。
但在反向传播阶段,GPU可以并行运行导数计算,因此我们可以看到GPU负载峰值在80%左右。
| 归档时间: |
|
| 查看次数: |
19979 次 |
| 最近记录: |