ICML 2021文章引发热议:矩阵乘法无需相乘,速度提升100倍
?作者?|?Synced
來(lái)源?|?機(jī)器之心
在一篇被 ICML 2021 接收的論文中,MIT 的一位計(jì)算機(jī)科學(xué)博士生及其業(yè)界大佬導(dǎo)師為矩陣乘法引入了一種基于學(xué)習(xí)的算法,該算法具有一個(gè)有趣的特性——需要的乘加運(yùn)算為零。在來(lái)自不同領(lǐng)域的數(shù)百個(gè)矩陣的實(shí)驗(yàn)中,這種學(xué)習(xí)算法的運(yùn)行速度是精確矩陣乘積的 100 倍,是當(dāng)前近似方法的 10 倍。
矩陣乘法是機(jī)器學(xué)習(xí)中最基礎(chǔ)和計(jì)算密集型的操作之一。因此,研究社區(qū)在高效逼近矩陣乘法方面已經(jīng)做了大量工作,比如實(shí)現(xiàn)高速矩陣乘法庫(kù)、設(shè)計(jì)自定義硬件加速特定矩陣的乘法運(yùn)算、計(jì)算分布式矩陣乘法以及在各種假設(shè)下設(shè)計(jì)高效逼近矩陣乘法(AMM)等。
在 MIT 計(jì)算機(jī)科學(xué)博士生 Davis Blalock 及其導(dǎo)師 John Guttag 教授發(fā)表的論文《 Multiplying Matrices Without Multiplying 》中,他們?yōu)楸平仃嚦朔ㄈ蝿?wù)引入了一種基于學(xué)習(xí)的算法,結(jié)果顯示該算法顯著優(yōu)于現(xiàn)有方法。在來(lái)自不同領(lǐng)域的數(shù)百個(gè)矩陣的實(shí)驗(yàn)中,這種學(xué)習(xí)算法的運(yùn)行速度是精確矩陣乘積的 100 倍,是當(dāng)前近似方法的 10 倍。這篇論文入選了機(jī)器學(xué)習(xí)頂會(huì) ICML 2021。
此外,在一個(gè)矩陣提前已知的常見(jiàn)情況下,研究者提出的方法還具有一個(gè)有趣的特性——需要的乘加運(yùn)算(multiply-adds)為零。
這些結(jié)果表明,相較于最近重點(diǎn)進(jìn)行了大量研究與硬件投入的稀疏化、因式分解和 / 或標(biāo)量量化矩陣乘積而言,研究者所提方法中的核心操作——哈希、求平均值和 byte shuffling 結(jié)合可能是更有前途的機(jī)器學(xué)習(xí)構(gòu)建塊。
論文鏈接:
https://arxiv.org/abs/2106.10860
代碼鏈接:
https://github.com/dblalock/bolt
對(duì)于研究者提出的無(wú)需相乘的矩陣乘法,各路網(wǎng)友給出了極高的評(píng)價(jià)。有網(wǎng)友表示:「這是一篇不可思議且具有基礎(chǔ)性意義的論文。訓(xùn)練 ML 來(lái)尋找快速做 ML 的方法?!?/p>
也有網(wǎng)友表示:「這篇論文為實(shí)現(xiàn)更高效的 AI 打開(kāi)了一扇門(mén)。」
對(duì)于有網(wǎng)友提到的「該研究在硬件實(shí)現(xiàn)方面似乎很有發(fā)展前景」,一作本人現(xiàn)身 reddit 并給出了回復(fù):「我們的編碼表示是密集矩陣,所以布局和訪問(wèn)模式看上去基本與 GEMM 內(nèi)核相同,也就意味著可以很容易地使用脈動(dòng)陣列或修正張量核心來(lái)實(shí)現(xiàn)。在 x86 上,一般只需要一個(gè) vpshufb-add 指令和一個(gè) 4-bit 解包指令就可以了?!?br />
下面來(lái)看這篇論文的技術(shù)細(xì)節(jié)和實(shí)驗(yàn)結(jié)果。
技術(shù)細(xì)節(jié)
具體來(lái)說(shuō),該研究專(zhuān)注于 AMM 任務(wù),并假設(shè)矩陣是高的(tall),并且相對(duì)密集,存在于單個(gè)機(jī)器內(nèi)存中。在這種設(shè)置下,研究者遇到的主要挑戰(zhàn)是在給定保真度水平下最小化近似線(xiàn)性運(yùn)算所需的計(jì)算時(shí)間。這種設(shè)置會(huì)很自然地出現(xiàn)在機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘中,當(dāng)一個(gè)數(shù)據(jù)矩陣 A 的行是樣本,而一個(gè)線(xiàn)性算子 B 希望應(yīng)用這些樣本,B 可以是一個(gè)線(xiàn)性分類(lèi)器、線(xiàn)性回歸器,或嵌入矩陣,以及其他可能性。
舉例來(lái)說(shuō),考慮一個(gè)近似 softmax 分類(lèi)器的任務(wù),以預(yù)測(cè)來(lái)自神經(jīng)網(wǎng)絡(luò)嵌入的圖像標(biāo)簽。在這里,A 的行是每個(gè)圖像的嵌入,B 的列是每個(gè)類(lèi)的權(quán)值向量。分類(lèi)是通過(guò)計(jì)算乘積 AB 并在結(jié)果的每一行中取 argmax 來(lái)執(zhí)行的。圖 1 結(jié)果表明,在 CIFAR-10 和 CIFAR-100 數(shù)據(jù)集上,使用該研究的方法及其最佳性能競(jìng)爭(zhēng)對(duì)手的方法近似 AB 的結(jié)果。
該研究所用方法與傳統(tǒng)方法背離,傳統(tǒng)的 AMM 方法構(gòu)造矩陣 V_A,V_B ∈ R^(D×d) , d<<D,如下所示:
通常,V_A、V_B 是稀疏的,包含某種采樣方案,或者具有其他結(jié)構(gòu),使得這些投影操作比密集矩陣乘法更快。簡(jiǎn)而言之,這些方法使用線(xiàn)性函數(shù)對(duì) A 和 B 進(jìn)行預(yù)處理,并將問(wèn)題簡(jiǎn)化為低維空間中的精確矩陣乘法。
該研究提出 MADDNESS 方法 ,該方法采用非線(xiàn)性預(yù)處理函數(shù),將問(wèn)題簡(jiǎn)化為查表。此外,在 B 提前已知的情況下,即將訓(xùn)練好的線(xiàn)性模型應(yīng)用于新數(shù)據(jù)等情況時(shí),MADDNESS 不需要任何乘 - 加運(yùn)算。該方法與用于相似性搜索的矢量量化方法密切相關(guān)。然而,該研究沒(méi)有使用太多的乘 - 加量化函數(shù),而是引入了一系列不需要乘 - 加的量化函數(shù)。
本文的貢獻(xiàn)總計(jì)如下:
一個(gè)高效的學(xué)習(xí)矢量量化函數(shù)族,可以在單個(gè) CPU 線(xiàn)程中每秒編碼超過(guò) 100GB 的數(shù)據(jù)。
一種用于低位寬整數(shù)( low-bitwidth integers)的高速求和算法,可避免 upcasting、飽和和溢出。
基于這些函數(shù)的近似矩陣乘法算法。數(shù)百個(gè)不同矩陣的實(shí)驗(yàn)表明,該算法明顯優(yōu)于現(xiàn)有替代方案。并且還具有理論質(zhì)量保證。
實(shí)驗(yàn)結(jié)果
為了評(píng)估 MADDNESS 的有效性,研究者用 c++ 和 Python 實(shí)現(xiàn)了該算法和其他幾個(gè)現(xiàn)有算法。評(píng)估結(jié)果如下。
MADDNESS 到底有多快?
研究者首先分析了 MADDNESS 的原始速度。在圖 3 中,他們?yōu)楦鞣N矢量量化方法計(jì)算 g(A) 函數(shù)的時(shí)間,結(jié)果表明,MADDNESS 比現(xiàn)有方法快兩個(gè)數(shù)量級(jí),其吞吐量隨行的長(zhǎng)度而增加。
從上圖可以看出,Bolt(藍(lán)色虛線(xiàn))是與 MADDNESS 最接近的競(jìng)爭(zhēng)對(duì)手。研究者還使用與 Bolt 相同的基線(xiàn)分析了聚合函數(shù) f(·,·) 的速度。如圖 4 所示,他們基于 average 的、matrix-aware 的聚合方法明顯快于 Bolt 基于 upcasting 的方法。
Softmax 分類(lèi)器
前面說(shuō)過(guò),研究者在廣泛使用的 CIFAR-10 和 CIFAR-100 數(shù)據(jù)集上近似線(xiàn)性分類(lèi)器。如圖 5 所示,MADDNESS 顯著優(yōu)于所有現(xiàn)有方法,幾乎達(dá)到了與精確乘法相同的準(zhǔn)確率,但比精確乘法快了一個(gè)數(shù)量級(jí)。而且,MADDNESS 是在硬件支持較差的情況下實(shí)現(xiàn)了這種性能。
基于 kernel 的分類(lèi)
為了評(píng)估該方法在更大、多樣性更強(qiáng)的數(shù)據(jù)集上的表現(xiàn),研究者在來(lái)自 UCR Time Series Archive 的數(shù)據(jù)集上訓(xùn)練了 kernel 分類(lèi)器。結(jié)果如下圖 6 所示,MADDNESS 在給定準(zhǔn)確率的情況下明顯快于替代方案。
圖像濾波
為了測(cè)試 MADDNESS 的極限,研究者對(duì)將小濾波器應(yīng)用于圖像的各種技術(shù)能力進(jìn)行了基準(zhǔn)測(cè)試。結(jié)果如下圖 7 所示,只有 MADDNESS 比精確矩陣乘積更有優(yōu)勢(shì)。
作者簡(jiǎn)介
Davis Blalock
個(gè)人主頁(yè):https://dblalock.github.io/about/
Davis Blalock 是麻省理工學(xué)院的博士生,由 John Guttag 教授指導(dǎo)。他的主要研究方向是設(shè)計(jì)高性能的機(jī)器學(xué)習(xí)算法,以減少人們?cè)跈C(jī)器學(xué)習(xí)速度、準(zhǔn)確性、隱私和安全性之間的妥協(xié)。他于 2014 年獲得弗吉尼亞大學(xué)學(xué)士學(xué)位,2016 年獲得麻省理工學(xué)院碩士學(xué)位。他是 Qualcomm Innovation Fellow、NSF Graduate Research Fellow 和 Barry M. Goldwater Scholar。
John Guttag?
John Guttag 是麻省理工學(xué)院計(jì)算機(jī)科學(xué)與電氣工程教授、ACM Fellow。他領(lǐng)導(dǎo)著麻省理工學(xué)院計(jì)算機(jī)科學(xué)和人工智能實(shí)驗(yàn)室(CSAIL)的臨床與應(yīng)用機(jī)器組。該小組負(fù)責(zé)開(kāi)發(fā)和應(yīng)用先進(jìn)的機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺(jué)技術(shù),以解決各種臨床相關(guān)問(wèn)題,目前的研究項(xiàng)目包括預(yù)測(cè)和減少不良醫(yī)療事件,幫助患者匹配治療方法和治療者,以及醫(yī)學(xué)成像。
他是《Python 編程導(dǎo)論》一書(shū)的作者,其在 MIT 的課程已全部公開(kāi),不過(guò)或許是因?yàn)?Guttag 思維敏捷,他的語(yǔ)速有點(diǎn)快。
參考鏈接:https://www.reddit.com/r/MachineLearning/comments/pffoo8/r_multiplying_matrices_without_multiplying/
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁(yè)搜索「PaperWeekly」
點(diǎn)擊「關(guān)注」訂閱我們的專(zhuān)欄吧
·
總結(jié)
以上是生活随笔為你收集整理的ICML 2021文章引发热议:矩阵乘法无需相乘,速度提升100倍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 6月16日种红小豆能成熟吗?
- 下一篇: 今日arXiv精选 | 9篇ICCV 2