(黃獻德) Hsien-De Huang | E-Mail:TonTon (at) TWMAN.ORG | TonTon (痛痛)
Malware Analysis Network in Taiwan (MiT) | 惡意程式分析網在台灣 (抬丸郎)
Deep Learning (深度學習), Malware Analysis (惡意程式分析), Ontology (知識本體)
Android Reverse Engineering (Android 逆向工程), Type-2 Fuzzy Logic (第二型模糊邏輯)

ONE PIECE (海賊王)

ONE PIECE (海賊王)

2017年1月11日

[開箱] 技嘉GTX1080 XTREME GAMING 8G + Gigabyte X99P SLI + Intel XEON E5 2620 v4 + MICRON DDR4 128GB + COUGAR CMX 1000W

打雜打得準又好,機器溫度沒煩腦;乖乖不能亂拿掉,不然插座會燒掉;

深度學習 ~ 嘴砲無敵 ! http://DeepLearning101.TWMAN.ORG

 

本文是為了大研究跟深度學習,省吃儉用抱著自己的研究設備自己買的記錄
如要瞭解實用開箱文建議參考:

結論是雖然已經有 960 * 2,但這組 1080 * 2 還是讓人無敵滿意,雖然 SLI 在 Ubunttu 14.04 x86_64 上會有殘影閃屏的狀況,好在 SLI 對於 Deep Learning 沒幫助,但是 NVIDIA 官方論壇超級無敵佛心借測硬體 ... 至於我最近又自己硬幹了什麼 深度 學習應用 ? 就賣個關子吧 ! XD

https://www.facebook.com/events/213850662372349/ 

最後另附上 Deep Learning 101 讀書會: http://x.twman.org/DeepLearning


Intel XEON E5 2620 v4 $14300, Gigabyte GTX 1080 * 2 $27990 * 2, Gigabyte X99P SLI $11090, MICRON DDR4 2400 16 GB * 8 $23198, Intel SSD 320, COUGAR CMX 1000W $3890


Intel Core i7 4770, GIGABYTE Z87-HD3, Intel S320/S520 SSD, ADATA DDR3 8GB * 4, GIGABYTE GTX 960 4G 
Intel Core i5 4570, GIGABYTE H97M-D3H, Intel 530 SSD, ADATA DDR3 8GB * 4, GIGABYTE GTX 960 4G


嗯 ! 這裡還算是有不少深度學習的筆記啦


深度學習 的 TensorFlow & Deep Learning 的源碼 安裝 操作 教學 http://blog.twman.org/2016/06/tensorflow.html 
NVIDIA Deep Learning Toolbox - DIGITS:http://blog.twman.org/2016/09/DIGITS.html 

應用深度學習與大數據分析識別詐騙(騷擾)電話:http://www.freebuf.com/articles/others-articles/113990.html
如何用深度學習識別網絡欺詐:http://www.freebuf.com/articles/paper/108123.html


最早從 2016年的6月時忍痛的自己買了 GTX 960 回來研究,那時深度學習完全是一知半解,但也確實驗證了工欲善其事真的得必先利其器 ... 不然根本不知怎做啊


後來,一直最想要的就 NVIDIA TITAN X 啦,等了快半年 ... 台灣似乎仍舊沒賣啊 !
中間一度再多買了一張 GTX 960 打算跑一下分散式或者單機雙卡或者單機 SLI


 

就這樣好不容易省吃儉用存半年 ... 終於狠下心抱著自己的研究設備自己買比較實在的心態

技嘉GTX1080 XTREME GAMING 8G 顯示卡: $27990
技嘉 GTX 1080 XG WATERFORCE WB 8G 顯示卡: $32090
技嘉 GTX1080XTREME W 8G (水之力) 顯示卡: $29990

也就是連續這幾張照片啦 ! 真的就這樣拜託阿源師傅幫忙訂貨給它敗家砸了下去 ...

(沐鑫資訊: 台南市東區北門路一段218號2樓,北門商場2樓)


