Transformer量化筆記

前言

AI芯片(這里只談FPGA芯片用于神經(jīng)網(wǎng)絡(luò)加速)的優(yōu)化主要有三個(gè)方面:算法優(yōu)化配名,編譯器優(yōu)化以及硬件優(yōu)化持灰。算法優(yōu)化減少的是神經(jīng)網(wǎng)絡(luò)的算力竞川,它確定了神經(jīng)網(wǎng)絡(luò)部署實(shí)現(xiàn)效率的上限膀曾。編譯器優(yōu)化和硬件優(yōu)化在確定了算力的基礎(chǔ)上抵知,盡量最大化硬件的計(jì)算和帶寬性能墙基。經(jīng)歷了一年多的理論學(xué)習(xí),開始第一次神經(jīng)網(wǎng)絡(luò)算法優(yōu)化的嘗試刷喜。之所以從一個(gè)FPGA開發(fā)者轉(zhuǎn)向算法的學(xué)習(xí)残制,有幾個(gè)原因:

第一是神經(jīng)網(wǎng)絡(luò)在AI芯片上的部署離不開算法的優(yōu)化。一個(gè)浮點(diǎn)數(shù)的計(jì)算(加法或者乘法)和定點(diǎn)數(shù)的計(jì)算消耗的資源差距很大掖疮,對(duì)于FPGA這樣邏輯資源有限的芯片而言初茶,定點(diǎn)計(jì)算更加友好,而且能夠提升幾倍于浮點(diǎn)計(jì)算的性能浊闪。

第二是神經(jīng)網(wǎng)絡(luò)量化壓縮需要密切的結(jié)合FPGA硬件的特點(diǎn)恼布,需要考慮到FPGA的存儲(chǔ)資源,計(jì)算符號(hào)是否能夠被FPGA友好的實(shí)現(xiàn)等搁宾。在AI加速器項(xiàng)目中桥氏,算法和FPGA都有各自的開發(fā)者,F(xiàn)PGA會(huì)對(duì)算法組提出要求猛铅,比如激活函數(shù)量化字支,normalization如何做等,然后算法組在這些特定要求下去進(jìn)行算法優(yōu)化奸忽。如果一個(gè)人對(duì)FPGA和算法都比較熟悉的話堕伪,那么就會(huì)更容易發(fā)現(xiàn)算法優(yōu)化的點(diǎn)。

第三是FPGA開發(fā)方式的趨勢(shì)是多樣化栗菜。使用RTL語(yǔ)言仍然是主要的開發(fā)方法欠雌,需要一個(gè)人有一定的數(shù)字電路基礎(chǔ)。這種開發(fā)方式最底層疙筹,所以最靈活富俄,可以更好的去調(diào)優(yōu)禁炒。但是同時(shí),F(xiàn)PGA一直渴望去突破固有的開發(fā)方式霍比,讓一個(gè)不懂得硬件的軟件開發(fā)人員也可以很容易的上手幕袱,同時(shí)能夠縮短開發(fā)周期,比如HLS悠瞬。我相信们豌,隨著HLS的發(fā)展和FPGA芯片的演進(jìn),使用這種方式的開發(fā)者會(huì)越來(lái)越多浅妆。在那些算法復(fù)雜望迎,更新較快的項(xiàng)目中,HLS更有優(yōu)勢(shì)凌外,而在一些對(duì)資源辩尊,時(shí)序,功耗要求更高的項(xiàng)目中康辑,RTL更有優(yōu)勢(shì)摄欲。當(dāng)硬件平臺(tái)逐漸軟件化后,必然會(huì)對(duì)FPGA開發(fā)者的算法能力提出更高的要求晾捏。

Transformer網(wǎng)絡(luò)結(jié)構(gòu)

Google在《Attention is all your need》的文章中蒿涎,提出了使用全attention結(jié)構(gòu)替代LSTM的transformer模型,在翻譯任務(wù)上取得了更好的成績(jī)惦辛。這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)計(jì)算量大劳秋,計(jì)算符號(hào)相對(duì)簡(jiǎn)單,有一定的應(yīng)用胖齐,所以適合用于網(wǎng)絡(luò)加速的展示玻淑。結(jié)構(gòu)整體模型如下:

1 embedding

包含了input和output的embedding層,完成詞匯到網(wǎng)絡(luò)輸入向量的轉(zhuǎn)化呀伙,embedding的矩陣大小取決于詞匯量的多少补履,對(duì)于翻譯來(lái)講,通常都是巨大的剿另,所以其不適合放在FPGA上進(jìn)行加速箫锤,沒有量化的必要。Input和output以及softmax前的linear層都共享相同的參數(shù)雨女,這樣做的目的谚攒,是因?yàn)楣蚕韎nput和output權(quán)重能夠降低word level perplexity,當(dāng)然也降低了參數(shù)存儲(chǔ)量氛堕。最后的linear使用embedding的權(quán)重是為了將網(wǎng)絡(luò)向量轉(zhuǎn)化為詞語(yǔ)出現(xiàn)的logits馏臭。

