掃一掃
關注微信公眾號

陳怡然教授:人工智能芯片設計中的五大挑戰
2018-10-25   浪潮服務器

  “人工智能的計算平臺性能每年提高一個數量級,但是GPU等芯片每年提高不到2倍,挑戰很大,第一個是計算和I/O性能不足,第二個是特定的AI架構與芯片的優化匹配,第三是終端和“云”的需求差異,終端訓練需要性能,云的需求則包括安全等,更為復雜。”
 
  日前,在AICC2018人工智能計算大會上,美國杜克大學終身副教授、美國自然科學基金委智能與可持續計算產學合作中心主任陳怡然先生做了關于《人工智能芯片設計中的挑戰》主題演講,引發廣泛討論。
 
  以下為陳怡然教授演講摘錄:
 
  剛才會議開始的時候王恩東院士講我們有三次浪潮,這三次浪潮分別代表了不同算法的突破,我只經歷了一次浪潮。這三次浪潮延續了70年的時間,從1940年到現在每次浪潮都伴隨著新的算法模型的興起,但是它不是孤立存在的,伴隨著計算能力的不斷提高。如果大家把眼光放到技術計算來看,計算技術的發展其實是一個持續發展的現象,過去五年如果看到GPU單板計算能力的提高,大概只提高了3-4倍,但模型參數總數目提高了幾百上千倍。所以我們面臨的調整你是要了解人工智能應用的硬件要求是什么,芯片要怎么去設計才能變得更有效,從而彌補摩爾定律本身的發展和參數上的增加所帶來的差別。
 
  馮諾伊曼體系有以下幾個特點:存儲和計算是分離的,控制單元可以把數據從內存調到計算單元,計算單元經過處理以后再傳回到內存。過去有大量的科學計算的應用,非常成功。但是這種單線程在馮諾伊曼體系里受制于運行指令之間的數據依賴的影響,當你大規模運行的時候會發現性能會掉得非常厲害。從此我們就做到多核,多核又帶來了一些新的問題,比如帶寬或瓶頸的問題,片上計算能力不斷提高,但是內存帶寬又不斷受限,往往不能達到最高的有效的計算。當然還有另外一個問題是功率密度的問題,我最近跟學生開了一個笑話,我上大學的時候攢機器,一個CPU100美元-200美元,現在還是這個價格甚至更便宜了,我當時在中關村買一個風扇只要幾毛錢,現在好的要幾十美元,很貴了,做CPU真的比做風扇賺得多。
 
 
  我們發現越來越多的應用需要更多新式的芯片進行處理,這種處理的要求是跟傳統的CPU和GPU不太一樣,雖然這些運算也可以用GPU來做加速。GPU本身是一個流式的處理器,它可以有效進行向量之間的運算,如果我們用n表示計算的能力,它把每個規模為n計算變為了1。從這個角度出發大家用FPGA進一步加速計算的過程,比如國內比較有名的深鑒科技用FPGA進行網絡神經的加速設計,谷歌TPU通過脈沖陣列的形式加速神經網絡的計算,國內另外一家公司寒武紀設置了專門的指令集,對于不同的向量與向量之間,向量與矩陣之間進行加速。要說明大家對于不同的架構的應用場景也基本是不一樣的,這只是列了其中一些比較有代表性的例子,此外還有非常多。芯片設計的參數集中在計算性能,還有功耗,最終數據的吞吐量等等。所有這些參數都是我們關心的問題。
 

 
 
  挑戰1:大容量存儲和高密度計算
 
  我們的第一個挑戰,大容量存儲和高密度計算,當神經深度學習網絡的復雜度越來越高的時候,我們會面臨一個問題:你的參數越來越多,你該怎么辦?大家常見的一個技術是做剪枝:神經網絡里面有大量的冗余,這種冗余是可以被去除的,去除以后基本不會影響計算精度。比如簡單的想法就是如果我知道有一個權重很小,對于輸出結果沒有太大影響,那就可以去掉。你在去除的過程中遇到這樣一個問題:這樣的權重在訓練之后是隨機的分布在整個向量空間里。當你把這個稀疏網絡存在一個計算機存儲系統的時候讀取這個網絡會帶來大量的訪問缺失。比如當你讀取一個數據之后,下一個數據往往并不是計算所需要的,這就帶來了存儲器訪存的缺失。


 

 
 
  我們可以通過軟件的方式解決這個問題,比如在數據結構上打補丁。這些在我看來并不是很聰明的辦法,沒有解決根本性的問題。根本性的解決方案是結構化的剪枝:當你在去掉這些權重的時候如果不是一個一個單獨的隨機的去掉而是一塊一塊的去掉,盡量介紹對它存儲方式的影響。這個工作是我們2016年NIPS的一篇文章《結構稀疏化》,今年年初已經被英特爾的芯片系統支持了。結構稀疏化另外一個問題是什么樣的層次下做到稀疏化,可以把通道所對應的權重整個去除掉,把卷積核對應的權重整個去除掉,甚至整層去除掉,最后都會帶來結構稀疏化的結果。下面兩張圖左邊是隨機去除的結果,右邊是結構去除的結果,左邊和右邊相比可以帶來10倍的性能提升,這個工作是我們跟英特爾一塊做的,他們后來把這個技術在產品里給支持了。

 
  低精度:我們在訓練的時候需要高精度,但做推理的時候不一定需要高精度,低精度的運算可以極大降低運算的開銷,提升運算的效率,又不怎么降低計算的準確度。一個極端的例子是IBM的真北芯片,所有數據和權重都是通過三值來實現的,+1、-1和0,怎么仍然能達到比較高的精度呢?傳統意義上采用了冗余的設計,比如輸入為0.75,如果有四個脈沖的位置,有3個脈沖出現就表達0.75。如果權重是0.8,那么我們就保留5個神經網絡的拷貝,其中相應的權重四個為1一個為0。這樣的結果是非常浪費的,根本的解決方法不應該是通過冗余的方式來設計,應該通過訓練得到一個簡單的三值網絡。我們來做一個小小的腦力體操,我們訓練一個網絡的時候究竟是把它按照一個高精度的網絡來訓練還是把它訓練成所有的精度都盡可能靠近0和1,從而能夠理想的寫入只可以存三值的存儲空間。答案當然是后者。如果我們能夠把訓練網絡的時候就訓練成一個三值網絡,我們訓練所得一定是把它寫入到硬件系統之后的所得。所以我們在訓練的時候對每個權重做處理,使得所有訓練后的權重都向0和1靠攏,結果就會變得比較好。我們通過這種方式在IBM達到性能6-7倍的提升,我們所做的其實就是改掉一行程序。
 
 


 
  低精度神經網絡訓練在分布式系統上的應用通常使用參數服務器。我們有很多神經網絡的拷貝,這些拷貝在每個節點上都會用不同的數據來訓練,一段時間之后我們把訓練的結果發送到參數服務器來同步,再把同步后的結果分發下去。但當系統特別大的時候就會遇到一個問題:它的規模不能持續擴大,因為大量的通信帶寬都消耗在節點和參數服務器互之間的數據傳輸,我們怎么降低開銷?當然如果用0、+1、-1來表示數據的話數據量就會變得非常少。但是這樣的三值只能表示方向不表示數據大小。我們實際測試中發現其實所有數據傳輸,當數據足夠大的情況下其實都滿足于某一種分布。因此數據比較大的情況下只需要傳大概2到3個值,剩下的只要傳方向,就可以在另外一端把數據整個恢復出來,這樣就完全不必要傳我們的數據采樣而只需要傳分布就可以了,這樣的結果是我們在128個節點的GPU集群上可以達到3倍左右的訓練加速,性能精確度大概降低了不到2%。
 


 

  挑戰2:面臨特定領域的架構設計
 
  我們第二個挑戰是面臨特定領域的架構設計,因為我們的場景越來越豐富,而這些場景的計算需求是完全不一樣的。比如我們從圖像處理場景得到的知識,當我們面臨語音應用的時候它能夠重復使用的部分是非常有限的。所以我怎么樣通過對于不同的場景的理解設置不同的硬件架構變得非常重要。舉一個簡單的例子,很多人用FPGA做圖象處理,而圖像處理不需要考慮時域上的信號傳播。這在語音處理的時候是必不可少。所以在2015年的時候我們在FCCM,是FPGA領域的一個頂級會議上發布了關于RNN的優化。我們通過內存效率提升,激活函數的近似和提高基礎單元設計的可擴展性,達到了相當于CPU性能16倍的提高,而功耗降低了60倍,這是比較典型的例子。

 
  不僅如此,我們在算法上也可以做相應的轉換,今年我們發布了一篇文章,在語音的LSTM的模型上我們直接結構稀疏化它的隱藏結構,這種隱藏結構的稀疏可以達到10倍性能的提升。即使在一些復雜的自然語言處理場景下我們也可以帶來20-40%左右的性能提升,精確度做到了大概只有1%的損失。現在這個技術已經被某大公司直接用在了他們的硬件設計上。
 
 
  最近GAN比較熱,它可以很有效的通過兩個網絡相互之間的學習來生成一些現實場景中不存在但是又真實可信的數據,GAN的應用在非監督學習上會有大量的應用和突破。我們最近有一篇文章在講我們體系結構上也可以生成一種新的流水線,使得對于GAN的訓練效率有很大的提高。

 
  挑戰3:“云-終端”平臺特點不同
 
  云和終端是不一樣的,云端和終端的設計完全不同,云端需要對海量數據進行處理,要進行存儲,要進行訓練,要高并行高帶寬,終端上首先要采集,然后做終端的推理,還要做一些簡單的訓練,還關心安全性、低能耗、低延時等等的處理。我們在很多年前開始做移動計算,我們最近開始轉移到移動平臺的神經網絡的訓練以及推理上來,去年有一篇文章拿了最佳論文獎,題目是分布式移動端的訓練。它有點像移動端的參數服務器:我有一個手機對其他所有手機進行管理和同步,各個手機之間進行并行的訓練,然后把低精度計算運用在上面。一些精確的分析會發現神經網絡的各個層相對于資源的要求是完全不一樣的。比如卷積層貢獻了絕大多數的計算的開銷,而全連接層貢獻了絕大多數存儲的開銷。所以你在設計的過程中就需要考慮這樣的差別。如果你在做稀疏化的時候,稀疏化之后可以對計算本身做一個聚類,這樣聚類之后的比較復雜的比較密集的網絡可以部署到同一個節點,減少節點之間相互傳輸的開銷。
 
 
 
 


 
  另外說盡管它是一個中心化的網絡,我們也可以把它做成一個去中心化的網絡或半去中心化的網絡,來提高它的安全性,降低對于中心節點的應用。你還需要考慮在節點相互之間的傳輸的開銷,因為我們知道對于移動網絡來講建立網絡之間相互的通道是非常昂貴的。我們可以隨著節點數目的增長基本達到線性的提升,這是不太容易做到的事情。
 
  挑戰4:芯片設計要求高,周期長,成本昂貴
 
  這是一個芯片周期的圖,從芯片規格設計芯片結構設計、RTL設計、物理半途設計、晶圓制造、晶圓測試封裝,需要2到3年時間,正常情況下這段時間里軟件會有一個非常快速的發展。下面這張表是如果你看到TPU生產設計的周期和Tensorflow的周期,兩種不同的TPU版本之間Tensorflow已經更新了7到8個版本,這么長的周期能夠支持在這個周期里新的軟件版本的更新是非常具有挑戰性的問題。
 
 
  其中一個解決方案是可以通過AI本身去加速芯片的設計,最近我們在跟英偉達做一個合作,通過AI的設計提高版圖的效率,我們把不同的AI的算法,像SVM和比較復雜的神經網絡包括強化學習,做了一個對比。這是一個最近非常熱門的話題,因為美國最近有一個項目,如果從最開始芯片定義到設計完成包括系統級封裝的設計,希望是24小時無人值守,這是一件非常不容易的事情。對一個芯片,它的生命周期大概有三年時間,芯片從生產出來到產品消亡,三年里真正掙錢的時間是12-18個月,你怎么在12-18個月里降低成本提高利潤率完成這個周期的迭代,AI技術可以做出大量的貢獻。
 
  挑戰5:架構及工藝面臨的挑戰
 
  最后一個問題是架構及工藝面臨的挑戰。這張圖是摩爾定律的另一個表達形式:隨著我們的工藝不斷的提升,從90納米到10納米,每代邏輯門生產的成本到最后變得飽和。我們也許在速度上、功耗上會有提升,但單個邏輯生產的成本不會再有新的下降。這種情況下如果仍然用幾千甚至上萬個晶體管去做一個比較簡單的深度學習的邏輯,那你會發現到最后在成本上是得不償失的。英特爾一直在說我計劃發布多少納米的生產技術,實際上永遠是在延后的,越往下做越貴越不容易。
 
 
  怎么解決這個問題?一個有趣的技術是憶阻器。這個北大的黃如老師、中科院的劉明老師他們也在做。這個器件有一些很有意思的特點,它的特性非常像人的神經網絡里面的神經元,我們神經突觸是連接兩個神經元的。一個神經元產生一個信號之后這個信號就會通經神經突觸到另一個神經元上去,神經突觸本身會把信號放大,倍數是可控的。憶阻器的特點是他的電阻值可以變化。當你加了一個電壓之后產生的電流本身的幅度是可調的,有點像將兩個神經元連在一起的神經突觸,整個過程其實是在做乘法。這個器件只有幾個納米那么大。通過這個器件可以產生一個交叉互聯的結構,這種交叉互聯的結構可以非常有效的把向量和矩陣相乘的形式加以變換,進行有效的計算,可以一下子把n×n×n的計算一次性全部算出來,非常有效。過去很多年里我們一直在做這方面的研究,從單個器件一直做到模型、計算的原理,最近我們開始做芯片,這個圖上是其中的一些例子,用脈沖來表示數據,到電壓憶阻器,一步步走過來。我去臺積電訪問,希望他們能支持我們這項研究。他們跟我講放心,他們也在做這個工作,如果摩爾定律放緩的話下面我們怎么走只能看新的材料。
 
 
  當我們有了基于憶阻器的加速芯片之后做的另外一件事情是怎么把它真的用起來,把它做到新的計算架構里面去。比如我可以把它以加速器的方式做到傳統的流水線里面去,相比GPU的平臺性能可以提高幾十倍,能效提高5到10倍。神經網絡只是圖計算的一個特例,只是用某種圖的形式把這些計算連接起來,所以在圖計算上我們也可以做相應的處理,不光是做深度優先算法還可以做廣度優先算法,我們都可以通過新型器件的方式加以計算,性能也有幾十倍左右的提升。這在現在這是非常熱門的領域,它的本質是模擬計算,不是簡單的通過傳統的科學計算的方式來完成計算,而是更有效的模擬神經計算。
 
 
  我們總結一下我們想做的事情,我經常被問到一個問題,哪個平臺哪個技術在未來有可能贏得這場戰爭,GPU公司還是基于新型器件的初創公司都希望知道答案,這意味著幾百億或幾千億的市場。為了回答這個問題我們總結了5個我們覺得比較重要的維度:AI硬件的特性、適應性,性能功效、可編程性和可擴展性。我們做了一個雷達圖進行比較。無論是對于通用硬件平臺還是對于可編程器件沒有任何一個會在這五種特性里達到最優的結果,都是有一兩個比較好或兩三個比較好,但另外一個比較差。回答這個問題,如果你問我哪個能贏,我首先要問你你要告訴我你的業務場景、你的數據類型、你愿意花的成本和你需要的計算開銷等等參數甚至技術本身的成熟度,然后我告訴你哪一種是最適合你的結果,這是我們覺得比較重要的一件事情,當然也包括類腦架構等比較新型的計算架構。

 
  AI芯片變得如此重要,最近我們在美國自然科學資金委的思路下成立了一個新型可持續發展智能計算中心。我們覺得應用來源于具體的場景,幫助我們理解需要什么樣的新的計算平臺,需要什么樣的技術,我們才能設計更多更好更有效的硬件來為這個目的服務。

熱詞搜索:人工智能 浪潮 服務器

上一篇:港珠澳大橋通車總有一些人在背后默默守護
下一篇:黃智輝:數字化時代新華三技術服務的變遷

分享到: 收藏
評論內容
云南快乐十分开奖结果爱彩乐