一度超想買水之力 ... 畢竟我玩水冷電腦也算得上是老鳥吧 !? ... 無奈我不是富二代,買不起
我的最愛-我的電腦 和 硬碟: http://blog.twman.org/2013/12/Computer.html


最意外的是這張卡裡面居然都有附上 SLI 的套件呢 ! (囧的是 3-Slot 這板子無法使用)


就這樣,肖想了半年多的 1080 * 2 做 SLI 在極度省吃儉用的狀況下從天上掉下來了


SLI 橋接器裝上後,第一個感覺就是整個好霸氣啊 ....


但搞笑的不止如此 ... 意外發現如果是 1080 * 2 做 SLI ... 那 power 會整個不夠力
某數據指出,單卡至少要 350W,雙卡則是建議 750W


然後就突然再從天上掉下來這自以為是 霸王色霸氣的 深度學習機 了 ....


其實是不知道那根筋去拐到 ... 我居然又敗了 INTEL XEON E5 2620 v4 ... 0rz

http://ark.intel.com/zh-tw/products/92986/Intel-Xeon-Processor-E5-2620-v4-20M-Cache-2_10-GHz


還有這看似很酷 ... 熱導管 風扇 ... 好久沒有用風冷了啊


更妙的是我居然又敗了這可以插到 128 GB 的 DDR 4 * 8插槽 跟 PCI-E * 4 插槽 ... 而且還 128 GB 插好插滿 ! XD


Gigabyte X99P-SLI ... 這板子整個就是超級豐富的 ... 居然附上 960 可以用的 SLI 橋接器呢 !


費了一番功夫 (真的很重) 總算是把機器給搬回了宿舍測試 ... 然後組好測試完還馬上搬去辦公室


右手邊紅色的可是 COUGAR CMX 1000W ... 是的就是 1000W 沒錯 ...



這邊比較囧的是顯卡送的 3-Slot SLI 太短了 .... 得要把卡硬掰才能裝上 ...


但也是用 nvidia-xconfig --sli=on 跟 nvidia-xconfig --multigpu=on 把 SLI 給啟用了 !


同時也再次緊急委託師傅 幫忙再生出一條舊款軟式的 SLI 橋接器 跟 3-Way 的 ! 跪謝 ...
(沐鑫資訊: 台南市東區北門路一段218號2樓,北門商場2樓)



其實會如此瘋狂單純是因為無敵好奇 深度學習 在 分散式單卡 狀況下據說要一定數量才會有驚人效果


而網路上卻 Google 不到如果是 SLI 或者雙卡是否會讓深度學習更快 ?



但至少就是用 nvidia-smi 看到兩張卡會很爽 ... 這樣 ! XD


更囧的是 Google 到的都是遊戲效能 .... 而且沒用也就罷了 ... 還會殘影才是極度觀感不佳啊 !


https://goo.gl/photos/jRXHGiU6ux9ntVmx8

於是 .... 這自以為覺得很 霸王色 霸氣 的 ... 電腦 ... 好像得要 Play 蝦米 Game ... 才能體會效果
更讓人意外的是 https://forums.geforce.com.tw/index.php NVIDIA 官方論壇居然有提供硬體借測的服務啊 ! 實在是整個太高級了吧 !


但是,我就不玩遊戲啊 ! 所以請期待下方測試的每種深度學習套件在單機下計算的效能吧 ...


最重要的一點就是 工欲善其事必先利其器 這句話真的不是唬弄人的啊 !


 另外,多虧多了軟式的舊款 SLI ... 硬是把兩張 960 再合在一起啦 !!! XD


值得一提的是第一次覺得官方網站的論壇居然如此的佛心 ....


NVIDIA Taiwan 官網論壇居然寄一個新的給我測試 ! 天啊 !!!

https://forums.geforce.com.tw/index.php


囧的是 ... 這個板子實在是太詭異了 ... 這種寬度整個好囧啊 !!!


後來上官網再次確認了一下 ...


