資料下載
山東省安全技術防范工程設計施工等級確認登記.doc
下載
山東省安全技術防范工程設計施工等級確認登記備案表.doc
下載
山東省安全技術防范工程設計施工等級確認登記審批表.doc
下載
關于印發《山東省安全技術防范工程 設計施工等級確認管理辦法》的通知.doc
下載
中安協安防工程企業資質管理辦法.doc
下載
中安協安防工程企業資質評定標準.doc
下載
中安協安防工程企業資質評定技術人員名單.doc
下載
中安協安防工程企業資質評定近兩年竣工工程一覽表.doc
下載
中安協安防工程企業資質評定年審申請表.doc
下載
中安協安防工程企業資質評定企業基本情況表.doc
下載
中安協安防工程企業資質評定申請表.doc
下載

深度:AI芯片之智能邊緣計算的崛起

瀏覽數:14

基礎層、算法層與應用層是人工智能產業鏈的三個組成部分。人工智能(AI)正在作為基礎技術,改變不同的行業,并具有極其廣闊的應用市場??紤]到深度學習等AI算法開源的發展趨勢,基礎層的數據與芯片將在未來競爭中占據越來越重要的地位。作為人工智能發展支柱的AI芯片(特指專門針對AI算法做了特定設計的芯片)更是人工智能行業的核心競爭力。

  基于深度神經網絡(DNN)在各個應用中表現出的巨大優勢,本文的AI僅限于深度學習。下文將從AI計算與AI芯片出發,分析不同種類AI芯片間的區別,探索應用于終端推斷(Edge Inference,EI)AI芯片,即AI-EI芯片,并給出AI-EI芯片硬件架構特性,討論多家AI-EI芯片公司,最后給出AI-EI芯片發展趨勢及投資邏輯。

  一、AI計算及AI芯片

  近幾年,深度神經網絡(DNN)在圖像識別、自然語言處理等方向上取得了前所未有的成功,并推動相關行業的快速發展。但是,這些應用中使用的深度神經網絡的參數量巨大,模型訓練(training)與推斷(inference)都需要大量的計算,傳統計算芯片的算力無法滿足DNN計算需求。具有高算力的AI芯片能夠滿足AI行業計算需求并得到了快速發展。

2016AI芯片全球市場規模為23.88億美元,有機構預計到2020AI芯片全球市場規模將達到146.16億美元(終端AI芯片的市場規模),發展空間巨大。另外,各國紛紛把AI芯片定為自己的戰略發展方向。

  與傳統CPU不同的是,AI芯片具有大量的計算單元,能夠適合大規模并行計算的需求?;谕ㄓ眯耘c計算性能的不同,可以把AI芯片分為GPU、FPGA、ASIC三大類。深度神經網絡的基本運算單元是“乘-加”(MAC)操作。每次MAC中存儲器讀寫操作如圖1所示。

  在AI應用中,CPUAI芯片的計算能力是由芯片所具備的MAC能力及如何發揮芯片的MAC能力兩個因素決定。

