最近,麻省理工學院的研究人員發明了一種機器學習工具,該工具可以預測計算機芯片執行來自各種應用程序的代碼的運行速度。
為了使代碼盡可能快地運行,開發人員和編譯器將編程語言轉換為機器可讀代碼的程序,通常使用通過模擬給定芯片體系結構運行代碼的性能模型。
編譯器使用該信息來自動優化代碼,而開發人員使用該信息來解決將運行該代碼的微處理器的性能瓶頸。但是,機器代碼的性能模型是由相對較少的專家小組手寫的,并且未經適當驗證。結果,模擬的性能測量通常會偏離實際結果。
研究人員開發了一種新穎的機器學習管道,該管道可自動執行此過程,從而使其變得更輕松、更快、更準確。這項研究成果在國際機器學習大會上發表。
研究人員通過一種特殊的神經網絡模型,它以“基本塊”(計算指令的基本摘要)形式訓練標記的數據,以自動預測其持續時間使用給定的芯片執行以前看不見的基本塊。結果表明,這種神經網絡模型的性能要比傳統的手動調整模型精確得多。
這個基準測試套件涉及多個領域,包括機器學習、編譯器、密碼學和可用于驗證性能模型的圖形。研究人員將超過30萬已分析的塊合并到一個開源數據集中。在評估過程中,這種神經網絡模型預測了英特爾芯片運行代碼的速度要比英特爾自身構建的性能模型還要好。
最終,開發人員和編譯器可以使用該工具來生成代碼,這些代碼可以在越來越多的多樣化“黑匣子”芯片設計上更快、更高效地運行。現代計算機處理器不透明,極其復雜且難以理解。編寫對這些處理器執行得盡可能快的計算機代碼也極具挑戰性,該工具是朝著對這些芯片的性能進行完全建模以提高效率的重要一步。
最近,該團隊又提出了一種自動生成編譯器優化的新技術。具體來說,它們會自動生成一種算法,該算法將某些代碼轉換為向量,可用于并行計算。 這種算法優于LLVM編譯器中使用的手工矢量化算法。
LLVM是業界常用的編譯器,一個自由軟件項目,它是一種編譯器基礎設施,以C++寫成,包含一系列模塊化的編譯器組件和工具鏈,用來開發編譯器前端和后端。它是為了任意一種編程語言而寫成的程序,利用虛擬技術創造出編譯時期、鏈接時期、運行時期以及“閑置時期”的最優化。它最早以C/C++為實現對象,而當前它已支持許多種程序語言。
研究人員說,手工設計性能模型可能是“一門妖術”。英特爾提供了超過3000頁的詳盡文檔,描述了其芯片的體系結構。但是目前只有一小部分專家將構建性能模型,以模擬這些架構上代碼的執行。
研究人員指出:“英特爾的文檔既沒有錯誤,也沒有完整,并且英特爾會省略某些事情,因為它是專有的。” “但是,當使用數據時,不需要了解文檔。如果有隱藏的內容,可以直接從數據中學習。”
為此,研究人員記錄了給定微處理器用于計算基本塊指令的平均周期數,基本上是啟動,執行和關閉的順序,而無需人工干預。使過程自動化可以快速分析成千上萬個塊。
在培訓學習中,這種神經網絡模型分析了數百萬個自動剖析的基本塊,以準確了解不同的芯片體系結構將如何執行計算。重要的是,該模型將原始文本作為輸入,不需要手動向輸入數據添加功能。在測試中,可以將以前看不見的基本塊和給定的芯片提供給模型,模型將生成一個數字,指示芯片將以多快的速度執行該代碼。
研究人員發現,該模型的準確性降低了錯誤率,這意味著預測速度與實際速度之間的差異比傳統的手工模型降低了50%。此外,他們表明該模型的錯誤率為10%,而Intel性能預測模型在多個不同領域的各種基本塊上的錯誤率為20%。
該工具現在使人們可以更輕松地快速了解任何新芯片架構的性能速度。例如,特定領域的體系結構,例如Google專門用于神經網絡的新型Tensor處理單元,目前正在構建中,但并未得到廣泛理解。 如果要在某種新架構上訓練模型,只需從該架構收集更多數據,通過探查器運行它,使用該信息來訓練模型,從而就有了一個預測性能的模型。
接下來,研究人員將通過這樣的神經網絡模型研究使人工智能模型可解釋的方法。人工智能機器學習在很大程度上是一個黑匣子,因此尚不清楚為什么特定的模型會做出某種預測。這樣的模型指示一個處理器要執行一個基本塊需要10個周期,從而有可能設法找出其原因。
-
編程語言
+關注
關注
10文章
1950瀏覽量
34905 -
編譯器
+關注
關注
1文章
1642瀏覽量
49240 -
機器學習
+關注
關注
66文章
8438瀏覽量
132928
發布評論請先 登錄
相關推薦
評論