如何將AI應用於晶片設計?谷歌有話說!

半導體行業觀察發表於2020-02-24

如果這還不夠糟糕的話,摩爾定律在電晶體密度和成本方面的改進正在放緩。與此同時,晶片設計成本和用於蝕刻晶片的工廠成本也在上升。為保持IT創新的飛躍,在這些方面的任何節省都將是最受歡迎的。

目前,在晶片設計領域,一個很有前途的研究前沿是利用機器學習技術來實際幫助完成設計過程中的一些任務。我們將在即將於3月10日在聖荷西舉行的下一屆人工智慧平臺活動上與Cadence Design Systems的工程總監Elias Fallon討論這個問題。在晶片設計中使用機器學習也是谷歌研究小組的高階研究員Jeff Dean的主題之一,他幫助超大規模業者(hyperscaler)發明了許多關鍵技術,在本週於舊金山舉行的2020年國際固態電路會議上的主題演講中他談到了這一點。

事實證明,谷歌對計算引擎不僅僅有一時的興趣,它是世界上CPU和GPU的主要消費者之一,並且還是從邊緣到資料中心的TPU的設計者,他們既可以進行機器學習推理又可以進行資料學習和訓練。這不僅是搜尋引擎巨頭和公共雲競爭者的學術活動,尤其是如果它打算繼續推進其TPU路線圖,並且決定像競爭對手亞馬遜網路服務一樣,開始設計自己的定製Arm伺服器晶片,或者決定為其手機和其他消費裝置定製Arm晶片。

出於某種偶然性,谷歌在大量不同型別的計算引擎上執行機器學習模型時所做的一些工作正在反饋到它在ASIC上自動放置和佈線IP塊的工作中。(當一個想法是這樣的成形時,那是很美妙的……)

雖然Google在2018年5月展示的TPUv3系統的Pod可以將1,024個張量處理器(其核心數量是我們所知的兩倍,時鐘速度提高了約15%)組合在一起,使用谷歌自己的非常聰明的bfloat16資料格式來提供106千萬億次浮點運算,16位半精度乘法效能(32位累積)的總和。這些TPUv3晶片都使用32×32環形網格交叉耦合,因此它們可以共享資料,並且每個TPUv3核心都有自己的HBM2儲存庫。這個TPUv3 Pod是巨大的計算聚合,可以進行機器學習訓練或推理,但是不一定像Google所需要的那麼大。 (我們將在單獨的故事中討論Dean對AI硬體和模型未來的評論。)

可以說,谷歌正在使用混合架構,它們混合使用CPU和GPU(也許還有其他一些加速器)來增強學習工作負載,因此Dean和他的同行們參與的研究也將用於ASIC設計。

Dean解釋說:“其中一個趨勢是模型變得越來越大。”因此,整個模型並不一定適用於單個晶片。如果你有很大的模型,那麼模型並行性(將模型劃分為多個晶片)是很重要的,並且通過為它提供大量計算裝置來獲得良好效能並非易事,而且如何有效地做到這一點也並不明顯。”

這並不像採用訊息傳遞介面( MPI)那麼簡單,MPI用於在大規模並行超級計算機上分派工作,並將其破解到一個類似TensorFlow機器學習框架中,因為AI iron的本質是異構的。但這可能是一種將機器學習培訓工作負載分散到大量計算元素上的有趣方式,有些已經這樣做了。當然,與其他超大規模業者一樣,谷歌傾向於根據其他技術構建自己的框架、協議和資料儲存。

裝置放置—意味著在整個應用程式中,在正確的時間將正確的神經網路(或包含它的部分程式碼)放置在正確的裝置上,以獲得最大的吞吐量—當神經網路模型變得比單個CPU、GPU或TPU的記憶體空間和計算能力更大時,這一點尤為重要。而且問題比框架和硬體能夠跟上的速度還要快。看一看:

引數的數量一直在增加,同時使用的裝置的數量也在增加。實際上,使128個GPU或128個TPUv3處理器(這就是您在上表中獲得512個核心的方式)協同工作是一項相當大的成就,並且與超級計算機在20多年前所能做到的最好水平相當,在那之前,使用MPI的鬆散耦合、大規模並行的超級計算機接管了使用實際共享記憶體的聯邦NUMA伺服器是HPC的規範。隨著越來越多的裝置將以某種方式捆綁在一起來處理這些模型,谷歌一直在試驗使用強化學習(RL),這是機器學習的一個特殊子集,以找出在任何給定時間在哪裡最好地執行神經網路模型,因為模型整合是在CPU和GPU的集合上執行的。在這種情況下,我們設定了一個初始策略來排程神經網路模型進行處理,然後將結果反饋到模型中進行進一步的調整,使其更高效地執行這些模型。

在2017年,谷歌訓練了一個RL模型來完成這項工作,這是編碼器和解碼器的最終放置結果,而在測試系統中,將工作放在兩個CPU和四個GPU上的RL模型,與人工放置的人工神經網路相比,訓練執行時間減少了19.3%。Dean補充說,這種基於RL的神經網路在計算引擎上的工作“做了一些非直覺的事情”來達到這個結果,這似乎是很多機器學習應用程式的情況,儘管如此,它們在做同樣的任務時工作得和人類一樣好或更好。問題是,不需要大量的RL計算力就可以在裝置上執行正在訓練中的神經網路。在2018年,谷歌做了一項研究,展示瞭如何將計算圖擴充套件到超過80000個操作(節點),去年,谷歌為超過50000個操作(節點)的資料流圖建立了一種通用的裝置放置方案。

