中科院計算所副研究員馮洋:神經(jīng)機器翻譯的訓練改進和解碼提速
解碼
1. CubePruning
下面介紹在解碼方面的兩個工作,第一個工作要解決的是beam search每一步要計算BeamSize*|V|的問題,這個計算量大大降低了inference時候解碼的速度。
這是解碼過程中每個步驟的時間消耗,對于GPU來說,大部分的時間消耗在的計算上,其它三個步驟比較節(jié)省時間,對于CPU來說,最耗費時間的是最后兩個步驟,因為|V|比較大。
傳統(tǒng)的方法使用的是Beam Search,傳統(tǒng)的 Beam Search其實是一個二維的搜索方法。其中第一維就是已經(jīng)生成的部分的譯文,假設Beam Size = 4,那么就是四個譯文。第二維度是這四個譯文都要進行下一步的Token預測計算?偣簿托枰嬎4*|V|的概率。因為|V|的個數(shù)通常是幾千上萬級別的,所以這個部分的計算量就非常大。
我們的做法是將二維的搜索擴展成三維的搜索,具體的做法分為以下幾步:
1. Beam分組:假設我們要解碼第11步,我們就將第10步解碼出來相同Token的候選序列歸為一組。
2. 分組預測第11步的候選Token:只用每個組得分最高的哪個候選序列來計算當前的Token分布。
3. 近似組員的Token分布:由上一步已經(jīng)知道本組最優(yōu)的候選序列的下一個token的預測分布,對于組員來說,也將共享其老大計算出來的Token分布score,然后和自身的序列score相加,得到自身擴展一個Token后的score。這個score作為自身的近似分。
4. 查找Top-K:經(jīng)過上面的計算之后,這樣每個組就是得分其實是一個二維矩陣,我們將矩陣橫軸作為每個組員,縱軸表示當前步預測的token,然后保證右上角score最大,往右,往下都是減小。這樣便于我們查找Top-K。具體請看下一張slides。
對于近似的score這里有兩個選擇,1) 如果取到的candidate是預測的score,那么用真實的狀態(tài)來重新計算一下這個score,這時候也順便更新了一下自己的隱狀態(tài),2)直接用預測的score,不使用更新的方式,這時候和老大哥共享隱狀態(tài)。
這個是GPU上的結果,橫軸是速度,縱軸是BLEU值,可以看出在取得最優(yōu)的BLEU值的情況下,我們的方法所用的時間是更短的。速度可以提升3.3倍。在CPU下,提速可以達到3.5倍。
在Beam Size=40的情況下,GPU上速度提升3.8倍,CPU上提升4.2倍。

最新活動更多
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 “AI寒武紀”爆發(fā)至今,五類新物種登上歷史舞臺
- 4 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計算迎來商業(yè)化突破,但落地仍需時間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關稅,能否乘機器人東風翻身?