ai演算法在晶元實現時遇到的核心問題不是計算資源而是儲存問題,強如gpu提供眾多的計算資源,而實際計算能力與計算資源大為降低。
概括來說,儲存問題分為兩個部分,乙個是頻寬問題,乙個是功耗問題,這兩個問題的解決其實也是耦合在一起的。
具體來說,深度學習演算法使用大量儲存資源,即包括靜態模型引數,也包括網路層之間的動態資料。對於靜態模型引數權重,動輒幾十兆上百兆樣本數量,無法在片上sram儲存,因此需要存入外部dram。dram與ai計算晶元間頻寬有限,如果晶元上計算資源很大,但受儲存頻寬的瓶頸限制,實際計算力大為下降。
打比方來說,負責儲存的dram和與負責計算的晶元就像是位於河兩岸的倉庫,整個運算的過程可以模擬從儲存的倉庫搬取資料、搬運過橋,將資料搬入計算的單元進行處理,並高速迴圈往復。而當前的ai晶元技術重點提公升將資料搬入計算單元後的處理速度,但因為搬出資料、過橋的過程基本未傳送變化,因此整體的效率提公升還相對有限。
與之對應的方法即是克服儲存頻寬的手段:一是減少資料量,降低所需資料頻寬,就是說想辦法只要從倉庫搬出少量資料,就可以達到同樣的效果;二是更科學的排程資料使用,提公升排程的效率。
(1)減少資料容量
如果資料量降低了,這將總體上減少對dram的訪問,在dram物理頻寬保持不變的前提下,降低了dram的依賴性,提高了整體效能,同時減少dram訪問也將大幅減少系統功耗開銷。因此首先需要解決的問題是減少靜態引數權重的大小。通常的解決辦法包括引數定點化,將每個32bit浮點數減少為16bit以下的定點數,至少能降低50%甚至75%的儲存容量,也同樣幅度的降低了儲存頻寬的需求。實踐證明16bit定點化可以採用線性量化的方式,而16bit以下定點化根據模型的不同,有些需要採用非線性量化才可以達到維持模型效能的目的。
目前主要有模型剪枝、設計適於終端裝置的簡化網路兩種實現方式。模型剪枝作為進一步降低模型容量和儲存頻寬的方式,是基於神經網路模型存在大量冗餘資訊的基礎,而另一種從源頭開始重新設計適於終端裝置的簡化網路的方式也在逐漸興起,從同樣規模的網路效能來看,新設計的網路可能比舊網路通過剪枝再訓練的方式更為簡單快捷,效能也更好。
(2)更科學的排程資料使用
深度學習的計算大量使用乘累加,即完成axb+c的工作,這種乘累加單元(mac)每次運算需要三個輸入,完成乙個輸出。參與運算的資料報括事先準備好的權重引數和網路層產生的中間資料。每個乘累加完成後的輸出通常也會作為下一次運算的輸入,因此如何排程這些資料成為關鍵。
功耗角度來說,從dram獲取資料所消耗的功耗最大,從sram中獲取資料其次,從本地暫存器中獲取資料消耗功耗最低,但從成本角度考慮剛好相反,因此這三個不同層次的儲存器的使用非常關鍵,我們希望盡可能減少dram的訪問,最理想的結果是僅從dram中讀取一次事先存好的模型引數,而不依賴dram做任何其他工作。
從巨集觀上看,整個深度學習運算計算一次,進入mac的總資料量遠大於靜態資料的容量,因為無論是模型引數還是中間資料都多次被重複使用,因此實際所需的資料頻寬非常大,並且當所有這些資料都僅通過dram被快取使用時,其功耗開銷也是驚人的,因此充分利用各級快取的特性非常重要,設計乙個合理的資料流,將多次被重複使用的資料放在離計算資源較近的地方,少量讀取的資料放在dram中,將提高計算效能,降低系統功耗。
< 二 >
那麼問題來了,如何才能設計一款真正適用於終端的ai晶元。
簡單的設計乙個卷積加速器並不能帶來深度學習計算效能上的提高,合格的計算架構需要結合對儲存問題的分析來設計,不僅要考慮計算架構,也要考慮儲存的資料流控制,因此深度學習的計算特點並非是乙個簡單粗暴的平行計算問題。
首先還是要考慮浮點和定點計算的問題,8 位的整數乘法比ieee 754標準下16位浮點乘法降低 6 倍的能耗,占用的晶元面積也少 6 倍;而整數加法的差異是13倍的能耗與38倍的面積,因此終端ai晶元採用定點計算將獲得巨大收益。當定點成為設計目標的時候,要充分考慮軟硬體的結合,不同網路對定點位數的影響程度是不一樣的,資料量化的具體方式也有差異,有線性量化也有非線性量化的方法,因此針對應用場景結合軟體協同設計非常有必要。
其次深度學習不是簡單粗暴的平行計算但仍然有明顯的平行計算特徵,因此考慮儲存問題後放入更多的計算資源會大幅提高計算效能。首先將最多被重複使用的資料放在接近計算資源的地方,這符合較為流行的in memory computing(儲存計算一體化)的思想,並且考慮到當前工業水平,這更為實際,而通過重新設計包括計算單元的儲存單元或採用reram等方式是未來的 發展方向。
第三要考慮到深度學習資料的另一重要特性,即資料稀疏化特性,也就是說在參與運算的資料中有大量的零值資料存在,這些零值資料即可以在儲存中被壓縮存放,降低儲存容量和頻寬需求,也可以在計算中被進一步排程,減少運算壓力,提高運算的有效效能。這些零值資料不僅存在於模型引數中,也大量存在於神經網路各層運算的中間資料中,這兩方面都需要進行考慮。稀疏資料在多核心平行計算中的排程是個複雜的問題,而不同網路結構也會帶來不同的影響,因此將軟硬體協同設計,動態排程的排程器是非常複雜的設計難點。
最後要考慮針對不同網路的資源有效利用率問題,由於神經網路差異化較大,如果希望針對不同網路都有較高的資源有效利用率,則需要在較細的顆粒度上進行優化,進一步加深了資料流排程器的複雜度。
yandex與現代汽車達成協議,為現代mobis oem部門打造自動駕駛汽車技術
英偉達發布最小ai計算機jetson nano,**99美元
id r&d開發的ai可以區分玻璃破碎的聲音和槍聲
kasisto :歡迎marcus toh 加入,加速亞太地區(apac)發展
Markdown編輯器一覽大全,總有一款適合你
markdown 是一種簡單的 輕量級的標記語法。使用者可以使用諸如 等簡單的標記符號以最小的輸入代價生成極富表現力的文件。markdown具有很多優點 1.dillinger 漂亮強大,支援md,html,pdf 檔案匯出。支援dropbox,onedrive,google drive,githu...
如何打造一款成功的產品
1.我們是做什麼的?2.我們的核心價值是什麼?3.競品的產異化在 我們要做的產品是什麼。滿足什麼使用者人群的什麼需求,我們產品最大的核心競爭力是什麼?與其他同類競品的差異化是什麼?使用者為何要選擇你的產品,而不是選擇其他,如果這些問題都沒有搞清楚,就等於沒有方向。2.我們的直接競爭對手?如果我們發現...
直播培訓選擇小鵝通,豐富場景支援總有一款適合你
隨著網際網路技術的發展以及人們觀念的轉變,越來越多的企業和機構選擇了線上直播培訓。線上的直播培訓不僅是一種趨勢,還為企業和機構節省成本,打破線下課堂的地域限制,實現跨區域協同。直播培訓,選對平台也很重要。小鵝通的直播培訓,多終端學習場景打造專屬知識課堂。選擇小鵝通進行直播培訓,微信h5課堂 微信小程...