最好的研究方式,在於測試新想法並依託於實際產品達成應用創新。與之對應,我們需要以敏銳的眼光區分出科學項目——這些項目雖然有趣,但卻可能毫無現實價值可言。
在英偉達,負責引導研究朝著應用、而非純學術項目前進的,是斯坦福大學電腦科學與電氣工程兼職教授,公司首席科學家、高級研究副總裁以及GPU、網路與CPU晶片設計師Bill Dally。
在每一次GPU技術會議上,Dally都會介紹英偉達正在進行的一系列精巧研究。2023年的春季GTC上,他再次登台,在演講中講解了自動駕駛汽車、3D圖像生成乃至視覺transformer模型等終端案例。但對於關注數據中心議題的朋友來說,這些似乎意義有限,直到Dally談到英偉達研究院正在推進的機器學習推理硬體。
Dally披露了英偉達研究院的組織形式,這裡擁有300多名思考宏大議題的博士。Dally解釋道,該團隊分為「供應方」與「需求方」,前者創造了能夠改善GPU的技術,而後者負責提出越來越廣泛的應用場景,引導企業購買更多GPU加速器。供應方承擔著電路與晶片設計、晶片工藝和製造、晶片架構、GPU及其他元件間的互連網路、GPU編程環境以及支撐起這一切的存儲系統等。而需求方則在多倫多、特拉維夫和台北設有AI實驗室,並在英偉達總部內部署著圖形與自動駕駛研究團隊。
每隔一段時間,英偉達會成立一支「登月」小組。成員是從供需研究方中抽調出來的,需要跟日常工程師們合作建立新的項目,比如把全部現有技術整合起來。2017年5月推出的「Volta」GPU就是由此而來,2018年在遊戲領域首度亮相於「Turing」GPU的光線追蹤RT核心是這樣,同年9月推出的T4加速器也是。
時不時,英偉達研究院就能從實驗室中推出一些精巧的成果,貼上產品名稱和編號並快速投放市場。比方說,cuDNN分布式神經網路就是英偉達研究院在閱讀了谷歌於2011年12月發表的關於無監督學習的開創性論文之後開發出來的。這篇論文使用包含16000個核心的1000台機器構成的集群,成功識別出了網際網路圖片中的貓。利用這項基礎技術,英偉達當時成功在區區48個GPU上重現並加速了這項工作。這項研究隨後在NVSwitch上實現了快速產品化,這是一種類似於NUMA的內存互連,最終在Volta GPU問世的一年之後將16個這樣的GPU互連成了一個巨大的虛擬GPU。
我們強烈懷疑同樣的情況會出現在兩項新技術身上,分別是VS-Quant和Octav。英偉達研究院已經將其引入用於AI推理的測試晶片當中,Dally也對此做出了詳細解釋。
在深入探討這些問題之前,Dally先以十年為期就「Kepler」和「Hopper」GPU世代之間的推理性能改進、混合精度、越來越複雜的指令和晶片製程在此期間達成的千倍推理性能提升做了概括:
在這1000倍的性能提升中,只有約2.5倍來自製程工藝本身和時鐘速率提升,其餘400倍來自複雜的指令、架構和不斷下降的精度。其中精度從FP32降至FP8貢獻了4倍性能,所以說有整整100倍的性能改進來自架構研究。
在完成這一系列壯舉之後,英偉達已經讓Hopper晶片的效率達到每瓦10 teraops。但在使用VS-Quant和Octav技術之後,測試晶片的性能又提升了10倍,每瓦接近100 teraops。
Dally解釋道,「我們長期以來的奮鬥目標,就是研究如何才能做得更好。其中一種辦法是嘗試繼續從數字表示中挖掘潛力。但如果我們單純從INT8轉向INT4,甚至從FP8到FP4,就需要同時犧牲掉一些東西——我們的準確率會急劇下降。因此,我們必須更聰明地探索如何做量化取捨,如何穩定可靠地從高精度數字表示轉向低精度數字表示。」
下面來看VS-Quant——全稱為「每向量縮放量化」技術的具體原理:
VS-Quant的核心是實現更嚴格的量化,將原始FP32數據通過量化轉化為INT4或者FP4格式,類似於圖像處理領域的像素化過程。在以上圖表中,FP32數據被向下轉換為INT4格式,而不再採用完整的FP32數據分布。其中頒的高點和低點被切斷,只保留中心部分。從兩條鐘形曲線中可以看到,使用VS-Quant的那條信噪比明顯更低,就是說在實際使用時,其結果的準確性類似於使用INT8和原生FP32格式。(當然,具體過程要困難得多。)每個64元素輸入向量都有一個比例因數,而每個輸入矩陣又有第二個比例因數。VS-Quant電路將其相乘,並通過神奇的技術將其量化為INT4。如上圖右下的條形圖所示,Dally稱真實的INT4數據會令精度「斷崖式下跌」,但VS-Quant量化處理後的INT4卻能在BERT-Base模型上提供與FP32和INT8相當的精度。
這代表著2倍的性能提升,即每瓦20 teraops。而接下來的5倍提升,是通過Octav(即最優裁剪的張量與向量)實現的:
通過Octav,我們無需收緊向量範圍、再通過電路中的時髦數學運算對其做量化;相反,我們可以直接裁剪掉向量的高端與低端,之後再做量化。如上圖所示,在利用Octav處理INT4數據時,各類圖像處理神經網路在BERT模型上表現出的精度與原始INT4基本相同。
Dally對此做出了解釋。
「我們對噪聲做了裁剪,因為這裡沒有準確表示這些異常權重,但這些權重並不多。我們將其與量化噪聲做了權衡,成功將量化噪聲大大降低。事實證明,我們可以將其視為一個優化問題,如果目標是權重均方誤差的最小化表示,那我們要做的就是為裁剪縮放器找到應該使用的值。假定我們將權重分配為3.5——以3.5作為裁剪比例,代表著不對噪聲對裁剪和大規模量化。之後,在向下移動裁剪縮放器時——注意,不是丟棄某些大權重,而是將其四捨五入——裁剪縮放器的權衡過程基本上就是在減少量化、更多裁剪噪聲,確保二者大致相等,這時候就達到了表示錯誤最小化。之後,如果我們嘗試繼續向下裁剪,那麼裁剪噪聲和量化噪聲會隨著大量權重被裁剪而迅速上升。」
向量剪裁的具體位置需要大量計算,但可以使用疊代Newton Raphson方法來估計均方誤差,這樣可以顯著節約計算開銷。Octav電路可以執行這種疊代計算以得出最佳裁剪標量。上表所示的性能數字(實現8倍的整體性能提升,且精度基本相同)為Octav剪裁標量處理後的結果。
為了測試這些思路,Dally和他的團隊將VS-Quant和Octav放在名為Magnetic BERT的測試晶片上,其基本概念如下:
Magnetic BERT晶片採用台積電公司的5納米製程工藝,晶片面積僅為0.153平方毫米,每個周期能夠執行1024次4位乘法累加(MAC),頻率範圍從152 MHz至1.76 GHz。對於50%密度的4-bit輸入矩陣,Magnetic BERT晶片可實現每瓦95.6 teraops。
很多朋友可能好奇,在同時運行VS-Quant和Octav的情況下,性能本該達到Hopper每瓦10 teraops的16倍,為什麼這裡只達到不足10倍?我們也不確定具體原因,恐怕是因為VS-Quant和Octav在剪裁和量化方面的相互影響干擾到了性能優化效果。