100億參數的語言模型跑不動? MIT華人博士提出SmoothQuant量化,記憶體需求直降一半,速度提升1.56倍!
大型語言模型(LLM)雖然性能強勁,但動輒幾百上千億的參數量,對計算設備還是內存的需求量之大,都不是一般公司能承受得住的。
量化(Quantization)是常見的壓縮操作,透過降低模型權重的精度(如32bit降為8bit),犧牲一部分模型的性能來換取更快的推理速度,更少的內存需求。
但對於超過1000億參數量的LLM來說,現有的壓縮方法都無法維持模型的準確率,也無法在硬體上有效率地運作。
最近,麻省理工學院和英偉達的研究人員聯合提出了一個通用後訓練的量化(GPQ, general-purpose post-training quantization)方案SmoothQuant,對大型語言模型可以高效實現8-bit權重,8-bit激活(W8A8)的量化,無需訓練也能保持模型的準確率。
論文連結:https://arxiv.org/pdf/2211.10438.pdf
程式碼連結:https://github.com/mit-han-lab/smoothquant
由於激活相比權重更難量化, SmoothQuant透過數學等價變換將較難量化的活化遷移到權重上,實現了對活化異常值(activation outliers)的平滑處理。
SmoothQuant能夠對所有LLM的各種層中權重和活化量化到INT8,包括OPT-175B, BLOOM-176B和GLM-130B。
相比現有方法僅對權重進行靚貨,或者對激活進行混合精度的量化,SmoothQuant有更高的硬體效率,實現了1.56倍加速,記憶體需求僅為原始LLM的一半,且在準確率上幾乎沒有損失。
SmoothQuant同時具有硬體友善的設計,研究人員將SmoothQuant整合進了LLM服務框架FasterTransformer中,實現了更快的推理速度,相較於FP16的精準度僅需一半數量的GPU
文章的第一作者肖光烜是MIT EECS的一年級博士生,本科畢業於清華大學計算機科學與技術學院。
導師Song Han是MIT EECS的副教授,博士畢業於史丹佛大學,主要研究方向為高效深度學習,曾提出深度壓縮(deep compression)技術,可以將神經網路的尺寸降低一個數量級,而不損失準確率。
SmoothQuant
量化(Quantization)就是把高精度的值映射到更低精度的離散值,在這篇論文中研究人員主要關注對硬體更高效的整數均勻量化(integer uniform quantization),尤其是INT8。
量化操作可以在不同的粒度上執行,如per-tensor量化應用於整個權重矩陣,per-token量化應用於激活中的每個token,per-channel量化應用於權重的每個輸出通道。
透過對活化的量化結果進行觀察,研究人員總結出了幾個模式:
1、量化比權重更難量化。
權重的分佈相對更加均勻且平坦,先前的研究結果已證明將大型語言模型的權重降低到INT8,甚至到INT4對準確率的影響都不大。
2、異常值是激活量化中的主要困難。
激活中的異常值通常比正常值高出100倍左右,導致沒有異常值通道中的量化bits/levels效率很低。
3、異常值固定在某一通道中出現。
異常值只會在很小一部分的通道中才會出現,但如果一個通道中有一個異常值,那麼該異常值可能會在所有的token中出現。
給定一個token中所有通道的變異數會很大(有些通道會非常大,但大部分很小),但是給定一個通道在所有token度中的變異數會很小(異常值通道會很大)。
由於異常值具有持續出現和每個通道內小方差的特點,那麼如果對激活執行per-channel量化,其量化誤差將會遠小於per-tensor量化。
透過一個簡單的實驗,其結果再次驗證了研究者的想法,量化到INT8時,per-channel的準確率遠高於per-tensor和per-token量化,和FP16基線準確率相差無幾。
研究者透過使用一個per-channel平滑因子s來將輸入活化進行平滑(smooth)。為了維持線性層的數學等價,也需要反向縮放權重。
由於輸入X通常是由先前的線性運算產生的(如線性層、層norms等),所以就可以輕鬆地將平滑因子融合到之前層的參數offline,而且不會產生額外縮放的核心呼叫開銷。對於其他情況,例如當輸入來自殘差add時,可以向殘差分支添加額外的縮放。
將量化難度從活化轉移到權重
#Smooth的目標是選擇一個per-channel的平滑因子s,使該逆操作更易於量化。
為了減少量化誤差,應該增加所有通道的有效量化位元。當所有通道的最大magnitude相同時,總的有效量化位數將是最大的。
因此,一個最直接的平滑因子選擇就是輸入中每個通道的最大值,可以保證在分割之後,所有的激活通道都有相同的最大值,從而實現更容易的量化。
但要注意的是,啟動的範圍是動態的,對於不同的輸入樣本是不同的。所以研究人員使用預訓練資料集中的校準樣本來估計活化通道的規模。
由於這個公式將所有的量化困難遷移給了權重,可以發現在這種情況下,權重的量化誤差會很大,導致準確度下降很多。
另一方面,也可以透過選擇sj = 1/ max(|Wj |),將所有的量化難度從權重推到活化上。同樣,由於活化量化誤差過大,模型的表現也不好。因此需要在權重和活化之間分割量化難度,使它們都易於量化。
研究人員引入一個超參數遷移強度α,來控制要從活化遷移到權重的難度。
可以發現,對於大多數模型,例如OPT和BLOOM模型,α=0.5是一個很好的平衡點,可以平均分配量化難度,特別是使用相同的量化器進行權重和激活。
此公式保證了對應通道的權重和活化具有相似的最大值,從而共享相同的量化難度。
#對於其他一些活化異常值比較大的模型,例如GLM-130B有30%的異常值,這對活化量化來說比較困難,可以選擇一個較大的α(如0.75),將更多的量化難度遷移到權重上。
SmoothQuant應用於Transformer區塊
線性層佔據了LLM模型的大部分參數和計算。在預設情況下,SmoothQuant對Transformer中所有線性層的輸入活化進行比例平滑,並以W8A8對線性層進行量化,在註意力計算中啟用了BMM運算子的量化。
在流程中,首先用INT8對線性層和注意力層中的BMM等計算量大的運算子的輸入和權重進行量化,而對其他輕量級元素的運算,如Softmax和LayerNorm,保持活化為FP16,這樣的設計有助於平衡準確性和推理效率。
實驗部分
研究人員選擇了三個大型語言模型用來評估SmoothQuant,包括OPT, BLOOM和GLM-130B;並使用七個zero-shot任務,包括LAMBADA, HellaSwag , PIQA, WinoGrande, OpenBookQA, RTE, COPA等。
實驗結果顯示SmoothQuant可以處理非常大的LLM的量化問題,其活化更難量化。
SmoothQuant可以在所有評估資料集上匹配FP16的準確性,而W8A8、ZeroQuant和Outlier Suppression基準產生的結果幾乎是隨機的。
並且SmoothQuant可以無損地量化所有超過100B參數的開放式LLMs
SmoothQuant的O1和O2級成功地保持了浮點精度,而O3級(per-tensor static)使平均精度下降了0.8%,可能是因為靜態收集的統計數據與真實評估樣本的激活統計數據之間的差異。
儘管如此,SmoothQuant-O1可以與FP16的準確性相匹配,而SmoothQuant-O3只降低了1%的準確性,明顯優於基線。
SmoothQuant不僅對超過100B參數的非常大的LLM有效,而且對較小的LLM也有穩定的效果,SmoothQuant可以在所有規模的OPT模型上工作,並與INT8量化的FP16精度相匹配。
為了展示整合到PyTorch和FasterTransformer中的SmoothQuant-O3的速度提升和記憶體節省,研究人員我們測量了一次產生一批4個句子的所有隱藏狀態的端對端延遲,也就是context階段的延遲,並記錄了這個過程中GPU記憶體使用的峰值。
由於Huggingface缺乏對模型並行的支持,所以研究人員只測量了SmoothQuant在單一GPU上的PyTorch實現的性能,因此選擇了OPT-6.7B、OPT-13B和OPT-30B進行評估。
在FasterTransformer庫中,SmoothQuant可以與Tensor Parallelism演算法無縫對接,因此研究人員在OPT-13B、OPT-30B、OPT-66B和OPT-175B上測試SmoothQuant的單GPU和多GPU基準。
在NVIDIA A100 80GB GPU伺服器上進行的實驗結果顯示,基於PyTorch實現的推理延遲和峰值記憶體使用上,SmoothQuant始終比FP16基線快,當序列長度為256時,在OPT-30B上獲得了1.51倍的速度提升。
還可以看到一個趨勢,即模型越大,加速越明顯,但LLM.int8()幾乎總是比FP16基準慢,這也是由於混合精度啟動表示的巨大開銷造成的。
在記憶體方面,SmoothQuant和LLM.int8()都可以將FP16模型的記憶體用量幾乎減半,而SmoothQuant由於完全使用INT8 GEMM,所以節省的記憶體稍多。
與FasterTransformer對OPT的FP16實作相比,SmoothQuant-O3在使用單一GPU時可以進一步降低OPT-13B和OPT-30B的執行延遲,最高可達1.56倍。
以上是100億參數的語言模型跑不動? MIT華人博士提出SmoothQuant量化,記憶體需求直降一半,速度提升1.56倍!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

