AI計算特性
設(shè)計和部署一款專用芯片需要平衡各種指標,不同的場景下關(guān)注的指標不一樣,其芯片設(shè)計的思路也會存在差異,常見的芯片設(shè)計指標包括:
功耗:芯片電路在工作時所消耗的能量。
峰值性能:芯片每秒計算操作數(shù)的總和。
吞吐量:單位時間芯片能夠處理的數(shù)據(jù)量。
面積:晶體管數(shù)量越多,芯片尺寸越大,工藝越精密,芯片尺寸越小。
靈活性:靈活性和可編程能力越高,適應(yīng)的場景越多。
成本:包括芯片設(shè)計費用和單個芯片生成加工費用。
從計算能力上看,芯片中參與計算的內(nèi)核數(shù)量越多對數(shù)據(jù)傳輸?shù)膸捯笤礁撸訥PU為例,其中包含幾百到幾千個計算Core,當(dāng)這些Core同時讀寫數(shù)據(jù)時對數(shù)據(jù)帶寬的占用是相當(dāng)高的。其次,從計算粒度上看,只有當(dāng)峰值計算能力小于等于最大帶寬時,才能達到最佳的計算效率,雖然片上存儲能提供極高的帶寬和讀寫性能,但其會占用有限的芯片面積,所以需要在性能和帶寬上進行平衡。再次,從通用性上看,可編程能力越強,能使用的應(yīng)用場景越多,但為了兼容更多的應(yīng)用,則在架構(gòu)設(shè)計上會存在一定的平衡和冗余,這往往會導(dǎo)致其在單一任務(wù)中的性能存在一定程度的下降,所以需要在定制化實現(xiàn)極致產(chǎn)品性能和軟件可編程擴大場景范圍上進行平衡。
訪存
深度神經(jīng)網(wǎng)絡(luò)包含大量的網(wǎng)絡(luò)層,每一層的又包含大量的參數(shù)以及中間特征數(shù)據(jù),數(shù)據(jù)訪問量和計算量都很大。例如,卷積層包含大量多維卷積核,在計算上滑窗式的卷積運算使得卷積核參數(shù)需要多次重復(fù)參與運算,由于卷積核參數(shù)量一般要遠大于緩存的容量,所以大多時候參數(shù)需要反復(fù)從主存中訪問。比如,早期AlexNet擁有6000萬參數(shù)量,最新的基于Transformer架構(gòu)的ChatGPT則達到了1750億參數(shù)量,如此巨大的參數(shù)量不僅需要占用巨大的存儲空間,如何進行高效運算對訪存帶寬、內(nèi)存管理以及計算都有很高要求。
通常在芯片設(shè)計中可以通過增加計算核心的數(shù)量來提高系統(tǒng)的并行度,當(dāng)并行度提高后,數(shù)據(jù)的讀寫就會成為瓶頸,即遇到“內(nèi)存墻”。內(nèi)存訪問可以通過以下幾個方面來解決:
1.通過增加片上緩存大小和寄存器數(shù)量,或提高訪存總線帶寬等來提升訪存效率,進而減少數(shù)據(jù)等待的時間;
2.讓數(shù)據(jù)盡可能在片上多停留,避免重復(fù)訪問主存次以減少計算單元的等待時間;
3.通過數(shù)據(jù)流的模式讓數(shù)據(jù)不必經(jīng)過主存就可以在不同計算單元之間進行通信和流動。
由于深度學(xué)習(xí)前一層計算結(jié)果在下一層計算會被接著用上,模型參數(shù)在不同時鐘周期中也反復(fù)使用。第一種方案通過增加片上存儲減少了數(shù)據(jù)被重復(fù)寫回和加載的開銷。第二種方案直接把復(fù)用的數(shù)據(jù)放在片上Buffer實現(xiàn)數(shù)據(jù)復(fù)用,復(fù)用方式和粒度更加精細可控。第三種方案則是讓前一周期計算的結(jié)果流動到其他計算核心上,在下一周期不用發(fā)生訪存操作的情況下就可以直接參與計算,Google TPU采用的脈動陣列和流行的DataFlow數(shù)據(jù)流架構(gòu),都是采用的這一思路設(shè)計的。
功耗
深度學(xué)習(xí)由于參數(shù)量過于龐大,而片上存儲空間有限無法全部存儲,絕大部分數(shù)據(jù)被存放在主存中,這必然會造成頻繁的存儲器訪問,大多數(shù)深度學(xué)習(xí)任務(wù)中數(shù)據(jù)訪存造成的功耗要高于計算造成的功耗,其中,最靠近計算單元的寄存器功耗最小,而最遠的片外DRAM的功耗則其的200倍。所以如何讓數(shù)據(jù)盡可能多地在片上存儲中停留和復(fù)用可以有效減少數(shù)據(jù)訪存的功耗,但片上存儲又受到成本和面積的約束,不可能無限的增大,如何解決大規(guī)模數(shù)據(jù)訪存帶來的功耗問題是低功耗AI芯片需要重點解決難點。
稀疏性
稀疏性(Sparsity),是指深度學(xué)習(xí)網(wǎng)絡(luò)模型具有非常大的參數(shù)和特征容量,在計算中包含大量對0的乘法和加法的操作。在計算中0乘上任何數(shù)都是0,0加上任何數(shù)都是原來的數(shù),對0參與的乘加過程如果可以不使用計算單元直接輸出結(jié)果0,這樣可以節(jié)省運算產(chǎn)生的功耗,如果可以不需要到內(nèi)存讀寫數(shù)據(jù),則可以減少了數(shù)據(jù)搬移的開銷。
在深度學(xué)習(xí)中稀疏化主要包括兩種:模型稀疏和短暫稀疏。模型稀疏與模型參數(shù)有關(guān),一方面模型參數(shù)中本身包含大量0或者非常小的值,另一方面在訓(xùn)練的過程中增加一些正則化和門控函數(shù)(gating functions)增加模型參數(shù)的稀疏化。短暫稀疏與模型的運算過程有關(guān),它與輸入數(shù)據(jù)和模型參數(shù)都有關(guān),比如Dropout和ReLU等算子的輸出數(shù)據(jù)就是高度稀疏的數(shù)據(jù)。統(tǒng)計表明,AlexNet、VGG、ResNet等經(jīng)典網(wǎng)絡(luò)的稀疏性可以達到 90%左右,如果能有效利用網(wǎng)絡(luò)的稀疏性可以顯著提高網(wǎng)絡(luò)的運算效率。
混合精度
由于神經(jīng)網(wǎng)絡(luò)本身具有一定的冗余性,在經(jīng)過精心的設(shè)計和調(diào)優(yōu)后,低精度的神經(jīng)網(wǎng)絡(luò)也可以實現(xiàn)整體準確率不變或者只有很小的準確率損失,而使用低精度計算則可以極大地減少計算和存儲負擔(dān)并降低功耗。實驗表明,使用16位浮點乘法和32位浮點加法在AlexNet、VGG、ResNet等網(wǎng)絡(luò)上進行訓(xùn)練的精度損失可以忽略不計,使用8位定點乘法和16位定點加法進行推理,精度損失幾乎沒有。
低精度計算已經(jīng)成為AI芯片的一個趨勢,尤其在推理芯片中更加明顯。低精度計算不僅需要在算法上能夠?qū)崿F(xiàn)低精度訓(xùn)練和模型量化,還需要在指令架構(gòu)設(shè)計和硬件計算單元上能夠支持低精度運算,它是一個軟硬件結(jié)合的整體解決方案。隨著AI對低功耗和高性能需求不斷提高,神經(jīng)網(wǎng)絡(luò)也從32bit浮點運算逐步向16bit、8bit、4bit 甚至二值化網(wǎng)絡(luò)等多種低精度運算擴展。
通用性
當(dāng)前深度學(xué)習(xí)網(wǎng)絡(luò)層數(shù)越來越深、網(wǎng)絡(luò)層更加豐富、拓撲結(jié)構(gòu)也更加復(fù)雜。神經(jīng)網(wǎng)絡(luò)深度已經(jīng)從早前的VGG十幾層網(wǎng)絡(luò)發(fā)展到ResNet的幾百層,甚至上千層的網(wǎng)絡(luò),不僅包含卷積層、深度可分離卷積、全連接層、循環(huán)層、上下采樣、尺度變換以及激活函數(shù)層等大量不同功能的網(wǎng)絡(luò)層,還包括殘差連接、長短記憶網(wǎng)絡(luò)、Transformer等復(fù)雜的多層連接拓撲結(jié)構(gòu)。由于不同網(wǎng)絡(luò)層的計算和訪存特性都存在較大的差異,因而與之匹配的最佳硬件架構(gòu)也存在較大的不同,例如,針對卷積網(wǎng)絡(luò)特性設(shè)計的硬件在運行長短記憶網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)時只能發(fā)揮其不到20%的性能。
AI專用芯片的性能跟通用性是一個相互平衡的過程,一個芯片在某些特定網(wǎng)絡(luò)結(jié)構(gòu)上的性能越強、功耗越低,那么它往往就越不靈活、通用性越差。例如,Google TPU可以輕松做到遠高于GPU的性能和能效比,但這是以犧牲芯片的可編程性和通用性為代價的。目前在語音、文字、圖像、視頻等不同應(yīng)用場景下使用的網(wǎng)絡(luò)架構(gòu)還無法做到完全統(tǒng)一,在同一領(lǐng)域下的不用場景和任務(wù)上深度學(xué)習(xí)的網(wǎng)絡(luò)也存在一定的差異,新的深度學(xué)習(xí)算法和網(wǎng)絡(luò)結(jié)構(gòu)還在不斷的演變中,可能AI芯片還未投產(chǎn)上市,當(dāng)前的網(wǎng)絡(luò)架構(gòu)已經(jīng)淘汰,被其他更優(yōu)的網(wǎng)絡(luò)架構(gòu)替代了。
目前AI芯片企業(yè)采用的技術(shù)方案和策略各不相同,一類最激進的企業(yè),采用算法固化方案,這一做法芯片研發(fā)周期最短、單一算法的性能與功耗比可以做到極致,但其限制了芯片的通用性和靈活性,比如第一代Google TPU;一類是升級現(xiàn)有可編程處理器,使其在性能與芯片通用性上達到較好的平衡,成本也相對可控,目前這一類中GPU依然是主流。還有一類是設(shè)計全新的芯片架構(gòu),這一做法能夠在性能與通用性上達到更好的平衡,但芯片研發(fā)投入成本大且需要較長的研發(fā)周期,比如寒武紀NPU和Google TPU。
當(dāng)前AI芯片的發(fā)展還處于初級階段,市場上主要以定制化的專用AI芯片和具備一定的靈活性的弱編程AI芯片為主,隨著算法和芯片制造工藝的不斷發(fā)展和完善,支持潛在的新網(wǎng)絡(luò)架構(gòu)特性且具備足夠彈性和拓展性的AI高性能芯片會逐漸到來。參考GPU的發(fā)展歷史,早期的GPU是專門用來做圖形加速計算的,由于生產(chǎn)工藝和制程的限制,必須采用定制化的專用硬件設(shè)計方案才能滿足圖形渲染對性能和功耗的要求。隨著圖像加速行業(yè)的發(fā)展和算法的快速迭代更新,以及芯片生成工藝的提升,逐漸出現(xiàn)了具有弱編程特性的GPGPU,再到后來的CUDA使得GPU具備了更強的可編程能力并極大的拓展其應(yīng)用領(lǐng)域,使GPU不僅能加速視頻渲染、還能做科學(xué)分析、天文計算和AI加速等更通用的并行計算任務(wù)。
鄭重聲明:文中僅代表作者觀點,不代表本公司觀點,本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或者刪除,感謝您的關(guān)注!