CPU是通用芯片,CPU的大部分面積都被控制單元與緩存單元所占,只有少量的計算單元。另外,CPU的指令執行過程包括取指令、指令譯碼與指令執行三部分。只有在指令執行的時候,計算單元才能發揮作用。因而,CPU在發揮芯片的MAC能力方面亦比較一般。為了提高指令執行效率,CPU采用指令流水處理方式。GPU有大量的計算單元,適合大規模并行計算。但是,GPU也是通用芯片,其指令執行過程也由取指令、指令譯碼與指令執行三部分組成。該特征是制約GPU計算能力的主要原因之一。FPGA,即,現場可編程邏輯門陣列,是一種更接近I/O的高性能、低功耗芯片。FPGA是算法即電路,軟硬合一的芯片?;谟布枋稣Z言,可以把算法邏輯直接編譯為晶體管電路組合。由于FPGA的硬件電路是由算法定制的,其不需要取指令與指令譯碼過程,因而,FPGA能夠充分發揮芯片的計算能力。另外,FPGA可以重復編程,因而具備一定的靈活性。ASIC,即,專用集成電路。類似于FPGA,ASIC采用的也是算法即電路的邏輯,亦不需要取指令與指令執行過程。另外,ASIC是為了特定的需求而專門定制的芯片,因而,能夠最大程度發揮芯片的計算能力。但是,不同于FPGA的可重復編程,ASIC的設計制造一旦完成,就無法再改變,其靈活性較差。

  在評價一個芯片架構性好壞時,有多種指標可供參考。其中,能耗與峰值計算能力(芯片結構中每秒計算操作數的總和,用OPS表示)是兩個重要的衡量指標。不同指標間會相互制衡,一個指標的增高可能是以犧牲其它指標為代價而獲取的。因而,常采用歸一化的指標單位能耗算力(OPS/W),即,能效,來衡量芯片計算性能。實質上看,上述的四種芯片是通用性與能效trade-off的結果。能效方面,ASIC>FPGA>GPU>CPU。通用性則反之。

  對于AI芯片,從市場格局來看,NVIDIAGPU行業的絕對龍頭。對于FPGA,XILINX、ALTERA(現并入INTEL)、LATTICE、MICROSEMI四家占據全球99%的市場份額。其中,XILINX、ALTERA兩家占據全球90%的市場份額。另外,FPGA四大巨頭擁有6000多項行業專利,形成該行業極高的技術壁壘。對于ASIC芯片,目前還未形成巨頭壟斷的市場格局,但是對于不同垂直領域,其情況不同,我們將在下文中給出詳細分析。

  深度學習分為兩個階段:模型訓練與智能推斷,如圖2所示。模型訓練需要大量的訓練樣本,基于梯度下降法,模型優化收斂到局部最優點。深度學習的模型訓練需要幾小時到多天的迭代優化,因而,現階段,模型訓練都在云端完成(我們認為具備持續學習能力是智能終端未來發展的方向,因而這里并不認為訓練一定只在云端完成)。模型訓練好之后,則能夠基于該模型與輸入數據,計算得到輸出,完成智能推斷。相比于模型訓練,推斷的計算量要小很多,可以在云端與終端完成。

  現階段,由于終端設備的計算力普遍有限,模型訓練與推斷大都在云端服務器上完成。在云端模型訓練中,NVIDIAGPU占主導地位,多GPU并行架構是云端訓練常用的基礎架構方案。在云端識別中,基于功耗與運算速度的考量,單獨基于GPU的方式并非最優方案,利用CPU、GPU、FPGA、ASIC各自的優勢,采用異構計算(CPU+GPU+FPGA/ASIC)是目前主流方案。

  在計算機視覺、語音識別等應用中,終端采集數據(特別是圖像數據),然后上傳到云端處理的云計算對網絡帶寬與數據中心存儲都帶來越來越大的挑戰。另外,無人駕駛等應用對實時性與安全性要求極高。網絡的時延與穩定性所帶來的安全隱患是無人駕駛等應用所無法忍受的。在終端采集數據,并完成數據處理,提供智能終端推斷的邊緣計算(Edge computing),因其能夠滿足實時性、安全性的需求,且能節約帶寬與存儲,得到越來越多的關注。我們判斷inference將越來越多的在終端設備上完成,即,智能將會下沉到終端設備,智能邊緣計算將會崛起。

  實時性是選擇在終端完成推斷最主要的原因之一。但是,由于深度神經網絡參數量巨大,推斷過程需要完成大量的計算,其對終端硬件的計算力提出了很高的要求。另外,電池供電的終端設備對功耗也有極高的要求,且大多數的終端產品價格敏感。即,執行DNN推斷的終端芯片對算力、功耗、價格都有嚴格的限制。研究用于DNN推斷的AI-EI芯片是目前AI芯片行業最熱的方向?,F階段,已有大量的初創公司,針對不同領域及應用,提出多種AI-EI芯片硬件設計架構,下文將詳細給出AI-EI芯片的架構思路及發展現狀。

  二、AI-EI芯片及其架構

  基于深度神經網絡的廣泛應用,科技巨頭及初創公司都根據DNN的特性進行有針對性的硬件處理器研發。其中包括GoogleTPU、寒武紀的DianNao系列、EyerissNPUAI芯片。本節將總結并給出這些AI-EI芯片如何在不降低準確率的前提下實現運算吞吐量提升,并降低能耗。

  由前文可知,深度神經網絡的基本運算為MAC操作,且MAC操作很容易被并行化。在DNN硬件設計中,常使用時間架構(temporalarchitecture)與空間架構(spatial architecture)兩種高度并行化的計算架構,來獲取高計算性能。

  時間架構(Temporalarchitecture)

  通用芯片CPUGPU常采用時間架構,并使用單指令多數據流(SIMD)或者單指令多線程(SIMT)來提高并行化處理性能。時間架構基于中央控制器統一控制所有的ALU。這些ALU只能從層次存儲器中取數據,而不能相互通信。

  時間架構中,通常使用各種計算變換,特別是對卷積操作的計算變換,來減小計算復雜度,從而提升吞吐量,常用的方法包括:

