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