美媒稱,在美國電子計(jì)算機(jī)協(xié)會(huì)的系統(tǒng)、程序、語言和應(yīng)用程序大會(huì)上,來自美國麻省理工學(xué)院、法國替代能源與原子能委員會(huì)、奧多比系統(tǒng)軟件公司的研究人員展示了一種能針對(duì)稀疏數(shù)據(jù)編寫出優(yōu)化代碼的新系統(tǒng)。與現(xiàn)有的非優(yōu)化軟件包相比,這種代碼能將數(shù)據(jù)分析速度提高100倍。
據(jù)美國每日科學(xué)網(wǎng)站10月31日?qǐng)?bào)道,人們生活在大數(shù)據(jù)時(shí)代,但大多數(shù)數(shù)據(jù)卻是“稀疏”的。比如,想象一下,一張巨大的圖表繪制出了亞馬遜網(wǎng)站的所有顧客與所有產(chǎn)品之間的關(guān)系,如果用1來表示某個(gè)特定顧客購買的每件產(chǎn)品,用0來表示沒有購買的產(chǎn)品。那么這張圖表上的絕大部分是0。
對(duì)于稀疏數(shù)據(jù),分析算法會(huì)做大量0的相加和相乘,而這種計(jì)算是無用的。為了避免這種情況,程序員會(huì)通過編寫定制代碼來避開0項(xiàng),但這種代碼十分復(fù)雜,通常只適用于少量問題。
在美國電子計(jì)算機(jī)協(xié)會(huì)的系統(tǒng)、程序、語言和應(yīng)用程序大會(huì)上,來自美國麻省理工學(xué)院、法國替代能源與原子能委員會(huì)、奧多比系統(tǒng)軟件公司的研究人員展示了一種能針對(duì)稀疏數(shù)據(jù)編寫出優(yōu)化代碼的新系統(tǒng)。
報(bào)道稱,與現(xiàn)有的非優(yōu)化軟件包相比,這種代碼能將數(shù)據(jù)分析速度提高100倍。它的性能可與針對(duì)特定稀疏數(shù)據(jù)精心手動(dòng)優(yōu)化的代碼相媲美,而程序員要做的工作卻少得多。
該系統(tǒng)名為Taco,即“張量代數(shù)編譯器”的英文縮寫。在計(jì)算機(jī)學(xué)術(shù)語中,像之前所說的亞馬遜網(wǎng)站圖表那樣的數(shù)據(jù)結(jié)構(gòu)被稱為“矩陣”,而“張量”就像是一種更多緯度的矩陣。
近年來,張量的數(shù)學(xué)運(yùn)算——張量代數(shù)——對(duì)于大數(shù)據(jù)分析和機(jī)器學(xué)習(xí)都變得至關(guān)重要。自愛因斯坦時(shí)代以來,它也一直是科學(xué)研究的一個(gè)主題。
以往,在處理張量代數(shù)時(shí),數(shù)學(xué)軟件會(huì)先把張量運(yùn)算分解成各個(gè)組成部分。例如,如果某個(gè)運(yùn)算過程需先把兩個(gè)張量相乘,然后再與第三個(gè)張量相加,那么軟件會(huì)對(duì)前兩個(gè)張量運(yùn)行標(biāo)準(zhǔn)的張量乘法程序,保存結(jié)果,然后再運(yùn)行標(biāo)準(zhǔn)的張量加法程序。
但在大數(shù)據(jù)時(shí)代,這么做卻太耗費(fèi)時(shí)間。研究論文第一作者、來自麻省理工學(xué)院的弗雷德里克·舍爾斯塔德解釋說,要完成對(duì)大型數(shù)據(jù)集的高效運(yùn)算,那么每一組張量運(yùn)算都需要自己的“內(nèi)核”,即計(jì)算模板。
計(jì)算機(jī)學(xué)研究人員此前已為機(jī)器學(xué)習(xí)和大數(shù)據(jù)分析中最常用的一些張量運(yùn)算編寫了內(nèi)核。但可能用到的內(nèi)核數(shù)量是無限的:例如,用于三個(gè)張量相加的內(nèi)核與用于四個(gè)張量相加的內(nèi)核是不同的。
許多張量運(yùn)算需將某個(gè)張量中的一項(xiàng)與另一個(gè)張量中的一項(xiàng)相乘。如果其中一項(xiàng)是0,那么結(jié)果也會(huì)是0,而計(jì)算大型稀疏矩陣的程序會(huì)浪費(fèi)大量時(shí)間來對(duì)0進(jìn)行相加和相乘。
針對(duì)稀疏張量的人工優(yōu)化代碼能識(shí)別0項(xiàng)并精簡涉及0項(xiàng)的運(yùn)算。這能大大提高張量運(yùn)算的速度,但需要程序員完成大量工作。
例如,針對(duì)兩個(gè)矩陣相乘(矩陣是形式較簡單的張量,像圖表一樣只有兩個(gè)維度),如果是完全矩陣的話(即其中沒有一個(gè)項(xiàng)能被省略),可能需要12行代碼。但如果是稀疏矩陣的話,同樣的運(yùn)算可能需要100行甚至更多的代碼以跟蹤被省略的部分。
報(bào)道稱,Taco系統(tǒng)能將多出來的所有代碼自動(dòng)合在一起。程序員只需指定一個(gè)張量的大小、是完全張量還是稀疏張量以及用于導(dǎo)入數(shù)值的文件位置即可。對(duì)于任何特定的兩個(gè)張量的運(yùn)算,Taco系統(tǒng)都能繪制出一張分級(jí)圖,首先表明來自兩個(gè)張量的哪些配對(duì)項(xiàng)是非0項(xiàng),然后表明來自每個(gè)張量的哪些項(xiàng)是與0配對(duì)的。它會(huì)把所有的0項(xiàng)對(duì)剔除出去。
針對(duì)稀疏數(shù)據(jù)編寫出優(yōu)化代碼的新系統(tǒng)Taco能將數(shù)據(jù)分析速度提高100倍(美國麻省理工學(xué)院網(wǎng)站)