目標偵測在自動駕駛系統當中是一個比較成熟的問題,其中行人偵測是最早得以部署演算法之一。在多數論文當中已經進行了非常全面的研究。然而,利用魚眼相機進行環視的距離感知相對來說研究較少。由於徑向畸變大,標準的邊界框表示在魚眼相機當中很難實施。為了緩解上述描述,我們探索了擴展邊界框、橢圓、通用多邊形設計為極座標/角度表示,並定義一個實例分割mIOU度量來分析這些表示。所提出的具有多邊形形狀的模型fisheyeDetNet優於其他模型,並同時在用於自動駕駛的Valeo魚眼相機資料集上實現了49.5%的mAP

寫在前面項目連結:https://nianticlabs.github.io/mickey/給定兩張圖片,可以透過建立圖片之間的對應關係來估計它們之間的相機姿態。通常,這些對應關係是二維到二維的,而我們估計的姿態在尺度上是不確定的。一些應用,例如隨時隨地實現即時增強現實,需要尺度度量的姿態估計,因此它們依賴外部的深度估計器來恢復尺度。本文提出了MicKey,這是一個關鍵點匹配流程,能夠夠預測三維相機空間中的度量對應關係。透過學習跨影像的三維座標匹配,我們能夠在沒有深度測試的情況下推斷度量相對
