深度學習工具caffe在windows上的性能表現真的沒有在Linux上好嗎?

聽到有些人說caffe for windows不能做dl研究,原因是速度慢。請問,分別考慮使用cpu計算和使用gpu計算兩種情況時,caffe在windows上的性能真的不如在Linux上嗎?

---

我個人在兩台電腦(一台裝windows,另一台是centos)上配置、運行過caffe,但沒進行過對比,都使用gpu時沒感覺速度有明顯區別,到底速度有沒有影響,還請大神指點!


個人感覺不會有啥本質差別。

如果有差別的話,那基本上就可能是:

(1) 你用的底層數學庫不一樣,而這些底層數學庫的速度不同。比如說Atlas和MKL,一般MKL完勝。

(2) 你用的編譯器優化能力不同。不過現代編譯器其實對於caffe這樣運算邏輯比較簡單的代碼的優化基本上已經沒有啥差別了,所以更有可能是下一條。

(3) 你開的優化選項不一樣。比如說開-O0和-O3,或者開-mavx和不開avx,速度甩幾條街是分分鐘的事情。

另外@王峰 提到的Cudnn的問題,傳說NVIDIA在Windows上的Cudnn沒有用心跑優化,也有傳說NVIDIA CUDA的Windows驅動沒有用心寫。。。這個個人沒有驗證過,不過如果是真的話也不奇怪了。


Windows上顯存分配需要通過dxgkrnl(具體是在dxgmms里,不是用我名字命名的,不是用我名字命名的,不是用我名字命名的),而Linux上是廠商驅動完成的。所以對於NV來說,在Linux上制約更少,可以做更多黑科技的事情。而Win上每次分配都要多至少2次系統調用,換取的是穩定性和安全性。當年Vista改成這樣的驅動模型後,NV的驅動人員和MS的圖形組還經常因為此事撕逼。

CUDA驅動本身都是直腸子,倒沒太多區別。


性能我感覺差不多,如果你想測試,就把happynear的版本也編譯一下,找兩台性能差不多的機器試試就知道了。其實性能我感覺跟caffe框架或操作系統關係不大,跟模型關係很大,比如微軟的deep residual,訓練的時候你可能需要準備6GB內存,時間也長,當然準確度高,而google net就少的多。識別也是類似的。用哪個操作系統,關鍵取決於你做什麼應用,如果是單機版客戶端應用,那當然是windows方便,如果是伺服器,一定得用linux,因為可用的資源很多,如果做二次開發,把很多時間都耗在移植上就不值當了。其實兩者都可以用,看你做什麼了,我就是兩頭都吃,基於caffe開發了深度學習伺服器,用於識別各種物體和標識,目前大約有20來種識別功能,就是在linux上開發;單機版的人臉驗證,我就基於windows開發。讓他們各就各位,和諧相處,豈不美哉!不過說句題外話,如果沒有跟識別場景類似的海量數據,建議不要考慮深度學習,SVM有時候還准一些,但關鍵不需要很多樣本,訓練和識別都方便快速,比如識別寶馬車標,20張就夠了。


謝邀

我並沒有在windows下面跑過caffe,不知道速度如何。

關於在Linux下面,你可以對caffe本身做很多優化的,比如在數據並行的優化時,可以去做一些計算和通信的overlap;模型並行時,針對一些特殊的應用場景(比如人臉識別等),可以對fc層、softmax這樣的層做一些模型並行工作(如果你用的cudnn的話,就需要你自己對caffe引擎下的softmax的kernel做優化了,caffe引擎的softmax里的kernel和cudnn的kernel速度差異還是很明顯的,實際上也是可以做到接近cudnn引擎下的速度的)。


理論上在使用最新版本的cuda和cudnn的前提下,你無法再windows10和vs2015的環境下配置caffe,除非你改caffe的底層編譯代碼,caffe是伯克利的哥們們寫的,既然他們沒有寫windows版本的自然是有道理的,而且微軟在github上維護的caffe已經很久不更新了,這樣的話怎麼看windows版本的caffe只能是用舊系統舊配置給新手練手用的,如果你非要在windows上熟悉deeplearning的過程那不如用微軟的CNTK,看看代碼也是一樣的。而且這兩者的好壞,我就不做評論了,我是軟黑,怕引戰。。。

更改一下答案,github上發布了vs2015的caffe版本,但是我在測試的時候發現了編譯文件中有大量的相關性bug需要修復,建議不想自己折騰的可以再等等,一月底我相信大概率就是比較完善的版本了,雖然感覺沒什麼人關注這個項目,也就沒什麼貢獻度,進度比較慢也無可厚非了


GTX970M

MNIST WIN10實測68秒 使用ATLAS VS2013編譯

UBUNTU14.04實測3分多 使用MKL

均未使用cuDNN

第一次近距離接觸caffe的老大 膜


昨天剛剛做過實測,自己編譯出來的ubuntu16.04 +cudn8.0+cudnn5.1+caffe跑一次VGG16前向傳播平均要3s,花了10分鐘下載了一個別人編譯好的windows caffe cudn版本,跑一次VGG16前向傳播只要0.7s,ubuntu17.04下apt直接安裝caffe-cudn跑一次要9s左右 ,顯卡驅動都是英偉達386最新的


安裝完了以後測試跑mnist 我記得好像win10是40s的樣子,Ubuntu是30s的樣子


windows下的theano 比linux下慢了一倍,早知道不費那麼多功夫裝windows的了。。。


你好,最近在嘗試在windows環境下用cmake編譯caffe,然後通過cmake將caffe添加到自己的項目。但解決方案生成後編譯時gtest文件下的gtest.h中會出現錯誤,樓主有遇到過嗎?


推薦閱讀:

從 X86 到 ARM 的移植,為什麼 Windows 的兼容性看起來沒有像Linux、OS X那樣好?
web後端攻城獅要學linux嗎,一般要學到什麼水平呢?
關於linux目錄刪除的問題?
Linux 伺服器有必要開啟 iptables 防火牆么?
Linux文件系統的核心結構?

TAG:MicrosoftWindows | Linux | 機器學習 | 深度學習DeepLearning | Caffe深度學習框架 |