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