連問技嘉原廠得到的答案也是有點囧 !!! 0rz



結論是 SLI 在深度學習 (TensorFlow 跟 Caffe 及 DIGITS) 貌似沒有明顯的影響,單或雙卡比較有差



2017/01/13 再補充 ... NVIDIA 官網論壇居然馬上用 FedEx 寄了另一組 4-Slot 的


只能說這個板子實在是設計的太囧了點 ...


就這樣手邊多了很多的 SLI 橋接器 ...


最後再補上一張完整照片 ...






下面就請看相關的測試吧 ...


上圖是 960 * 2 跑 Inception-V3,--input_queue_memory_factor=24 跟 --batch_size=8 ...
2017-01-10 21:21:07.407187: step 70, loss = 1.24 (1.7 examples/sec; 4.719 sec/batch)


上圖一樣是 960 * 2 跑 Inception-V3,--input_queue_memory_factor=30 跟 --batch_size=30 ...
2017-01-10 22:08:02.718467: step 70, loss = 1.18 (1.5 examples/sec; 19.725 sec/batch)



下圖是 1080 * 2 跑 Inception-V3,--initial_learning_rate=0.001 --input_queue_memory_factor=128 --batch_size=50 --max_steps=100
2017-01-10 22:08:26.757580: step 70, loss = 1.29 (60.4 examples/sec; 0.828 sec/batch)



下圖一樣是 1080 * 2 跑 Inception-V3,--input_queue_memory_factor=64 跟 --batch_size=30 ...
2017-01-10 21:08:29.608193: step 70, loss = 1.34 (56.4 examples/sec; 0.531 sec/batch)


至於下圖則是 1080 * 1 一樣是跑 Inception-V3,--initial_learning_rate=0.001 --input_queue_memory_factor=128 --batch_size=50 --max_steps=100
2017-01-11 15:43:56.182922: step 70, loss = 1.27 (60.5 examples/sec; 0.826 sec/batch)

仔細看的話 ... 可以發現 learning_rate=0.001、input_queue_memory_factor=128、batch_size=50 下,兩張卡會比一張卡每 100 個 step 快個 3 秒左右 ... 所以如果是訓練數十萬次時 ... 嗯 ? 應該會是個有趣的數字吧 !


最後呢,如果只是想玩玩 Deep Learning ... NVIDIA 出了一個用 Caffe 的工具超級方便的 !
http://blog.twman.org/2016/09/DIGITS.html


上圖左邊是 960 * 2,右邊是 1080 * 2 ... 下圖一樣左邊是 960 * 1 右邊就是 1080 * 1
可以發現上下互比 960 單卡跟雙卡的差距是 5 小時,1080 反倒只有 2 小時
但如果是左右互比則完全是不廢話的 ... 看不到車尾燈了啊 !
 1080 * 2 的 5 小時是大勝 960 * 2 的 12 小時
1080 * 1 也以 7 小時海放 960 * 1 的 17 小時


當然還有最囧的是一開始還遇上安裝時莫明黑屏,出現 "Input not Supported ",根據實驗這個問題會是因為你的顯卡跟你的顯示器的解析度有關 ... 因為我有試過用 50" 4k 的螢幕是不會有這問題,但用回 1920*1080 的 27" 就一直碰到這問題 .... 解決發法如下

安裝時,選擇 " Install Ubuntu " 後,再按 " e " 進入編輯模式,進入命令行模式,然後去掉 " -- " 後,依照不同顯卡進行不同顯卡驅動選項的添加,然後按下 F10 安裝

1.Intel 82852/82855或8系列顯示晶片:i915.modeset = 1或i915.modeset = 0
2.Nvidia:nomodeset
其他廠牌(如ATI,技嘉):xforcevesa or radeon.modeset = 0 xforcevesa