Toeplitz矩陣方法:把卷積操作轉換為矩陣乘操作FFT方法:經過FFT變換,把卷積運算變成矩陣乘操作Winograd方法:比較適合較小的濾波器的情況

  空間架構(spatial architecture)

  基于ASIC或者FPGAAI-EI芯片常使用空間架構。相對于通用芯片,專用芯片應用在特定場景,其功能有限。簡單且規則的硬件架構是降低設計成本的基礎,亦是實現低成本專用芯片的先決條件。足夠低的芯片成本才能對沖專用芯片功能的局限性。

  空間架構采用數據流(Dataflow)處理方式。在空間架構中,ALU形成一條數據處理鏈,從而能夠在ALU間直接地傳送數據。該空間架構中,每個ALU都有自己的控制邏輯與本地存儲(寄存器堆)。其中,有本地存儲的ALU被定義為PE。

  對于空間架構,硬件設計基于層次存儲器中的低能耗內存,并增加數據重利用率(實質上,卷積是空間重用,這種重用可以獲取空間的不變性),來減小能耗。另外,數據流(Dataflow)控制數據讀、寫及處理??傮w上,空間架構基于層次存儲器與數據流平衡I/O與運算問題,從而降低能耗并提升運算吞吐量。下文將在分析層次存儲器與數據流的基礎上,討論不同的技術路線的AI-EI芯片。
  訪問內存所需時間要遠遠大于計算所需時間。由深度神經網絡的推斷部分運算可知,每個MAC都需要三次內存讀與一次內存寫操作。其中三次內存讀操作分別為讀取輸入數據、權值數據與部分和數據(partial sum),一次內存寫操作為更新部分和數據。層次存儲器基于內部寄存器等存儲單元來減小對外掛內存訪問次數,降低I/O需求。層次存儲器如圖4所示,該層次存儲器包括PE內部的寄存器(RF)、用于ALU間直接傳輸數據時存儲數據的內存單元NoC及連接DRAM的全局緩存器Buffer。由圖4可以看到,層次存儲器中,不同類別的存儲器讀寫操作所消耗的能量不同,這也是我們能夠利用層次存儲器及數據復用來降低能耗的原因。

Dataflow是一種沒有復雜程序指令控制且由操作數,即,數據或者中間結果,激活子計算單元,來實現并行計算的一種計算方式。圖5總結出了Dataflow的架構邏輯。

  在深度學習的推斷中,有大量的計算需求。但是,這些計算是分層順序執行的。因而,控制流程相對簡單、清晰??梢钥闯?,Dataflow處理方式與基于深度神經網絡推斷部分的計算需求非常吻合。

  數據流能夠決定哪些數據讀入到哪層存儲器以及這些數據什么時候被處理。另外,在DNN推斷中,沒有隨機性。因而,可以從最優能耗的角度,設計一個基于Dataflow的固定架構的AI-EI芯片。目前,大多數用于深度學習推斷的AI-EI芯片都采用Dataflow。

  層次存儲器中,存儲量大的存儲器讀寫操作所消耗的能量要比小存儲的存儲器大很多。因而,一旦一塊數據從大存儲器搬移到小存儲器后,要盡可能最大程度復用(reuse)該數據塊來最小化能耗。但是低功耗存儲器的存儲空間有限。如何最大化復用率是設計基于Dataflow加速器時最關注的先前條件。即,通過最大化數據復用率來降低I/O要求,減小數據處理能耗,從而提升吞吐量并降低總體能耗。常見的DNN數據流類型包括:權值固定數據流、輸出固定數據流、No local reuse(NLR)及行固定數據流。

  權值固定數據流: DRAM中讀出權值數據,放在PERF中并保持不變,之后把輸入數據廣播(broadcast)到每個PE,最后求取PE陣列的部分和(partialsum)。該處理方式通過最大化從PERF中讀取權值數據次數,并最小化直接從DRAM中讀取權值次數,實現最大化卷積與濾波器對權值的復用率,來減小能耗。NeuFlow即為基于該種數據處理方式的AI-EI芯片。

  輸出固定(OS)數據流:通過在PE陣列中stream輸入數據,然后把權值數據廣播到PE陣列,保持 RF中的部分和的累加不變,從而最小化讀寫部分和的能耗。寒武紀的ShiDianNao是基于輸出固定的AI-EI芯片。另外,根據處理目標的不同,可以把該種數據流分為以卷積層為處理目標的OS_A與以全連接層為處理目標的OS_C,OS_B是介于OS_AOS_C間的一種OS數據流。

