99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

聊一聊Transformer中的FFN

深度學(xué)習(xí)自然語言處理 ? 來源:青稞AI ? 2024-03-13 11:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:潘梓正,莫納什大學(xué)博士生

最近看到有些問題[1]說為什么Transformer中的FFN一直沒有大的改動。21年剛?cè)雽W(xué)做ViT的時候就想這個問題,現(xiàn)在讀博生涯也快結(jié)束了,剛好看到這個問題,打算稍微寫寫, 也算是對這個地方做一個小總結(jié)吧。

1. Transformer與FFN

Transformer的基本單位就是一層block這里,一個block包含 MSA + FFN,目前公認(rèn)的說法是,

?Attention作為token-mixer做spatial interaction。

?FFN(又稱MLP)在后面作為channel-mixer進(jìn)一步增強(qiáng)representation。

從2017至今,過去絕大部分Transformer優(yōu)化,尤其是針對NLP tasks的Efficient Transformer都是在Attention上的,因為文本有顯著的long sequence問題。安利一個很好的總結(jié)Efficient Transformers: A Survey [2], 來自大佬Yi Tay[3]。到了ViT上又有一堆a(bǔ)ttention[4]改進(jìn),這個repo一直在更新,總結(jié)的有點(diǎn)多,可以當(dāng)輔助資料查閱。

而FFN這里,自從Transformer提出基本就是一個 Linear Proj + Activation + Linear Proj的結(jié)構(gòu),整體改動十分incremental。

94eb8810-e05c-11ee-a297-92fbcf53809c.jpg

Transformer Block示意圖 + FFN內(nèi)部

2. Activation Function

經(jīng)歷了ReLU, GeLU,Swish, SwiGLU等等,基本都是empirical observations,但都是為了給representation加上非線性變換做增強(qiáng)。

?ReLU對pruning挺有幫助,尤其是過去對CNN做pruning的工作,激活值為0大致意味著某個channel不重要,可以去掉。相關(guān)工作可查這個repo[5]。即便如此,ReLU造成dead neurons,因此在Transformer上逐漸被拋棄。

?GeLU在過去一段時間占比相當(dāng)大,直到現(xiàn)在ViT上使用十分廣泛,當(dāng)然也有用Swish的,如MobileViT[6]。

?Gated Linear Units目前在LLM上非常流行,其效果和分析來源于GLU Variants Improve Transformer[7]。如PaLM和LLaMA都采用了SwiGLU, 谷歌的Gemma使用GeGLU。

不過,從個人經(jīng)驗上來看(偏CV),改變FFN中間的activation function,基本不會有極大的性能差距,總體的性能提升會顯得incremental。NLP上估計會幫助reduce overfitting, improve generalization,但是與其花時間改這個地方不如好好clean data。。。目前來說

3. Linear Projections

說白了就是一個matrix multiplication, 已經(jīng)幾乎是GPU上的大部分人改model的時候遇到的最小基本單位。dense matrix multiplication的加速很難,目前基本靠GPU更新迭代。

不過有一個例外:小矩陣乘法可以結(jié)合軟硬件同時加速,比如instant-ngp的tiny cuda nn, 64 x 64這種級別的matrix multiplication可以使得網(wǎng)絡(luò)權(quán)重直接放到register, 激活值放到shared memory, 這樣運(yùn)算極快。

94f66ed8-e05c-11ee-a297-92fbcf53809c.jpg

Source: https://github.com/nvlabs/tiny-cuda-nn

但是這對今天的LLM和ViT來講不現(xiàn)實,最小的ViT-Tiny中,F(xiàn)FN也是個192 x (4 x 192)這種級別,更不用說LLM這種能> 10000的。

那為什么Linear Projection在Transformer里就需要這么大?

常見的說法是Knowledge Neurons。tokens在前一層attention做global interaction之后,通過FFN的參數(shù)中存放著大量training過程中學(xué)習(xí)到的比較抽象的knowledge來進(jìn)一步update。目前有些studies是說明這件事的,如

?Transformer Feed-Forward Layers Are Key-Value Memories[8]

