與已有方法不同,該方法能夠基於之前的經驗進行學習,並隨着時間不斷改進。具體而言,在大量芯片 block 上執行訓練時,該方法能夠更迅速地爲新的芯片 block 進行優化佈局。

那麼,這一結果是如何實現的呢?

研究者將芯片佈局 看作一個強化學習問題 ,然後訓練智能體將芯片網表(netlist)的節點放置在芯片畫布(canvas)上。爲了使強化學習策略泛化至新的芯片 block,研究者將表徵學習置於預測芯片佈局質量的監督任務中。通過設計能夠在大量網表及其佈局上準確預測獎勵的神經架構,該研究生成輸入網表的豐富特徵嵌入。然後利用該架構作爲策略和價值網絡的編碼器,實現遷移學習。

該研究旨在最小化芯片設計的 PPA(功耗、性能和麪積)。研究者稱,該方法能夠在  6 小時內完成芯片佈局設計 ,佈局質量超過或匹配人類設計,而現有的基線方法需要人類專家參與,且往往需要數週時間才能完成。此外,谷歌還表示,該方法可以爲谷歌加速器芯片(TPU)生成更優化的芯片放置方案,還適用於任意類型的芯片(ASIC)。

  • 博客鏈接:http://ai.googleblog.com/2020/04/chip-design-with-deep-reinforcement.html

  • 論文鏈接:https://arxiv.org/abs/2004.10746

芯片佈局規劃問題

計算機芯片通常分爲數十個模塊,每個模塊都是一個單獨的模組,例如內存的子系統、計算單元以及控制邏輯的系統。這些模塊可以通過網表以及宏(內存組件)和標準單元(邏輯門,例如 NAND、NOR 和 XOR)等電路組件圖來描述,而所有這些組件均通過網格連接。

確定芯片如何佈局(通常稱爲芯片的佈局規劃過程)是芯片設計過程中最複雜、最耗時的階段之一,它涉及到將網表放置在芯片的畫布(2D 網格)上,儘可能使得功率、性能和麪積(PPA)降至最低,同時還要注意密度和佈線擁塞方面的限制。

儘管對此方向進行了數十年的研究,但是行業內專家仍然需要迭代數週的時間才能完成一個滿足多方面設計標準的解決方案。簡單來說,其複雜性來自於幾個主要層面:網表圖的大小(數百萬至數十億個節點)、網表圖放置的網格粒度,以及計算真實目標所產生的過高成本,如果使用行業標準的電子設計自動化工具這個計算過程可能要花費數小時(有時甚至超過一天)。

谷歌提出用強化學習來解決芯片佈局問題

谷歌模型的輸入包括芯片網表(節點類型和圖鄰接信息)、即將放置的當前節點 ID,以及導線總數、宏和標準單元集羣等網表元數據。研究者使用谷歌去年提出的基於邊的圖神經網絡傳輸網表圖和當前節點,以編碼輸入狀態,從而爲部分放置的圖和候選節點生成嵌入。

研究者提出利用一種新型神經架構來爲芯片佈局訓練域適應策略。 首先重點學習每個狀態空間的豐富表徵,並進而提出一個能夠預測新網表上獎勵的神經網絡架構,最終目標則是使用這一架構作爲策略網絡的編碼層。

訓練這種監督模型需要一個包含芯片佈局和相應獎勵標籤的大型數據集。因此,研究者創建了一個包含 10000 個芯片佈局的數據集,其中輸入爲與給定佈局相關的狀態,標籤是對該佈局位置的獎勵(導線長度和擁塞)。在創建數據集時,研究者首先選擇了 5 個不同的加速器網表,然後爲每個網表生成 2000 個不同的佈局。

此外,爲了訓練能夠準確預測導線長度和擁塞標籤並泛化至未見過數據的監督模型,研究者創建了一個嵌入網表信息的新型圖神經網絡架構。爲了將該架構集成至策略網絡,研究者去除了預測層,然後使用它作爲策略網絡的編碼器組件,具體如下圖所示:

圖神經網絡生成嵌入,該嵌入與網表元數據嵌入一道成爲策略和價值網絡的輸入。策略和價值網絡整體架構如上所示,其中嵌入層對網表鄰接信息、節點特徵和即將放置的當前宏的信息進行編碼。然後,策略和價值網絡分別輸出可用佈局位置的概率分佈以及對當前佈局預期獎勵的估計。

