當前位置:
首頁 > 新聞 > Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

【大咖Live】 人工智慧與晶元專場第二期,我們邀請到了open AI lab的Tengine產品生態總監高錦煒,帶來了關於《AIOT晶元的發展趨勢與應用落地》的主題直播分享。目前,本期分享音頻及全文實錄已上線,「AI投研邦」會員可進雷鋒網(公眾號:雷鋒網)「AI投研邦」頁面免費查看。

本文對這期分享進行部分要點總結及PPT整理,以幫助大家提前清晰地了解本場分享重點。

分享提綱

1 傳統晶元 VS AI晶元;

2 AI晶元的痛點 -- 從零開始的軟體開發工具;

3 應用開發痛點 -- 晶元碎片化;

4.Tengine開放的AIoT軟體開發平台。

以下為open AI lab的Tengine產品生態總監高錦煒的部分直播分享實錄,【AI投研邦】在不改變原意的基礎上做了整理和精編。完整分享內容請關注【AI投研邦】會員內容。

歡迎大家來雷鋒網參加我的講座,我本次講座主題是AIOT晶元的發展趨勢與應用落地。首先先自我介紹一下的,我叫高錦煒,是open AI lab的Tengine產品生態總監。我之前是嵌入式的AI技術專家,之前曾在arm擔任技術市場經理,負責arm技術的推廣,所以我之前是屬於晶元行業的,所以對AI晶元這一塊了解比較多,然後現在是投身於AI軟體的應用開發與落地,所以也比較懂應用,因此這次給大家分享這個主題。

這次的主題是AIOT晶元和應用落地,不知道大家看到這個標題怎麼想的,其實晶元與應用落地這是跨度非常大的兩件事情,因為晶元是處於技術上面產業鏈上非常上游的技術產品,而商業應用落地則是非常下游的偏商業和工程化的一件事。所以其實兩件事情跨度非常大,我盡量深入淺出給大家解釋清楚當前AI晶元以及落地的一個情況。

首先先給大家解釋一下,AIOT這個詞的話今年應該算是非常熱門的一個詞了,他是AI加LOT的這麼一個概念,AI是人工智慧,LoT是物聯網,那麼Ai+LoT的加起來即,萬物互聯同時的每一個物體它又有一定的AI的智慧能力,能夠進行logo的存儲數據,那麼當AI和LoT技術結合起來的時候,看到會有一個技術的大爆發。所以首先先來給大家分享一則今天看到很有意思的新聞,就是哥倫比亞大學一個博士後斯蒂芬J cook,他在他發表1篇論文地刊登在了nature的封面上面,論文的內容是說他花了八年時間手繪繪製了一個現成的神經的圖譜。

其實這是非常有益的一件事情。是因為目前人工智慧只是神經網路這麼一個科學,其實它最這背後的科學原理,人們並沒有真正地參透,目前人類只是從工程學的角度發現通過仿生學的神經網路,通過這種方式去編程,能達到非常好的效果,那麼就再去使用了,背後的原理其實一直不清楚。那麼這次的話線蟲它的一個特殊點在於就是說它的整體的神經結構非常簡單,它就只有一千個細胞,其中大約1/3也就300個是腦細胞,也就是神經元,然後所有的神經元連接只有7000個,那麼其實是一個對我們來說已經是一個比較簡單的神經網。

通過神經網路結構,300個神經元加7000個神經網路結構,就控制線蟲它的運動飲食,然後屈光閉光,還有升值等等特性,整個生命的體系就這幾百個神經來控制。那麼其實如果說我們能夠通過研究現成的神經系統系統,能夠發現整個神經網路它運行的奧秘的話,對於整個神經網路科學的發展是非常有意義的。這個論文的鏈接就我在PPT里放出來了,大家可以直接搜一下,感興趣的話可以讀一下英文原文,我覺得還是非常有意義的。

好,我們來看一下今天的正題。首先的話我想給大家這邊先簡單的科普一下,什麼是AI計算?因為AI這個詞的話,如果只是通過簡單的媒體上面來看的話,這個詞應該是一個比較高深的。但是因為我今天分享主題是AI晶元的設計與落地,並且這邊的小編要求我說能夠最好講一些比較技術化的落地接地氣的東西,所以我就只能這邊深入淺出的給大家講介紹一下AI計算原理。

Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

