很多世界頂尖的“建筑師”可能是你從未聽說過的人,他們設(shè)計并創(chuàng)造出了很多你可能從未見過的神奇結(jié)構(gòu),比如在芯片內(nèi)部源于沙子的復雜體系。如果你使用手機、電腦,或者通過互聯(lián)網(wǎng)收發(fā)信息,那么你就無時無刻不在受益于這些建筑師們的偉大工作。
Doug Burger博士就是這群“建筑師”里的一員。他現(xiàn)任微軟技術(shù)院士(Technical Fellow),曾任微軟研究院杰出工程師、德克薩斯大學奧斯丁分校計算機科學教授。他也是微軟FPGA項目Catapult和Brainwave的首席架構(gòu)師和主要負責人。2018年,Doug Burger在微軟研究院的播客里分享了他對后摩爾定律時代芯片產(chǎn)業(yè)發(fā)展的觀點與愿景,并展望了人工智能時代芯片技術(shù)的前進方向。
老石對他的觀點進行了整理和采編。本文主要是Doug Burger博士對FPGA在人工智能時代的獨特優(yōu)勢的全面分析,以及他對于人工智能技術(shù)發(fā)展的深刻思考。文章很長,但全部是他幾十年從業(yè)經(jīng)驗的深入淺出的闡述,盡顯大師之風,值得一讀。
(編者注:下文中的“我”,指的都是Doug Burger博士)
2. FPGA:解決暗硅效應(yīng)的有效途徑
在我看來,一個可行的解決方法就是采用“定制計算”,也就是為特定的工作場景和負載優(yōu)化硬件設(shè)計。然而,定制計算或定制芯片的主要問題就是高昂的成本。例如對于一個復雜的云計算場景,不論是設(shè)計者還是使用者都不會采用一個由47000種不同的芯片所組成的系統(tǒng)。
因此,我們將賭注押在了這個名叫FPGA的芯片上。FPGA全名叫“現(xiàn)場可編程邏輯陣列”,它本質(zhì)是一種可編程的芯片。人們可以把硬件設(shè)計重復燒寫在它的可編程存儲器里,從而使FPGA芯片可以執(zhí)行不同的硬件設(shè)計和功能。另外,你也可以在使用現(xiàn)場動態(tài)的改變它上面運行的功能,這就是為什么它們被稱作“現(xiàn)場可編程”的原因。事實上,你可以每隔幾秒就改變一次FPGA芯片上運行的硬件設(shè)計,因此這種芯片非常靈活。
(英特爾Stratix 10 FPGA芯片,圖片來自英特爾)
基于這些特點,我們在FPGA這項技術(shù)上押下重注,并且將其廣泛的部署到了微軟的云數(shù)據(jù)中心里。與此同時,我們也開始將很多重要的應(yīng)用和功能,從基于軟件的實現(xiàn)方式,慢慢轉(zhuǎn)移到基于FPGA的硬件實現(xiàn)方式上??梢哉f,這是一個非常有趣的計算架構(gòu),它也將是我們的基于定制化硬件的通用計算平臺。
通過使用FPGA,我們一方面可以盡早開展定制化計算與定制芯片的研究與設(shè)計,另一方面,我們可以保持與現(xiàn)有架構(gòu)相互兼容的同構(gòu)性。
如果具體的應(yīng)用場景或算法發(fā)展的太快,或者硬件規(guī)模太小的時候,我們可以繼續(xù)使用FPGA實現(xiàn)這些硬件功能。當應(yīng)用規(guī)模逐漸擴大時,我們可以在合適的時機,選擇將這些已經(jīng)成熟的定制化硬件設(shè)計直接轉(zhuǎn)化成定制化芯片,以提高它們的穩(wěn)定性,降低功耗和成本。
靈活性是FPGA最重要的特點。要知道,F(xiàn)PGA芯片已經(jīng)在電信領(lǐng)域中得到了非常廣泛的使用。這種芯片非常擅長對數(shù)據(jù)流進行快速處理,同時也被用于流片前的功能測試等。但是在云計算中,之前并沒有人能夠真正成功的大規(guī)模部署FPGA。我指的“部署”,并不是指那些用來作為原型設(shè)計或概念驗證的工作,而是指真正的用于工業(yè)級使用的部署。
4. 什么是Catapult項目
Catapult項目的主要目的是在微軟的云數(shù)據(jù)中心大規(guī)模部署FPGA。雖然這個項目涵蓋了電路和系統(tǒng)架構(gòu)設(shè)計等工程實踐,但它的本質(zhì)還是一個研究項目。
在2015年末,我們開始在微軟購買的幾乎每臺新服務(wù)器上部署Catapult FPGA板卡。這些服務(wù)器被用于微軟的必應(yīng)搜索、Azure云服務(wù)以及其他應(yīng)用。到目前為止,我們已經(jīng)發(fā)展到了非常大的規(guī)模,F(xiàn)PGA已經(jīng)在世界范圍內(nèi)被大規(guī)模部署。這也使得微軟成為了世界上最大的FPGA客戶之一。
(Catapult FPGA板卡,圖片來自微軟)
在微軟內(nèi)部,很多團隊都在使用Catapult FPGA來增強自己的服務(wù)。同時,我們使用FPGA對云計算的諸多網(wǎng)絡(luò)功能進行加速,這樣我們的客戶會得到比以往更加快速、穩(wěn)定、安全的云計算和網(wǎng)絡(luò)服務(wù)。比如,當網(wǎng)絡(luò)數(shù)據(jù)包以每秒500億比特的速度進行傳輸時,我們可以使用FPGA對這些數(shù)據(jù)包進行控制、分類和改寫。相反的,如果我們使用CPU來做這些事情的話,將需要海量的CPU內(nèi)核資源。因此,對于我們這樣的應(yīng)用場景,F(xiàn)PGA是一個更好的選擇。
(微軟的FPGA板卡,圖片來自微軟)
6. 評價實時AI系統(tǒng)的主要標準
評價實時AI的主要性能指標之一,就是延時的大小。然而,延時到底多小才算“夠小”,這更像是一個哲學問題。事實上,這取決于具體的應(yīng)用場景。比如,如果在網(wǎng)絡(luò)上監(jiān)控并接收多個信號,并從中分析哪個地方發(fā)生了緊急情況,那么幾分鐘的時間就算夠快了。然而,如果你正在和某人通過網(wǎng)絡(luò)進行交談,哪怕是非常小的延時和卡頓也會影響通話質(zhì)量,就像很多電視直播采訪里經(jīng)常出現(xiàn)的兩個人在同時講話那樣。
另外一個例子是,微軟的另一項人工智能技術(shù)是所謂的HPU,它被用于HoloLens設(shè)備中。HoloLens是一款智能眼鏡,它能提供混合現(xiàn)實和增強現(xiàn)實等功能,它里面的HPU也具備神經(jīng)網(wǎng)絡(luò)的處理功能。
(宇航員Scott Kelly在國際空間站上使用HoloLens,圖片來自NASA)
對于HPU,它需要實時分析使用者周圍的環(huán)境,這樣才能在你環(huán)顧四周時,無縫的展示虛擬現(xiàn)實的內(nèi)容。因此在這種情況下,即使延時只有幾個毫秒,也會對使用者的體驗造成影響。
除了速度之外,另一個需要考慮的重要因素就是成本。舉例來說,如果你希望通過處理數(shù)十億張圖像或數(shù)百萬行文本,進而分析和總結(jié)出人們常問的問題或者可能在尋找的答案,就像很多搜索引擎做的那樣;抑或是醫(yī)生想要從很多放射掃描影像中尋找潛在的癌癥指征,那么對于這些類型的應(yīng)用來說,服務(wù)成本就非常重要。在很多情況下,我們需要權(quán)衡以下兩點,一個是系統(tǒng)的處理速度有多快,或者通過何種方式能提升處理速度;另一個就是對于每個服務(wù)請求或處理,它的成本有多少。
很多情況下,增加系統(tǒng)的處理速度勢必代表著更多的投入和成本的攀升,兩者很難同時滿足。但這就是腦波項目的主要優(yōu)勢所在,通過使用FPGA,我認為我們在這兩個方面都處于非常有利的位置。在性能方面我們是最快的,在成本上我們大概率也是最便宜的。