當前位置:
首頁 > 最新 > OURS譚章熹:開源RISC-V指令架構與AI晶元

OURS譚章熹:開源RISC-V指令架構與AI晶元

雷鋒網按:2018 全球人工智慧與機器人峰會(CCF-GAIR)在深圳召開,峰會由中國計算機學會(CCF)主辦,雷鋒網、香港中文大學(深圳)承辦,得到了寶安區政府的大力指導,是國內人工智慧和機器人學術界、工業界及投資界三大領域的頂級交流盛會,旨在打造國內人工智慧領域最具實力的跨界交流合作平台。在7月1日,峰會的AI晶元專場上,AI晶元領域的專家和業內人士們齊聚一堂,對AI晶元的未來展開了深入的探討。

OURS創始人兼CEO譚章熹

其中,OURS創始人兼CEO譚章熹在會上做了《開源RISC-V指令架構與AI晶元》的發言,他指出,RISC-V作為軟硬體介面的指令架構,對AI晶元提供了非常重要的基礎。OURS作為RISC-V非常直接的參與者,將很快推出開源AI晶元。這家位於美國矽谷的AI晶元初創公司未來或將成為AI晶元領域極大的變數。以下是譚章熹在CCF-GAIR 2018上的演講全文,雷鋒網在不改變原意的基礎上進行了編輯:

AI晶元發展三大歷史階段回顧

AI晶元是最近非常熱的話題,AI晶元並不能說是非常新的課題。在歷史發展來講,至少發展了三代。接下來我們回顧AI晶元發展的三大歷史階段。

·第一,1950-1960年代,Rosenblatt最早發現神經元Perceptron,他發明這個東西以後做了一個模擬計算的計算機,這是第一代模擬計算機Mark 1 Perceptron,可調電位器模擬可編程參數。XOR很難實現,一段時間後變得不太流行。

·第二,1980年代末到1990年代初,演算法發現關於Back Propagation,對模型進行訓練,那時候很多人做語等方面的AI研究,網路模型基本是2-3層。由於出現Back Propagation,所以出現了很大的計算量需求(用於模型訓練),當時的計算機並不是非常強大。那時候很多人說自己做計算機用於加速AI訓練。當時主流AI是Symbolic AI,同時使用Lisp/Prolog編程。網路大小是2-3層左右,比較有代表性的是1985年推出的Connection Machine,每一代有不同的改進。主要應用是做訓練的,包括Symbolic AI。

·第三,2010年開始的深度學習,網路大概是3至3層以上,摩爾定律遇到瓶頸,難以通過工藝實現性能的提升。大家突然對定製化AI晶元有了非常大的興趣。代表計算機還不太清晰,這裡省略五六十家AI創業公司。

摩爾定律失效  Amdahl定律依然存在

隨著三代AI晶元發展下來,每一代的發展都能學到一些東西,這是我個人總結出來的幾點:

·第一,AI的計算很重要,但不要忽視緩存、內存系統架構,你需要有足夠的容量。容量大了以後,必須對動態內存進行緩存。如何設計片上內存,用分散式設計的效率並不是很高,就像我們蓋房子似的,內存架構設計有很多,並不是只適用於一種軟體演算法。

·第二,軟體非常重要,沒有軟體就沒有AI晶元。晶元先完成,但不停的更新軟體演算法。99%的工作是軟體、開發工具SDK,我們在不斷的做訓練。軟體隨著演算法發展的速度,每6個月會出現新演算法。當你做晶元時,要考慮到硬體是否適用未來6個月的演算法,這一點非常重要。這麼多年下來,大家對演算法的實現通常情況是用手工方式,效率非常高,高於自動生成的100倍,大概是兩個數量級的效率。壞處是手工做,對演算法的要求非常高。現在你看到Tensorflow,就是為了提高編程效率, 但其核心實現相當複雜。

·第三, ALU的性能通常描述是多少TOPS,例如每秒可以做多少乘法。實際AI晶元是隨著數據的存儲和數據流動,ALU單元能夠變成百分百能工作的時候並不高,memory的存儲也是同樣的道理,只有小部分緩存是活動的。很多時候說如何提高ALU設計利用率和緩存架構問題。

·第四,第三代AI晶元出現,摩爾定律基本走到盡頭,我們遇到物理極限,新工藝越來越昂貴。相反Amdahl定律,(它談到的是串列和並行關係):雖然很多部分可以做並行化,但總是有很大一部分的程序還是串列執行的,通常串列部分之星效率決定了系統性能。雖然現在摩爾定律失效了,Amdahl定律依然存在。

現代AI晶元架構,通常會選用CPU中央處理器+AI加速器的方式,通常移動方案我們會選用ARM處理器,伺服器用得最多的是Intel。介面是通用的,隨著CPU的定義,AXI是ARM的介面標準,PCle是英特爾本身控制的。

