中星微 星光智能一號

在人機大戰中,AlphaGo依靠模仿人腦生物機理的深度學習算法而擊敗李世石。深度學習,是源於對生物人腦機理的仿生學研究而形成的一種人工智能算法。作爲深度學習神經網絡的一種,卷積神經網絡CNN (Convolutional Neural Network)算法,已成爲當前人工智能機器視覺領域的研究熱點。

  CNN算法模型的特性可以概括爲海量的輸入數據、大規模的MAC運算1稀疏的權值矩陣2、靈活的數據位寬和多樣的網絡拓撲等特性。對於傳統馮諾依曼結構的CPU而言,其串行執行方式實在無法高效處理大量並行性運算,所以執行CNN算法的效率非常低下。
  相當於CPU,GPU的高度並行化運算單元,相對更適合神經網絡的大量並行運算方式。但是,GPU的設計初衷是爲了進行3D圖形處理,不僅功耗大、價格高,而且並不適合嵌入式環境。同理,DSP、FPGA等主流處理器也並不適合CNN。
  爲此,國內外主流企業和機構也都在針對CNN算法的處理器上下很了大工夫,研製自家的CNN處理器。如IBM公司的TrueNorth,高通公司的Zeroth,Google公司的TPU,KnuEdge公司的KnuPath和中國科學院的寒武紀等。
  而中星微的NPU是針對CNN的算法模型特性專門設計的一款神經網絡處理器。據張韻東介紹,NPU採用了“數據驅動並行計算”的架構,徹底顛覆了傳統的馮諾依曼架構。這種數據流(Dataflow)類型的處理器,極大地提升了計算能力與功耗的比例,特別擅長處理視頻、圖像類的海量多媒體數據,使得人工智能在嵌入式機器視覺應用中可以大顯身手。

  星光智能一號發佈的系統架構圖,共包含四個NPU核,每個NPU核包含4個內核,每個內核有兩個流處理器(Dataflow Processor),每個流處理器具有8個長位寬或16位寬的SIMD運算單元。每個NPU核的峯值性能爲38Gops3(16位定點)或者76Gops(8位定點)。除了多核流處理器本身用於完成卷積運算外,星光智能一號集成了一個超長指令字(VLIW)處理器用於完成神經網絡中的超越函數等運算。另有256KB的L2Cache以及DMA模塊用於大塊數據的搬移。
  從其低位寬的定點運算器推斷,星光智能一號僅可支持神經網絡正向運算,無法支持神經網絡的訓練。從片上存儲結構看,星光智能一號基於傳統的片上緩存(Cache),而非像最近流行的神經芯片或FPGA方案一樣使用便籤式存儲。因此,在技術上看星光智能一號是典型的“舊瓶裝新酒”方案,將傳統的面向數字信號處理的DSP處理器架構用於處理神經網絡,主要在運算器方面作了相應修改,例如低位寬和超越函數,而並非是“狹義的”神經網絡專用處理器。
  因此,星光智能一號其實是DSP,而非NPU。下一篇講講GPU CPU NPU 的關係。

1.乘積累加運算(英語:Multiply Accumulate, MAC)是在數字信號處理器或一些微處理器中的特殊運算。實現此運算操作的硬件電路單元,被稱爲“乘數累加器”。這種運算的操作,是將乘法的乘積結果和累加器 A 的值相加,再存入累加器。若沒有使用 MAC 指令,上述的程序可能需要二個指令,但 MAC 指令可以使用一個指令完成。而許多運算(例如卷積運算、點積運算、矩陣運算、數字濾波器運算、乃至多項式的求值運算)都可以分解爲數個 MAC 指令,因此可以提高上述運算的效率。
MAC指令的輸入及輸出的數據類型可以是整數、定點數或是浮點數。若處理浮點數時,會有兩次的數值修約(Rounding),這在很多典型的DSP上很常見。若一條MAC指令在處理浮點數時只有一次的數值修約,則這種指令稱爲“融合乘加運算”/“積和熔加運算”(fused multiply-add, FMA)或“熔合乘法累積運算”(fused multiply–accumulate, FMAC)。

2.L1正則化有助於生成一個稀疏權值矩陣,進而可以用於特徵選擇。爲什麼要生成一個稀疏矩陣? 稀疏矩陣指的是很多元素爲0,只有少數元素是非零值的矩陣,即得到的線性迴歸模型的大部分系數都是0.
通常機器學習中特徵數量很多,例如文本處理時,如果將一個詞組(term)作爲一個特徵,那麼特徵數量會達到上萬個(bigram)。在預測或分類時,那麼多特徵顯然難以選擇,但是如果代入這些特徵得到的模型是一個稀疏模型,表示只有少數特徵對這個模型有貢獻,絕大部分特徵是沒有貢獻的,或者貢獻微小(因爲它們前面的係數是0或者是很小的值,即使去掉對模型也沒有什麼影響),此時我們就可以只關注係數是非零值的特徵。這就是稀疏模型與特徵選擇的關係。

3.GOps giga operations per second 每秒十億次運算數,十億次運算/秒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章