ICLR 2024|ReLU激活函數的反擊,稀疏性仍然是提升LLM效率的利器

b771e5a9faeb496392413e44c5fd0a6a.png

?

論文題目: ReLU Strikes Back: Exploiting Activation Sparsity in Large Language Models
論文鏈接:?https://arxiv.org/abs/2310.04564

參數規模超過十億(1B)的大型語言模型(LLM)已經徹底改變了現階段人工智能領域的研究風向。越來越多的工業和學術研究者開始研究LLM領域中的難題,例如如何降低LLM在推理過程中的計算需求。

本文介紹一篇蘋果發表在人工智能頂會ICLR 2024上的文章,本文針對LLM中激活函數對LLM推理效率的影響展開了研究,目前LLM社區中通常使用GELU和SiLU來作為替代激活函數,它們在某些情況下可以提高LLM的預測準確率。但從節省模型計算量的角度考慮,本文作者認為,經典的ReLU函數對模型收斂和性能的影響可以忽略不計,同時可以顯著減少計算和權重IO量。因此作者主張在LLM社區重新評估ReLU的地位(盡可能多的使用ReLU)。

此外,作者還探索了一種基于ReLU的LLM稀疏模式,該模式可以對已激活的神經元進行重新利用來生成出新的高效token。綜合這些發現和設計,本文實現了基于ReLU的高效LLM計算方案,相比其他激活函數,將LLM的推理計算量大幅減少三倍

01. 引言

為了提高LLM的推理效率,研究者們提出了包括量化、推測解碼、剪枝和權重稀疏化等多種加速手段。通過引入激活函數的稀疏性可以在LLM的精度和計算量之間實現非常可觀的效率平衡,尤其是在GPU等現代硬件上。在傳統神經網絡中經常使用的ReLU激活函數被認為可以有效誘導模型進行稀疏激活,來提高網絡的推理效率。本文作者對OPT模型(激活函數使用ReLU)中每層神經元的激活稀疏度進行了測量,如下圖(a)所示,所有層的稀疏度均超過90%,這種稀疏度可以在模型訓練時GPU 和 CPU 之間的權重IO節省大量時間。對于 OPT 模型,這種稀疏性將推理所需的計算量從每個token的 6.6G FLOPS 減少到 4.5G FLOPS,從而節省了 32% 的計算量(如下圖c所示)。

ee2ea9eeae03469dbe5f8cdd4ee370c6.png

?

02. 激活函數對模型綜合性能的影響

0166465c45644be6aad2a6b548000181.png

?

上圖第二行顯示了LLM在使用不同激活函數時的性能指標曲線。可以看出,當使用不同的激活函數時,模型的性能非常相似。這一現象與LLM縮放定律[2]給出的結論一致,即LLM的性能很大程度上取決于計算和數據,而不是架構細節。但是不同激活函數帶來的激活稀疏性水平明顯不同。上圖c反映了模型中所有層的平均稀疏度級別,當激活函數從SiLU過渡到ReLU(增加了門控權重??)時,模型的稀疏性也在增加。

03. ReLU充當預訓練LLM的潤滑劑

通過上一節的實驗作者已經發現,LLM的預測準確率并不依賴于激活函數的類型。但是現有大多數LLM均是使用ReLU之外的激活函數進行訓練,因此為了在推理階段使這些LLM結合ReLU激活的計算優勢,作者進行了各種架構改進實驗。例如將ReLU合并到預訓練LLM中,作者將這一過程稱為對LLM的“再潤滑”(ReLUfication)。將ReLU插入到預訓練LLM中,模型在微調過程中可能快速的恢復性能,同時提高推理時的稀疏性,可謂是一舉兩得。

3.1 一階段插入ReLU激活

ReLUfication過程的示意圖如下圖所示,這個過程可以分為多個階段完成,一階段是使用ReLU替換到LLM中的其他激活函數,例如在Falcon 和 Llama分別替換 GELU 和 SiLU。由于 OPT 模型已經使用 ReLU 激活,因此這里保持不變。

32d6ad8ce12e49bfba234ef95a62e7b5.png

?

隨后作者將替換ReLU后的模型在RefinedWeb數據集上進行微調,下圖分別展示了Falcon 和 Llama在替換后模型稀疏性的對比效果。