案例:Google TPU,這是第二代TPU,把這個東西掛PCle上,作為加速器的方式存在。很多人認為Google靠著圍棋TPU戰勝人類是一個巨大的創新。從計算機系統架構角度來講,這個想法並不是Google最先提出的。1992年時,西門子發明Machine Synapse-1,這是可以花錢買到的機器。它的架構和現在Google看到的架構非常像,掛在企業處理器上。就AI晶元來講,對於計算機結構來說沒有什麼是新的。

90年代,隨著語音應用的出現,出現很多神經計算機、加速器,沒有獲得成功。現在我們用得比較多的是GPU,回顧歷史,90年代專用neurocomputer是做Back Propergation,出現了很多專有計算機。1996年,英特爾推出MMX擴展指令集,這個拓展指令集當時放在CPU里,完全跟CPU集成起來,主要用於做視頻編解碼。由於當時英特爾使用的工藝,其微處理器工藝遠遠好於其他公司,當它發明MMX後,MMX本身有一定的並行計算能力,可以用於這個訓練。加上良好的工藝和處理器技術,可以解決很多神經網路訓練問題。隨著英特爾CPU出現,人們發現很多語音演算法可全部跑在英特爾處理器上,(完全不需要專門設計的神經網路計算機),這導致了當時專用的nerocomputer沒有獲得成功。

GPU是比較有意思的東西,開始的發展在NeuroComputer之後,當時用於圖形、3D遊戲,把演算法固化, 有一定浮點計算能力。2001-2005年,隨著圖形的發展,出現了可編製Shader。新語言是CG,每一個像素點可以進行編程,非常簡單的編程以及非常簡單的計算。當時有人問這個東西(pixel shader)是否可以用於通用計算,答案是可以的,但有很多限制。2006年NVidia隨著Geforce8800的推出,發明了CUDA可編程框架,這是最早的GPGPU的原形。當然,除了CUDA,也出現了其他一些的GPGPU編程環境,如opencl。到現在為止,真正用於做神經網路訓練、適用新演算法的,在伺服器端是GPU,沒有更新的東西出現。

總結,我們看到90年代GPU的成功,主要由於編程框架對AI晶元是非常重要的。NVidia因為做了CUDA,所以有了GPGPU。用一般編程來做,不需要用Machine的模型。所以軟體架構對AI來說是非常重要的模型。

指令集對於AI晶元至關重要

提到軟體,我們要提到一件事,軟體和硬體的介面,這是我們現在所說的指令集、指令架構例如MMX,它也是指令架構。現在的就指令架構有幾個問題:為什麼英特爾不能在手機、平板處理成功?現在有99%平板手機是ARM市場基本是V7和V8架構為基準;為什麼ARM不能在伺服器上成功?因為英特爾99%的伺服器、筆記本用的是AMD64指令架構(其中超95%由英特爾生產);為什麼IBM到現在為止還在銷售非常老舊的大型機?美國報稅系統也是大型機。IBM360是一款經典的大型機,是現在擁有最古老的指令架構,將近50年歷史。當年阿波羅登月用的就是IBM360,現在還在使用。

為什麼有這些情況出現,是由於指令架構是軟硬體非常重要的介面,如果我們要做AI晶元,指令集是避免不了的事情。

SoC系統架構:這是NVidia Tegra SoC,首先有應用程序處理器,裡面用的是ARM、圖形處理器,像NVidia CUDA,我們還有無線電DSP、音頻DSPs、安全處理器、電源管理處理器等。這裡有很多處理器,每個處理器都在使用自己的指令架構,每個指令架構從軟體角度來講都過於龐大。由當你做SoC,很多CPU、GPU都是從IP的方式買來的,每個IP都有自己的專用平台指令集。有時候不同的廠商會開發不同的指令架構。一個商業SoC下來,裡面可能有數十個指令架構,不同的指令架構有不同的軟體系統。

這是一個非常複雜的事情,看AI晶元也涉及指令架構問題。我們回顧一款經典AI晶元,這是Berkeley的晶元,當時的想法是Cray是世界上一個向量計算機,用向量處理器、標量處理器、CPU,當時之所以這麼做的原因是我們知道超算是非常乾淨的編程模型。這是我們最後做出來的45兆、720兆,大概16.75mm^2的處理器。我們用到32-bit MIPS CPU核。我們考慮CPU核有爭論,是購買還是自己做?那時候MIPS有R3000,它有協處理器介面,當時沒有軟核,也沒有邏輯綜合。所以我們決定自己做,這不光是實際客觀原因,也包括技術原因。我們用到向量處理器,它對Cache的影響非常大,處理器的介面效率非常低。商業處理器,所謂的Glue Logic非常龐大,從面積、功耗來講都不是非常有效率。非常重要的一點是我們沒有完整的系統模擬器,當我們做經典AI晶元時,這個晶元是為了語音做的,裡面遇到現在我們遇到的所有問題。現在我們做AI晶元時,同時可以問這個問題,相信這些問題是存在的。這裡的目的是想給大家一個概念,為什麼CPU和指令架構非常重要,不光是AI加速器,處理器本身也是非常重要的。

