在消費級 GPU 上運行大規(guī)模模型是機器學習社區(qū)正面臨的挑戰(zhàn)。
語言模型的規(guī)模一直在變大,PaLM 有 540B 參數(shù),OPT、GPT-3 和 BLOOM 有大約 176B 參數(shù),模型還在朝著更大的方向發(fā)展。
這些模型很難在易于訪問的設(shè)備上運行。例如,BLOOM-176B 需要在 8 個 80GB A100 GPU(每個約 15000 美元)上運行才能完成推理任務(wù),而微調(diào) BLOOM-176B 則需要 72 個這樣的 GPU。PaLM 等更大的模型將需要更多的資源。
我們需要找到方法來降低這些模型的資源需求,同時保持模型的性能。領(lǐng)域內(nèi)已經(jīng)開發(fā)了各種試圖縮小模型大小的技術(shù),例如量化和蒸餾。
BLOOM 是去年由 1000 多名志愿研究人員在一個名為「BigScience」的項目中創(chuàng)建的,該項目由人工智能初創(chuàng)公司 Hugging Face 利用法國政府的資金運作,今年 7 月 12 日 BLOOM 模型正式發(fā)布。
使用 Int8 推理會大幅減少模型的內(nèi)存占用,卻不會降低模型的預測性能;诖耍瑏碜匀A盛頓大學、Meta AI 研究院等(原 Facebook AI Research )機構(gòu)的研究員聯(lián)合 HuggingFace 開展了一項研究,試圖讓經(jīng)過訓練的 BLOOM-176B 在更少的 GPU 上運行,并將所提方法完全集成到 HuggingFace Transformers 中。
論文地址:https://arxiv.org/pdf/2208.07339.pdf
Github 地址:https://github.com/timdettmers/bitsandbytes
該研究為 transformer 提出了首個數(shù)十億規(guī)模的 Int8 量化過程,該過程不會影響模型的推理性能。它可以加載一個具有 16-bit 或 32-bit 權(quán)重的 175B 參數(shù)的 transformer,并將前饋和注意力投影層轉(zhuǎn)換為 8-bit。其將推理所需的內(nèi)存減少了一半,同時保持了全精度性能。
該研究將向量量化和混合精度分解的組合命名為 LLM.int8()。實驗表明,通過使用 LLM.int8(),可以在消費級 GPU 上使用多達 175B 參數(shù)的 LLM 執(zhí)行推理,而不會降低性能。該方法不僅為異常值對模型性能的影響提供了新思路,還首次使在消費級 GPU 的單個服務(wù)器上使用非常大的模型成為可能,例如 OPT-175B/BLOOM。
方法簡介
機器學習模型的大小取決于參數(shù)的數(shù)量及其精度,通常是 float32、float16 或 bfloat16 之一。float32 (FP32) 代表標準化的 IEEE 32 位浮點表示,使用這種數(shù)據(jù)類型可以表示范圍廣泛的浮點數(shù)。FP32 為「指數(shù)」保留 8 位,為「尾數(shù)」保留 23 位,為數(shù)字的符號保留 1 位。并且,大多數(shù)硬件都支持 FP32 操作和指令。
而 float16 (FP16) 為指數(shù)保留 5 位,為尾數(shù)保留 10 位。這使得 FP16 數(shù)字的可表示范圍遠低于 FP32,面臨溢出(試圖表示一個非常大的數(shù)字)和下溢(表示一個非常小的數(shù)字)的風險。
出現(xiàn)溢出時會得到 NaN(非數(shù)字)的結(jié)果,如果像在神經(jīng)網(wǎng)絡(luò)中那樣進行順序計算,那么很多工作都會崩潰。bfloat16 (BF16) 則能夠避免這種問題。BF16 為指數(shù)保留 8 位,為小數(shù)保留 7 位,意味著 BF16 可以保留與 FP32 相同的動態(tài)范圍。
理想情況下,訓練和推理應(yīng)該在 FP32 中完成,但它的速度比 FP16/BF16 慢,因此要使用混合精度來提高訓練速度。但在實踐中,半精度權(quán)重在推理過程中也能提供與 FP32 相似的質(zhì)量。這意味著我們可以使用一半精度的權(quán)重并使用一半的 GPU 來完成相同的結(jié)果。
但是,如果我們可以使用不同的數(shù)據(jù)類型以更少的內(nèi)存存儲這些權(quán)重呢?一種稱為量化的方法已廣泛用于深度學習。
該研究首先在實驗中用 2-byte BF16/FP16 半精度代替 4-byte FP32 精度,實現(xiàn)了幾乎相同的推理結(jié)果。這樣一來,模型減小了一半。但是如果進一步降低這個數(shù)字,精度會隨之降低,那推理質(zhì)量就會急劇下降。
為了彌補這一點,該研究引入 8bit 量化。這種方法使用四分之一的精度,因此只需要四分之一模型大小,但這不是通過去除另一半 bit 來實現(xiàn)的。
兩種最常見的 8-bit 量化技術(shù)為 zero-point 量化和 absmax(absolute maximum)量化。這兩種方法將浮點值映射為更緊湊的 int8(1 字節(jié))值。
例如,在 zero-point 量化中,如果數(shù)據(jù)范圍是 -1.0——1.0,量化到 -127——127,其擴展因子為 127。在這個擴展因子下,例如值 0.3 將被擴展為 0.3*127 = 38.1。量化通常會采用四舍五入(rounding),得到了 38。如果反過來,將得到 38/127=0.2992——在這個例子中有 0.008 的量化誤差。這些看似微小的錯誤在通過模型層傳播時往往會累積和增長,并導致性能下降。
雖然這些技術(shù)能夠量化深度學習模型,但它們通常會導致模型準確率下降。但是集成到 Hugging Face Transformers 和 Accelerate 庫中的 LLM.int8(),是第一種即使對于帶有 176B 參數(shù)的大型模型 (如 BLOOM) 也不會降低性能的技術(shù)。
LLM.int8()算法可以這樣解釋,本質(zhì)上,LLM.int8()試圖通過三個步驟來完成矩陣乘法計算:
從輸入隱藏狀態(tài)中,按列提取異常值(即大于某個閾值的值)。
將 FP16 中的異常值與 int8 中的非異常值進行矩陣乘法。
在 FP16 中對非異常值進行去量化,將異常值和非異常值相加,得到完整的結(jié)果。
這些步驟可以在下面的動畫中總結(jié):
最后,該研究還關(guān)注了一個問題:速度比原生模型更快嗎?
LLM.int8() 方法的主要目的是使大型模型更易于訪問而不會降低性能。但是,如果它非常慢,那么用處也不大了。研究團隊對多個模型的生成速度進行了基準測試,發(fā)現(xiàn)帶有 LLM.int8() 的 BLOOM-176B 比 fp16 版本慢了大約 15% 到 23%——這是完全可以接受的。而較小的模型(如 T5-3B 和 T5-11B)的減速幅度更大。研究團隊正在努力提升這些小型模型的運行速度。
文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請謹慎對待。投資者據(jù)此操作,風險自擔。
2024年的Adobe MAX 2024發(fā)布會上,Adobe推出了最新版本的Adobe Creative Cloud。
奧維云網(wǎng)(AVC)推總數(shù)據(jù)顯示,2024年1-9月明火炊具線上零售額94.2億元,同比增加3.1%,其中抖音渠道表現(xiàn)優(yōu)異,同比有14%的漲幅,傳統(tǒng)電商略有下滑,同比降低2.3%。
“以前都要去窗口辦,一套流程下來都要半個月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶就打進了21600元。
華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,憑借其優(yōu)秀的性能配置和精準的色彩呈現(xiàn)能力,為您的創(chuàng)作工作帶來實質(zhì)性的幫助,雙十一期間低至2799元,性價比很高,簡直是創(chuàng)作者們的首選。
9月14日,2024全球工業(yè)互聯(lián)網(wǎng)大會——工業(yè)互聯(lián)網(wǎng)標識解析專題論壇在沈陽成功舉辦。