麻省理工學(xué)院和英偉達(dá)的研究人員開發(fā)了兩種技術(shù)來加速稀疏張量的處理,稀疏張量是一種用于高性能計(jì)算任務(wù)的數(shù)據(jù)結(jié)構(gòu)。這些技術(shù)可以顯著提高系統(tǒng)的性能和能效,例如驅(qū)動(dòng)生成式人工智能的大規(guī)模機(jī)器學(xué)習(xí)模型。
張量(Tensors)是機(jī)器學(xué)習(xí)模型使用的數(shù)據(jù)結(jié)構(gòu)。這兩種新方法都試圖有效地利用張量中所謂的稀疏性——零值。在處理這些張量時(shí),可以跳過零并節(jié)省計(jì)算和內(nèi)存。例如,任何乘以零的內(nèi)容都是零,因此它可以跳過該操作。它可以壓縮張量(不需要存儲(chǔ)零),因此可以將大部分張量存儲(chǔ)在片上存儲(chǔ)器中。
然而,利用稀疏性存在一些挑戰(zhàn)。在大型張量中找到非零值并非易事?,F(xiàn)有方法通常通過強(qiáng)制執(zhí)行稀疏模式來簡(jiǎn)化搜索來限制非零值的位置,但這限制了可以有效處理的稀疏張量的多樣性。
另一個(gè)挑戰(zhàn)是,在張量的不同區(qū)域中,非零值的數(shù)量可能會(huì)有所不同。這使得很難確定在內(nèi)存中存儲(chǔ)不同區(qū)域需要多少空間。為了確保區(qū)域適合,通常會(huì)分配比所需空間更多的空間,從而導(dǎo)致存儲(chǔ)緩沖區(qū)未得到充分利用。這會(huì)增加片外存儲(chǔ)器流量,從而增加能耗。
麻省理工學(xué)院和英偉達(dá)的研究人員設(shè)計(jì)了兩種解決方案來解決這些問題。首先,他們開發(fā)了一種技術(shù),使硬件能夠有效地找到更多種類稀疏模式的非零值。
對(duì)于另一種解決方案,他們創(chuàng)建了一種可以處理數(shù)據(jù)不適合內(nèi)存的情況的方法,從而提高了存儲(chǔ)緩沖區(qū)的利用率并減少了片外內(nèi)存流量。
這兩種方法都提高了性能并降低了專門設(shè)計(jì)用于加速稀疏張量處理的硬件加速器的能源需求。
“通常,當(dāng)您使用更專業(yè)或特定領(lǐng)域的硬件加速器時(shí),您將失去從更通用的處理器(如 CPU)中獲得的靈活性。這兩部作品的突出之處在于,我們表明,在保持專業(yè)和高效的同時(shí),你仍然可以保持靈活性和適應(yīng)性,“麻省理工學(xué)院電氣工程和計(jì)算機(jī)科學(xué)系(EECS)副教授、電子研究實(shí)驗(yàn)室(RLE)成員、關(guān)于這兩項(xiàng)進(jìn)展的論文的共同資深作者Vivienne Sze說。
她的合著者包括主要作者Yannan Nellie Wu PhD '23和Zi Yu Xue,電氣工程和計(jì)算機(jī)科學(xué)研究生;以及麻省理工學(xué)院計(jì)算機(jī)科學(xué)和電氣工程實(shí)踐教授、計(jì)算機(jī)科學(xué)和人工智能實(shí)驗(yàn)室 (CSAIL) 成員、共同資深作者 Joel Emer,以及 NVIDIA 的其他人。這兩篇論文都將在IEEE/ACM微架構(gòu)國際研討會(huì)上發(fā)表。
亮點(diǎn):高效查找零值
由于各種原因,張量中可能會(huì)出現(xiàn)稀疏性。例如,研究人員有時(shí)會(huì)通過用零替換張量中的某些值來“修剪”機(jī)器學(xué)習(xí)模型中不必要的部分,從而產(chǎn)生稀疏性。對(duì)于不同的模型,稀疏程度(零的百分比)和零的位置可能會(huì)有所不同。
為了更容易在具有數(shù)十億個(gè)單個(gè)值的模型中找到剩余的非零值,研究人員通常會(huì)限制非零值的位置,使它們落入某種模式。但是,每個(gè)硬件加速器通常設(shè)計(jì)為支持一種特定的稀疏模式,從而限制了其靈活性。
相比之下,麻省理工學(xué)院研究人員設(shè)計(jì)的硬件加速器HighLight可以處理各種稀疏模式,并且在運(yùn)行沒有任何零值的模型時(shí)仍然表現(xiàn)良好。
他們使用一種稱為“分層結(jié)構(gòu)稀疏性”的技術(shù)來有效地表示由幾個(gè)簡(jiǎn)單的稀疏性模式組成的各種稀疏性模式。這種方法將張量中的值劃分為更小的塊,其中每個(gè)塊都有自己的簡(jiǎn)單稀疏模式(在具有四個(gè)值的塊中可能有兩個(gè)零和兩個(gè)非零)。
然后,他們將這些塊組合成一個(gè)層次結(jié)構(gòu),其中每個(gè)塊集合也有自己簡(jiǎn)單的稀疏模式(在具有四個(gè)塊的關(guān)卡中可能有一個(gè)零塊和三個(gè)非零塊)。他們繼續(xù)將方塊組合成更大的關(guān)卡,但每一步的模式都很簡(jiǎn)單。
這種簡(jiǎn)單性使 HighLight 能夠更有效地查找和跳過零,因此它可以充分利用這個(gè)機(jī)會(huì)來減少多余的計(jì)算。平均而言,他們的加速器設(shè)計(jì)的能量延遲產(chǎn)品(與能源效率相關(guān)的指標(biāo))比其他方法高出約六倍。
“最后,HighLight 加速器能夠有效地加速密集模型,因?yàn)樗粫?huì)引入大量開銷,同時(shí)它能夠利用基于分層結(jié)構(gòu)稀疏性的不同零值量的工作負(fù)載,”Wu 解釋道。
未來,她和她的合作者希望將分層結(jié)構(gòu)稀疏性應(yīng)用于更多類型的機(jī)器學(xué)習(xí)模型和模型中不同類型的張量。
Tailors 和Swiftiles:有效地“超額預(yù)訂”以加速工作負(fù)載
研究人員還可以利用稀疏性更有效地移動(dòng)和處理計(jì)算機(jī)芯片上的數(shù)據(jù)。
由于張量通常大于片上內(nèi)存緩沖區(qū)中可以存儲(chǔ)的張量,因此芯片一次只能抓取和處理一大塊張量,這些塊稱為圖塊。
為了最大限度地利用該緩沖區(qū)并限制芯片必須訪問片外存儲(chǔ)器的次數(shù),這通常主導(dǎo)著能耗并限制處理速度,研究人員試圖使用適合緩沖區(qū)的最大切片。
但在稀疏張量中,許多數(shù)據(jù)值為零,因此緩沖區(qū)中可以容納比基于其容量預(yù)期的更大的切片,不需要存儲(chǔ)零值。
但是,零值的數(shù)量在張量的不同區(qū)域中可能會(huì)有所不同,因此對(duì)于每個(gè)圖塊,它們也可能有所不同。這使得很難確定適合緩沖區(qū)的切片大小。因此,現(xiàn)有方法通常保守地假設(shè)沒有零,并最終選擇較小的圖塊,這會(huì)導(dǎo)致緩沖區(qū)中的空白空間浪費(fèi)。
為了解決這種不確定性,研究人員建議使用“超額預(yù)訂”來允許他們?cè)黾忧衅笮。约耙环N在切片不適合緩沖區(qū)時(shí)容忍它的方法。
在稀疏張量中,可以選擇一個(gè)切片大小,以便通常切片將有足夠的零,大多數(shù)仍然適合緩沖區(qū)。但有時(shí),切片的非零值會(huì)多于適合的值。在這種情況下,這些數(shù)據(jù)會(huì)從緩沖區(qū)中剔除。
研究人員使硬件能夠只重新獲取所需的數(shù)據(jù),而無需再次抓取和處理整個(gè)圖塊。他們修改緩沖區(qū)的“尾端”來處理這個(gè)問題,因此這種技術(shù)的名稱是 Tailors。
然后,他們還創(chuàng)建了一種利用超額預(yù)訂來查找切片尺寸的方法。這種方法稱為 Swiftiles,可快速估計(jì)理想的圖塊大小,以便用戶設(shè)置的特定百分比的圖塊被超額預(yù)訂。(“Tailors”和“Swiftiles”這兩個(gè)名字向泰勒·斯威夫特(Taylor Swift)致敬)。
Swiftiles 減少了硬件檢查張量以識(shí)別理想切片大小所需的次數(shù),從而節(jié)省了計(jì)算量。Tailors 和 Swiftiles 的組合使速度提高了一倍以上,同時(shí)所需的能源需求僅為現(xiàn)有硬件加速器的一半,而現(xiàn)有硬件加速器無法處理超額預(yù)訂。
Swiftiles 允許我們估計(jì)這些圖塊需要多大,而無需多次迭代來優(yōu)化估計(jì)。這僅在支持超額預(yù)訂時(shí)才有效。即使你偏離了相當(dāng)大的數(shù)量,你仍然可以獲得相當(dāng)多的加速,因?yàn)榉橇愕姆植挤绞健?/p>
未來,研究人員希望將超額預(yù)訂的想法應(yīng)用于計(jì)算機(jī)體系結(jié)構(gòu)的其他方面,并努力改進(jìn)估計(jì)超額預(yù)訂最佳水平的過程。