自分のための備忘録的なブログです。

Ubuntu14.04LTS を使って、ディープラーニングの勉強をしています。
記載されているコードは、他の OS には互換性がない可能性があります。


DNN:
マシン性能別 学習速度の比較, TFチュートリアルをmodifyする

python3:
オブジェクト指向プログラミングとは, モジュールとインポート、パスを通す, システムコマンド(os), ファイル・フォルダ名取得, 画像の前処理,

Ubuntu14 の初期設定:
Ubuntu14初期設定, 初期設定-2, cudaなども, 初期設定-3

TensorFlow、マシン性能/OS環境でどのくらいの差が出るか

目次

 

 

結果のまとめ 

1.値段が高い CPU, GPU ほど速い

   でも値段が 2倍高くても、2倍速くはならない

 

2.タスクによって

    CPU が重要なタスク、

    GPU が重要なタスク

  があるっぽい。

 

 

MNIST

TensorFlow, tutorial, MNIST

http://pmonty.hatenablog.com/entry/2017/02/11/153820

隠れ層一層の、単純な NN

 

 RAM 使用量:ほぼ 0GB

 

laptop (No external GPU)

Panasonic laptop ('12):   2.55 sec *1 Ubuntu14.4 第三世代 core i5

Lenovo laptop ('16):        1.31 sec *2 Win10 第六世代 core i7

Ubuntu14 on VMware:    1.99 sec *3 on Lenovo Win10

Laptop ('16):                    1.28 sec *4 Win7 第六世代 core i7

 

 

​desktop

i3/NO GPU/BTO('17):     1.24 sec *5 Ubuntu14, i3-7100

i3/1070/BTO('17):            1.00 sec *6 Ubuntu14, i3-7100

i5/1080Ti/BTO('17):         0.94 sec *7 Ubuntu14, i5-7600K

 

ハイスペックほど速い、順当な結果。

そして重要なのは、デスクトップの core i3 は、ノートの core i7 よりも速いこと。

 

第三世代 core i5 から第六世代 core i7 にかけて、クロック周波数とコア数は変わってなかったけれど、明らかな速度差が出ました。

クロック周波数やコア数同じでも、最新モデルの方が速い。

 

 

 

TensorFlow, tutorial, MNIST, CNN

http://pmonty.hatenablog.com/entry/2017/02/13/103000

 

    RAM使用量:5.4GB

 

 

desktop

i3/1070/BTO('17):       120 sec Ubuntu14, i3/1070 発熱60度台。オリファン

i5/1080Ti/BTO('17):     70 sec Ubuntu14, i5/1080ti 発熱80度台。ファウンダーズ

 

 

価格差約 2倍ですが、2倍近い速度を叩き出しました。

しかし、2倍の速さには達せず。 

 

オリファンはヒートパイプのおかげで冷える冷える。ファウンダーズは空冷だけだから余り冷えない・・・

 

 

 

Windows のせいで遅いのか

 

1台の Windows PC に、Ubuntuデュアルブートでインストールして検証しました。

 

Pana ('12) with Win7:        48 min

Pana ('12) with Ubuntu:     38 min

 

Lenovo ('16) with Win10:   49 min

Lenovo ('16) with Ubuntu: 32 min

 

 

Windows は、Ubuntu より遅いという結果。

アチャー。

 

おまけに Win10 は 7 より遅いやん、PC の スペック上がってるのに。 

バックグラウンドで走ってる、いろんなソフトのせいでしょうね。

 

 

 

CIFAR-10

TensorFlow, tutorial, CIFAR-10

tensorflow/models/tutorials/image/cifar10/cifar10_train.py

without GPU

ノートPC:     100 examples/sec

i3 desktop:   240 examples/sec

 

with GPGPU

i3/1070:      2000 examples/sec

i3/1080ti:    2300 examples/sec 

i5/1070:      2800 examples/sec

i5/1080ti:    3000 examples/sec 

 

価格差2倍で、速度は1.5倍(i3/1070 vs i5/1080ti)

GPU の値段は 1080ti が 1070 の約 2倍なのですが、速度は 2倍にはなりませんでした。

 

なお、アップグレード(GPU の簡易水冷、2台同期の SLI)したパソコンで実行すると

i5 + 簡易水冷 1080ti  SLI: 10000 examples/sec

という結果でした。

SLI で2倍以上になっているのは計算が合わないのですが・・・

 

 

GPU のメモリ確保量を変更(→50%、30%に減少)

したら、遅くなるのか??

 

i5/1080ti PC

 

pmonty.hatenablog.com

 

させても、クラッシュせず、速度も下がりませんでした。

 

 

ということは、VRAM使用量を減らし2つのプロセスを同時に動かすと、速くなる?  

結果約 40% に遅くなりました。

 

 

2つの cifar-10_train.py を動かしてみる。pc は i5/1080ti

0.04 sec / batch → 0.12 sec / batch

 

全体の速度は 80% (40% * 2 プロセス)

 

このタスクでは、2 プロセスを

並列で動かすメリットはなさそう。

 

CPU/GPU の発熱は変化せず。

VRAM 使用量は単純な加算(4000MB → 8000MB)。

GPU fan や Volatile GPU-Util も変化なし。

 

それなら、2台の discrete GPU なら

速度低下のデメリットは出ないか?

 

結果

2台の discrete GPU

プロセスを割り振っても、

速度低下しメリットなし。

 

i5 のパソコンに 1080 ti と 1070 とを積んで、それぞれにプロセスを割り振ってみる

(ディスプレイは 1080ti に接続)

1080ti 1台のみ:  0.040 sec / batch  

1070   1台のみ:    0.045 sec / batch

 

2台並列だと、

  1080ti:  0.070 sec / batch 

  1070:    0.080 sec / batch

 

遅くなってしまいました。

 

発熱は CPU, GPU とも 60 度台。

 

 

 

自作のCNN

64x64 の .jpg 画像を10クラスに分類するという、ありきたりなタスク。

64x64 の画像を読み込んだあと、スクリプト内で 32x32 に resize する。

ので、その部分に時間がかかる(やっぱpickleしておきたい!! cifar-10 は、画像枚数ずっと多かったのに学習は早かった。 Google の tensorflow tutorial, cifar-10 の凄さを時間気づく)。

 

トレインデータ: 2620 枚

テストデータ: 320 枚

validation データ: 320 枚

 

10 step

i3, woGPU:  65 min

i3, 1070:     15 min

i5K, 1080ti: 13 min

 

100 step

i3, 1070:      25min

i5K, 1080ti:  20 min

 

 

 

 

SSD-Keras

言わずとしれた、object detection の最右翼。

 

この頃から、numpy を使えるようになったからか、GPU が爆熱になりました。

具体的には・・・

1070   (オリファン、割と窒息ケース):     60-70度     → 80度台

1080ti (ファウンダーズ、air flow 良好):  82 度程度 → 85度!!

 

 

1080ti の方は、サイド吸気できるですが、

www.links.co.jp

 

サイド吸気で、GPU、1-2度しか下がらない!

うるさいのでサイド吸気やめました。

 

札束で殴ることにして、簡易水冷を導入。

blog.livedoor.jp

  

なお、こういうの:Kraken G10

ameblo.jp

の方が汎用的(知らなかった・・・知ってたらこっちにしてた)。

 

上記ブログによると 3スロット占有するそう。注意必要ですね。

  m-ITX ではケース入らないかも。

 

 

さておき、 ssd-keras のデモ(training, VOC2007)を起動・・・ 

i3, 1070:      6 min / 1 epoch

        CPU: 5-70 度 (薄型ヒートパイプ)

        GPU: 80度越え!! (ヒートパイプのオリファン)

 

i5K, 1080ti:  3 min 30sec / 1 epoch

        CPU: 5-70 度 (12cm fan, 虎徹みたいな)

        GPU: 50度台 (簡易水冷!)

 

 

 余談ですが、GPU は、80度がリミットになっている雰囲気。 

 

一方、CPUの温度、70度を超えないで、70がリミットかも。

ただマザーボードで裏側から触っても、せいぜい40-50度? と言う感じなので、これ以上冷やす必要を感じず。

 

CPU fan は 12cm fan のヒートパイプモデル。

 f:id:pmonty:20171004004740j:plain

fan を x1 → x2 に増やしてみた結果、 CPU 温度は 5度ほど下がり、45-65度程度で安定。速度は改善せず。

 

SLI

f:id:pmonty:20171010205540j:plain

i5K + 簡易水冷 1080ti の SLI (憧れの静音ケースに買い換え!)

ざっくり 1 epoch 3 分程度。GPU 1題よりは数秒速くなった感じ

 

2倍にならなくてがっかりしました。使い方が悪いのでしょうね。

ニューラルネット中身は VGG 的な形になっていますが、うまく並列化できないのかな。残念。

 

しかし、

tensorflow/models

の cifar10 tutorial なら、SLI で 3倍に早くなりました。

 

i5/1080ti:    3000 examples/sec 

i5 + 簡易水冷 1080ti  SLI: 10000 examples/sec

 

 

計測時期が異なるので、若干信頼性が。

再計測してみようかな。

 

買って早々ですが、返品検討中です。

 

 

 

*1:2.63, 2.48, 2.53

*2:1.30, 1.31, 1.31

*3:1.95, 2.01, 2.00

*4:1.36, 1.22, 1.26

*5:1.09, 0.96, 0.95

*6:1.09, 0.96, 0.95

*7:0.92, 0.95, 0.95