?Knowledge Neurons in Pretrained Transformers[9]

?...

問題來了,如果FFN存儲著Transformer的knowledge,那么注定了這個地方不好做壓縮加速:

?FFN變小意味著model capacity也變小,大概率會讓整體performance變得很差。我自己也有過一些ViT上的實驗 (相信其他人也做過),兩個FC中間會有個hidden dimension的expansion ratio,一般設(shè)置為4。把這個地方調(diào)小會發(fā)現(xiàn)怎么都不如大點(diǎn)好。當(dāng)然太大也不行,因為FFN這里的expansion ratio決定了整個Transformer 在推理時的peak memory consumption,有可能造成out-of-memory (OOM) error,所以大部分我們看到的expansion ration也就在4倍,一個比較合適的performance-memory trade-off.

?FFN中的activations非低秩。過去convnet上大家又發(fā)現(xiàn)activations有明顯的低秩特性,所以可以通過low rank做加速,如Kaiming的這篇文章[10],如下圖所示。但是FFN中間的outputs很難看出低秩的特性,實際做網(wǎng)絡(luò)壓縮的時候會發(fā)現(xiàn)pruning FFN的trade-off明顯不如convnets,而unstructured pruning又對硬件不友好。

94fa9f9e-e05c-11ee-a297-92fbcf53809c.jpg

Source: Zhang et.al, Accelerating Very Deep Convolutional Networks for Classification and Detection

4. 所以FFN真的改不動了嗎?

當(dāng)然不是。

我們想改動一個model or module的時候,無非是兩個動機(jī):1)Performance。2)Efficiency。

性能上,目前在NLP上可以做Gated MLP[11], 如Mamba[12]的block中,或者DeepMind的新結(jié)構(gòu)Griffin[13]。

95031dfe-e05c-11ee-a297-92fbcf53809c.jpg

Source: Griffin: Mixing Gated Linear Recurrences with Local Attention for Efficient Language Models

但是難說這個地方的性能提升是不是來自于更多的參數(shù)量和模型復(fù)雜度。

在CV上,有個心照不宣的trick,那就是加depthwise convolution引入locality,試過的朋友都知道這個地方的提升在CV任務(wù)上有多明顯,例如CIFAR100上,DeiT-Ti可以漲接近10個點(diǎn)這樣子。。。

但是呢,鑒于最原始的FFN依然是目前采用最廣泛的,并且conv引入了inductive bias,破壞了原先permutation invariant的sequence(因為卷積要求規(guī)整的shape,width x height)。大規(guī)模ViT訓(xùn)練依然沒有采用depthwise conv,如CLIP, DINOv2, SAM, etc。

效率上,目前最promising是改成 **Mixture-of-Expert (MoE)**,但其實。。。GPT4和Mixtral 8x7B沒出來之前基本是Google在solo,沒人關(guān)注。當(dāng)然現(xiàn)在時代變了,Mixtral 8x7B讓MoE起死回生。最近這個地方的paper相當(dāng)多,簡單列幾個自己感興趣的:

?Soft MoE: From Sparse to Soft Mixtures of Experts[14]

?LoRA MoE: Alleviate World Knowledge Forgetting in Large Language Models via MoE-Style Plugin[15]

?DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models[16]

5. 達(dá)到AGI需要什么結(jié)構(gòu)?

目前這個階段,沒人知道一周以后會有什么大新聞,就像Sora悄無聲息放出來,一夜之間干掉U-Net,我也沒法說什么結(jié)構(gòu)是最有效的。

總體上,目前沒有任何結(jié)構(gòu)能真的完全beat Transformer,Mamba 目前 也不行,如這篇[17]發(fā)現(xiàn) copy and paste不太行,scaling和in-context能力也有待查看。

考慮到未來擴(kuò)展,優(yōu)秀的結(jié)構(gòu)應(yīng)該滿足這么幾個東西,個人按重要性排序:

?Scaling Law。如果model很難通過scale up提升性能,意義不大(針對AGI來講)。但是建議大家不要針對這個地方過度攻擊學(xué)術(shù)界paper,學(xué)術(shù)界很難有資源進(jìn)行這種實驗,路都是一步一步踩出來的,提出一個新architecture需要勇氣和信心,給一些寬容。嗯,說的就是Mamba。