接著之前線蟲的例子說它總共有300多個神經元,7000多個神經鏈接,每一個神經元的話,其實就是在看我PPT裡面左上角長成這樣的,大家應該高中或初中生我都學過,就是一個神經元它有很多突觸然後突觸可以接受來自其它神經元的一個新興奮,然後當他接觸到興奮然後並且超過一個閾值的時候,它就會把興奮傳遞給下一個神經元,那麼這就是整個神經網路裡面的最基本的一個單元神經元。

其實這是很有意思的一件事情,就是說就通過有成千上萬,甚至上億個這種神經元的這麼一個連接,能夠就可以讓人類完成非常複雜的,甚至是思考人生哲理這樣的問題。那麼這麼好用的神經元方式的話,那麼我們這一次我們這一波的人工智慧的浪潮裡面究竟是如何去仿生和實現功能的基本原理的話,大家可以看我的PPT裡面左下角這個圖左下角這個圖,這個公式就是可以看到什麼?

這個其實就是一個神經元的數學建模。其實我不太想講公式,但是我相信大家理解這個公式還是非常有必要的!這對理解後面的整體的演講都大家可以看,就是說左下角這個圖裡面,我們可以想像成a1到ak其實它都是來自其它神經元的這麼一個興奮的傳導。然後WE到WK則是對應的是每個神經元它有一個興奮的一個權重值,那麼當你興奮傳導的時候乘以權重值,然後把它累加起來,那麼就是神經元接受到了總體的興奮,當神經元它接收到所有興奮的超過它本身有個閾值之後,那麼它自己就會產生興奮,並且把這個興奮傳遞下去,那麼這是可以看到這個函數最右邊的輸出A值,也就是這邊寫的Z然後通過一個Activation function的方式就是激活函數,當超過某個閾值的時候,它就會輸出A的興奮。

這就是通過以數學的方式來模擬神經元那麼那種興奮傳導。那麼為什麼要等這個公式?因為請大家看一下,就是說這邊Z的計算是通過A乘W1,然後再加上A2乘W2,有非常多的有K個成累加,就是乘法的結果,並且把它累加起來算出那個結果。所以就是說一個神經元它就包含了K個乘累加操作。乘累加這個概念大家一定要記住,因為後面的話會多反覆多次提到這個概念。

左下角這個方框只是解釋了說一個神經元,我剛才提到是說我們線蟲它有300多個神經元,並且是相互連接的,那麼這個連接,就可以看到我PPT右上角那個圖,這個右上角圖的話是可以看到中間每一個小圓圈,無論是藍色、紅色還是綠色,其實就是一個神經元。這個神經元會接受來自於它左邊那一層的各個神經元的刺激,同時它會傳導出興奮下給它右邊的神經元。

可以看到在這張圖裡面的話它有一層一層,每一層有多個神經元,然後通過這種方式就可以產生一個神經元的級聯,它層次非常多,我們管它叫深度,那麼這就是深度神經網路的一個基本的數學模型。可以看到就是說一個神經元它又有K個乘累加,那麼有這麼多神經元它就會有非常多乘累加。所以右上角這張圖就是代表是神經元級別的一個數學建模,在實際應用場景裡面,我們並優化找著這樣的模型,簡單的DNN就是深度神經網路,實際使用的話,我們都會用複雜多的網路,那麼右下角這張圖其實是從非常經典的,就是這一波人工智慧興起的開山鼻祖的論文,裡面摘出來的它的網路結構的拓撲圖。大家可以看到就是說這裡面首先它分了很多層,總共有八層三個五個卷積層,三個全列間層,然後參與層之間都是神經元的鏈接,然後每一層都有幾百個神經元,那麼整個網路它總共有60兆,也就是60個百萬的參數。

整個進行這麼一次前向計算會有720兆的一個複檢操作。720兆附件操作計算完了之後,他可以做什麼?它可以識別,對一張圖像進行分類識別,這是不是一個貓,識別這是不是一個蘋果、一輛自行車、一個汽車等等。就是說這其實是做一個分類操作,是神經網路裡面最簡單的一個操作,因為AlexNet網路有720兆個Flops的操作,這是非常多的一個計算,那麼為什麼要強調這個概念?就是因為在神經網路計算中會有那麼多乘累加操作,所以傳統的計算機形態已經不適合去做這樣的運算了。為什麼不適合這邊再給大家就說就是720兆,那麼假設你用一個1G赫茲的,然後一個周期能做四個乘累加運算的這麼一個cpu的話,它要總共去運行180毫秒,他才能夠進行一次前向計算,180毫秒的話差不多如果你算下來就只有六幀的一個識別速度,那麼在很多應用場景其實是不滿足需求的。