接下來,邊、宏和網表元數據嵌入結合在一起形成單個狀態嵌入(single state embedding),並傳遞至前饋神經網絡。該前饋網絡輸出一個學得表徵(learned representation)。該表徵捕捉到有用的特徵,併成爲策略和價值網絡的輸入。然後,策略網絡對當前節點可以放置其上的所有可能網格單元生成概率分佈。

研究者採用強化學習方法來解決芯片佈局問題,其中 RL 智能體(即策略網絡)依次放置宏。宏放置完成後,利用密歇根大學研究者在論文《VLSI Cell Placement Techniques》提出的力引導(force-directed)方法來完成標準單元的大致佈局(tough placement),如下圖所示:

谷歌利用 RL 智能體放置宏、標準單元的流程圖。放置完成後,計算近似導線長度和擁塞的線性組合並將其傳遞至智能體,爲下次訓練迭代進行參數優化。

谷歌新方法的效果如何?

谷歌在今日發佈的博客中表示, 該方法是首個具有泛化能力的芯片佈局方法 ,這表示它可以利用佈局之前的網表時所學的知識,爲新的未見過的網表生成更好的佈局。研究者表示,隨着執行預訓練的芯片網表的數量增加(即該方法在佈局優化方面更加有經驗),其策略能夠更好地泛化至新的網表。

比如,預訓練策略有機地確定了一種佈局:將宏放置在芯片的邊緣附近,將標準單元放置在芯片中心的凸起空間。這將導致宏和標準單元之間的線長變短,不會帶來過度的佈線擁塞。相比之下,從頭開始訓練的策略從隨機佈局開始,需要更長的時間才能收斂得到高質量的解決方案,而且後知後覺地發現需要在芯片畫布的中心留出一個位置。參見以下動圖:

開源 RISC-V 處理器 Ariane 的宏佈局隨着訓練進程的變化情況。左圖中策略是從頭開始訓練的,而右圖中使用預訓練策略對芯片進行微調。每個矩形代表一個單獨的宏佈局。注意,從頭開始的策略發現的空洞在一開始就存在於預訓練策略的佈局中的。

研究者觀察到預訓練使得樣本效率和佈局質量均有所提升。該研究對比了使用預訓練策略生成的芯片佈局質量和從頭開始訓練策略得到的佈局質量。

爲了爲之前未見過的芯片 block 生成芯片佈局,研究者使用了 zero-shot 方法,即只使用預訓練策略(不進行微調)來放置新的 block,並在不到一秒的時間內完成了佈局。而經過微調後的結果還有待進一步提升。

從頭訓練的策略所需的收斂時間較長,甚至在 24 小時後其芯片佈局質量仍然不如微調策略 12 小時後的結果。

兩種策略在 Ariane 芯片 block 上的收斂軌跡,其中一個策略從頭開始訓練,另一個基於預訓練策略進行微調。

谷歌提出的方法在較大的數據集上實現了更好的性能。據介紹,隨着訓練集從 2 個 block 上升到 5 個再到 20 個,RL 策略生成了更好的芯片佈局,在相同的訓練時鐘時間下以上兩種策略均實現了這樣的效果。

訓練數據規模 vs 微調後的性能。

谷歌還將自己的方法分別與模擬退火(Simulated Annealing,SA)方法、當前 SOTA 方法 RePlAce 和人工基線方法進行了對比,結果如下所示:

與 SA 方法相比,谷歌的方法不超過 6 小時即完成了收斂,而 SA 方法需要 18 個小時。並且,SA 方法生成高質量佈局時需要的導線長度更大,佈線擁塞也更高。

谷歌方法與當前 SOTA 方法 RePlAce 和人工基線方法的對比結果。

在此項研究工作中,研究團隊始終是面向芯片佈局這個核心點,此次提出基於強化學習的方法,而該方法也同時支持遷移學習,這表明強化學習的智能體會在越來越多的芯片網表中獲得學習經驗,從而在處理芯片佈局方面變得更快更好。而新方法已經證明了優於 SOTA 標準,同時此方法是端到端的,並且可以在 6 個小時內生成佈局位置。

相關文章