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