深度神經網路處理器 DianNao系列

2021-10-09 22:44:59 字數 1406 閱讀 5009

全世界都在學中國話

一次看到這些 *****的名字,是在乙個冰天雪地的,美國東北部偏僻的乙個大學城裡。聽到印度女教授努力的發出『dian nao』的發音,我心中不禁有一種溫暖而自豪的感覺。我們花了整整半節課研究了diannao等一系列的產品。畢竟這一系列*****可以說是開啟了ai加速器的先河了。之後才有了如今ai accelerator百花齊放的局面,真可謂是前人『挖坑』,後人『灌水』。總而言之,這一系列產品尤其是dian nao 和da dian nao在ai加速器發展過程中起到了舉足輕重的作用。異國他鄉能看到祖國的快速發展真是對每個遊子的慰藉。

算術運算部分分成了2-3個stage,對於classifier層:需要有乘法,累加,sigmoid;卷積層同上,pooling層沒有乘法。具體到每一層來說: nfu-3裡包括了2個16bit的mux,1個16bit乘法,1個16bit加法,並且還有乙個小ram用來儲存一些引數,這樣就可以實現絕大多數的後處理計算了。對於儲存部分split buffer,也分成了幾個小模組,包括input buffer,output buffer和synapse buffer。這樣劃分sram的優點在於,1可以提供更適合的頻寬;2.可以避免資料衝突,之前的做法可能是構建乙個n-way associative 的cache,這樣的cache會大幅度的增加讀寫的功耗。

對於輸入和權重的locality的處理是通過dma來實現的。dma會給input

buffer傳送指令,這些指令也會被儲存在fifo中,當所有之前的指令都被issue了之後,fifo裡的指令就會被issue。第

二、通過迴圈input buffer的index,來利用輸入資料的locality。對於輸出資料,如果每次計算完成後就寫入sram,下次計算再讀出來,就會變得非常低效,因此,在npu-2裡加入了buffer,來暫時儲存中間計算的結果。

diannao解決了cnn/dnn演算法在硬體上運算的幾個問題,包括如何有效的重複利用輸入資料,如何增加資料計算時的並行度等。但是仍然存在一些問題,比如運算單元比較少,沒有辦法支援體積更大的網路,因為為了避免重複從llc cache/dram中取資料,在設計sram時,根據相應的演算法設定了上限,如果遇到更大的網路,則可能需要從片外讀寫了。為了適應更大的網路,下一代產品dadiannao提出了相應的解決辦法。dadiannao不僅僅是只有乙個nfu單元,而是用到了16個nfu,以此來增加算力。同時根據不同的演算法,安排不同的nfu進行運算,因此也增加了網際網路絡。具體來說是:1.通過把儲存模組放到需要用到的計算神經元的附近,以此來減小資料搬移需要的實際那和功耗。2.非對稱的結構讓每個節點的footprint更傾向於儲存。3.僅僅傳遞神經元的資料。4.通過把sram劃分成tile來增加頻寬。在具體的interconnection實現中,採用2d mesh。總而言之,dadiannao是在之前的初代版本的基礎上,通過增加網際網路絡,使得整體可以同時支援16個npu進行計算,從而更大的網路可以在其上進行運算。

to be continued

160413 神經網路處理器

霽,男,1983年生,江西南昌人,中國科學院計算技術研究所研究員,博士生導師。同時,他擔任了中國科學院腦科學卓越中心特聘研究員,以及中國科學院大學崗位教授。目前他帶領其實驗室,研製寒武紀系列深度學習處理器。在此之前,他從事國產處理器的研發工作十餘年,先後負責或參與了多款龍芯處理器的設計。他在包括is...

深度神經網路

關於卷積神經網路cnn,網路和文獻中有非常多的資料,我在工作 研究中也用了好一段時間各種常見的model了,就想著簡單整理一下,以備查閱之需。如果讀者是初接觸cnn,建議可以先看一看 deep learning 深度學習 學習筆記整理系列 中關於cnn的介紹 1 是介紹我們常說的lenet為例,相信...

機器學習,深度學習,神經網路,深度神經網路

先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...