為什麼做深度學習的人很多都用Linux?

GerrardTorres


作為一個用了十五年Linux的算法工程師,我來回答下這個問題:

  • 首先說明下Linux的開源帶來的核心優勢

  • 接著分析Linux在深度學習單機環境配置的便捷性

  • 最後分析Linux在深度學習多機領域(服務器)的優勢

結論,Linux是首選環境,對於絕大多數算法工程師來說是必選。


Linux的開源基因,相比Windows和Mac有眾多優勢

目前操作系統市場上基本就三家: Linux, Windows和Mac。 而Linux相比其他兩家,最核心和最根本的不同,就是開源。(Linux的發明者, Linus的一句名言: Talk is cheap, Show me the code. 翻譯過來就是: 廢話少說,放碼過來。)

簡單說, GNU/Linux上的所有軟件,源代碼都是赤裸裸展現給用戶的,而不是一個黑盒。開源性,使得全球碼農研究、貢獻代碼貢獻給Linux,帶來的好處就是:

  • 高度穩定, 即使在低成本硬件上,也高度穩定。以我個人為例, 公司8G內存的筆記本,我用windows收郵件,每次啟動卡的要死。最近自動更新失敗,失敗重試,再失敗,再還原,重啟個三四次,才能進入桌面。交給IT同事,最後給的結論是重裝系統。而用Linux, 一如既往的穩定。
  • 終端工具,解放雙手,使得執行效率提升。 舉個例子, windows中鼠標點來點去,而linux中就是命令敲來敲去。前者不能複製,後者寫個腳本,方便複製,甚至自動調度,可以每天每個固定時刻運行對應的程序。再比如, 一個apt命令,就可以安裝、升級一個或一些列軟件包。而不是想Windows 一樣,每次都要手動下載,手動點擊。
  • 服務器市場,Linux主導。免費、穩定,使得Linux在服務器市場份額巨大。
  • 社區支持。很多開發軟件,tensorflow,torch,docker等,很多都是先支持Linux, 後期再考慮的windows的。

單機深度學習開發環境依賴於GPU, Linux配置速度極快

深度學習的網絡中,各種矩陣運算,動不動就上千維的大矩陣運算,而 Nvidia的GPU能加速這些運算, 在卷積神經網絡上的相比CPU能帶來10倍甚至更高的速度提升。想想,訓練一個網絡,用CPU訓練用30天,而用GPU只需2-3 天。現階段的深度學習個人開發環境,嚴重依賴GPU。

目前深度學習兩大陣營,Google的Tensorflow和facebook的pytorch。 pytorch自帶cuda, 相對簡單些,但google的tensorflow安裝就底層硬件GPU 的配置環境,需要安裝驅動、CUDA、加速庫cudnn。以windows為例,安裝這些軟件,沒那麼簡單,各種依賴關係,有人耗時幾天,也不一定能搞定。而用Linux, 拷貝幾個命令,分分鐘能搞定。


最新Tensorflow 2.0的官網安裝要求:

The following NVIDIA® software must be installed on your system:

  • NVIDIA® GPU drivers —CUDA 10.0 requires 410.x or higher.
  • CUDA® Toolkit —TensorFlow supports CUDA 10.0 (TensorFlow >= 1.13.0)
  • CUPTI ships with the CUDA Toolkit.
  • cuDNN SDK (>= 7.4.1)
  • (Optional) TensorRT 5.0 to improve latency and throughput for inference on some models.


官網的安裝步驟,以Ubuntu 18.04 (CUDA 10)為例: 複製以下幾個命令,安裝就能完成:




對於Windows的安裝說明,原文如下:

Windows setup
See the hardware requirements and software requirements listed above. Read the CUDA® install guide for Windows.
Make sure the installed NVIDIA software packages match the versions listed above. In particular, TensorFlow will not load without the cuDNN64_7.dll file. To use a different version, see the Windows build from source guide.

簡單總結下,請看英偉達的官方CUDA Windows安裝指南。(google工程師的言外之意, 可能是: 情況太複雜了, 你們還是找英偉達吧)


多機服務器環境配置,穩定性、免費性的Linux優勢更突出

GPU價格不便宜,對於公司來說,每個人配置GPU不現實,也不經濟,維護、使用效率也不高。配置GPU的服務器開發和生產環境是必選。每個深度學習算法工程師,相信都希望有一個單機多卡、多機多卡的服務器環境。

高效的訓練環境,對學術和工業界都十分有利。最近深度學習的論文,好多都是在多機多卡上訓練完成(當然Google有自家的TPU),所謂“大力出奇跡”,放進幾百G的文本數據, 在Transformer網絡稍微調整下,在服務器上跑個幾周,效果就出來了。

眾所周知, 服務器領域是Linux的天下。作為雲環境的部署, 容器解決方案 Docker可謂是大名鼎鼎。Docker,是基於Linux的開發的,利用了linux內核的cgroups機制。所以,開始Docker是不支持Windows的。

深度學習的單機環境配置的效率,上一段已經講過。對於幾十臺甚至幾百幾千臺的服務器,用收費的Windows去配置,我想沒有工程師會去做。


平凡科技


碼農喜歡用linux環境。個人覺著還是工作效率的問題,使用linux基本就不需要鼠標了,在鍵盤上可以解決很多問題。而且很多做深度學習的人還涉及到把訓練好的網絡進行部署的問題,一般部署的芯片跑的都是linux環境,就沒必要一臺電腦上安裝上兩個系統了。


分享到:


相關文章: