我跑的作業系統是 windows 10,硬體安裝的過程不談,tensorflow-gpu 的安裝方式也不談,大家 google 一下應該都可以找到。我們直接看實驗的硬體平台,首先是 CPU 的部分,這個以 cpuz 的畫面就可以明白:
我查了一下,Intel Core i5 4460 的發布日期是 2014 年五月,可見得這部電腦的歲月頗高。我們再看看 GPU:
也查了一下 GTX 1060 的發布日期,居然是 2016 年七月,比 CPU 新的兩年。據說跑機器學習,RAM 的大小也很重要(等一下也會說一下實驗的情形),請第二張圖可以看出顯卡的記憶體是 3GB。既然顯示了 GPU 的記憶體大小,我們也看一下 CPU 的記憶體大小:
從圖中可以看出,記憶體是 8GB,但是等級比 GPU 差了些。在機器學習的領域中,大家都知道跑機器學習的程式,最耗時間的是在學習的階段,而加上顯卡的目的就在於減少電腦跑得時間,因此我寫這一篇文章的目的在於讓大家了解"加上顯卡之後,究竟能幫你現有的電腦減少大約多少時間"。(如果時間不重要,或許就不必投資大筆金額到這裡;當然你心裡真正想的可能是"可以玩遊戲玩的比較爽")
首先我們取用Using a GPU裡面的那一段程式碼進行實驗,我們先執行 python matmul.py gpu 10000,其中 matmul.py 即代表網頁中的那一段程式碼,其執行結果如下圖:
大概地說,這個程式利用 GPU 跑了一個 10000x10000 陣列的相乘,只需要兩秒多一點點的時間;印象中,效能視窗的值幾乎沒變,但是使用記憶體的部分卻是一瞬間有增加的情形。我們把同樣的程式以 python matmul.py gpu 10000 執行一次,其結果如下:
這一次所需要執行的時間明顯增加,從圖中可以看出,居然要 24 秒多才跑的出來,而且印象中,效能視窗在 CPU 的使用率幾乎都在 100%。寫到這裡,我稍微整理一下:
1. 以 GPU 來跑陣列的乘法,GPU 的速度是 CPU 的十二倍,相當驚人。
2. 我的顯卡只有 3GB,會不會有影響?以我的顯卡,我最多只能跑到 12500x12500 的陣列相乘,一旦超出,tensorflow-gpu 會回傳 "out of memory" 的錯誤訊息;也就是說,你的資料龐大的話,你的程式將受到影響。
看到這裡,已經準備跑出門去買一片顯卡了嗎?先等等,有興趣的話請繼續看 Part 2。
沒有留言:
張貼留言