隨著深度學習的發展,神經網絡模型也越來越復雜,那么移動/嵌入式端該怎么深度學習呢?怎么樣的模型才能算深度學習呢?粵嵌嵌入式培訓為你解答。
常用的模型中VGG系列網絡的計算量可以達到30-40 GOP(1GOP=109運算)。這些神經網絡通常運行在GPU上,但是如果我們要在移動/嵌入式端也實現深度學習,那么這樣巨大的模型是跑不動的。移動/嵌入式端的計算能力往往只有桌面級GPU的1/100到1/1000,換句話說在GPU上一秒40幀的深度學習CV算法在移動/嵌入式端一秒只有0.04-0.4幀,這樣的性能會極大影響用戶體驗。
在移動/嵌入式端跑深度學習模型,除了運行速度之外,能效比也是關鍵指標。能效比指的是一次運算所需消耗的能量,它決定了移動/嵌入式端運行深度學習算法時電池能用多久。能效比與深度學習模型息息相關,我們下面將會看到深度學習模型的大小會決定運行算法時的片外內存訪問頻率,從而決定了能效比。
怎樣的模型才能算深度學習呢?為了深度學習模型時不僅要看模型計算量還要看模型大小。模型計算量是衡量深度學習是否適合在移動或嵌入式端計算的重要指標,通常用GOP單位來表示。例如,流行的ResNet-18的計算量大約是4 GOP,而VGG-16則為大約31 GOP。移動和嵌入式端的硬件計算能力有限,因此模型所需的計算量越大,則模型在移動端運行所需要的時間就越長。
為了能讓使用深度學習的應用順暢運行,模型運算量當然是越小越好。除此之外,深度學習每次運算都是需要花費能量的,模型運算量越大則完成一次inference需要的能量也就越大,換句話說就是越費電。在電池量有限的移動和嵌入式端,模型一次inference所花費的能量必須精打細算,因此深度學習模型計算量不能太大。
深度學習模型大小主要決定的是該模型做一次 inference 所需要的能量。那么模型大小與inference所消耗的能量有什么關系呢?首先,我們知道,深度學習模型必須儲存在內存里面,而內存其實還分為片上內存和片外內存兩種。
因此,我們為了減小能量消耗,必須減少片外內存訪問,或者說我們需要盡可能把模型的權重數據和每層的中間運算結果存儲在片上內存而非片外內存。這也是為什么Google TPU使用了高達28MB片上內存的原因。
然而,移動端和嵌入式系統使用的芯片不能成本太高,因此片上內存容量很有限。這樣的話我們就必須從深度學習模型大小方面想辦法,盡量減小模型尺寸,讓模型盡可能地能存儲在片上內存,或者至少一層網絡的權重數據可以存在片上內存。
對于移動/嵌入式端的深度學習,相信大家已經了解了。選擇一個好的平臺,可以改變人生,來粵嵌嵌入式培訓學習,這里會讓你的在嵌入式之路走得越來越寬。