機器學習是近段時間以來的大熱門,而盡管 EDA 處理的也是大數據類型的問題,但在將機器學習技術整合進 EDA 工具方面還沒有取得很大的進展。
許多 EDA 問題和解決方案本質上就是關于統計的,這說明機器學習自然而然適合 EDA。那為什么這個領域在采用機器學習技術上如此緩慢而視覺識別和搜索等其它技術領域卻可以如此輕松地接納它?
Solido Design Automation 技術運營副總裁 Jeff Dyck 表示:“你可以感受到這是一個機器學習問題。我們有大量的數據,但我們可以應用哪些方法來解決這些問題?這才是難點。不是說讀一本教科書或學一門課就能將這些方法應用到所有問題上。工程問題需要一個不同的角度。”
在深入了解機器學習在哪些地方有所應用之前,我們先看看一些問題。
從基于規則到深度學習
我們首先對這些技術進行一個分類吧。“從最廣義的角度講,在 EDA 領域,我們全部都已經習慣了基于規則的方法(rule-based techniques,RBT)。”英偉達資深工程總監 Ting Ku 解釋說,“實際上機器學習是RBT的一個子集,而深度學習又是機器學習的一個子集。RBT是確定性的,不會涉及到數據庫,也不會定義特征。而機器學習的出發點是統計的,而非確定性的,而且因為必須從經驗中學習,所以還會涉及到數據庫。使用機器學習,我們也許還需要預定義的特征,而這正是機器學習和深度學習的區別。對于深度學習而言,除了沒有預定義的特征,其它都和機器學習一樣。所以問題來了:‘特征(feature)是什么?’”
一旦你有了特征并存儲了足夠的數據,你就要想辦法把它們用起來。“搜索整個設計空間是不切實際的。”NetSpeed Systems營銷和業務開發副總裁 Anush Mohandass 說,“由于該空間高度非線性的本質,搜索時間會隨著搜索范圍擴大而指數級增加。對于這樣的問題,機器學習(其中,過去的解決相似問題的經驗可被用作訓練數據,從而學習和預測可用于相似的新問題的解決方案)表現了巨大的潛力。”
機器學習的方法有很多,大體上可分為監督學習、無監督學習和強化學習。大多數 EDA 應用都著眼于監督學習。E3 Data Science 的 CTO Eric Hall 解釋說:“有兩種類型的監督學習。回歸(regression)可用于我們想要預測數值的情況,而分類(classification)則可用于預測多個結果中一個結果的情況。可以解決這些問題的機器學習算法有很多,但是卻沒有任何一種能夠單獨解決所有問題。”
也還存在其它問題,Hall 補充說:“在尋找未被發現的特征來對非線性進行建模方面,深度學習技術表現很出色,但它卻是一個黑箱,難以解釋而且可能需要很長的訓練時間。”
訓練
機器學習技術的表現取決于其訓練所用的數據。“機器學習是一個迭代過程,”Ku 說,“機器學習算法根據輸入數據有相應輸出。這些輸出可能不正確,所以你還必須要驗證。完成之后,這些數據又被包含回數據庫。這時候就該開始再訓練(rertraining)了。這個循環一直持續。在某種程度上,我們希望這些迭代循環能夠使得該模型相當準確,使得其在看到一個新案例時能夠做出很好的預測。”
在許多案例中,數據可能來自于以前的設計,但這就夠用了嗎?Solido 的 Dyck 說:“想象一下,假如有 2000 個并行工作的 SPICE 模擬器要解決一個我們以前從未見過的芯片的一種從未見過的制造工藝問題。我們可以收集一些過去做法的信息并使用這些信息來塑造模型,但我們也有實時數據。這是實時機器學習以及實時構建模型。”
而實時學習還有其它很多問題。“如果流數據(streaming data)出了什么問題或者有會污染模型的錯誤答案,那你就需要過濾或調整它——而這是非常艱難的。”他補充說,“我們需要自動恢復和修復。當出現問題時,你必須要能夠對流數據進行調試。”
但調試機器學習系統還是一個相對未知的領域。驗證技術就算有,也只是寥寥無幾。
涉及 EDA 流程的學習還有其它一些類型。“我們需要能通過設計實現過程獲取知識,”高通高級技術總監 Sorin Dobre 說,“EDA 有一個很好的機會,可以將監督和無監督機器學習解決方案擴展用于設計流程優化(design flow optimization)。我們有20 年經驗的高級工程師可以確保高質量的設計,但我們也需要幫助剛剛開始的設計師。我們沒法等上五年時間才完全發揮他們的生產力。”
就算對經驗豐富的設計師,這個工作也正變得越來越難。“過去,架構師根據他們的經驗來設計互連(interconnect),并且根據他們的直覺來做出關于拓撲結構和布線選擇的關鍵設計決策。” NetSpeed 的 Mohandass 說,“但是,這種方法并不適用于片上需求非常多樣化的異構系統。由于多個片上器件之間交互的復雜性,要設計一種接近最優的,而且能夠工作的、表現良好的、還考慮了所有用例的互連實際上是不可能的。”
數據集
Plunify 的 CEO Harnhua Ng 說:“獲取一個好的數據集可能難度很大。這些工具的學習能力可以保證當工程團隊使用它們越多時,學習數據庫就會變得越聰明,從而加速設計完成的時間。”
所以只有那些已經有大規模數據集的人可以使用這些技術嗎?或者 EDA 可以提供初始的訓練嗎?“對于 EDA 領域的許多機器學習應用而言,與算法相關的參數選擇和訓練需要完全在設計客戶或代工廠的計算環境內進行。”Cadence 的杰出工程師 David White 說,“在這些應用中,最具挑戰性的任務是創建自動化的訓練和驗證方法,使其可以確保算法在目標硅技術上按預期運行。在一些案例中,更先進和更復雜的機器學習方法可以提供更高的準確度,但要在該領域提供支持卻最為困難。在開發過程中,人們需要根據所需的準確度以及可用訓練數據的數量和其它支持以及模型相關的約束條件來權衡合適的算法與架構選擇。”
聽上去很難,實際上也正是如此。“EDA 問題有很高的維度、高階的互動、不連續性和非線性,需要先進的實驗技術設計、先進的監督學習、智能篩選和過濾以及基準基礎設施(benchmarking infrastructure)。”Solido 總裁兼 CEO Amit Gupta說,“此外,EDA 問題還有很高的流數據速率和大規模的數據歸檔,需要優化的流解析器(streaming parser)、可并行化算法、高效和可擴展的集群管理、自動恢復和修復以及大數據調試。”
Mohandass給出了一個互連設計所需的數據集的例子。“完美的互連策略依賴于非常大量的 SoC 參數,其中包括布圖(floorplan)、布線約束、可用資源、連接要求、協議層面的依賴、時鐘特性、工藝特性(比如線延遲、功耗、帶寬和延遲約束)等等。設計策略空間中不同維度的數量可以增至數百個,這會創造一個過大的設計空間。”
基礎設施
這個問題有幾個維度。Synopsys 副總裁兼 CIO Hasmukh Ranjan 說:“機器學習可以被用在 EDA 中,但為了最大化其所帶來的好處,機器學習既應該被用在這些工具本身之中,也應該圍繞這些工具用在設計流程之中。”
高通的 Dobre 表示同意:“沒必要將所有東西都做到 EDA 工具里面。你可以用獨立的機器學習解決方案來驅動已有的工具。”
IC Manage 的執行副總裁 Shiv Sikand 提供了一個例子:“通過分析之前流片(tapeout)的數十億個數據點,我們可以預測漏洞、設計復雜度、人力資源、證書的影響,并計算當前項目服務器集群的吞吐量。通過確定半導體設計中的瓶頸,我們可以提供前瞻性預測并識別潛在的延遲。”
我們可能也需要檢查我們運行工具的基礎設施。“我們也需要考慮智能存儲,”Sikand 補充說:“通過分析與文件操作相關的數據流,聚類和回歸分析等機器學習技術可以持續改進 P2P 網絡和緩存管理,以提供更好的應用性能。”
Dobre 的團隊也很熟悉這些問題:“我們有包含數以萬計 CPU 的計算農場。當你查看需要同時驗證的設計的數量時,你該怎樣以一種最優的方式來使用這些資源,而不造成資源需求爆炸?這就需要數據管理。你該怎么有效地應對在設計空間和在代工方面的這么多的數據,并提取出下一設計所需的知識和信息以減少學習周期?”
將運行該機器學習算法的機器又增加了額外的另一個維度。“機器學習將通過現有的復雜算法來減少設計和仿真的時間。” Markets and Markets 副總監 Sachin Garg 說,“EDA 工具可以采納或采取智能決策來使其更進一步,但我們需要更好的硬件(CPU GPU)來運行如此復雜的機器學習算法,以使其更有效率。當前一代又一代的 GPU 可以為并行計算負載提供巨大的加速和出色的性能擴展。”
Cadence 的 White 同意這個說法:“在大規模并行計算架構領域的進步為基于假設的優化和驗證( what-if based optimization and verification)開啟了大門,從而可以有效地探索設計空間和融合最有潛力的決策。”
應用領域
成功依賴于定義正確的特征集合的能力。“以考慮工藝偏差(variation)的設計為例,”Ku 說:“如果你想建模一個概率密度函數,你需要屬性(attribute)。特征(feature)是能將一種事物與另一種事物區分開的屬性。對于人來說,特征可能是頭發顏色、身高、性別。對于考慮工藝偏差的設計而言,特征則可能是 PVT 角、定義器件變化的算法和器件的隨機變量。所以特征就是一些對一個特定問題重要的東西。”
在 10nm 和 7nm 工藝上,我們可以看到有很多工藝偏差。“代工廠提出新工藝技術的努力是很重要的。”Dobre 說,“即便這是在數字領域,也需要將庫元素看作是模擬設計。你必須跨多個工藝角來對設計進行驗證。你該怎樣在不出現所需資源爆表的情況下實現高質量?機器學習可以將生產力提升 10 倍、減少數周的測量時間和減少資源消耗。在識別會導致產量不達標的模式上,機器學習是一種有效方法。我們看到了其中的巨大潛力,可以帶來經濟效益。”
EDA 正在努力解決這個問題。“對于先進節點的設計,新型的硅技術和額外的驗證需求帶來了更大的不確定性,從而也提升了潛在的風險。”White 說,“在傳統的設計流程中,先前的設計和布局數據并不會被有效地用來幫助指導下一個設計。分析方法的進步允許我們檢查(開采)之前的設計數據和趨勢,并將其用于在設計流程的最早期階段指導設計決策。這些同樣的方法也可以被用于發現和提供驅動機器學習引擎的訓練和開發的背景(context)。這樣的解決方案很可能需要利用大量的數據和數百個機器學習組件,它們都將需要管理和驗證。一旦數據被放在了適當的背景中,機器學習就可以被用于獲取復雜行為提供的分析(比如寄生、電氣、驗證),而且準確度高、速度快。”
另外還有一些其可以提供幫助的設計領域。Hall 說:“我們可以將其用于內存或邏輯門的功率估計或時序估計。這將能減少不確定性并為人類工作提供補充,從而可以創造出更具競爭力的產品。”
另一個正在出現解決方案的領域是布線(routing)。“在互連設計的背景中,第一步是識別每一個維度中設計策略的組合,這能為之前大量不同的 SoC 設計帶來優良的解決方案。” Mohandass 指出,“下一步是使用這些信息來學習模式并預測哪些策略組合將最有可能帶來優良設計。”
類似的技術也可應用于 FPGA 布線。“帶有復雜時序和性能封閉(performance closure)問題的復雜 FPGA 設計是基于機器學習技術的工具的良好候選項。” Plunify 的 Ng 補充說,“機器學習工具能夠分析過去的編譯結果,從而可在數以千萬億計的可能方案中預測出最優的綜合/布局和布線參數以及布放位置。它們可以使用統計建模和機器學習來推斷哪些工具參數對一種設計最優,以從數據中提取見解來提升結果的質量。”
值得信任的結果
但相對于其它機器學習應用,設計面臨著更大的障礙。“最后如果一個方案存在設計過于激進或過于保守的風險,人們就不會采用這個方案。”Dyck 解釋說,“機器學習工具是大型的估計器。你不能要求人們去信任它。所以我們需要能夠清楚準確度的建模技術。目前這種技術還非常少——你必須發明它們。我們需要主動的學習方法,可以逐步發現相關的領域,而這些往往在最糟糕的情況旁邊。要向我展示可能會導致芯片失敗的地方,并且在那個區域提供清楚的洞察。這樣你就要在這些區域直接進行實驗。針對問題領域是很重要的。”
Dyck 還指出了 EDA 所面臨的另一個障礙:“如果你不能證明一個答案是正確的,他們就不會接受它。所以你需要設計可驗證的算法。你需要將驗證用作該技術的一部分,這樣當你給出一個答案時,你就可以說明它在運行時是正確的。”
總結
機器學習已經開始滲透進 EDA 和設計流程中了。Gupta 說:“機器學習已經開始在 EDA 領域發揮重要的作用。它還有進一步提供顛覆性技術突破來解決半導體難題的機會。”
但我們還有很長的路要走。Ku 說:“今天我們看到的只是冰山一角。我們希望未來 EDA 能停止提供數據。數據當然很好,但我們真正需要的是決策。你需要做的就是在數據和決策之間加入一層,該機器算法可以通過學習數據來了解應該做出怎樣的決策。EDA 正處在進行這項工作的完美位置上。”
如果要維護信任,還需要一些小步驟。 Synopsys 的 Ranjan 總結道:“人工智能和機器學習可以成為一家公司與眾不同的地方,但是使用人工智能必須不能降低算法的精確度。“
yuzhong 從競爭對手之中脫穎而出的關鍵,但在利用它時需要不對準確度產生損害。”
? ? ? ?責任編輯:tzh
評論
查看更多