更囧的是安裝結束後,啟動系統一樣會出現黑畫面 .... 這時要抓緊時間按下 shift 或者 esc 再修改一次 grub ... 同樣找到'''quiet splash'''並在後面加上對應的字 ... 最後按下 F10 就可以順利登入了 ! 
接著就是要 vi /etc/default/grub 進去修改 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 為GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset",最後儲存後再 update-grub ... 應該就解決安裝或者開機時黑屏的問題囉 !!! 記得趕快裝驅動跟ssh !!!!


======== 補充一下 2017/02/23 Tensorflow 1.0 升級 ====== cuda 跟 cudnn 已裝好

教學有以下幾個:




Error 如下幾個:
ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.23' not found (required by /usr/local/lib/python2.7/dist-packages/tensorflow/python/_pywrap_tensorflow.so)

Traceback (most recent call last):
  File "setup.py", line 25, in <module>
    from setuptools import find_packages, setup, Command
  File "/usr/local/lib/python2.7/dist-packages/setuptools/__init__.py", line 12, in <module>
    import setuptools.version
  File "/usr/local/lib/python2.7/dist-packages/setuptools/version.py", line 1, in <module>
    import pkg_resources
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 72, in <module>
    import packaging.requirements
  File "/usr/local/lib/python2.7/dist-packages/packaging/requirements.py", line 47, in <module>
    VERSION_PEP440 = Regex(Specifier._regex_str, re.VERBOSE | re.IGNORECASE)
NameError: name 'Specifier' is not defined

ImportError: cannot import name pywrap_tensorflow

from google.protobuf import descriptor as _descriptor
Import Error: cannot import name 'descriptor'

然後關鍵就是紅底黃字那兩行

apt-get install python-numpy python-dev python-wheel python-mock
pip install -U pip
pip install --ignore-installed setuptools
git clone https://github.com/tensorflow/tensorflow
./configure
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg/
pip install -U /tmp/tensorflow_pkg/tensorflow-1.0.0-cp27-cp27mu-linux_x86_64.whl

正常的過程是這樣哦 !

Processing /tmp/tensorflow_pkg/tensorflow-1.0.0-cp27-cp27mu-linux_x86_64.whl
/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.
  SNIMissingWarning
/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
Requirement already up-to-date: mock>=2.0.0 in /usr/local/lib/python2.7/dist-packages (from tensorflow==1.0.0)
Requirement already up-to-date: numpy>=1.11.0 in /usr/local/lib/python2.7/dist-packages (from tensorflow==1.0.0)
Requirement already up-to-date: protobuf>=3.1.0 in /usr/local/lib/python2.7/dist-packages (from tensorflow==1.0.0)
Requirement already up-to-date: wheel in /usr/local/lib/python2.7/dist-packages (from tensorflow==1.0.0)
Requirement already up-to-date: six>=1.10.0 in /usr/local/lib/python2.7/dist-packages (from tensorflow==1.0.0)
Requirement already up-to-date: funcsigs>=1; python_version < "3.3" in /usr/local/lib/python2.7/dist-packages (from mock>=2.0.0->tensorflow==1.0.0)
Requirement already up-to-date: pbr>=0.11 in /usr/local/lib/python2.7/dist-packages (from mock>=2.0.0->tensorflow==1.0.0)
Requirement already up-to-date: setuptools in /usr/local/lib/python2.7/dist-packages (from protobuf>=3.1.0->tensorflow==1.0.0)
Requirement already up-to-date: appdirs>=1.4.0 in /usr/local/lib/python2.7/dist-packages (from setuptools->protobuf>=3.1.0->tensorflow==1.0.0)
Requirement already up-to-date: packaging>=16.8 in /usr/local/lib/python2.7/dist-packages (from setuptools->protobuf>=3.1.0->tensorflow==1.0.0)
Requirement already up-to-date: pyparsing in /usr/local/lib/python2.7/dist-packages (from packaging>=16.8->setuptools->protobuf>=3.1.0->tensorflow==1.0.0)
Installing collected packages: tensorflow
Successfully installed tensorflow-1.0.0

最後正常的結果要像這樣哩 !!!
python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.8.0 locally
>>> exit()