AI芯片設(shè)計(jì)與開發(fā)概覽
2018-12-09 10:27:03 csdn作者:自由飛翔111
來源:CSDN
原文:https://blog.csdn.net/shooter1098/article/details/82057420
0. 引言
AI發(fā)展及其意義:
學(xué)術(shù)界和產(chǎn)業(yè)界對(duì)于人工智能的研究由來已久,但直到近期的2006年,伴隨著CNN、GPU加速和海量數(shù)據(jù),人工智能才伴隨著機(jī)器學(xué)習(xí)(Machine Learning)/深度學(xué)習(xí)(Deep Learning)的分支再次起飛,這一次,飛到現(xiàn)實(shí)應(yīng)用。谷歌AlphaGo打敗人類最高棋手使得人工智能引起普通民眾的注意。
深度學(xué)習(xí)為現(xiàn)實(shí)世界普遍存在復(fù)雜非線性問題提供了一種通用框架——不是寫程序,而是通過框架和大量的數(shù)據(jù)經(jīng)過高性能計(jì)算進(jìn)行求解(訓(xùn)練和預(yù)測)。深度學(xué)習(xí)更加接近人類智能,并且有人類智能無可比擬的一些優(yōu)越性,這為從現(xiàn)實(shí)世界已有的大量數(shù)據(jù)中挖掘價(jià)值提供了有效的手段。
本文:
- 分析人工智能在具體實(shí)現(xiàn)上的3個(gè)特點(diǎn)
- 探討AI芯片設(shè)計(jì)和開發(fā)的6個(gè)挑戰(zhàn),以及相應(yīng)的產(chǎn)業(yè)界方案、發(fā)展趨勢。
1. AI實(shí)現(xiàn)的特點(diǎn)
1.1 AI屬于典型的計(jì)算密集型應(yīng)用
AI以密集運(yùn)算為主,典型的是向量點(diǎn)積,基本單元是乘累加(MAC),動(dòng)輒在TFLOPS量級(jí);且對(duì)于數(shù)據(jù)帶寬要求高,相應(yīng)的運(yùn)算延時(shí)要求主要在應(yīng)用級(jí),不像CPU一樣敏感。
典型的通用處理器以ALU為中心,構(gòu)建外圍控制、中斷和異常處理電路;為了高性能處理單元能夠填滿流水和快速運(yùn)轉(zhuǎn)構(gòu)建亂序和預(yù)測、cache等機(jī)制,為了對(duì)于事件快速響應(yīng)。然而運(yùn)算能力不強(qiáng),并且整個(gè)芯片運(yùn)算所占的面積比重也很少。
高性能運(yùn)算的一個(gè)極端情況是全硬件并行實(shí)現(xiàn),對(duì)于10點(diǎn)的點(diǎn)積運(yùn)算運(yùn)用多個(gè)MAC并行計(jì)算;所以計(jì)算速度快但是面積消耗也很大。
AI算法以CNN、RNN等為主干,分支眾多;同樣的算法體制,其具體參數(shù)(層數(shù)、寬度等)也不一樣;AI算法本身在不斷的演進(jìn);AI算法優(yōu)化的一個(gè)方向是稀疏矩陣處理、低運(yùn)算精度實(shí)現(xiàn)高精度類似的性能。
然而,芯片設(shè)計(jì)的投入高、周期長、風(fēng)險(xiǎn)高;要讓芯片開發(fā)能夠應(yīng)對(duì)算法多樣化和快速演進(jìn)的挑戰(zhàn),需要一款芯片能夠應(yīng)對(duì)不同類型的應(yīng)用需求,這對(duì)于芯片的靈活性提出挑戰(zhàn)。
鑒于上面的兩個(gè)挑戰(zhàn),AI芯片設(shè)計(jì)從算法開始,經(jīng)歷架構(gòu)設(shè)計(jì)、邏輯設(shè)計(jì)和驗(yàn)證、物理設(shè)計(jì)和驗(yàn)證。對(duì)于芯片開發(fā)和應(yīng)用方法,乃至處理器架構(gòu)和編程提出了挑戰(zhàn)。
2. AI芯片開發(fā)挑戰(zhàn)、現(xiàn)狀和趨勢
2.1 基于算法框架實(shí)現(xiàn)算法和芯片設(shè)計(jì)的接口
AI芯片的涉及到算法、軟件、硬件三個(gè)專業(yè)方向,為了有效的分工和協(xié)作、實(shí)現(xiàn)相互之間的可移植性,界面的劃分和定義很重要。
應(yīng)用層面見到的無非是訓(xùn)練和測試數(shù)據(jù),模型選擇和基本參數(shù),理想情況下解決方案可以自動(dòng)有效完成訓(xùn)練和預(yù)測,正如當(dāng)今沒有體系結(jié)構(gòu)和編程語言基礎(chǔ)的的用戶可以快速掌握和使用office軟件。而下層實(shí)現(xiàn)當(dāng)今深度學(xué)習(xí)的主流算法,并且具有一定的可配置性和可調(diào)試性。這部分在業(yè)界有多個(gè)算法框架,典型的如谷歌的TensorFlow、亞馬遜的cafee等,也有在這些框架之上構(gòu)建的封裝更好的平臺(tái)如Keras。
框架的相互交互和底層實(shí)現(xiàn)多種多樣,平臺(tái)不同實(shí)現(xiàn)方案也不同。一個(gè)有益的工作是定義中間層格式(IR),IR的一個(gè)重要基礎(chǔ)是核心算子。這里有ONNX、NNVM等。
前文提到,AI芯片密集型運(yùn)算和可編程性的要求,普通處理器不能夠有效應(yīng)對(duì),需要大規(guī)模并行計(jì)算。
FPGA和GPU相對(duì)于普通的CPU和DSP更加折中實(shí)現(xiàn)并行性和可編程性。然而,FPGA核心是LUT,實(shí)現(xiàn)相同功能所需的器件面積遠(yuǎn)大于ASIC,同時(shí)運(yùn)行頻率受限。GPU是傳統(tǒng)技術(shù)中最適合可編程并行運(yùn)算的,但是GPU本質(zhì)上是為了圖像處理構(gòu)建,架構(gòu)與通用并行計(jì)算仍然有不少的距離;雖然GPGPU針對(duì)通用計(jì)算做了一些優(yōu)化,但是仍然有不少的差距。
通用可編程并行計(jì)算最適合的是流處理器和可重構(gòu)處理器。早些年在尋求突破傳統(tǒng)處理瓶頸的時(shí)代不少學(xué)術(shù)和產(chǎn)業(yè)界項(xiàng)目做過嘗試,但是當(dāng)時(shí)對(duì)于高性能計(jì)算的要求并不普遍、不迫切所以沒有有效的發(fā)展。隨著AI對(duì)于計(jì)算的需求,這些技術(shù)正如深入學(xué)習(xí)算法走上算法舞臺(tái)一樣,走向架構(gòu)設(shè)計(jì)舞臺(tái)。
具體來說,很多原本只是探索的技術(shù)會(huì)走上AI架構(gòu)設(shè)計(jì)的舞臺(tái),傳統(tǒng)的程序優(yōu)化技術(shù)會(huì)普遍應(yīng)用的架構(gòu)設(shè)計(jì)。如深度流水、并行計(jì)算、數(shù)據(jù)局部性原理相關(guān)的局部存儲(chǔ)、延時(shí)隱藏、循環(huán)展開等。后面會(huì)有專門的文章介紹。
2.3 層次化實(shí)現(xiàn)和驗(yàn)證
AI芯片的大規(guī)模和并行特點(diǎn),導(dǎo)致AI芯片的設(shè)計(jì)復(fù)雜并且有很大難度:展平式尋優(yōu)策略在計(jì)算機(jī)算法上是NP問題,芯片設(shè)計(jì)每個(gè)流程的運(yùn)行時(shí)間也很長,因而短時(shí)間找到最優(yōu)方案并實(shí)現(xiàn)極具挑戰(zhàn),所以需要使用分治策略分層實(shí)現(xiàn),以尋求現(xiàn)實(shí)的次優(yōu)解。
分層體現(xiàn)在系統(tǒng)設(shè)計(jì)的處理單元(processing elements)-簇(cluster)-子系統(tǒng)-SoC芯片;體現(xiàn)在結(jié)構(gòu)設(shè)計(jì)關(guān)注關(guān)鍵參數(shù)-邏輯設(shè)計(jì)關(guān)注微架構(gòu)和周期一級(jí)-后端設(shè)計(jì)關(guān)注具體頻率sign-off,不同的階段有不同的關(guān)注點(diǎn),通過上層設(shè)計(jì)明確關(guān)鍵參數(shù),逐步往下漸進(jìn)明細(xì)。相應(yīng)的驗(yàn)證也是如此,通常架構(gòu)設(shè)計(jì)明確主要參數(shù)和主體運(yùn)算周期,邏輯設(shè)計(jì)除了關(guān)注具體時(shí)序,很多的是保證與算法設(shè)計(jì)bit對(duì)準(zhǔn)來驗(yàn)證行為,而后端驗(yàn)證主要關(guān)注微架構(gòu)的時(shí)序是否能夠?qū)崿F(xiàn)。
這方面主要是開發(fā)流程的規(guī)劃和整合,不同的IP供應(yīng)商會(huì)提供C++/SystemC模型供架構(gòu)設(shè)計(jì)仿真,仿真平臺(tái)有純SystemC,也有Synopsys PA(集成了不少常用模型和系統(tǒng)構(gòu)建調(diào)試機(jī)制)
2.4 算法和軟硬件協(xié)同設(shè)計(jì)
傳統(tǒng)芯片頂層設(shè)計(jì)中軟硬件劃分是一個(gè)重要主題。而AI芯片設(shè)計(jì)還需要關(guān)注算法,比如:卷積核的運(yùn)算需求,數(shù)據(jù)存儲(chǔ)和傳輸需求;卷積核的運(yùn)算協(xié)作和數(shù)據(jù)交互需求等。以及引言部分提到的利用低精度運(yùn)算實(shí)現(xiàn)類似高精度運(yùn)算的算法精度,利用矩陣稀疏性簡化運(yùn)算同時(shí)保證算法性能等。這些優(yōu)化本質(zhì)上源于算法,但是需要芯片設(shè)計(jì)配合,但其在架構(gòu)及優(yōu)化對(duì)整個(gè)芯片PPA的優(yōu)化立竿見影。對(duì)于熟悉傳統(tǒng)芯片設(shè)計(jì)流程的芯片團(tuán)隊(duì)式巨大的挑戰(zhàn)。
這里主要是算法優(yōu)化方案在算法和模型層面,涉及到C/Python/SystemC。
2.5 應(yīng)用開發(fā)工具鏈
AI芯片的大規(guī)模和并行特點(diǎn),導(dǎo)致AI芯片的開發(fā)也極具挑戰(zhàn)。以編譯器為例,運(yùn)算單元或者cluster內(nèi)部涉及到并行編譯和調(diào)度;整個(gè)算法在芯片上的實(shí)現(xiàn)也是很難展平開發(fā),更多的是運(yùn)算單元或者cluster為單位,根據(jù)數(shù)據(jù)流特征進(jìn)行劃分和映射,以及相應(yīng)的通信和存儲(chǔ)配備設(shè)計(jì)進(jìn)行分治處理。
本質(zhì)上當(dāng)今的算法描述語言C/Python只描述算法的邏輯功能,不具備時(shí)空信息,不具備存儲(chǔ)和傳輸信息,所以很多算法是先經(jīng)過同時(shí)熟悉芯片架構(gòu)和算法的工程師的規(guī)劃,再通過工具鏈預(yù)定的指令指示工具鏈處理。這方面通用意義上有StreamC/KernalC,產(chǎn)業(yè)界NVIDIA的CUDA針對(duì)其GPU比較成功,谷歌針對(duì)TensorFlow的XLA,華盛頓大學(xué)針對(duì)GPU的TVM。更為普遍的使用LLVM的開放型構(gòu)建自己的工具鏈。但目前工具鏈的自動(dòng)化和性能與實(shí)際要求差別較大,很多大規(guī)模案例會(huì)有工具鏈和手工優(yōu)化結(jié)合,方案供應(yīng)商多以SDK形式提供,不同的應(yīng)用提供不同的SDK,且SDK的版本不斷更新。
大規(guī)模并行計(jì)算的調(diào)試和跟蹤也是一個(gè)挑戰(zhàn),傳統(tǒng)意義上的單步調(diào)試需要協(xié)調(diào)不同處理器核心之前的狀態(tài);而跟蹤除了核間協(xié)調(diào)還需要dump大量的實(shí)時(shí)運(yùn)行數(shù)據(jù),這需要占用大量的片上帶寬和芯片接口資源,還涉及到數(shù)據(jù)壓縮和可視化。這方面比較典型的是UltraSoC。
2.6 產(chǎn)業(yè)格局
算法設(shè)計(jì)、芯片設(shè)計(jì)、應(yīng)用設(shè)計(jì)、系統(tǒng)方案供應(yīng)商、應(yīng)用方案供應(yīng)商、具體企業(yè)和個(gè)人用戶是AI潮流的相關(guān)者。但是由于產(chǎn)業(yè)尚在迅速發(fā)展,尚未成熟,尚不能形成明確的的專業(yè)分工。并且一體化設(shè)計(jì)和應(yīng)用也是不同方案差異化競爭力的體現(xiàn),是構(gòu)建技術(shù)壁壘的一種重要途徑。
在這種環(huán)境下,AI的從業(yè)者大體可以分為供應(yīng)商、用戶、供應(yīng)商和用戶三種。前者主要是傳統(tǒng)的芯片設(shè)計(jì)公司如英特爾、華為和新興獨(dú)角獸公司。后者主要是大的互聯(lián)網(wǎng)公司,他們是AI的企業(yè)用戶主體,由于業(yè)務(wù)體量的需求開始逐步構(gòu)建自己的AI芯片方案,如谷歌、BAT等。中間的是中小用戶,需要并認(rèn)可AI的價(jià)值,但尚不具備構(gòu)建AI芯片和全棧方案的資金和技術(shù)實(shí)力,需要依附專門的AI公司,或者在互聯(lián)網(wǎng)公司的云端方案構(gòu)建自己的方案。
筆者接觸到的行業(yè)前后兩類的公司差別很大,傳統(tǒng)的芯片設(shè)計(jì)公司具有很強(qiáng)的IC設(shè)計(jì)開發(fā)能力,但是不能夠很好地理解AI應(yīng)用,因而設(shè)計(jì)的芯片針對(duì)性欠缺;同時(shí)由于過多的傳統(tǒng)芯片設(shè)計(jì)包袱,不能夠果斷地?fù)肀碌?a href="http://www.xebio.com.cn/semi" target="_blank" class="keylink">芯片設(shè)計(jì)架構(gòu)和方法學(xué)。互聯(lián)網(wǎng)公司的芯片設(shè)計(jì)團(tuán)隊(duì)芯片設(shè)計(jì)能力略有欠缺,但是可以很好的理解應(yīng)用,擁抱新的架構(gòu)和方法學(xué);另外,由于目前AI尚不能明確分工的特點(diǎn),互聯(lián)網(wǎng)公司的芯片設(shè)計(jì)和應(yīng)用可以有效協(xié)作,填補(bǔ)設(shè)計(jì)流程上不能自動(dòng)化的挑戰(zhàn),盡早實(shí)現(xiàn)AI芯片的價(jià)值,即使設(shè)計(jì)可能不是很優(yōu)秀。所以,哪一派最終能夠勝出尚不明了。
---------------------
EETOP 官方微信
創(chuàng)芯大講堂 在線教育
半導(dǎo)體創(chuàng)芯網(wǎng) 快訊
相關(guān)文章