NLR數據流: PE陣列的RF中并不存儲任何固定數據,相反,該情況下,所有數據的讀寫操作都是在全局buffer中完成。寒武紀的DianNaoDaNiaoNao是基于該數據處理方式的AI-EI芯片。

  行固定數據流: 最大化所有數據復用率并盡可能的使得所有數據的讀寫操作都在RF中完成,減小對全局buffer的讀寫操作,來減小功耗。每個PE能夠完成1D的卷積運算,多個PE能夠完成2D的卷積運算。在二維的PE陣列中,水平軸上的PE單元上,每一行的權值數據被復用,對角線上的PE單元上,每一行的輸入數據被復用,垂直軸上的多個PE單元上,每一行的部分和數據被復用,即,行固定的數據流能夠最大化所有數據的復用率,從而能夠全局最優化功耗。EyerissNPU是基于行固定的AI-EI芯片。

  三、AI-EI芯片玩家

  本節首先總結三家極具代表性的研發DNN加速器(Google、Wave computing、Graphcore是平臺化的計算平臺,因而,這里沒把他們叫做AI-EI芯片廠家)的公司,后文中結合應用場景總結AI-EI芯片創業公司,其中部分公司的芯片也可以做訓練,且不一定應用在終端場景,這里基于行為考慮,把他們稱為AI-EI芯片公司。

Google TPU

  在2015年就開始部署ASIC張量處理器TPU。TPU采用脈動陣列(systolic array)技術,通過矩陣單元的使用,減小統一緩沖區的讀寫來降低能耗,即脈動運行。脈動陣列不是嚴格意義的Dataflow,但也是數據流驅動的設計方式。該技術早在1982年就被提出,但是受限于當時的工藝水平及應用,該技術在當時并沒有引起太多關注。脈動陣列在TPU上的應用,讓該技術回歸大眾視野,并得到了極大的關注。

GoogleTPU上使用該技術的邏輯在于脈動陣列簡單、規則且能夠平衡運算與I/O通信。TPU中基本計算單元是功能單一的處理單元PE,每個PE需要先從存儲中讀取數據,進行處理,然后把處理后的結果再寫入到存儲中。TPU脈動陣列中的PE與前文中其他DNN加速器的PE基本一樣,能夠實現MAC操作,有存儲能力有限的RF。由前文可知,對數據讀寫的速度要遠遠小于數據處理的速度。因而,訪問內存的速度決定了處理器的處理能力。TPU的脈動陣列采用數據復用及數據在陣列中的脈動運行的策略來減小訪問存儲器次數,從而提高TPU的吞吐量。

TPU在實現卷積等運算時,要先調整好數據的形式(即對原始矩陣做好調整),之后才能完成相應的計算。因而,TPU的靈活性一般,只能處理特定的運算,這也是其它基于PE陣列Dataflow DNN加速器共有的問題。但是脈動陣列特別適合卷積運算,TPU有多種實現卷積運算的方式,其中包括:

  權值存儲在PE中保持不變,廣播輸入數據到各個PE,部分和的結果在PE陣列中脈動運行部分和的結果存儲在PE中保持不變,廣播輸入數據到各個PE,權值在PE陣列中脈動運行部分和的結果存儲在PE中保持不變,輸入數據與權值在PE陣列中按相反方向脈動運行部分和的結果存儲在PE中保持不變,輸入數據與權值在PE陣列中按相同方向但不同速度脈動運行權值存儲在PE中保持不變,輸入數據與部分和的結果在PE陣列中按相反方向脈動運行權值存儲在PE中保持不變,輸入數據與部分和的結果在PE陣列中按相同方向但不同速度脈動運行