1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

benchmark 工具 -- glances

官网:An Eye on your system

安装:

$ curl -L https://bit.ly/glances | sudo /bin/bash
$ sudo pip install https://bitbucket.org/gleb_zhulik/py3sensors/get/tip.tar.gz

第 2 个命令,pip 装的是 py3sensors。

用于监控 CPU 温度,测下自己配的 CPU 散热器够不够用。

 

glances 通过 lm-sensors 可以监控 CPU 的温度和风扇转速。

最新的 sensors 版本,需要用 py3sensors,

而 glances 安装的依旧是 PySensors。

所以,需要手动 pip 装一下。

效果图:

Projects -- TensorFlow models

使用 tensorflow 官方的 models 测 benchmark

$ git clone This email address is being protected from spambots. You need JavaScript enabled to view it.:tensorflow/models.git tf-models

测试1: 手写识别 mnist/convolutional.py

这是一个比较复杂的 mnist model

代码在 tutorials/image/ 目录下

GPU 版本

$ time python mnist/convolutional.py
...
Step 8300 (epoch 9.66), 4.5 ms
Minibatch loss: 1.615, learning rate: 0.006302
Minibatch error: 0.0%
Validation error: 0.8%
Step 8400 (epoch 9.77), 4.3 ms
Minibatch loss: 1.596, learning rate: 0.006302
Minibatch error: 0.0%
Validation error: 0.9%
Step 8500 (epoch 9.89), 4.4 ms
Minibatch loss: 1.614, learning rate: 0.006302
Minibatch error: 0.0%
Validation error: 0.9%
Test error: 0.8%

real	0m39.876s
user	0m46.436s
sys	0m6.140s

CPU 版本

Step 1000 (epoch 1.16), 126.1 ms
Minibatch loss: 2.859, learning rate: 0.009500
Minibatch error: 0.0%
Validation error: 2.0%
Step 1100 (epoch 1.28), 125.3 ms
Minibatch loss: 2.812, learning rate: 0.009500
Minibatch error: 0.0%
Validation error: 1.4%
Step 1200 (epoch 1.40), 125.4 ms
Minibatch loss: 2.911, learning rate: 0.009500
Minibatch error: 1.6%
Validation error: 1.6%
Step 1300 (epoch 1.51), 125.3 ms
Minibatch loss: 2.819, learning rate: 0.009500
Minibatch error: 1.6%
Validation error: 1.7%

GPU / CPU 运行阶段的系统信息截图

benchmark 对比

第二个截图,是 CPU 版本的。

CPU 版跑了 3 min,左下角的 sensors 显示,温度已经 90 度。

传说中轻松上 90 度的大火炉,7700k 名不虚传。

楼下师傅给我配的 65 块钱(jd 上 30 RMB) 的 CPU 散热器的确扛不住.

 

运行时间差 28.6 倍。GPU 版40 秒跑完,CPU 版预期 20 min。

比用 MacBook Pro 2015 实测时间快了一点点。

另外,由于 GPU 版的 CPU 使用量很低,

GPU 跑深度计算期间,不影响其他日常任务。

测试 2: 图片识别 cifar10/cifar10_train.py

 

代码中默认是 1000000 个 step。

GPU 用 9 min 跑了 10000 个 step,loss 0.8. 可接受。

2017-02-27 12:49:57.034305: step 9960, loss = 0.81 (2515.9 examples/sec; 0.051 sec/batch)
2017-02-27 12:49:57.557913: step 9970, loss = 0.91 (2493.2 examples/sec; 0.051 sec/batch)
2017-02-27 12:49:58.081191: step 9980, loss = 0.87 (2546.9 examples/sec; 0.050 sec/batch)
2017-02-27 12:49:58.597420: step 9990, loss = 0.78 (2611.9 examples/sec; 0.049 sec/batch)
2017-02-27 12:49:59.215067: step 10000, loss = 0.80 (867.3 examples/sec; 0.148 sec/batch)

CPU 测了 400 个 step,loss 3.5

2017-02-27 13:08:13.959561: step 330, loss = 3.53 (383.6 examples/sec; 0.334 sec/batch)
2017-02-27 13:08:17.246396: step 340, loss = 3.52 (397.9 examples/sec; 0.322 sec/batch)
2017-02-27 13:08:20.553411: step 350, loss = 3.48 (392.9 examples/sec; 0.326 sec/batch)
2017-02-27 13:08:23.820860: step 360, loss = 3.67 (399.6 examples/sec; 0.320 sec/batch)
2017-02-27 13:08:27.104339: step 370, loss = 3.49 (389.7 examples/sec; 0.328 sec/batch)
2017-02-27 13:08:30.370894: step 380, loss = 3.46 (398.6 examples/sec; 0.321 sec/batch)

GPU / CPU 运行阶段的系统信息截图

benchmark 对比

这一次,CPU 和 GPU 只差了 6 倍。

GPU 的显存已经 97%,而 proc 只有 51%。

且,GPU 版本运行期间,CPU 使用率也非常高。

我的理解,

GPU 的显存已经成为瓶颈,

无法充分发挥 GPU 的计算能力了。

benchmark 总结

GPU 的性能瓶颈,在于显存。

计算核心与频率,一般不是瓶颈。

所以,Titan X Pascal 的 12G 显存真的很诱惑。

GTX 1080 与 GTX 1070 的显存/位宽相同。

主要差在频率和计算单元数量上,

这似乎也可以解释,为什么实测的性能差别不会大了。

另外,选一个好的 CPU,还是正确的。

不是全在 GPU 里算。

尤其是显存成为瓶颈的时候。

 

训练 model 的时候,需要注意 batch size。

batch size 过大,显卡撑爆,计算能力下降非常明显。

如果再给我一个机会,

我选择买 GTX 1070.

省 2000 RMB 啊!