2 positional encoding

Transformer是沒有循環(huán)網(wǎng)絡(luò),為了獲取詞匯位置關(guān)系信息讼稚,對(duì)詞匯進(jìn)行位置編碼括儒。其實(shí)就是給每個(gè)詞匯加上位置偏移绕沈,位置偏移函數(shù)選擇了sin和cos函數(shù):

Pos是詞匯位置,i是詞匯向量的維度位置帮寻。

3 encoder

由多層的multi-head attention和linear組成乍狐,multi-headattention和linear之間由norm和add,add是一個(gè)residual連接规婆。

Multi-head attention結(jié)構(gòu)如下:

Q澜躺,K蝉稳,V分別是query抒蚜,key和value,這是attention機(jī)制中抽象出來(lái)的三個(gè)重要變量耘戚,通過(guò)計(jì)算q和k的相似度嗡髓,得到每個(gè)k對(duì)應(yīng)的v的權(quán)重系數(shù),然后對(duì)value進(jìn)行加權(quán)求和就得到了attention值收津。這個(gè)是attention機(jī)制的本質(zhì)思想饿这。Transformer中使用softmax函數(shù)來(lái)描述相似度,當(dāng)然還有很多其它方法來(lái)描述撞秋。

這里添加了一個(gè)scale1/squart(dk)长捧,這其實(shí)是一個(gè)參數(shù)的調(diào)節(jié),防止矩陣乘法得到結(jié)果太大而導(dǎo)致softmax函數(shù)的梯度太小吻贿。

這里還要注意transformer網(wǎng)絡(luò)沒有對(duì)Q串结,K,V直接進(jìn)行單一的attention計(jì)算舅列,而是對(duì)這三個(gè)變量進(jìn)行了拆分肌割,平行計(jì)算拆分后的變量,得到的attention值最后在拼接在一起帐要。

4 decoder

Decoder和encoder也有類似的結(jié)構(gòu)把敞,不同的是,在decoder中由三層:mask-multi-head attention榨惠,multi-head attention以及FC構(gòu)成奋早。帶mask的multi-head是為了屏蔽target句子詞之后的詞,因?yàn)閷?duì)句子的翻譯應(yīng)該是由前向后進(jìn)行的赠橙,后邊的詞語(yǔ)不應(yīng)該出現(xiàn)在前邊詞語(yǔ)的預(yù)測(cè)之中耽装。

量化方法

量化實(shí)際是一個(gè)仿射變換:

其中s是scale,q是量化后的數(shù)據(jù)简烤,z是偏移剂邮,如果采用對(duì)稱變換,令z為0横侦,那么就有:

去除中心z挥萌,可以消除矩陣計(jì)算中的交叉項(xiàng)绰姻。接下來(lái)就是如何獲得q和s。q和s通過(guò)如下方式獲得:

Clip操作是在最小值n和最大值p之間獲得x/s的向下整數(shù)值引瀑,如果x/s向下整數(shù)值超過(guò)n或者p就取n和p狂芋。

S的值通過(guò)訓(xùn)練獲得,為了保證能夠很好的在FPGA上計(jì)算憨栽,s的值最好可以取得2的冪次帜矾。

由于s和x都是需要訓(xùn)練的參數(shù),所以我們需要求得他們的梯度值屑柔,梯度值比較簡(jiǎn)單屡萤,對(duì)q(x, s)的x和s進(jìn)行求導(dǎo),有:

對(duì)x的梯度使用的是hinton提出的strait-through estimator掸宛,這樣做是因?yàn)榭梢韵炕氲脑肼曀缆剑斓挠?xùn)練。



@

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唧瘾,一起剝皮案震驚了整個(gè)濱河市措译,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饰序,老刑警劉巖领虹,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異求豫,居然都是意外死亡塌衰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門注祖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猾蒂,“玉大人,你說(shuō)我怎么就攤上這事肚菠。” “怎么了罩缴?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)箫章。 經(jīng)常有香客問(wèn)我,道長(zhǎng)檬寂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮匾旭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘圃郊。我一直安慰自己,他們只是感情好持舆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逸寓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪席覆。 梳的紋絲不亂的頭發(fā)上史辙,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天汹买,我揣著相機(jī)與錄音佩伤,去河邊找鬼。 笑死晦毙,一個(gè)胖子當(dāng)著我的面吹牛生巡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播见妒,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼孤荣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了须揣?” 一聲冷哼從身側(cè)響起盐股,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耻卡,沒想到半個(gè)月后疯汁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卵酪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年幌蚊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溃卡。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溢豆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瘸羡,到底是詐尸還是另有隱情漩仙,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站队他,受9級(jí)特大地震影響垮兑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜漱挎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一系枪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧磕谅,春花似錦私爷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至放刨,卻和暖如春工秩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背进统。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工助币, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人螟碎。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像俭缓,于是被迫代替她去往敵國(guó)和親酥郭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容