Dean說:“然後我們開始考慮用它來代替把軟體計算放在不同的計算裝置上,開始考慮我們是否可以用它來做ASIC晶片設計中的放置和佈線,因為如果你瞥一眼它們,會發現問題看起來有點相似。”“強化學習對於那些有明確規則的難題,比如國際象棋或圍棋,真的很有效。本質上,我們開始問自己:我們能否獲得強化學習模型來成功發揮ASIC晶片佈局的作用?”

根據Dean的說法,要做到這一點有幾個挑戰。首先,國際象棋和圍棋都有一個目標,那就是贏得比賽而不是輸掉比賽。(它們是同一枚硬幣的兩面。)通過在ASIC上放置IP塊並在它們之間進行佈線,並不存在簡單的輸贏,而是有許多您關心的目標,比如面積、時間、擁塞、設計規則等等。更令人氣餒的是,IP塊放置的神經網路模型必須管理的潛在狀態的數量是巨大的,如下圖所示:

如何將AI應用於晶片設計?谷歌有話說!

最後,驅動IP塊放置的真正獎勵函式(在EDA工具中執行)需要花費很多時間才能執行。

Dean解釋說:“所以我們有了一個架構,我不會得到很多細節,但本質上它試圖把一堆東西組成一個晶片設計,然後試著把它們放在晶圓上。”他展示了在一個低功率的機器學習加速器晶片上放置IP塊的一些結果(我們認為這是谷歌為其智慧手機建立的邊緣TPU),一些區域故意模糊,以阻止我們學習該晶片的細節。“我們有一個人類專家團隊放置了這個IP塊,他們有兩個代理獎勵函式,對我們來說非常便宜;我們用兩秒鐘而不是幾個小時來評估它們,這非常重要,因為強化學習是一種需要多次迭代的過程。我們有一個基於機器學習的佈局系統,你可以看到它在某種程度上擴充套件了邏輯,而不是在這樣一個矩形的區域,這使得它在擁塞和電線長度上都得到了改進。到目前為止,我們已經在所有不同的IP區塊上取得了類似或超人的結果。”

注:我不確定我們是否要把人工智慧演算法稱為超人。至少你不想讓它被禁止。

無論如何,下面是RL網路的低功耗機器學習加速器與IP塊放置人員的對比:

如何將AI應用於晶片設計?谷歌有話說!

這張表顯示了手工放置與佈線和機器學習自動化之間的區別:

如何將AI應用於晶片設計?谷歌有話說!

最後,下面是與人類相比,RL網路是如何處理TPU晶片上的IP塊的:

如何將AI應用於晶片設計?谷歌有話說!

人工智慧設計的Cartesian IP塊相比,人工智慧建立的IP塊看起來是多麼的有機。令人著迷。

完成了這一步後,谷歌接著問了這樣一個問題:我們能否培訓一名總代理,能夠迅速有效地放置一種從未見過的新設計?這正是你製造新晶片的關鍵。Google測試了這個通用模型,它使用了四個不同的IP塊,分別來自於TPU架構和“Ariane”RISC-V處理器架構。該資料使人們能夠使用商業工具並在模型上進行各種級別的調整:

如何將AI應用於晶片設計?谷歌有話說!

這是關於Ariane RISC-V晶片的放置和佈線的更多資料:

如何將AI應用於晶片設計?谷歌有話說!

Dean說:“你可以看到,其他設計的經驗實際上會顯著改善結果,所以基本上在12個小時內,你就可以得到最深藍色的條。”他指的是上面的第一個圖表,然後繼續上面的第二個圖表。”,這張圖顯示了有線成本,如果你從零開始訓練,實際上需要一段時間,系統才會有一些突破性的見解,並能夠大幅降低佈線成本,而預先訓練的政策有一些關於晶片設計的直覺,從看到其他設計和人員很快達到那個水平。”

就像我們做模擬整合來做更好的天氣預報一樣,Dean說這種人工智慧驅動的IP塊整合晶片設計的放置和佈線可以用來快速生成許多不同的佈局,並進行不同的權衡。如果需要新增一些功能,AI晶片設計遊戲可以快速重新設計佈局,而不需要幾個月的時間。

如何將AI應用於晶片設計?谷歌有話說!

最重要的是,這種自動化設計輔助可以從根本上降低製造新晶片的成本。這些成本呈指數級上升,我們看到的資料(多虧IT行業的傑出人士和Arista Networks董事長兼技術長Andy Bechtolsheim),使用16奈米工藝的先進晶片設計平均成本為1.063億美元,到10奈米為1.744億美元,再到7奈米成本為2.978億美元,預計5奈米晶片的訂單為5.422億美元。其中近一半的成本已經並且將繼續用於軟體。因此,我們知道如何確定這些成本的目標,而機器學習可以提供幫助。

問題是,晶片設計軟體製造商是否會將人工智慧嵌入晶片設計中,並在晶片設計中引發一場真正意義上的“寒武紀”大爆炸,然後像我們其他人在工作中必須做的那樣將其數量化?看看這裡會發生什麼,以及谷歌所做的類似研究將如何有所幫助,將是一件有趣的事情。

相關文章