MIT推出預測代碼速度新工具Ithemal,純文本自動學習,無需手動添加特征
麻省理工學院的研究人員建立了一個新的基準測試工具,可以準確預測給定代碼在計算機芯片上執行所花費的時間,這可以幫助程序員調整代碼以提高性能。預測錯誤率甚至比英特爾自家的工具低50%。
為了讓代碼盡可能快地運行,開發人員和編譯器(將編程語言轉換為機器可讀代碼的程序)通常使用性能模型,通過模擬給定的芯片體系結構來運行代碼。
編譯器使用這些信息來自動優化代碼,開發人員使用這些信息來解決運行這些代碼的微處理器的性能瓶頸問題。但是,機器代碼的性能模型是由少數專家團隊寫的,未經過合適的驗證。其結果是,模擬出的性能標準通常與實際結果有偏差。
現在,MIT的研究人員開始著手解決這個問題,他們在去年6月的國際機器學習大會上提出了一種新的機器學習pipeline,可以將上面的模擬過程自動執行,使這個過程更便捷,更快速,更準確。據研究人員介紹,Ithemal是一種神經網絡模型,它以“基本塊”(計算指令的基本摘要)的形式訓練標記數據,以自動預測給定芯片執行以前看不見的基本塊需要多長時間。Ithemal的性能要比傳統的手動調整模型精確得多。
在去年11月舉行的IEEE國際研討會上,研究人員提出了各個領域的基本模塊的基準套件,包括機器學習,編譯器,密碼學和可用于驗證性能模型的圖形。他們將超過30萬個已分析的塊合并到一個名為BHive的開源數據集中。在評估過程中,Ithemal預測出英特爾芯片運行代碼的速度要比英特爾自己構建的性能模型還要好。
開發人員和編譯器可以使用該工具來生成代碼,讓代碼在越來越多的多“黑匣子”芯片設計方案上更快,更高效地運行。現代計算機處理器的設計是不透明的,設計方案極其復雜且難以理解。如何編寫代碼才能在這些處理器實現盡可能快的執行速度,是一個很大的挑戰。”
MIT 助理教授,人工智能實驗室研究員邁克爾·卡賓(Michael Carbin)是這款工具的作者之一,他表示,該工具是“朝著對這些芯片的性能進行完全建模來提高代碼效率的重要一步。”
最近,在12月舉行的NeurIPS 2019上,團隊又提交一篇論文,提出了一種自動生成編譯器優化的新技術。具體來說,就是自動生成一個名為Vemal的算法,將某些代碼轉換為向量,可用于并行計算。實驗表明,Vemal的性能優于業界常用的LLVM編譯器中使用的手工矢量化算法。
從數據中學習,不需要技術文檔
Carbin說,手工設計性能模型可能是“一門黑科技”。英特爾提供了超過3000頁的詳盡文檔,描述了其芯片的體系結構。但是目前只有一小部分專家能夠構建性能模型,以模擬這些架構上代碼的執行情況。
Mendis說:“英特爾的文檔中既存在錯誤,也夠不完整,并且將一些信息略去不提,因為涉及專有知識產權。但是,如果利用的是數據,就無需了解文檔。即使有些東西被略去了,也可以直接從數據中學習。”
為此,研究人員記錄了給定微處理器計算基本塊指令的平均需要多少個周期,這些指令基本上是啟動、執行和關閉操作序列,無需人工干預。對這個過程實現自動化,就可以快速分析成千上萬個基本指令塊。
專有域架構:純文本學習,無需手動添加特征
在訓練中,Ithemal模型分析了數百萬個自動劃分的基本塊,準確了解不同的芯片體系結構執行計算的方式。重要的是,Ithemal將原始文本作為輸入,不需要手動向輸入數據中添加特征。在測試中,可以將以前不可見的基本塊和給定的芯片信息作為輸入提供給Ithemal,Ithemal將生成一個數字,表示出該芯片執行該代碼段的速度。
研究人員發現,Ithemal預測的錯誤率(即預測速度與實際速度之間的差異)比傳統的手工模型降低了50%。此外,在之后的一篇論文中,研究人員表明,Ithemal的預測錯誤率為10%,而Intel自己的性能預測模型在多個不同域的各種基本模塊上的預測錯誤率為20%。
Mendis說,目前這款工具可以讓人們更輕松地快速了解任何新芯片架構的性能速度。例如,專門用于神經網絡的Google新型TPU。“如果要在某些新架構上訓練模型,只需從這種架構上收集更多數據,通過我們的探查器運行,使用這些信息來訓練Ithemal,就能生成預測性能的模型。” Mendis說。
未來,研究人員正在研究如何讓模型變得可解釋。機器學習在很大程度上是個黑匣子,人們不清楚特定模型會做出某種預測的原因是什么。“我們的模型顯示,某個處理器要執行一個基本塊需要10個周期。現在,我們在研究模型為什么做出這樣的預測。” Carbin說。“對于此類的工具來說,這已經達到了微粒度級別,真是太好了。”
研究人員還希望用Ithemal進一步增強Vemal的性能,讓其自動達到更高的性能。