我相信經過這樣介紹的話,大家應該對神經網路計算有一個感性的認識,就是兩點,首先它是模仿神經元的,其次它有非常多的乘累加運算。所以這邊就拋出一個基本的概念,就是說傳統晶元和AI晶元它是一個完全不同的計算機建模的方式,由於它的完全不同的計算方式,所以他要完全不同的一種軟硬體去支持。怎麼說完全不同,我不知道聽眾裡面有多少是計算機體系結構背景的,我是學數字電路和邏輯學計算機體系結構,就是學cpu設計出身的,那麼我從大學開始學習的與或非門,通過那種邏輯操作去實現複雜邏輯。

Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

那麼大家可以看,就是說在我的PPT裡面,左半部分的話基於就是一個傳統的晶元,它最基本的一個計算單元就是非門與門或門,然後通過這樣的邏輯單元,我們去拼接出加法器、乘法器、除法器,或者是存儲器,然後再通過加減乘除的邏輯分支跳轉進行程序的運算,然後通過整個程序的控制,也是通過順序循環分支,大家如果學過C語言C++這種最基本的程序設計方法,從整個計算機結構,從馮諾依曼當年提出計算機理論,也就從40多年起前起,就是一直遵循這套理論,通過順序循環分支的方式來增加複雜度完成各種各樣複雜功能。那麼採用這種傳統計算機方式,它的優勢在於它計算精度很高,由於它數字電路去實現的,所以它裡面0就是0,1就是1,所以它適合邏輯運算和算術運算。神經網路計算剛才前面給大家介紹過,他是完全另一套不同的計算方式,它的基本運算單元是一個並行的帶權重的非線性激活的神經元,然後它的編程模型也不是像傳統計算機一樣的順序循環分支,而是一個靠計算圖層的拓樸結構設計,以及裡面海量的可調的參數,還記不記得前面AlexNet多少層,他有60兆個參數在裡面。

靠著海量參數你去調整,來設計各種神經元進行工作。那麼整個編程複雜度也是體現在調參上面,其實有一個比較好笑的,就是說現在做演算法的人,他們都會自稱自己是練單式或訓模式,就是在不停的調參數,調參數這件事情又是一個比較玄學的,理論基礎不是非常強的,所以有點靠運氣有點像煉丹一樣。然後神經網路演算法的優點是容錯性很好,像某個審計員工作不正常了,但是由於它有一個比較好的變形機制,這樣的話,它即使一其中某個神經元工作不正常,他仍然能夠很好的work,並且比較適合模式識別。

它有一個特點是說,由於其實按照正常情況來說的話,神經網路應該是一種非常高效計算模式,因為大家可以想像我們人腦其實也就總共加起來,生物學上也才兩瓦的功率,但是可以進行非常計算複雜。但是在晶元上面去做AI計算,完全不是採用生物這套模式,而是採用傳統計算機還是用與或非門邏輯搭出來的乘法器、乘加器,來模擬神經網路信號傳輸,這導致了需求算力的爆炸,因為一個神經元我們可能就要有N個乘法乘加操作。

Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

因為有這樣的算力爆炸,所以就有了開發專門的AI晶元需求。這邊的話我給大家放三張圖,分別是CPU、 DSP 、GPU,還有現在在神經網路處理器裡面非常常見的陣列。這三種分別代表了現在去做神經網路計算這麼一個實現構架。

首先先回答一個問題,其實現在大家有個共識,就是說傳統cpu是不怎麼合適拿來做AI計算的,這是為什麼?其實從原理上來說的話,從圖裡面就很容易能夠看到。前面我提到就是說神經網路計算裡面就是有大量的乘加操作,乘加操作在cpu裡面的話是由算術這單元去進行運算的,在左下角框裡面右上角,由綠色部分AIU去進行乘加操作的,那麼一般cpu裡面乘加的單元數量,像普通ARM cpu,像比如說cos A72,它裡面的話,它成交單元一個周期只能做四個乘與加,但是如果說你做整形的話可能會多一些,你有八位整形的話能做八個。

