采訪音頻
整整50年來,計算機的底層元件都遵從著“摩爾定律”:在價格不變的情況下,集成在芯片上的晶體管數(shù)量每隔18到24個月將增加一倍,計算成本呈指數(shù)型下降。摩爾定律成就了各種技術(shù)變革,例如互聯(lián)網(wǎng)、基因組測序等等。
然而現(xiàn)在,摩爾定律的趨勢第一次放緩了。芯片行業(yè)進入了一個不確定的時代,在同樣的投入下,收益變得越來越低。我認為有兩個原因。一是芯片制造商面臨的一個經(jīng)濟問題:相比與芯片體積,大多數(shù)人對芯片的價格更敏感,要求芯片要做到經(jīng)濟實用;二是我所認為的真正原因,隨著晶體管尺寸的不斷縮小,我們遇到了原子極限,先前標(biāo)準(zhǔn)、規(guī)則結(jié)構(gòu)的晶體管結(jié)構(gòu)已經(jīng)無法維系。
在CPU時代,我們一直沿用的范式是在CPU上運行編寫好的程序。這一范式的優(yōu)點在于整個計算系統(tǒng)所有層級都是確定的,它們有限但功能強大。芯片的原理非常簡單,無非就是開關(guān)、邏輯門、二進制系統(tǒng)等等。但是現(xiàn)在,計算需求正變得越來越復(fù)雜和艱難,導(dǎo)致計算機結(jié)構(gòu)也越來越復(fù)雜,在一塊芯片上集成的電路越來越龐大。
Simon Peyton Jones曾說,計算機軟件和體系架構(gòu)是人們迄今為止所創(chuàng)造的最令人驚嘆的結(jié)構(gòu)。在計算機體系架構(gòu)領(lǐng)域,任何一個接口的設(shè)計都需要調(diào)整芯片底層的架構(gòu)。做芯片與做軟件差別很大。編寫軟件時的自由度非常高,但在設(shè)計硬件時卻會面臨各種各樣的限制:在一塊尺寸有限的硅芯片上要集成各種不同功能的組件,并且要保證以正確的方式相互連接,而且要根據(jù)預(yù)算在通用性、高效性、速度、軟件適配等多個維度中做出權(quán)衡。
FPGA:現(xiàn)場可編程門陣列
在加入微軟前,我曾和我的一名博士生Hadi Esmaeilzadeh做過一項關(guān)于“暗硅”(Dark Silicon)的研究。當(dāng)時,業(yè)界正朝著多核芯片的方向發(fā)展,有人認為,只要能編寫并行軟件,就能將計算機芯片架構(gòu)擴展到數(shù)千核。
我們在2011年發(fā)表的研究中發(fā)現(xiàn),由于功耗的限制,一個多核處理器在同一時刻只能有很少的一部分晶體管能夠工作,而其余部分則處于休眠狀態(tài)。這項研究獲得了相當(dāng)高的關(guān)注度。
受到這一研究的啟發(fā),我們認為可以針對特定的工作使用定制硬件來加速計算,解決“暗硅”問題。但是對于普通用戶來說,定制芯片的經(jīng)濟成本以及大量功能不同芯片的管理成本都很高。為了幫助用戶解決這個問題,微軟在Azure云平臺上部署了FPGA(現(xiàn)場可編程門陣列)。
FPGA全稱為“現(xiàn)場可編程門陣列”,之所以稱為“現(xiàn)場可編程”,是因為在做完芯片硬件設(shè)計和算法映射之后,我們?nèi)匀豢梢詫PGA芯片進行實時、動態(tài)地修改。我們可以隨時把它改寫成其它用途的芯片,甚至可以每隔幾秒修改一次。為了同時滿足性能、成本和靈活性的要求,我們可以使用定制芯片來處理部分長期穩(wěn)定的計算需求,而使用FPGA來處理剩余計算需求。
FPGA此前就已經(jīng)廣泛應(yīng)用于通信領(lǐng)域,在處理高速數(shù)據(jù)流以及測試即將投產(chǎn)的芯片時的表現(xiàn)出色。但在云計算中,F(xiàn)PGA尚未真正成功地大規(guī)模使用。
CPU和GPU適合于處理不同的任務(wù)。CPU是一種通用處理器,適合處理少量數(shù)據(jù);而GPU是一種單指令、多數(shù)據(jù)(Single Instruction Multiple Data,SIMD)的并行處理器,即一條指令對不同的幾組數(shù)據(jù)執(zhí)行相同的操作。FPGA實際上是CPU模型的“倒置”。在FPGA上,我們不再固定數(shù)據(jù)、運行指令,而是固定一些指令、運行整批數(shù)據(jù)。我稱之為“結(jié)構(gòu)化計算”,其理念為固定一種計算結(jié)構(gòu),讓數(shù)據(jù)不斷從其中流過。FPGA非常適合這類工作負載,在云中, FPGA可以很好地完成這一使命,對CPU來說也是一種很好的補充。
FPGA每秒能夠處理50GB的數(shù)據(jù)包,同時也可以確保用戶的信息安全和網(wǎng)絡(luò)私密性。面對同樣的計算任務(wù),多塊CPU才能接近一塊FPGA的處理速度。
于是,從2015年底開始,微軟通過Project Catapult項目在微軟Azure云中對FPGA進行了超大規(guī)模的部署,不管與之前相比還是跟競爭對手相比,Azure云的數(shù)據(jù)處理速度都有明顯的提升。目前,微軟是全球最大的FPGA使用者之一,各個團隊都在使用FPGA強化自己的服務(wù)。
Brainwave:為深度神經(jīng)網(wǎng)絡(luò)“定制”處理器
在人工智能領(lǐng)域,目前大熱的深度學(xué)習(xí)對計算機硬件和架構(gòu)都提出了更高的要求,只有更好、更快的硬件和架構(gòu)才能處理日益龐大的訓(xùn)練數(shù)據(jù)和越來越復(fù)雜的深度神經(jīng)網(wǎng)絡(luò)模型。機器翻譯、語音理解、計算機視覺等經(jīng)典人工智能領(lǐng)域的不斷發(fā)展給硅芯產(chǎn)業(yè)帶來了很大的壓力。現(xiàn)在,許多公司都為打造人工智能、機器學(xué)習(xí),特別是深度學(xué)習(xí)的定制架構(gòu)投入了大量的資金。
Project Brainwave硬件模型
因此,我們團隊打造了自己的深度神經(jīng)網(wǎng)絡(luò)處理器Brainwave。我們正與微軟必應(yīng)和Azure團隊通力合作,為微軟的各項服務(wù)提供有力的硬件與架構(gòu)支持。利用Brainwave,必應(yīng)團隊可以擺脫計算資源的制約,能夠部署體量更大的模型,從而為用戶提供更好、更快、更高質(zhì)量的搜索內(nèi)容。
在今年的微軟Build大會上,微軟宣布了Project Brainwave預(yù)覽版,并將其整合到Azure機器學(xué)習(xí)服務(wù)中供用戶使用。同時,用戶也可以自行購買微軟推出的Catapult架構(gòu)主板將之嵌入到生產(chǎn)設(shè)備上,這樣就可以在邊緣設(shè)備上直接運行已經(jīng)在Azure上訓(xùn)練好的模型,從而節(jié)省時間成本。
Brainwave非常適合處理推理運算任務(wù),對于此類任務(wù),目前大量技術(shù)都采用“批處理”的方式。批處理能夠提升計算機的處理能力,但卻容易增加網(wǎng)絡(luò)延遲。Project Brainwave可以將實時AI計算的延遲時間降到最小。不同的任務(wù)對于“實時”的要求并不相同,對于通過收集網(wǎng)絡(luò)信息預(yù)告緊急情況的任務(wù)來說,幾分鐘的“實時”處理是可以接受的,但對于實時語音互動或者類似于HoloLens這種增強現(xiàn)實任務(wù),“實時”處理則要求做到毫秒級。
在實際的計算任務(wù)中,除了處理速度,成本也是需要考慮的一個關(guān)鍵因素。Brainwave系統(tǒng)做到了兩者兼顧,在處理速度和成本控制方面都有非常好的表現(xiàn)。
自從馮·諾依曼結(jié)構(gòu)在上世界四十年代被提出之后,我們一直圍繞著馮·諾依曼計算機和各種各樣的計算機異構(gòu)加速器進行研究,摩爾定律將要謝幕,我們正處于硅基和馮·諾伊曼時代的尾聲。所以,我們應(yīng)該考慮更深遠的東西,為計算機的新的架構(gòu)探索更深層次的理論。