d76ee576b8ee45ef8304a12752e59ece.png

?

除了激活稀疏性的顯著改善之外,作者還觀察到了其他有趣的現象,如下圖所示,作者測量了Falcon 和 Llama 預訓練模型的預激活分布情況,可以看出,在微調階段,這個分布本身的變化并不明顯,這可能表明網絡的預測傾向在引入稀疏性時并不會改變,具有良好的穩定性

defd4bcd4331497484a1b03883443c52.png

?

下圖展示了模型的預測準確率隨著ReLU的不斷微調的變化情況,模型在微調階段很快恢復了其原本的性能,其中Llama(綠色線條)完美的達到了ReLU插入之前的預測準確率

3.2 二階段的進一步稀疏化

在一階段的ReLU融化中,作者插入了ReLU來替代其他激活函數,這會導致模型down projection層的輸入變稀疏,稀疏程度大約占總計算量的30%。然而,除了down projection層之外,transformer的解碼器層中還有其他復雜的矩陣向量乘法,例如注意力層中的QKV projection,這些矩陣向量乘法大約占總計算量的約 55%,因此對這一部分進行二次稀疏也非常重要。作者發現,在現代transformer層中,注意力層和 FFN 層的輸入都來自歸一化層(LayerNorm),這些層可以被視為 MLP 的一種特定形式,因為它們并不是學習參數,而是學習如何對輸入數據進行縮放,因此作者將ReLU接在歸一化層之后來進行二階段的稀疏激活

6cf78048ff2d4847a30e1b67a5ad6282.png

?

下表展示了ReLUfication調整后,模型的稀疏程度和zero-shot預測精度。其中模型的稀疏性可以分為三種類型:up projection、down projection和QKV projection。可以看到,對LLM的不同部位進行稀疏化后,模型的zero-shot精度變化并不明顯,但是計算量的差異很大

e2352ee828da4f4fa0a62f1af8555077.png

?

為了綜合評估激活函數對LLM上下文學習能力的影響,作者在下表展示了模型在大規模多任務語言理解(MMLU)任務中的性能,結果表明,當使用不同的激活函數和微調策略來增強原始 LLM 時,模型的zero-shot性能也不會發生顯著變化。此外,在相同的FLOPS情況下,參數規模較大但經過ReLU簡化后的模型相比原始較小模型的性能更好。總體而言,本文提出的ReLUfication可以降低LLM各個階段的推理FLOPS,同時保持各種任務的同等性能。

04. 聚合稀疏性:重用已激活的神經元

3189c35c53914cd6a87bf0a6fd7b4886.png

?

3ed0ea39df8347f4912eedecbfd760d2.png

?

可以看出,重用激活方式對模型帶來的困惑負面影響幾乎可以忽略不記,其曲線與基線方法基本吻合,同時在推理加速方面也遠遠優于隨機稀疏性。

05. 總結

本文對LLM中使用的激活函數進行了大規模的研究,作者發現,在LLM預訓練和微調期間激活函數的選擇不會對性能產生顯著影響,而使用經典的 ReLU 可以為LLM提供稀疏性和更高效的推理效率。考慮到現有流行的LLM(例如Llama和Falcon)均已使用非ReLU激活函數進行預訓練,從頭對它們進行訓練耗費的代價太大,因而作者提出了一種將ReLU激活函數合并到現有預訓練LLM中的方法,被稱為ReLUfication,ReLUfication具有即插即用的特點,可以在微調階段快速將模型恢復到與原有狀態相當的性能,同時帶來顯著的推理效率增益。作者在廣泛的基準實驗(包括zero-shot預測和上下文理解)上證明,在LLM中使用稀疏性激活函數具有強大的潛力。

參考

[1] Dan Hendrycks and Kevin Gimpel. Gaussian error linear units (gelus). arXiv preprint arXiv:1606.08415, 2016.

[2] Jared Kaplan, Sam McCandlish, Tom Henighan, Tom B. Brown, Benjamin Chess, Rewon Child, Scott Gray, Alec Radford, Jeffre Wu, and Dario Amodei. Scaling laws for neural language models. CoRR, abs/2001.08361, 2020.


??關于TechBeat人工智能社區