2000年左右有以Linux為代表的開源軟體,開源軟體和開源標準獲得非常大的成功。網路界出現Ethernet、Many、TCP/IP,有很多開源實現,也有私有實現。現在操作系統有開源的標準,如Posix系統,Linux、FreeBSD、Windows也是遵循它。編譯器是SQL,開源實現MySQL和PostgresSQL,私有實現Oracle和M/S DB2。圖形標準是OpenGL,開源實現Mesa3D,私有實現M/S DirectX。我們有指令集,同時有私有化實現。圖形也是同樣的道理,既然指令這麼重要,可我們卻沒有開源指令標準。因為這個東西非常有用,所以還是出現非常多私有化實現,包括X86、ARM、IBM360。RISC-V Fit i n這個Table,是個開源標準,也有一些開源的實現。

RISC-V的起源與對AI晶元的改變

我們真正需要很多指令集嗎?而且每個都靠花錢才能拿到的,這些指令必須是私有控制的嗎?為什麼不能有一個通用的且開放的免費指令集系統。RISC-V的誕生就是為了回答這幾個問題。

RISC-V的起源,在2010年左右,也可以說我們是和第三波AI同時起源的。當時我們為新項目選架構,我們看了所有可選的指令架構,例如MIPS、SPARC和X86。Berkeley,當時主要考慮的是X86和ARM比較多,但都有很多問題。我們知道ARM現在從V7到V8,現在發明到V8.1,加了很多指令,有很多指令的拓展。這是ARM的指令架構,V8設計之初本來目的是有一個乾淨的指令架構,可是實際在每一版本的迭代過程中都會ARM都會增加很多新功能,它會變成一個「胖子」,而且是越來越胖。據說現在做到V9。

RISC-V起源故事:當時我們看了X86和ARM,X86是不太可能,IP問題,實現複雜度太高。我上大學時,教授說等你畢業時,英特爾會加上兩三千條指令。現在看來確實如此。當時ARM幾乎不可能,也沒有推出64位處理器,同時具有很多IP法律問題,複雜度也不低。雖然它號稱是Advance RISC Machine,但實際上是個複雜的CISC machine。所以我們開發了新的,也就是大家所知道的RISC-V指令架構。四年後(2014年時)發布第一個公開標準,我們在Berkeley做了很多流片,從第一天誕生起,它是為了加速器的研究所設計的。第一天就是為了支持加速器和AI。正確讀法應該是RISC-Five,而不是RISC-V。這在Berkeley發展了5代,第1代最早,在80年代初。SOAR(RISC-3)是大家不太熟悉的,SPUR(RISC-4)有很多大佬是這裡畢業的。2011年是RISC-V。

RISC-V有什麼不同?首先,它非常簡單和非常乾淨的設計。用戶指令和特殊指令分開,它是模塊化的,可以做自己定製化的模塊和擴展,有足夠的指令空間做定製化。它是穩定的架構,當我們定了RISC-V本身的基準指令後,不會再有變化。要想增加新的指令,可以通過擴展子集實現,而不是加強新版本,這對穩定性來講非常重要。

為了維護RISC-V的標準,我們成立了RISC-V基金會。現在也有中國企業在其中,目前這個基金會裡大概有150家公司。所有的大公司,除了英特爾和ARM以外 (直接競爭手段),其他都在裡面。

總結,RISC-V作為軟硬體介面的指令架構,對AI晶元提供了非常重要的基礎,它有非常好的標準指令子集,有編譯器、Linux支持,它沒有任何法律的問題。這樣的靈活性使得自由修改AI擴展是非常容易的事情。OURS是一個創業公司,我們的目的是使用RISC-V讓所有企業以最低的門檻使用AI+RISC-V晶元。我們是RISC-V非常直接的參與者,有多次RISC-V晶元流片的經歷,我們很快會推出基於RISC-V的開源AI晶元。演算法很重要,軟體很重要,對特殊領域的支持,比如Domain-Specific Knowledge才是AI晶元的根本。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

王小川:搜狗未來將推出顛覆性硬體產品
金融科技2.0時代,我們為什麼看好這三家公司的未來?

TAG:雷鋒網 |