因為CPU它主要目的是做通用控制,所以你看它花很多的硬體邏輯在控制上面,所以就看到晶元面左邊有藍色,這部分有它很大一部分的控制單元在裡面。其實就是說在CPU裡面由於有它有大量的邏輯在進行做控制運算,而真正做乘加運算的邏輯部分的綠色部分就很少,導致用CPU去做乘加運算效率不高。所以大家都說坐用CPU去做AI計算不合適,其實大量的伺服器PC都是在用GPU做AI計算的,那麼看就是中間這張圖。、

GPU的設計特點是有大量的小的單元,簡單的ALU就是綠色部分,有大量的小的單元去做計算。但同時它的控制邏輯會非常小,可以看到左側藍色和黃色部分,所以用GPU做AI計算比CPU高很多,不過大家認為GPU算力很高,其實是只有是桌面級的NV的GPU,它的算率會非常高。

它的算率高是因為NV的gpu裡面做了通用設計的進行優化,所以它是可以做通用計算的。那麼而如果在嵌入式側的arm的gpu裡面,由於它在一個在電源非常緊的一個環境裡面,因為手機裡面用電池的,所以它的主要功能還是做圖形渲染玩遊戲用的,裡面有大量邏輯是做圖形的,真正可以用作通用計算的部分的單元其實也沒有非常多。

然後同時由於整體的功耗限制,在arm晶元裡面的arm的gpu合同,和同一塊晶元裡面另一個CPU,它的算力其實是差不多是一個level的,最多高一倍,但還是一個數量級的這麼一個概念。那麼其實這邊也剛剛就提到說gpu裡面的話它其實有兩個功能,一部分功能可以做通計算,一部分是做圖形處理,那麼如果我們拿GPU做通用計算的話,圖形處理這部分的邏輯其實就是浪費了,所以gpu的效率其實也不是最高的。

那麼其實現在有一些NPU的設計,專門做神經網站去設計的話,它的一個很簡單出發點邏輯,就是把gpu裡面與圖形相關的部分去掉,那麼通過這種方式直接把一個GPU改造成一個做AI計算的NPU。用GPU去做AI計算,其實仍然效率不是最高的,因為因為gpu是一個大規模可編程的一個通用計算的單元,並沒有針對AI的這種大規模乘加運算再去做進一步優化。

這邊的話就得要提示說,如果針對AI這種計算剛剛提到大規模的乘加運算,其實最後都可以把它轉化為二維矩陣相乘。矩陣相乘的話,計算方式是採用脈動陣列,即dataflow數據流這種方式,通過設計一堆乘加器來進行計算。好處是它把控制邏輯簡化到了最低,充分利用了矩陣相乘的每個去乘加這麼一個特性,那麼大幅度簡化了他的控制邏輯,這樣可以導致整個乘加器的效率非常高,你可以看到整個晶元裡面幾乎全都是乘加器,控制邏輯就很少。

右邊脈動陣列,假設每一個小方框可以理解成一個乘加器,假設是一個100×100的size的話,它就有1萬個乘加器了。我們再回想一下,剛才我們就八個乘加器.八和一萬就是好幾個數量級的差距。剛剛只是從理論上解釋,現在說一下實際產業裡面,AI加速器晶元的話,它是採用哪種方案多?最早AI加速器有些是採用專用電路設計的,可以看到最右上角的數據脈動陣列,像谷歌的GPU一代是採用這種構架的。

Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

由於AI產業一直在變化更新中,所以只解決了卷積並不夠。實際應用行業裡面往往會有各種各樣的其他運算元,其他運算元又會不斷有更新出來,最後要求硬體一定是一個可編程的。所以結合了脈動陣列做卷積這種高效和可編程的需求,那麼目前基本上所有的AI加速器的設計已經基本上殊途同歸了,採用兩者結合,一塊晶元裡面的既有可編程部分,可以是一個前面提到了把GPU把圖形部分裁剪掉來實現,也可以通過是另一種就是通過DSP的方式來實現。

本文為部分內容和PPT,完整內容和PPT查看可進入雷鋒網「AI投研邦」查看;(AI晶元研究報告即將出爐,會員可免費觀看)

Live回顧|OPEN AI LAB:AIOT晶元的發展趨勢與應用落地

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

深度學習最強資源推薦:一文看盡 GAN 的前世今生
全面輸出清華 AI 技術,這家公司的出現為了孵化更多 AI 獨角獸

TAG:雷鋒網 |