天天看點

深度學習之相關硬體知識總結

       俗話說得好,工欲善其事必先利其器,想要學好深度學習,你必須擁有足夠的算力,否則一切都隻是停留在紙上談兵了。下面就自己了解的進行以下總結:

(1)算力---處理單元

      人工智能的實作需要依賴三個要素:算法是核心,硬體和資料是基礎。 算法主要分為為工程學法和模拟法。工程學方法是采用傳統的程式設計技術,利用大量資料處理經驗改進提升算法性能;模拟法則是模仿人類或其他生物所用的方法或者技能,提升算法性能,例如遺傳算法和神經網絡。 硬體方面,目前主要是使用 GPU 并行計算神經網絡。

       從産業結構來講,人工智能生态分為基礎、技術、應用三層。基礎層包括資料資源和計算能力;技術層包括算法、模型及應用開發;應用層包括人工智能+各行業(領域),比如在網際網路、金融、汽車、遊戲等産業應用的語音識别、人臉識别、無人機、機器人、無人駕駛等功能。

       CPU、GPU 和 TPU 是常見的處理單元,具體差異比較如下:

  • CPU出現于大規模內建電路時代,處理器架構設計的疊代更新以及內建電路工藝的不斷提升促使其不斷發展完善。從最初專用于數學計算到廣泛應用于通用計算,從4位到8位、16位、32位處理器,最後到64位處理器,從各廠商互不相容到不同指令集架構規範的出現,CPU 自誕生以來一直在飛速發展,CPU比較适合串行計算。
  • GPU(圖像處理單元)是英偉達(NVIDIA)制造的圖形處理器 (GPU)專門用于在個人電腦、工作站、遊戲機和一些移動裝置上進行圖像運算工作,是顯示卡的“心髒”。就目前來看,GPU不是完全代替CPU,而是兩者分工合作,GPU特别适合大規模并行運算。
  • TPU,即谷歌的張量處理器——Tensor Processing Unit。TPU是一款為機器學習而定制的晶片,經過了專門深度機器學習方面的訓練,它有更高效能(每瓦計算能力)。大緻上,相對于現在的處理器有7年的領先優勢,寬容度更高,每秒在晶片中可以擠出更多的操作時間,使用更複雜和強大的機器學習模型,将之更快的部署,使用者也會更加迅速地獲得更智能的結果。
  • FPGA,即現場可程式設計門陣列,它是在PAL、GAL、CPLD等可程式設計器件的基礎上進一步發展的産物。作為專用內建電路(ASIC)領域中的一種半定制電路而出現的晶片,既解決了定制電路的不足,又克服了原有可程式設計器件門電路數有限的缺點。系統設計師可以根據需要通過可編輯的連接配接把FPGA内部的邏輯塊連接配接起來,就好像一個電路試驗闆被放在了一個晶片裡,可以作為一種用以實作特殊任務的可再程式設計晶片應用與機器學習中。

(2)怎麼選擇算力

這裡可以參考華盛頓大學博士Tim Dettmers結合競賽經驗給出的GPU選擇建議,可以結合自己的情況進行選擇,

深度學習之相關硬體知識總結

性能最好的GPU:RTX 2080 Ti

成本效益高,但小貴:RTX 2080, GTX 1080

成本效益高,同時便宜:GTX 1070, GTX 1070 Ti, GTX 1060

使用的資料集>250GB:RTX 2080 Ti, RTX 2080

預算很少:GTX 1060 (6GB)

幾乎沒預算:GTX 1050 Ti (4GB)/CPU(模組化)+ AWS/TPU(訓練)

參加Kaggle競賽:GTX 1060 (6GB)(模組化)+ AWS(最終訓練)+ fast ai庫

有前途的CV研究員:GTX 2080 Ti; 在2019年更新到RTX Titan

普通研究員:RTX 2080 Ti/GTX 10XX -> RTX Titan,注意記憶體是否合适

有雄心壯志的深度學習菜鳥:從GTX 1060 (6GB)、GTX 1070、GTX 1070 Ti開始,慢慢進階

随便玩玩的深度學習菜鳥:GTX 1050 Ti (4或2GB)

      計算顯示卡的主要性能名額:

1、CUDA compute capability,這是英偉達公司對顯示卡計算能力的一個衡量名額;

2、FLOPS 每秒浮點運算次數,TFLOPS表示每秒萬億(10^12)次浮點計算;

3、另外,顯存大小也決定了實驗中能夠使用的樣本數量和模型複雜度。

      由于想要利用nvidia的顯示卡進行加速,一般需要同等配置cuda加速器,這裡可以參考我的另一篇部落格,至于顯示卡的選擇還是結合自己的情況進行選擇吧!

(3)算法---架構的選擇

      現在市場上的深度學習架構呈現百家争鳴的态勢,各家公司都想在人工智能的浪潮中分一杯羹,

深度學習之相關硬體知識總結

     除了上面常見的tf、torch等深度學習架構外,在國内BAT等大廠也紛紛推出了自家的産品,下面就來簡單總結以下,

  • 百度paddlepaddle:這算是國内最成熟的一個架構了,百度最早在人工智能領域的布局使得他們在國内這一塊也走的最遠,飛槳同時支援動态圖和靜态圖,能友善地調試模型,友善地部署,非常适合業務應用的落地實作。飛槳也已經支援數百個節點的高效并行訓練。可以說在過去2年的時間裡,深度學習領域在大規模的落地應用,各家架構也都在快速的發展,但是百度的飛槳看來是這個階段發展更快的架構,甚至是發展更快的AI開發生态。
  • 騰訊ncnn,這是一個為手機端極緻優化的高性能神經網絡前向計算架構,無第三方依賴,跨平台,手機端 cpu的速度快于目前所有已知的開源架構。
  • 阿裡X-DeepLearning,主要是針對面向廣告、推薦、搜尋等高維稀疏資料場景,填補TensorFlow、PyTorch等現有開源深度學習架構主要面向圖像、語音等低維稠密資料的不足。
  • 華為MindSpore,結合自家的昇騰晶片,華為在這一塊的布局開始快速發力。
  • 清華大學Jittor,是一個采用元算子表達神經網絡計算單元、完全基于動态編譯(Just-in-Time)的深度學習架構,其主要特性為元算子和統一計算圖。在程式設計語言上,Jittor 采用了靈活而易用的 Python。使用者可以使用它,編寫元算子計算的 Python 代碼,然後 Jittor将其動态編譯為 C++,實作高性能。
  • 一流科技OneFlow:其Actor機制和SBP機制,在計算圖中顯式表達了資料搬運,而且在靜态分析時同等對待資料搬運和資料計算,以最大化重疊搬運和計算。

      綜上所述,要想在深度學習這塊有所作為,根據自己的情況進行算力和算法的選擇,和自己情況适配最好的才是最棒的!

參考連結:

http://www.elecfans.com/baike/zhujipeijian/cpu/20160530420687_a.html(GPU/CPU/TPU都是啥?有何差別?)

https://lambdalabs.com/blog/best-gpu-tensorflow-2080-ti-vs-v100-vs-titan-v-vs-1080-ti-benchmark/

https://blog.csdn.net/weixin_33690367/article/details/89586323(GPU、TPU、FPGA,三大AI晶片“争奇鬥豔”)

https://blog.csdn.net/zhang43211234/article/details/80953080(主流深度學習架構對比)

https://blog.csdn.net/zengNLP/article/details/105003287(盤點國内那些深度學習架構)

https://baijiahao.baidu.com/s?id=1674125095056974700&wfr=spider&for=pc(oneflow)

繼續閱讀