?In-Context Learning能力。這個能力需要強(qiáng)大的retrieval能力和足夠的capacity,而對于Transformer來講,retrieval靠Attention,capacity靠FFN。scaling帶來的是兩者協(xié)同提升,進(jìn)而涌現(xiàn)強(qiáng)大的in-context learning能力。

?Better Efficiency。說到底這也是為什么我們想換掉Transformer。做過的朋友都知道Transformer訓(xùn)練太耗卡了,無論是NLP還是CV上。部署的時候又不像CNN可以做bn conv融合,inference memory大,low-bit quantization效果上也不如CNN,大概率是attention這個地方low-bit損失大。在滿足1,2的情況下,如果一個新結(jié)構(gòu)能在speed, memory上展現(xiàn)出優(yōu)勢那非常有潛力。Mamba能火有很大一部分原因是引入hardware-aware的實現(xiàn),極大提升了原先SSM的計算效率。

?Life-long learning。知識是不斷更新的,訓(xùn)練一個LLM需要海量tokens,強(qiáng)如OpenAI也不可能每次Common Crawl[18]放出新data就從頭訓(xùn)一遍,目前比較實際的方案是持續(xù)訓(xùn)練,但依然很耗資源。未來的結(jié)構(gòu)需要更高效且持久地學(xué)習(xí)新知識。

Hallucination問題我反倒覺得不是大問題,畢竟人也有幻覺,比如對于不知道的,或自以為是的東西很自信的胡說一通,強(qiáng)推Hinton懟Gary Marcus這個視頻[19]。我現(xiàn)在寫的東西再過幾年回來看,說不定也是個Hallucination。。。

總結(jié): FFN因為結(jié)構(gòu)最簡單但是最有效,被大家沿用至今。相比之下,Transformer改進(jìn)的大部分精力都在Attention這個更明顯的bottleneck上,有機(jī)會再寫個文章聊一聊這里。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4945

    瀏覽量

    131228
  • Transformer
    +關(guān)注

    關(guān)注

    0

    文章

    151

    瀏覽量

    6519
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    490

    瀏覽量

    22621