TechBeat(www.techbeat.net)隸屬于將門創投,是一個薈聚全球華人AI精英的成長社區。

我們希望為AI人才打造更專業的服務和體驗,加速并陪伴其學習成長。

期待這里可以成為你學習AI前沿知識的高地,分享自己最新工作的沃土,在AI進階之路上的升級打怪的根據地!

更多詳細介紹>>TechBeat,一個薈聚全球華人AI精英的學習成長社區

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711817.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711817.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711817.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

gcc和g++的區別,如何看自己的編譯器支持的C++的版本

gcc和g的區別 用一句話來說,就是gcc將程序視為c語言的,g將程序視為C的 gcc和g的區別主要在于它們處理不同后綴的文件類型、編譯和連接階段的不同調用方式,以及它們對C特性的支持方式。以下是詳細介紹:123 文件類型。gcc將后綴為…

通過多線程并發方式實現服務器

與多進程實現對比來看。 示例來源于網絡視頻 #include <stdio.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> #include <ctype.h> #include <unistd.h> #include <fcntl.h>#include "wrap.h"#de…

【C++ 測試】

C 測試 一、二維數組二、私有成員三、function用法四、類里面創建另一個類五、lambda六、Map動態申請 一、二維數組 #include <iostream> #include<windows.h> #include <map> // SetConsoleOutputCP ( CP_UTF8 ) ; using namespace std;void test1() {map…

求最短路徑之迪杰斯特拉算法

對fill用法的介紹 1.用鄰接矩陣實現 const int maxn100; const int INF100000000;//無窮大&#xff0c;用來初始化邊 int G[maxn][maxn];//用鄰接矩陣存儲圖的信息 int isin[maxn]{false};//記錄是否已被訪問 int minDis[maxn];//記錄到頂點的最小距離void Dijkstra(int s,in…

網格圖的搜索

來自靈神網格圖題單。 1. 網格圖 1.1. LC 200 島嶼數量 這題我一開始想繁了&#xff0c;想維護并查集&#xff0c;然后看等價類個數。其實完全沒有必要。因為連通分量深搜到頭就可以直接給答案計數1。利用vis數組維護訪問過的點&#xff0c;然后碰到新連通分量重新深搜即可。…

Pinia使用

官方地址&#xff1a;Pinia | The intuitive store for Vue.js (vuejs.org)https://pinia.vuejs.org/ 1.安裝 npm install pinia npm install pinia-plugin-persistedstate Pinia是一個基于Vue 3的狀態管理庫&#xff0c;它使得管理Vue的全局狀態變得更加容易和直觀。 而…

自定義el-dialog的樣式

實現效果&#xff1a; 樣式代碼如下&#xff1a;&#xff08;可以寫在common.scss文件夾中&#xff09; .el-dialog__header {padding: 16px 20px;border-bottom: 1px solid #DCDFE6;display: flex;align-items: center;.el-dialog__title {font-size: 16px;position: relativ…

utniy urp shinyssrr插件使用

文章目錄 前言步驟1首先在URP的配置文件里添加SSR后處理2 修改RenderingPath為延遲渲染3 啟用深度紋理4 為物體添加腳本 插件下載 前言 用來實現屏幕空間反射效果 unity 版本為2021.3.8LTS&#xff0c;低版本的untiy URP的參數設置位置z可能會不同 步驟 1首先在URP的配置文件…

記錄阿里云換源失敗的慘痛教訓

聲明 首先我不是一個云服務器小白&#xff0c;但是之前一直在使用騰訊云和火山引擎的云服務器。從未見過阿里云這樣如此**的運營商。 問題 服務器到手&#xff0c;第一步在我進行sudo apt update的時候&#xff0c;也就是更新軟件包的時候&#xff0c;我發現&#xff0c;一直…

1028. 從先序遍歷還原二叉樹(三種方法:棧+遞歸+集合)

文章目錄 1028. 從先序遍歷還原二叉樹&#xff08;三種方法&#xff1a;棧遞歸集合&#xff09;一、棧 while迭代1.思路2.代碼 二、遞歸法1.思路2.代碼 三、集合存儲1.思路2.代碼 1028. 從先序遍歷還原二叉樹&#xff08;三種方法&#xff1a;棧遞歸集合&#xff09; 一、棧 wh…

