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