作者|Jeff Dean
翻譯|沈佳麗、胡燕君、賈川
為什么芯片設(shè)計(jì)需要很長時(shí)間?能不能加速芯片設(shè)計(jì)周期?能否在幾天或幾周之內(nèi)完成芯片的設(shè)計(jì)?這是一個(gè)非常有野心的目標(biāo)。過去十年,機(jī)器學(xué)習(xí)的發(fā)展離不開系統(tǒng)和硬件的進(jìn)步,現(xiàn)在機(jī)器學(xué)習(xí)正在促使系統(tǒng)和硬件發(fā)生變革。
Google在這個(gè)領(lǐng)域已率先出發(fā)。在第58屆DAC大會(huì)上,Google AI負(fù)責(zé)人Jeff Dean分享了《機(jī)器學(xué)習(xí)在硬件設(shè)計(jì)中的潛力》,他介紹了神經(jīng)網(wǎng)絡(luò)發(fā)展的黃金十年,機(jī)器學(xué)習(xí)如何影響計(jì)算機(jī)硬件設(shè)計(jì)以及如何通過機(jī)器學(xué)習(xí)解決硬件設(shè)計(jì)中的難題,并展望了硬件設(shè)計(jì)的發(fā)展方向。
他的演講重點(diǎn)在于Google如何使用機(jī)器學(xué)習(xí)優(yōu)化芯片設(shè)計(jì)流程,這主要包括架構(gòu)搜索和RTL綜合、驗(yàn)證、布局與布線(Placement and routing)三大階段。在架構(gòu)搜索階段,Google提出了FAST架構(gòu)自動(dòng)優(yōu)化硬件加速器的設(shè)計(jì),而在驗(yàn)證階段,他們認(rèn)為使用深度表示學(xué)習(xí)可提升驗(yàn)證效率,在布局與布線階段,則主要采用了強(qiáng)化學(xué)習(xí)技術(shù)進(jìn)行優(yōu)化。
以下是他的演講內(nèi)容,由OneFlow社區(qū)編譯。
1、神經(jīng)網(wǎng)絡(luò)的黃金十年
制造出像人一樣智能的計(jì)算機(jī)一直是人工智能研究人員的夢(mèng)想。而機(jī)器學(xué)習(xí)是人工智能研究的一個(gè)子集,它正在取得很多進(jìn)步,F(xiàn)在大家普遍認(rèn)為,通過編程讓計(jì)算機(jī)變得“聰明”到能觀察世界并理解其含義,比直接將大量知識(shí)手動(dòng)編碼到人工智能系統(tǒng)中更容易。
神經(jīng)網(wǎng)絡(luò)技術(shù)是一種非常重要的機(jī)器學(xué)習(xí)技術(shù)。神經(jīng)網(wǎng)絡(luò)一詞出現(xiàn)于1980年代左右,是計(jì)算機(jī)科學(xué)術(shù)語中一個(gè)相當(dāng)古老的概念。雖然它當(dāng)時(shí)并沒有真正產(chǎn)生巨大的影響,但有些人堅(jiān)信這是正確的抽象。
本科時(shí),我寫了一篇關(guān)于神經(jīng)網(wǎng)絡(luò)并行訓(xùn)練的論文,我認(rèn)為如果可以使用64個(gè)處理器而不是一個(gè)處理器來訓(xùn)練神經(jīng)網(wǎng)絡(luò),那就太棒了。然而事實(shí)證明,我們需要大約100萬倍的算力才能讓它真正做好工作。
2009年前后,神經(jīng)網(wǎng)絡(luò)技術(shù)逐漸火熱起來,因?yàn)槲覀冮_始有了足夠的算力讓它變得有效,以解決現(xiàn)實(shí)世界的問題以及我們不知道如何解決的其他問題。2010年代至今是機(jī)器學(xué)習(xí)取得顯著進(jìn)步的十年。
是什么導(dǎo)致了神經(jīng)網(wǎng)絡(luò)技術(shù)的變革?我們現(xiàn)在正在做的很多工作與1980年代的通用算法差不多,但我們擁有越來越多的新模型、新優(yōu)化方法等,因此可以更好地工作,并且我們有更多的算力,可以在更多數(shù)據(jù)上訓(xùn)練這些模型,支撐我們使用更大型的模型來更好地解決問題。
在探討設(shè)計(jì)自動(dòng)化方面之前,我們先來看看一些真實(shí)世界的例子。首先是語音識(shí)別。在使用深度學(xué)習(xí)方法之前,語音識(shí)別很難得到實(shí)際應(yīng)用。但隨后,使用機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)技術(shù),大幅降低了詞語的識(shí)別錯(cuò)誤率。
幾年后,我們將錯(cuò)誤率降低到5%左右,讓語音識(shí)別更加實(shí)用,而現(xiàn)在,在不聯(lián)網(wǎng)的設(shè)備里,我們都可以做到僅僅4%左右的錯(cuò)誤率。這樣的模型被部署在人們的手機(jī)里面,隨時(shí)隨地幫助人們識(shí)別自己的語音。
計(jì)算機(jī)視覺方面也取得了巨大的進(jìn)步。2012年左右,Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在ImageNet比賽中首次使用了AlexNet,錯(cuò)誤率得到顯著降低,并在當(dāng)年奪得桂冠。
后一年的ImageNet比賽中,幾乎所有參賽者都使用深度學(xué)習(xí)方法,研究人員則進(jìn)一步放棄了傳統(tǒng)的方法。其中,2015年,由何愷明等微軟研究人員提出ResNet更進(jìn)一步降低了錯(cuò)誤率。
當(dāng)時(shí)的斯坦福大學(xué)研究生Andrej Karpathy正在幫助運(yùn)營ImageNet比賽,他想知道如果人工識(shí)別這項(xiàng)艱難的任務(wù),錯(cuò)誤率會(huì)是多少。在上千個(gè)類別中有40種狗,你必須能夠看著一張照片說:“哦,那是一只羅威納犬,不是一只大力金剛?cè),或者其他品種的狗。” 經(jīng)過一百個(gè)小時(shí)的訓(xùn)練,他將錯(cuò)誤率降到了5%。
這是一項(xiàng)非常艱難的任務(wù),將計(jì)算機(jī)識(shí)別錯(cuò)誤率從2011年的26%降低到2017年的2%是一件很了不起的事,過去計(jì)算機(jī)無法識(shí)別的東西,現(xiàn)在已經(jīng)可以識(shí)別。自然語言處理、機(jī)器翻譯和語言理解中也經(jīng)歷了類似的故事。
此外,開源框架確實(shí)使世界各地的許多人能夠應(yīng)用機(jī)器學(xué)習(xí)技術(shù),TensorFlow就是其中之一。
大約在2015年11月,我們開源了TensorFlow以及供Google內(nèi)部使用的工具。TensorFlow對(duì)世界產(chǎn)生了相當(dāng)大的影響,它已經(jīng)被下載了大約5000萬次,當(dāng)然也出現(xiàn)了很多其他框架,比如JAX、PyTorch等等。
世界各地的人們能夠?qū)C(jī)器學(xué)習(xí)用于各種了不起的用途,例如醫(yī)療保健、機(jī)器人技術(shù)、自動(dòng)駕駛等等,這些領(lǐng)域都是通過機(jī)器學(xué)習(xí)方法來理解周圍的世界,進(jìn)而推動(dòng)領(lǐng)域的發(fā)展。
2、機(jī)器學(xué)習(xí)改變計(jì)算機(jī)設(shè)計(jì)方式
ML研究社區(qū)中的許多成功源自使用更多算力和更大的模型,更多的算力促進(jìn)了機(jī)器學(xué)習(xí)研究領(lǐng)域中重要成果的產(chǎn)生。深度學(xué)習(xí)的發(fā)展正在深刻改變計(jì)算機(jī)的結(jié)構(gòu)。現(xiàn)在,我們想圍繞機(jī)器學(xué)習(xí)計(jì)算類型構(gòu)建專門的計(jì)算機(jī)。
近年來,我們已經(jīng)在Google做了很多類似的工作,其中TPU(張量處理單元)是我們構(gòu)建定制處理器的一種方法,這些處理器專為神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)模型而設(shè)計(jì)。
TPU v1是我們第一個(gè)針對(duì)推理的產(chǎn)品,當(dāng)你擁有經(jīng)過訓(xùn)練的模型,并且只想獲得已投入生產(chǎn)使用的模型的預(yù)測結(jié)果,那它就很適合,它已經(jīng)被用于神經(jīng)機(jī)器翻譯的搜索查詢、AlphaGo比賽等應(yīng)用中。
后來我們還構(gòu)建了一系列處理器。TPU v2旨在連接在一起形成稱為Pod的強(qiáng)大配置,因此其中的256個(gè)加速器芯片通過高速互聯(lián)緊緊連接在一起。TPU v3則增加了水冷裝置。
TPU v4 Pod不僅可以達(dá)到ExaFLOP級(jí)的算力,它還讓我們能夠在更大的模型訓(xùn)練中達(dá)到SOTA效果,并嘗試做更多的事情。
以ResNet-50模型為例,在8塊P100 GPU上訓(xùn)練完ResNet-50需要29小時(shí),而在2021年6月的MLPerf競賽中,TPU v4 pod僅耗時(shí)14秒就完成了訓(xùn)練。但我們的目的不僅僅是在14秒內(nèi)訓(xùn)練完ResNet,而是想把這種強(qiáng)大的算力用于訓(xùn)練其他更先進(jìn)的模型。
可以看到,從一開始的29小時(shí)到后來的14秒,模型的訓(xùn)練速度提高了7500倍。我認(rèn)為實(shí)現(xiàn)快速迭代對(duì)于機(jī)器學(xué)習(xí)非常重要,這樣才能方便研究者試驗(yàn)不同想法。
基于機(jī)器學(xué)習(xí)的計(jì)算方式越來越重要,計(jì)算機(jī)也正在往更適應(yīng)機(jī)器學(xué)習(xí)計(jì)算方式的方向上演進(jìn)。但深度學(xué)習(xí)有可能影響計(jì)算機(jī)的設(shè)計(jì)方式嗎?我認(rèn)為,答案是肯定的。
3、機(jī)器學(xué)習(xí)縮短芯片設(shè)計(jì)周期
目前,芯片的設(shè)計(jì)周期非常長,需要幾十甚至幾百人的專業(yè)團(tuán)隊(duì)花費(fèi)數(shù)年的努力。從構(gòu)思到完成設(shè)計(jì),再到成功生產(chǎn),中間的時(shí)間間隔十分漫長。但如果將來設(shè)計(jì)芯片只需要幾個(gè)人花費(fèi)幾周時(shí)間呢?這是一個(gè)非常理想的愿景,也是研發(fā)人員當(dāng)前的目標(biāo)。
如上圖所示,芯片設(shè)計(jì)包含四個(gè)階段:架構(gòu)探索→RTL綜合→驗(yàn)證→布局和布線。完成設(shè)計(jì)之后,在制作生產(chǎn)環(huán)節(jié)需要進(jìn)行布局和布線(Placement & Routing),有沒有更快、更高質(zhì)量的布局和布線方法?驗(yàn)證是非常耗時(shí)的一步,能不能用更少的測試次數(shù)涵蓋更多的測試項(xiàng)目?有沒有自動(dòng)進(jìn)行架構(gòu)探索和RTL綜合的方法?目前,我們的芯片架構(gòu)探索只針對(duì)幾種重要的應(yīng)用,但我們終將要把目光擴(kuò)大。
布局與布線
首先,關(guān)于布局和布線,Google在2020年4月發(fā)表過一篇論文Chip Placement with Deep Reinforcement Learning,2021年6月又在Nature上發(fā)表了A graph placement methodology for fast chip design。
我們知道強(qiáng)化學(xué)習(xí)的大致原理:機(jī)器執(zhí)行某些決定,然后接收獎(jiǎng)勵(lì)(reward)信號(hào),了解這些決定帶來什么結(jié)果,再據(jù)此調(diào)整下一步?jīng)Q定。
因此,強(qiáng)化學(xué)習(xí)非常適合棋類游戲,比如國際象棋和圍棋。棋類游戲有明確的輸贏結(jié)果,機(jī)器下一盤棋,總共有50到100次走棋,機(jī)器可以根據(jù)最終的輸贏結(jié)果評(píng)定自己和對(duì)手的整套走棋方法的有效性,從而不斷調(diào)整自己的走棋,提高下棋水平。
那么ASIC芯片布局這項(xiàng)任務(wù)能不能也由強(qiáng)化學(xué)習(xí)智能體來完成呢?
這個(gè)問題有三個(gè)難點(diǎn)。第一,芯片布局比圍棋復(fù)雜得多,圍棋有10^{360}種可能情況,芯片布局卻有10^{9000}種。
第二,圍棋只有“贏”這一個(gè)目標(biāo),但芯片布局有多個(gè)目標(biāo),需要權(quán)衡芯片面積、時(shí)序、擁塞、設(shè)計(jì)規(guī)則等問題,以找到最佳方案。
第三,使用真實(shí)獎(jiǎng)勵(lì)函數(shù)(true reward function)來評(píng)估效果的成本非常高。當(dāng)智能體執(zhí)行了某種芯片布局方案后,就需要判斷這個(gè)方案好不好。如果使用EDA工具,每次迭代都要花上很多個(gè)小時(shí),我們希望將每次迭代所需時(shí)間縮減為50微秒或50毫秒。
利用強(qiáng)化學(xué)習(xí)進(jìn)行芯片布局的步驟如下:首先從空白底座開始,運(yùn)用分布式PPO算法(強(qiáng)化學(xué)習(xí)的常用算法)進(jìn)行設(shè)計(jì),然后完成每個(gè)節(jié)點(diǎn)的布局放置,最后進(jìn)行評(píng)估。
評(píng)估步驟使用的是代理獎(jiǎng)勵(lì)函數(shù)(proxy reward function),效果和真實(shí)獎(jiǎng)勵(lì)函數(shù)相近,但成本低得多。在一秒或半秒內(nèi)就可以完成對(duì)本次布局方案的評(píng)估,然后指出可優(yōu)化之處。
構(gòu)建獎(jiǎng)勵(lì)函數(shù)需要結(jié)合多個(gè)不同的目標(biāo)函數(shù),例如線長、擁塞和密度,并分別為這些目標(biāo)函數(shù)設(shè)定權(quán)重。
如上圖所示,布局優(yōu)化采取的是混合方式。強(qiáng)化學(xué)習(xí)智能體每次放置宏(macro),然后通過力導(dǎo)向方法(force-directed method)放置標(biāo)準(zhǔn)單元。
上圖來自前面提到的Nature論文,展示了更多芯片架構(gòu)的細(xì)節(jié)。
上圖展示了一個(gè)TPU設(shè)計(jì)塊的布局與布線結(jié)果。白色區(qū)域是宏,綠色區(qū)域是標(biāo)準(zhǔn)單元群(standard cell clusters)。
圖中左邊是人類專家完成的設(shè)計(jì),從中可以看出一些規(guī)律。人類專家傾向于把宏沿邊緣放置,把標(biāo)準(zhǔn)單元放在中間。一名人類專家需要6~8周完成這個(gè)布局,線長為57.07米。圖中右邊是由智能體(ML placer)完成的布局,耗時(shí)24小時(shí),線長55.42米,違反設(shè)計(jì)規(guī)則的地方比人類專家略多,但幾乎可以忽略。
可以看出,智能體并不像人類專家一樣追求直線布局。為了優(yōu)化布局,智能體更傾向于弧形布局。我們也希望能訓(xùn)練智能體高效地創(chuàng)造一些前所未有的布局方式。
為了實(shí)現(xiàn)這個(gè)目標(biāo),首先,我們運(yùn)用強(qiáng)化學(xué)習(xí)算法優(yōu)化某個(gè)芯片設(shè)計(jì)塊的布局,期間需要經(jīng)歷上萬次迭代;然后,重復(fù)前一步驟,在多個(gè)不同的設(shè)計(jì)塊上預(yù)訓(xùn)練出一套布局規(guī)則,最終讓算法在面對(duì)前所未見的新設(shè)計(jì)塊時(shí)也能給出布局方案。
預(yù)訓(xùn)練好的策略有助于在推理時(shí)做更少的迭代,進(jìn)行“零次(zero-shot)布局”。我們實(shí)際上還沒有新算法來優(yōu)化這個(gè)特定的設(shè)計(jì),當(dāng)然我們可以做數(shù)百次迭代以得到更好的結(jié)果。
上圖展示了使用不同方法時(shí)的布局成本。藍(lán)線表示不經(jīng)過預(yù)訓(xùn)練的從頭訓(xùn)練策略的布局成本,綠線表示用已預(yù)訓(xùn)練的算法優(yōu)化新設(shè)計(jì)塊的布局,X軸表示訓(xùn)練時(shí)間,可以看到,藍(lán)線在經(jīng)過20多小時(shí)的訓(xùn)練后方可大幅降低布局成本,此后仍需經(jīng)過一段時(shí)間才能達(dá)到收斂。而綠線只用了極少的訓(xùn)練時(shí)間就達(dá)到了更低的布局成本并很快收斂。
最令我感到興奮的是圈紅部分。調(diào)優(yōu)預(yù)訓(xùn)練策略在短時(shí)間內(nèi)就可實(shí)現(xiàn)相當(dāng)不錯(cuò)的布局,這種實(shí)現(xiàn)就是我所說的,在一兩秒內(nèi)完成芯片設(shè)計(jì)的布局。
上圖展示了更詳細(xì)的不同設(shè)計(jì)的情況。Y軸表示線長成本(越低越好)。綠色表示使用商業(yè)工具的線長成本,可以看到,從淺藍(lán)色(零次布局)→藍(lán)色(2小時(shí)微調(diào))→深藍(lán)色(12小時(shí)微調(diào)),線長成本越來越低。深藍(lán)色一直比黃色的線長成本要低,因?yàn)橥ㄟ^12小時(shí)的微調(diào)能從其他設(shè)計(jì)中學(xué)到最佳布局。
上圖中,左邊和右邊分別展示了從頭訓(xùn)練的策略和經(jīng)過微調(diào)預(yù)訓(xùn)練策略的芯片布局過程。每個(gè)小方塊表示一個(gè)宏的中心,空白部分表示為標(biāo)準(zhǔn)單元預(yù)留的位置。可以看到,右邊從一開始就將宏放在邊緣,將大片中間區(qū)域留空。而左邊則要經(jīng)過很多次迭代才能形成這樣的格局。
我們利用強(qiáng)化學(xué)習(xí)工具針對(duì)TPU v5芯片的37個(gè)設(shè)計(jì)塊進(jìn)行了布局與布線。其中,26個(gè)設(shè)計(jì)塊的布局與布線質(zhì)量優(yōu)于人類專家,7個(gè)設(shè)計(jì)塊的質(zhì)量與人類專家相近,4個(gè)設(shè)計(jì)塊的質(zhì)量不如人類專家。目前我們已經(jīng)把這個(gè)強(qiáng)化學(xué)習(xí)工具投入到芯片設(shè)計(jì)流程中了。
總的來說,用機(jī)器學(xué)習(xí)進(jìn)行芯片布局與布線的好處包括:可以快速生成多種布局方案;即使上游設(shè)計(jì)有重大改動(dòng)也可以迅速重新布局;大幅減少開發(fā)新ASIC芯片所需的時(shí)間和精力。
驗(yàn)證
接下來是芯片設(shè)計(jì)的驗(yàn)證階段。我們希望用較少的測試次數(shù)覆蓋多個(gè)測試項(xiàng)目。驗(yàn)證是阻礙芯片設(shè)計(jì)提速的主要瓶頸。據(jù)估計(jì),芯片設(shè)計(jì)過程中,80%的工作量在于驗(yàn)證,而設(shè)計(jì)本身僅占20%。因此,驗(yàn)證技術(shù)的任何一點(diǎn)進(jìn)步都會(huì)產(chǎn)生重大作用。
Google在2021年NeurIPS(神經(jīng)信息處理系統(tǒng)大會(huì))上發(fā)表了論文《Learning Semantic Representations to Verify Hardware Designs》,我們能不能運(yùn)用機(jī)器學(xué)習(xí)生成在更短時(shí)間內(nèi)覆蓋更廣狀態(tài)空間的測試用例?
驗(yàn)證階段的基本問題是可達(dá)性(reachability)。目前的芯片設(shè)計(jì)能否讓系統(tǒng)達(dá)成需要的狀態(tài)?我們的想法是,根據(jù)當(dāng)前的芯片設(shè)計(jì)生成一個(gè)連續(xù)的表示,從而預(yù)測對(duì)系統(tǒng)的不同狀態(tài)的可達(dá)性。
我們可以通過RTL將芯片設(shè)計(jì)抽象為一張圖,然后運(yùn)用基于圖的神經(jīng)網(wǎng)絡(luò)去了解該圖的特性,從而了解其對(duì)應(yīng)芯片設(shè)計(jì)的特性,繼而決定測試覆蓋率和測試用例,這給了我們一個(gè)很好的設(shè)計(jì)的抽象表示。
當(dāng)然,如何將這種方法應(yīng)用到實(shí)際芯片設(shè)計(jì)中將是另外一個(gè)重要話題。用RTL生成圖表示之后,我們?cè)趫D神經(jīng)網(wǎng)絡(luò)中運(yùn)用一種叫Design2Vec的技術(shù)進(jìn)行深度表示學(xué)習(xí),從而幫助我們作出預(yù)測。
目前,芯片的驗(yàn)證環(huán)節(jié)需要大量人力,例如,找bug、查找測試覆蓋率漏洞、分析和解決bug等,還需要經(jīng)歷多次如上圖所示的流程循環(huán)。我們希望上述步驟可以實(shí)現(xiàn)自動(dòng)化,自動(dòng)生成新的測試用例以解決重要的問題。
后來我們發(fā)現(xiàn),可以把這個(gè)問題轉(zhuǎn)化為一個(gè)監(jiān)督學(xué)習(xí)問題。如果之前進(jìn)行了一系列測試,并知道這些測試覆蓋哪些測試點(diǎn),就可以將這些數(shù)據(jù)用作監(jiān)督學(xué)習(xí)中的訓(xùn)練數(shù)據(jù)。
然后,當(dāng)出現(xiàn)新的測試點(diǎn)時(shí),假設(shè)進(jìn)行一個(gè)新的測試,我們需要預(yù)測這個(gè)測試能否覆蓋新的測試點(diǎn)。我們希望能結(jié)合之前的訓(xùn)練數(shù)據(jù)以及芯片設(shè)計(jì)本身,來實(shí)現(xiàn)這種預(yù)測。
我們有兩個(gè)Baseline,其中一個(gè)能夠看到測試點(diǎn)(test points)和覆蓋點(diǎn)(cover points)的數(shù)據(jù),這是一個(gè)黑盒測試。
而Design2Vec除了能夠處理上述數(shù)據(jù)外,還能處理實(shí)際設(shè)計(jì)、設(shè)計(jì)的圖結(jié)構(gòu)等等。如果你使用一半的測試點(diǎn)作為訓(xùn)練數(shù)據(jù),并且設(shè)置多個(gè)大小不同的訓(xùn)練集,然后對(duì)其它測試點(diǎn)進(jìn)行預(yù)測,那么將會(huì)得到非常出色的結(jié)果,即使是對(duì)于相對(duì)較少的覆蓋點(diǎn),也能泛化得非常好。相比之下,Baseline這種方法就不能對(duì)此進(jìn)行很好地泛化。
但使用圖神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)設(shè)計(jì)、覆蓋率和測試屬性的方法,實(shí)際上比NeurIPS論文中的其他所有Baseline都要好。
例如,我們常會(huì)遇到很多難以生成測試的覆蓋點(diǎn)。工程師們發(fā)現(xiàn)使用RISC-V Design和TPU Design這兩種不同的設(shè)計(jì)也很難為這些特定的覆蓋點(diǎn)生成測試,于是我們又轉(zhuǎn)向使用貝葉斯優(yōu)化器來嘗試生成測試。
上圖右邊這一列是貝葉斯優(yōu)化器覆蓋的不同測試點(diǎn)、覆蓋點(diǎn)所需的模擬器調(diào)用數(shù)(simulator calls),中間一列是使用Design2Vec所需的模擬器調(diào)用數(shù)。從中可以看到,為覆蓋這些有挑戰(zhàn)性的覆蓋點(diǎn),Design2Vec生成的測試要少于貝葉斯優(yōu)化器。所以Design2Vec非常好,相比之下它更快,能聚焦覆蓋范圍,還能節(jié)省在運(yùn)行計(jì)算模擬器(本身很昂貴)上的開銷。
驗(yàn)證是芯片設(shè)計(jì)在理論和實(shí)踐上長期面臨的一個(gè)挑戰(zhàn)。我們認(rèn)為,深度表示學(xué)習(xí)能夠顯著提高驗(yàn)證效率和質(zhì)量,并且在設(shè)計(jì)中實(shí)現(xiàn)泛化。
即使設(shè)計(jì)發(fā)生了一些改變,這個(gè)新設(shè)計(jì)的版本也能運(yùn)用之前在眾多設(shè)計(jì)上訓(xùn)練出來的系統(tǒng),提高驗(yàn)證效率。正如在布局與布線階段,經(jīng)過訓(xùn)練后的算法即使面對(duì)新設(shè)計(jì)也能夠預(yù)測不同測試的覆蓋點(diǎn),以帶來好的結(jié)果。
架構(gòu)探索和RTL綜合
在芯片設(shè)計(jì)中,另一個(gè)比較耗時(shí)的方面是要清楚你究竟想要構(gòu)建何種設(shè)計(jì)。此時(shí)你需要做一些架構(gòu)探索(architectural exploration),然后做RTL綜合。目前計(jì)算機(jī)架構(gòu)師和其他芯片設(shè)計(jì)師等具有不同專業(yè)知識(shí)的人花費(fèi)大量時(shí)間來構(gòu)建他們真正想要的設(shè)計(jì),然后驗(yàn)證、布局和布線,那么我們可以學(xué)習(xí)自動(dòng)做架構(gòu)探索和綜合嗎?
現(xiàn)在我們正在研究的就是如何為已知的問題實(shí)行架構(gòu)探索。如果我們有一個(gè)機(jī)器學(xué)習(xí)模型,并且想要設(shè)計(jì)一個(gè)定制芯片來運(yùn)行這個(gè)模型,這個(gè)過程能否實(shí)現(xiàn)自動(dòng)化,并提出真正擅長運(yùn)行該特定模型的優(yōu)秀設(shè)計(jì)。
關(guān)于這項(xiàng)工作,我們?cè)赼rXiv發(fā)表了論文《A Full-stack Accelerator Search Technique for Vision Applications》,它著眼于很多不同的計(jì)算機(jī)視覺模型。另外一個(gè)進(jìn)階版本的論文被ASPLOS大會(huì)接收了《A Full-stack Search Technique for Domain Optimized Deep Learning Accelerators》。
這里要解決的問題是:當(dāng)你設(shè)計(jì)一個(gè)機(jī)器學(xué)習(xí)加速器時(shí),需要考慮你想在哪個(gè)加速器上運(yùn)行什么樣的機(jī)器學(xué)習(xí)模型,而且這個(gè)領(lǐng)域的變化非常之快。
上圖中的紅線是指引入的不同計(jì)算機(jī)視覺模型,以及通過這些新模型實(shí)現(xiàn)的ImageNet識(shí)別準(zhǔn)確率提升。
但問題是,如果你在2016年想要嘗試設(shè)計(jì)一個(gè)機(jī)器學(xué)習(xí)加速器,那么你需要兩年時(shí)間來設(shè)計(jì)芯片,而設(shè)計(jì)出來的芯片三年后就會(huì)被淘汰。你在2016年做的決定將會(huì)影響計(jì)算,要保證在2018年-2021年高效運(yùn)行,這真的很難。比如在2016年推出了Inception-v3模型,但此后計(jì)算機(jī)視覺模型又有四方面的大改進(jìn)。
因此,如果我們能使設(shè)計(jì)周期變得更短,那么也許單個(gè)工作負(fù)載加速器能變得可用。如果我們能在諸多流程中實(shí)現(xiàn)自動(dòng)化,那么我們或許能夠得到正反饋循環(huán),即:縮短機(jī)器學(xué)習(xí)加速器的上市時(shí)間,使其能更適合我們當(dāng)下想要運(yùn)行的模型,而不用等到五年后。
4、用機(jī)器學(xué)習(xí)探索設(shè)計(jì)空間
實(shí)際上,我們可以使用機(jī)器學(xué)習(xí)來探索設(shè)計(jì)空間。有兩個(gè)因素影響加速器性能,一是設(shè)計(jì)中內(nèi)置的硬件數(shù)據(jù)通道,二是工作負(fù)載如何通過編譯器而不是更高級(jí)別的軟件映射到該數(shù)據(jù)通道。通常,設(shè)計(jì)空間探索實(shí)際上只考慮當(dāng)前編譯器優(yōu)化的數(shù)據(jù)通道,而不是協(xié)同設(shè)計(jì)的編譯器優(yōu)化和優(yōu)化數(shù)據(jù)通道時(shí)可能會(huì)做的事。
因此,我們能否同時(shí)優(yōu)化數(shù)據(jù)通道、調(diào)度(schedule)和一些編譯器決策,并創(chuàng)建一個(gè)搜索空間,探索出你希望做出的共同設(shè)計(jì)的決策。這是一種覆蓋計(jì)算和內(nèi)存瓶頸的自動(dòng)搜索技術(shù),探索不同操作之間的數(shù)據(jù)通道映射和融合。通常,你希望能夠?qū)⑹挛锶诤显谝黄,避免?nèi)存?zhèn)鬏數(shù)拿看蝺?nèi)存負(fù)載中執(zhí)行更多操作。
根本上說,我們?cè)跈C(jī)器學(xué)習(xí)加速器中可能做出的設(shè)計(jì)決策創(chuàng)建了一種更高級(jí)別的元搜索空間,因此,可以探索乘法的脈沖列陣(systolic array)在一維或二維情況下的大小,以及不同的緩存大小等等。
如前所述,考慮編譯器優(yōu)化與硬件設(shè)計(jì)的協(xié)同設(shè)計(jì)也很重要,因?yàn)槿绻J(rèn)編譯器不會(huì)更改,就無法真正利用處理器中底層設(shè)計(jì)單元的變化。實(shí)際上,不一定要考慮特定設(shè)計(jì)的所有效果和影響。
接下來看看這種方式產(chǎn)生的一系列結(jié)果,將這些結(jié)果與TPUv3芯片的baseline(上圖藍(lán)條)進(jìn)行比較。實(shí)際上這是假定型TPUv3芯片,其中模擬器已停止了運(yùn)行。我們已經(jīng)將其縮小到了sub-10納米工藝。我們還將研究TPUv3的軟件效用,以及共同探索在設(shè)計(jì)空間中的編譯器優(yōu)化。
紅條和藍(lán)條表示的內(nèi)容是一致的,但一些探索過的編譯器優(yōu)化不一定在藍(lán)條中得以體現(xiàn),而這里的綠條則表示的是為單一計(jì)算機(jī)視覺模型定制的假定型設(shè)計(jì)。EfficientNet-B0...B7表示相關(guān)但規(guī)模不同的計(jì)算機(jī)視覺模型。與藍(lán)條baseline相比,(綠條的)Perf/TDP的改進(jìn)大約在3到6倍之間。
那么除EfficientNet-B0...B7外,其他模型的情況如何?在此前所述的ASPLOS論文中提出更廣泛的模型集,尤其是那些計(jì)算機(jī)視覺以外的BERT-seq 128和BERT-seq 1024等NLP模型。
實(shí)際上,定制化芯片不只是適用于單個(gè)機(jī)器學(xué)習(xí)模型,而是使其適用于一組機(jī)器學(xué)習(xí)模型。你可能不想使你的加速器芯片設(shè)計(jì)僅針對(duì)某一項(xiàng)任務(wù),而是想涵蓋你所關(guān)注的那一類任務(wù)。
上圖的黃條代表為五種不同模型設(shè)計(jì)的定制化芯片,而我們想要一個(gè)能同時(shí)運(yùn)行這五種模型(紅色箭頭所指)的芯片,然后就能看出其性能能達(dá)到何種程度?上驳氖牵瑥闹锌梢钥吹剑S條(單一負(fù)載)并不比綠條(多負(fù)載)的性能低多少。所以你實(shí)際上可以得到一個(gè)非常適合這五種模型的加速器設(shè)計(jì),這就好比你對(duì)其中任何一個(gè)模型都進(jìn)行了優(yōu)化。它的效果可能不是最好的,但已經(jīng)很不錯(cuò)了。
而且,如果你關(guān)注的點(diǎn)是性能而非Perf/TDP,得到的結(jié)果實(shí)際上會(huì)更好。所以結(jié)果如何取決于你關(guān)注的是什么,是絕對(duì)性能還是每瓦性能?在Perf//TDP指標(biāo)中,性能結(jié)果甚至提升了2.6到8.8倍,而非Perf/TDP指標(biāo)下的1.8到6.4倍。
因此,我們能夠針對(duì)特定工作負(fù)載進(jìn)行定制和優(yōu)化,而不用構(gòu)建更多通用設(shè)備。我認(rèn)為這將會(huì)帶來顯著改進(jìn)。如果能縮短設(shè)計(jì)周期,那么我們將能以一種更自動(dòng)化的方式用定制化芯片解決更多問題。
當(dāng)前的一大挑戰(zhàn)是,如果了解下為新問題構(gòu)建新設(shè)計(jì)的固定成本,就會(huì)發(fā)現(xiàn)固定成本還很高,因此不能廣泛用于解決更多問題。但如果我們能大幅降低這些固定成本,那么它的應(yīng)用面將會(huì)越來越廣。
5、總結(jié)
我認(rèn)為,在計(jì)算機(jī)芯片的設(shè)計(jì)過程中,機(jī)器學(xué)習(xí)將大有作為。
如果機(jī)器學(xué)習(xí)在合適的地方得以正確應(yīng)用,那么在學(xué)習(xí)方法(learning approaches)和機(jī)器學(xué)習(xí)計(jì)算的加持下,芯片設(shè)計(jì)周期能不能縮短,只需要幾個(gè)人花費(fèi)幾周甚至幾天完成呢?我們可以用強(qiáng)化學(xué)習(xí)使得與設(shè)計(jì)周期有關(guān)的流程實(shí)現(xiàn)自動(dòng)化,我認(rèn)為這是一個(gè)很好的發(fā)展方向。
目前人們正通過一組或多組實(shí)驗(yàn)來進(jìn)行測驗(yàn),并基于其結(jié)果來決定后續(xù)研發(fā)方向。如果這個(gè)實(shí)驗(yàn)過程能實(shí)現(xiàn)自動(dòng)化,并且能獲取滿足該實(shí)驗(yàn)正常運(yùn)行的各項(xiàng)指標(biāo),那么我們完全有能力實(shí)現(xiàn)設(shè)計(jì)周期自動(dòng)化,這也是縮短芯片設(shè)計(jì)周期的一個(gè)重要方面。
這是本次演講的部分參考文獻(xiàn)以及相關(guān)論文,主要涉及機(jī)器學(xué)習(xí)在芯片設(shè)計(jì)和計(jì)算機(jī)系統(tǒng)優(yōu)化中的應(yīng)用。
機(jī)器學(xué)習(xí)正在很大程度上改變?nèi)藗儗?duì)計(jì)算的看法。我們想要的是一個(gè)可以從數(shù)據(jù)和現(xiàn)實(shí)世界中學(xué)習(xí)的系統(tǒng),其計(jì)算方法與傳統(tǒng)的手工編碼系統(tǒng)完全不同,這意味著我們要采取新方式,才能創(chuàng)建出我們想要的那種計(jì)算設(shè)備和芯片。同時(shí),機(jī)器學(xué)習(xí)也對(duì)芯片種類和芯片設(shè)計(jì)的方法論產(chǎn)生了影響。
我認(rèn)為,加速定制化芯片設(shè)計(jì)過程中應(yīng)該將機(jī)器學(xué)習(xí)視為一個(gè)非常重要的工具。那么,到底能否將芯片設(shè)計(jì)周期縮短到幾天或者幾周呢?這是可能的,我們都應(yīng)該為之奮斗。
文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請(qǐng)謹(jǐn)慎對(duì)待。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。
2024年的Adobe MAX 2024發(fā)布會(huì)上,Adobe推出了最新版本的Adobe Creative Cloud。
奧維云網(wǎng)(AVC)推總數(shù)據(jù)顯示,2024年1-9月明火炊具線上零售額94.2億元,同比增加3.1%,其中抖音渠道表現(xiàn)優(yōu)異,同比有14%的漲幅,傳統(tǒng)電商略有下滑,同比降低2.3%。
“以前都要去窗口辦,一套流程下來都要半個(gè)月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶就打進(jìn)了21600元。
華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,憑借其優(yōu)秀的性能配置和精準(zhǔn)的色彩呈現(xiàn)能力,為您的創(chuàng)作工作帶來實(shí)質(zhì)性的幫助,雙十一期間低至2799元,性價(jià)比很高,簡直是創(chuàng)作者們的首選。
9月14日,2024全球工業(yè)互聯(lián)網(wǎng)大會(huì)——工業(yè)互聯(lián)網(wǎng)標(biāo)識(shí)解析專題論壇在沈陽成功舉辦。