原文標(biāo)題:聊一聊Transformer中的FFN

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    從焊接角度,設(shè)計PCB的5個建議

    完成個電路板,需要PCB工程師、焊接工藝、焊接工人等諸多環(huán)節(jié)的把控。今天通過定位孔、MARK點(diǎn)、留邊、焊盤過孔、輔助工具這五個方面從畫板的角度跟大家PCB設(shè)計。
    的頭像 發(fā)表于 02-06 10:31 ?2252次閱讀
    從焊接角度<b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>,設(shè)計PCB的5個建議

    消息隊列技術(shù)選型的7種消息場景

    我們在做消息隊列的技術(shù)選型時,往往會結(jié)合業(yè)務(wù)場景進(jìn)行考慮。今天來消息隊列可能會用到的 7 種消息場景。
    的頭像 發(fā)表于 12-09 17:50 ?1716次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>消息隊列技術(shù)選型的7種消息場景

    AltiumFill,Polygon Pour,Plane的區(qū)別和用法

    Fill會造成短路,為什么還用它呢?來AltiumFill,Polygon Pour,Plane的區(qū)別和用法
    發(fā)表于 04-25 06:29

    stm32的低功耗調(diào)試

    前言:物聯(lián)網(wǎng)的大部分設(shè)備都是電池供電的,設(shè)備本身低功耗對延長設(shè)備使用至關(guān)重要,今天就實際調(diào)試總結(jié)stm32的低功耗調(diào)試。1、stm32在運(yùn)行狀態(tài)下的功耗上圖截圖自stm32l15x手冊
    發(fā)表于 08-11 08:18

    7系列FPGA的供電部分

    前幾篇咱們說了FPGA內(nèi)部邏輯,本篇咱們再聊7系列FPGA的供電部分。首先咱們說spartan7系列,通常咱們需要使用以下電源軌:1,VCCINTFPGA內(nèi)部核心電壓。其不損壞FPGA器件的范圍
    發(fā)表于 11-11 09:27

    平衡小車代碼的實現(xiàn)

    前言今天代碼,只有直立功能的代碼。代碼總體思路給定個目標(biāo)值,單片機(jī)通過IIC和mpu6050通信,得知數(shù)據(jù)后,根據(jù)角度環(huán)計算出個P
    發(fā)表于 01-14 08:29

    FPGA的片內(nèi)資源相關(guān)知識

    大家好,到了每日學(xué)習(xí)的時間了。今天我們來FPGA的片內(nèi)資源相關(guān)知識。 主流的FPGA仍是基于查找表技術(shù)的,已經(jīng)遠(yuǎn)遠(yuǎn)超出了先前版本的基本性能,并且整合了常用功能(如RAM、DCM和DSP)的硬核
    的頭像 發(fā)表于 05-25 14:11 ?9231次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>FPGA的片內(nèi)資源相關(guān)知識

    IIC總線設(shè)計

    大家好,又到了每日學(xué)習(xí)的時間了,今天咱們來 IIC 總線設(shè)計。 、概述: IIC 是Inter-Integrated Circuit的縮寫,發(fā)音為eye-squared cee
    的頭像 發(fā)表于 06-22 10:32 ?9589次閱讀

    小米米2月19日停止服務(wù) 米宣布關(guān)閉服務(wù)器

    v8.8.70 及以上版本支持批量導(dǎo)出。 2010年12月10日,反應(yīng)迅速的小米僅僅用了不到2個月的時間,發(fā)布了中國第款模仿kik的產(chǎn)品——米。Kik是款基于手機(jī)通信錄的社交軟件,用戶可以免費(fèi)短信聊天。 2012年5月,
    的頭像 發(fā)表于 01-20 05:43 ?7075次閱讀

    復(fù)活了 能維持多久?

    2021年2月19日,米宣布停服,2021年2月26日,米重新上線。不過這次,米卻是以全新的面貌與大家相見。
    發(fā)表于 03-08 16:32 ?1276次閱讀

    FPGA的彩色轉(zhuǎn)灰度的算法

    大家好,又到了每日學(xué)習(xí)的時間了,今天我們來FPGA學(xué)習(xí)可以遇到的些算法,今天就
    的頭像 發(fā)表于 04-15 15:47 ?2206次閱讀

    【職場雜談】與嵌入式物聯(lián)網(wǎng)架構(gòu)師幾個話題

    【職場雜談】與嵌入式物聯(lián)網(wǎng)架構(gòu)師幾個話題
    的頭像 發(fā)表于 08-23 09:19 ?1710次閱讀
    【職場雜談】與嵌入式物聯(lián)網(wǎng)架構(gòu)師<b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>幾個話題

    華為云彈性公網(wǎng)IP的那些事兒

    華為云彈性公網(wǎng)IP的那些事兒 如今,企業(yè)上云已成為熱門話題,云可以驅(qū)動流程創(chuàng)新和業(yè)務(wù)創(chuàng)新,成為企業(yè)新的利潤增長點(diǎn),被看成是企業(yè)實現(xiàn)數(shù)字化轉(zhuǎn)型的必經(jīng)之路。彈性公網(wǎng)IP作為種網(wǎng)絡(luò)基
    的頭像 發(fā)表于 11-21 15:20 ?1101次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>華為云彈性公網(wǎng)IP的那些事兒

    簡單DPT技術(shù)-double pattern technology

    今天想來簡單DPT技術(shù)-double pattern technology,也就是雙層掩模版技術(shù),在目前先進(jìn)工藝下,這項技術(shù)已經(jīng)應(yīng)用的很普遍了。
    的頭像 發(fā)表于 12-05 14:26 ?3026次閱讀

    芯片設(shè)計的NDR是什么?

    今天突然想route相關(guān)的問題,講講NDR是什么,我也梳理總結(jié)下我對NDR的認(rèn)識。
    的頭像 發(fā)表于 12-06 15:14 ?3219次閱讀