"2014年,微軟在計算機架構(gòu)領(lǐng)域的頂會ISCA上發(fā)表了一篇名為“A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services”的論文,詳細(xì)介紹了微軟Catapult項目團(tuán)隊如何在其數(shù)據(jù)中心里的1632臺服務(wù)器中部署了英特爾Stratix V FPGA,并用FPGA對必應(yīng)(Bing)搜索引擎的文件排名運算進(jìn)行了硬件加速,得到了高達(dá)95%的吞吐量提升。這篇文章一經(jīng)發(fā)表,立刻轟動了整個業(yè)界。它是第一篇真正意義上詳述由互聯(lián)網(wǎng)/軟件巨頭開發(fā)并部署FPGA的專業(yè)論文,標(biāo)志著FPGA第一次在互聯(lián)網(wǎng)/軟件公司的大型數(shù)據(jù)中心里得到實質(zhì)性應(yīng)用。同時也將微軟Catapult項目引入大眾的視野,告訴人們FPGA已不再僅僅是硬件公司的專屬產(chǎn)品,而是可以有效的應(yīng)用于像微軟這樣的互聯(lián)網(wǎng)公司,并有機會部署在谷歌、亞馬遜、臉書、阿里、百度、騰訊等其他互聯(lián)網(wǎng)巨頭遍布全球的成千上萬臺服務(wù)器中。"
Catapult項目的產(chǎn)生背景
微軟對FPGA在數(shù)據(jù)中心里應(yīng)用的研究起源于2010年底,當(dāng)時微軟正希望從一個基于PC軟件的公司,逐步轉(zhuǎn)型為提供各類互聯(lián)網(wǎng)服務(wù)的企業(yè)。Catapult項目的負(fù)責(zé)人Doug Burger認(rèn)識到,像微軟這種體量的互聯(lián)網(wǎng)巨頭不能只提供軟件層面的互聯(lián)網(wǎng)服務(wù),還要從根本上掌控最高效的網(wǎng)絡(luò)硬件設(shè)備。
隨著大數(shù)據(jù)時代的到來,包括人工智能在內(nèi)的各類新應(yīng)用不斷涌現(xiàn),網(wǎng)絡(luò)帶寬也由1Gbps不斷增長為10Gbps、40Gbps直至100Gbps甚至更高。此時,傳統(tǒng)的基于CPU的服務(wù)器和網(wǎng)絡(luò)設(shè)備已無法滿足日益增長的對計算量和網(wǎng)絡(luò)帶寬的需求。因此,尋找合適的網(wǎng)絡(luò)加速設(shè)備勢在必行。
雖然在很多微軟高管看來,微軟自研網(wǎng)絡(luò)硬件設(shè)備就好比“可口可樂宣布要做魚翅”,但Doug Burger還是得到了當(dāng)時擔(dān)任必應(yīng)(Bing)搜索引擎負(fù)責(zé)人陸奇的鼎力支持,并最終向時任微軟CEO鮑爾默及其繼任者納德拉展示了FPGA在加速數(shù)據(jù)中心實際應(yīng)用時的巨大潛力。2016年,微軟在計算機體系架構(gòu)頂會MICRO上發(fā)表了名為“A Cloud-Scale Acceleration Architecture”的論文,系統(tǒng)介紹了Catapult的新一代架構(gòu)和工作。至此,Catapult項目已經(jīng)歷三個階段。
單板多FPGA
在Catapult項目最初期,微軟采用了單板多FPGA的方案,即每塊加速卡上集成6片Xilinx Virtix-6 FPGA,各FPGA之間通過自身的通用I/O端口相連和通信。然而,這種大型加速卡在實際部署時遇到了很多問題,最主要的有以下三點:
1.靈活性極差。如果某種大型應(yīng)用需要多于6片F(xiàn)PGA,則無法用該方案實現(xiàn)。
2.同構(gòu)性極差。由于功耗、供電和尺寸限制,這種大型板卡很難直接部署在數(shù)據(jù)中心的高密度服務(wù)器上。
3.穩(wěn)定性不足。在這種大型板卡中,任何元件發(fā)生故障都有可能造成整個板卡的失效,繼而可能導(dǎo)致相關(guān)服務(wù)器和應(yīng)用的錯誤。
單板單FPGA
這個階段的工作是Catapult項目第一個代表性成果。與前一階段相比,加速卡架構(gòu)從單板多FPGA,變成了單板單FPGA的結(jié)構(gòu)。第二代FPGA架構(gòu)的主要特點是使用了Shell&Role結(jié)構(gòu)。
Catapult項目第二階段的最主要工作之一,是將Bing搜索引擎中原先超過3萬行C++代碼的文件排名運算,卸載到了FPGA上進(jìn)行硬件加速,并得到了驚人的結(jié)果。
下圖總結(jié)了這項工作最具代表性的結(jié)果,即使用FPGA后與純軟件方案的對比。其中,坐標(biāo)橫軸代表系統(tǒng)延時,縱軸代表吞吐量。由于純軟件方案已經(jīng)經(jīng)過了深度優(yōu)化,因此這個比較結(jié)果具有極高的說服力。
這個結(jié)果可以從兩個方面解讀:
當(dāng)系統(tǒng)延時相同的情況下,采用FPGA進(jìn)行硬件加速后吞吐量提升了接近一倍;
對于相同的吞吐量要求,采用FPGA后系統(tǒng)延時會下降29%。由此可見采用FPGA后,系統(tǒng)整體性能得到了大幅度提升。此外,每個FPGA帶來的額外功耗小于25W,相比原系統(tǒng)而言增加了不到10%,且總體成本的增加不超過30%。整個系統(tǒng)只有在部署初期發(fā)現(xiàn)了7塊板卡發(fā)生了硬件故障,占總板卡數(shù)量的0.4%。在之后幾個月的運行中,所有板卡都穩(wěn)定運轉(zhuǎn),足以證明FPGA系統(tǒng)的穩(wěn)定性。
FPGA資源池化
第二階段的工作最主要的問題是,為了實現(xiàn)FPGA之間的低延時通信,引入了一個6x8的二維Torus網(wǎng)絡(luò)。相比于傳統(tǒng)數(shù)據(jù)中心網(wǎng)絡(luò)TOR交換機直連CPU的結(jié)構(gòu),這個Torus網(wǎng)絡(luò)相當(dāng)于在當(dāng)前數(shù)據(jù)中心網(wǎng)絡(luò)里額外增加了一個二層網(wǎng)絡(luò),而這個二層網(wǎng)絡(luò)在擴展性和同構(gòu)性方面帶來了很多問題。
為了解決問題,微軟在2016年發(fā)表了Catapult新一階段的工作,最主要的貢獻(xiàn)是取消了FPGA互連的第二級網(wǎng)絡(luò),直接將FPGA與數(shù)據(jù)中心網(wǎng)絡(luò)進(jìn)行互連。
和上一個版本相同,CPU可以通過PCIe訪問FPGA,并使用FPGA為各類計算任務(wù)進(jìn)行加速運算。除此之外,新版本的硬件布局還帶來了以下幾點好處:
1. FPGA可以被用來加速數(shù)據(jù)中心的各類網(wǎng)絡(luò)和存儲功能。
2. 微軟在自家數(shù)據(jù)中心的5670個服務(wù)器里部署了新一代的FPGA加速卡,遍布全球五大洲的15個國家。
為了實現(xiàn)對池化FPGA資源的統(tǒng)一管理和分配,微軟提出了一種硬件即服務(wù)(Hardware-as-a-Service)”的使用模型
性能方面,Catapult被正式部署在微軟的Azure云數(shù)據(jù)中心,并將必應(yīng)搜索引擎的頁面排序算法進(jìn)行了FPGA加速,對于給定的延時要求,相比于深度優(yōu)化后的軟件實現(xiàn),F(xiàn)PGA可以輕松達(dá)到2.25倍的吞吐量提升。
同時,微軟還對比測試了使用遠(yuǎn)程FPGA獲得的結(jié)果,使用遠(yuǎn)程FPGA與使用本地FPGA相比,并沒有明顯的性能差異。這證明了LTL協(xié)議與HaaS使用模型的有效性。
由此,Catapult第三階段的工作很好的解決了FPGA在大型數(shù)據(jù)中心里部署的靈活性和擴展性問題,為今后FPGA的大規(guī)模部署打下了堅實的基礎(chǔ)。在2017年,微軟推出了一款基于FPGA的深度學(xué)習(xí)加速平臺,名為“腦波(brainwave)”項目。腦波項目代表著FPGA在數(shù)據(jù)中心里的應(yīng)用正式擴展到人工智能領(lǐng)域。
結(jié)尾
微軟的Catapult項目可以稱作是FPGA在大型商業(yè)數(shù)據(jù)中心里進(jìn)行大規(guī)模部署和使用的開山之作,直至目前仍然也是這個領(lǐng)域最具代表性的工作。Catapult兼顧了學(xué)術(shù)創(chuàng)新和工程的實用性,這樣對于業(yè)界其他公司更具有直接的借鑒意義。在結(jié)果方面,微軟使用了自家已經(jīng)深度優(yōu)化的純軟件方案作為對比,使得FPGA取得的顯著性能提升更具可信度和說服力。
有趣的是,除了項目初期的原型驗證外,微軟均采用了Intel/Altera的FPGA芯片,微軟也一躍成為英特爾FPGA的最大客戶之一。有人曾斷言,那些年叱咤風(fēng)云的“Wintel”聯(lián)盟,在后PC時代終將土崩瓦解。然而,在風(fēng)起云涌的大數(shù)據(jù)和AI時代,伴隨著兩家公司的一步步華麗轉(zhuǎn)型,Wintel組合正通過FPGA再一次獲得新生。