hive報錯:FAILED: NullPointerException null

發現問題 起因是我虛擬機的hive不管執行什么命令都報空指針異常的錯誤 我也在網上找了很多相關問題的資料&#xff0c;發現都不是我這個問題的解決方法&#xff0c;后來在hive官網上與hive 3.1.3版本相匹配的hadoop版本是3.x的版本&#xff0c;而我的hadoop版本還是2.7.2的版本…

HTTPS的加密過程

文章目錄 前言一、為什么需要加密&#xff1f;二、只用對稱加密可以嗎&#xff1f;三、只使用非對稱加密四、雙方都使用非對稱加密五、使用非對稱加密對稱加密六、引入證書1.如何放防止數字證書被篡改&#xff1f;2.中間人有可能篡改該證書嗎&#xff1f;3.中間人有可能掉包該證…

開窗函數rank() over,dense_rank() over,row_number() over的區別

1.rank() over 查詢出指定的條件進行排名&#xff0c;條件相同排名相同的話&#xff0c;排名之間是不連續的 例如排名如 1 2 3 3 5 6 7 等&#xff0c;相同的排名會自動跳過 2.dense_rank() over 查詢出指定的條件后進行排名&#xff0c;條件相同&#xff0c;排名相同的話&…

【YOLO系列】YOLOv9論文超詳細解讀(翻譯 +學習筆記)

前言 時隔一年&#xff0c;YOLOv8還沒捂熱&#xff0c;YOLO系列最新版本——YOLOv9 終于閃亮登場&#xff01; YOLOv9的一作和v7一樣。v4也有他。 他于2017年獲得臺灣省National Central University計算機科學與信息工程博士學位&#xff0c;現在就職于該省Academia Sinica的…

【大數據】Flink SQL 語法篇(六):Temporal Join

《Flink SQL 語法篇》系列&#xff0c;共包含以下 10 篇文章&#xff1a; Flink SQL 語法篇&#xff08;一&#xff09;&#xff1a;CREATEFlink SQL 語法篇&#xff08;二&#xff09;&#xff1a;WITH、SELECT & WHERE、SELECT DISTINCTFlink SQL 語法篇&#xff08;三&…

機器視覺——硬件選型

1、相機選型 在選擇機器視覺相機時&#xff0c;通常需要考慮以下幾個方面&#xff1a; 1、分辨率&#xff1a;相機的分辨率決定了其拍攝圖像的清晰度和細節程度。根據具體的應用需求&#xff0c;可以選擇適當的分辨率范圍。 2、幀率&#xff1a;幀率表示相機每秒鐘能夠拍攝的…

2023年營養保健品線上電商市場行業分析(2024年營養保健行業未來趨勢分析)

近年來&#xff0c;受人口老齡化、養生年輕化等因素驅動&#xff0c;保健品行業增長強勁&#xff0c;加之越來越多的年輕人也加入養生大軍&#xff0c;成為保健品市場上的一股新力量&#xff0c;進一步帶動市場擴容。 鯨參謀數據顯示&#xff0c;2023年度&#xff0c;京東平臺…

[pdf]《軟件方法》2024版部分公開-共196頁

DDD領域驅動設計批評文集 做強化自測題獲得“軟件方法建模師”稱號 《軟件方法》各章合集 潘加宇《軟件方法》2024版部分公開pdf文件&#xff0c;共196頁&#xff0c;已上傳CSDN資源。 也可到以下地址下載&#xff1a; http://www.umlchina.com/url/softmeth2024.html 如果…

Ubuntu20.04 ssh終端登錄后未自動執行.bashrc

sudo vim ~/.profile輸入以下內容 if [ -n "$BASH_VERSION" ]; then if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 執行 source ~/.profile重新測試 其他答案 如果你的~/.bashrc文件在Ubuntu中沒有自動生效&#xff0c;…

3. 文檔概述(Documentation Overview)

3. 文檔概述&#xff08;Documentation Overview&#xff09; 本章節簡要介紹一下Spring Boot參考文檔。它包含本文檔其它部分的鏈接。 本文檔的最新版本可在 docs.spring.io/spring-boot/docs/current/reference/ 上獲取。 3.1 第一步&#xff08;First Steps&#xff09; …