3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

王林
發布: 2024-06-12 11:55:28
原創
865 人瀏覽過

高效率解碼n -token序列,CLLMs+Jacobi解碼框架。

傳統上,大型語言模型(LLMs)被認為是順序解碼器,逐一解碼每個token。

來自上海交通大學、加州大學的研究團隊展示了預訓練的LLMs可以輕鬆地被教導成為高效的並行解碼器,並介紹了一種新的並行解碼器族,稱為一致性大語言模型(CLLMs),能夠透過在每個推斷步驟中有效地解碼一個n -token序列來降低推斷延遲。

在這篇論文中,研究顯示:「模仿人類在頭腦中形成完整句子後逐字表達的認知過程,可以透過簡單地微調預先訓練的LLMs來有效地學習。」

具體而言,CLLMs透過將任何隨機初始化的n-token序列映射到盡可能少的步驟中,產生與自回歸(AR)解碼相同結果的解碼序列。這樣,就可以進行並行解碼的訓練。

實驗結果表明,使用該研究團隊所提出的方法獲得的CLLMs非常有效,在生成速度上顯示出該方法獲得了2.4倍至3.4倍的改進,並與其他快速推斷技術如Medusa2和Eagle相媲美,且在推斷時不需要額外的記憶體成本來容納輔助模型組件。

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

  • 論文名稱:《CLLMs:Consistency Large Language Models》

  • 論文連結:https:/ /arxiv.org/pdf/2403.00835

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

##               ##                系統-7B-001是baseline ABEL-7B-001大約3倍速度的示範。

Jacobi解碼

大型語言模型(LLMs)正在改變人類生活的面貌,從程式設計到提供法律和健康建議。

然而,在推斷過程中,LLMs使用自回歸解碼逐token產生反應,如圖1所示,這導致了較長反應的高延遲。使用自迴歸解碼,通常需要進行架構修改、輔助元件或初稿模型等,以透過一次產生多個token來加快推斷速度。 3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

                                 所示中2:傳統中的自迴歸(AR)解碼示意圖:一次產生解碼。

Jacobi解碼源自Jacobi和Gauss-Seidel定點迭代求解非線性方程式的方法,已證明與使用貪婪解碼的自迴歸產生完全相同。

Jacobi解碼將順序產生過程重新建構為一個包含n個變數的n個非線性方程組,並基於Jacobi迭代可以並行求解。

每個迭代步驟可能會預測出多個正確的token(所謂的「正確」是指在貪婪取樣策略下與自迴歸解碼結果對齊),從而潛在地加速自迴歸解碼。 3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

                               圖3中:Jacobi解碼中連接到兩個鍵下進行迭代。

具體來說,Jacobi解碼方法首先從輸入提示中隨機猜測序列的下一個token(以下簡稱

n

-token序列,除非另有說明)。 然後,將n -token序列連同提示一起饋送到LLM中,以進行迭代更新。這個過程會持續進行,直到

n

-token的序列穩定下來,不再發生變化,達到一個固定點。 值得注意的是,Jacobi解碼不需要比自回歸(AR)解碼更多的對LLM的查詢。最終,

n

-token的序列會收斂到在貪婪策略下由AR解碼產生的輸出。從最初的隨機猜測到最終的AR生成結果的這個過程被稱為「Jacobi軌跡」。

Jacobi解碼迭代過程和Jacobi軌跡的一個實例在圖2中進行了說明。

Jacobi解碼的限制:

###然而,在實踐中,普通的Jacobi解碼對LLMs的加速效果僅有微弱的提升,例如,平均加速比只有1.05倍。這是因為當LLM在先前的token中存在錯誤時,很難產生正確的token。 ###

因此,大多數Jacobi迭代只能為n -token的序列獲得一個校正,導致如圖3左側所示的較長軌跡。

前瞻解碼和推測解碼方法試圖緩解Jacobi解碼和傳統的自回歸解碼的低效率問題,但在推斷時會產生額外的記憶體成本。

而CLLMs則不需要這些額外的記憶體成本。

一致性大型語言模型(CLLMs)

初步Jacobi解碼:

給定一個prompt x和一個預先訓練的LLM p(·​​|x),通常研究者會使用標準的自回歸(AR)解碼方法在貪婪策略下獲得模型的反應,即:3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

Jacobi解碼重新建構了LLM推斷過程,將其視為解決非線性方程組的過程,以將解碼過程轉換為可平行計算的形式。考慮到: 

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

研究者可以將上述方程式改寫為非線性方程組:

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

需要注意的是:

這個過程在某個k值處退出,使得:3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

然後,定義3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了作為固定點,並且將3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了作為Jacobi軌跡。

為了解決這個問題,研究團隊提出調整預訓練的LLMs,使它們能夠一致地將Jacobi軌跡J 上的任意點y 對應到固定點y*

令人驚訝的是,他們發現這樣的目標類似於一致性模型的目標——一種擴散模型的主要加速方法。

在該團隊提出的方法中,使用從目標模型收集的Jacobi軌跡來訓練模型,並使用一種損失函數,該函數鼓勵在Jacobi迭代過程中實現單步收斂。

對於每個要調整為CLLM的目標模型p ,訓練包含兩個部分:

(1)Jacobi軌跡準備:

對於每個提示,作者按順序對每個token截斷進行Jacobi解碼,直到整個回應序列# l 被產生為止,這相當於所有連續固定點的串聯。

 沿軌跡產生的每個序列都會被計算為一個資料條目。

此處要注意的是,對於包含NN ≫ n)個token的I 的長響應,這種截斷避免了長輸入的慢速模型評估。

(2)使用一致性和AR損失進行訓練:

作者聯合優化兩個損失來調整CLLMs,一致性損失確保一次預測多個token,而AR損失則防止CLLM偏離目標LLM,以保持生成品質。 3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

                                  中時調整中使用任何固定位置的固定狀態。

一致性與AR損失:

(1) 一致性損失

p 表示目標LLM。

使3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了表示為初始化為 p 的參數 θ 的 CLLM。

對於prompt x 和對應的Jacobi軌跡#J ,令y y* 分別表示軌跡上的隨機狀態和固定點。

可以透過最小化以下損失來促使CLLM在輸入為y* 時輸出y ,稱為全域一致性(GC)損失

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了在此公式裡,3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

作者大量使用符號來表示從資料集中均勻抽樣。

D(·||·) 表示兩個分佈之間的距離,選擇則在GKD方法中進行了討論,在本文中主要使用前向KL。

或者,根據一致性模型中的公式,使用局部一致性(LC)損失。

其中相鄰狀態:3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了在Jacobi軌跡#中,被驅使產生相同的輸出:

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

(2)AR損失:

為了避免偏離目標LLM的分佈,作者結合了基於目標LLM p 的生成l 的傳統AR損失:

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

透過將兩個損失結合在一起,使用一些權重ω ,訓練CLLM的總損失為:

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

實驗

#結果:

##總的來說,實驗涵蓋了三個特定領域的任務:

(1)Spider(文字到SQL)

(2)Human-Eval(Python程式完成)和GSM8k(數學)

(3)更廣泛的開放域會話挑戰MT-bench。

所報告的實驗使用微調過的編碼器LLM、Deepseek-coder-7B-instruct、LLaMA-2-7B或ABEL-7B-001作為目標模型,具體使用則取決於任務。

訓練和評估則都在NVIDIA A100 40GB伺服器上進行。

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

圖5:CLLM在不同下游任務上的加速效果。結果顯示:「CLLM比預訓練模型快得多,並且與Medusa相比實現了可比較的加速,但在推斷時沒有額外的成本。」

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

##圖6:CLLM與其他基準在特定領域任務(Spider、CSN-Python、GSM8k)以及MT-bench上的比較示意圖。 CLLM在與Medusa2的比較中實現了類似或甚至更好的加速效果,同時不引入額外的推斷成本(根據FLOPS和記憶體消耗判斷)。

專業領域:

從圖5中,可以看到,與其他基準(包括原始目標模型、Medusa2和猜測解碼)相比,CLLMs實現了最顯著的加速。

開放域會話挑戰(MT-bench):

使用ShareGPT資料集從LLaMA2-7B訓練的CLLM與前瞻解碼(lookahead decoding)結合使用時,可以實現與Medusa2大致相同的加速,並在MT-bench上獲得可比較的分數。

然而,CLLM具有更高的適應性和記憶體效率,因為它不需要對目標模型的原始架構進行修改,也不需要輔助元件。

訓練成本:

3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了CLLMs的微調成本是適度的。

例如,對於LLaMA-7B,只需傳遞大約1M token就可以在Spider資料集上實現它的3.4倍的加速。在資料集size較大的情況下(例如CodeSearchNet-Python),只需要使用資料集的10%來產生訓練CLLMs的Jacobi軌跡,從而獲得約2.5倍的加速。 3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了

可以透過以下方式估算token的總數:######N = 平均每個prompt的軌跡量 × 平均軌跡長度 × Prompt數量。 #####################

圖7:Spider上目標LLM和CLLM之間的Jacobi軌跡比較。 Jacobi軌跡上的每個點都是顏色編碼的序列:與AR結果相符的正確標記為藍色,不準確的標記為紅色。 CLLM表現出增強的效率,收斂到固定點的速度比目標LLM快2倍。 CLLM的這種增強效率可以歸因於一致性損失,它促進了每個給定前綴的n-token 序列的結構的學習。

圖6左側顯示,目標LLM通常在一個迭代中只產生一個正確的token。相較之下,在CLLMs中,作者發現了快速推進現象,即在單一Jacobi迭代中連續多個token被正確預測。

此外,在目標LLM中,提前正確生成的token(例如圖7左側索引6和7處的“country”和“H”),往往在隨後的迭代中被不准確地替換。

另一方面,CLLMs表現出了預測正確token的能力,即使在先前有錯誤token的情況下,也確保token保持不變。

作者將這樣的token稱為「固定token」。這兩種現象共同促成了CLLMs在Jacobi解碼中的快速收斂,從而實現了相當大的生成速度提升。

研究團隊也觀察到,透過訓練,CLLMs獲得了一個關鍵的語言概念-搭配:「一系列字或術語,它們的共同出現頻率高於隨機機會所預期的。」

語言不僅由孤立的單字組成,而且嚴重依賴特定的詞對。搭配的範例在自然語言和程式語言中都很豐富。

它們包括:

  • 動詞+介係詞組合(例如「talk to」,「remind ... of ...」)

  • #動詞+名詞結構(例如“make a decision”,“catch a cold”)

  • 許多領域特定的句法結構(例如“SELECT ... FROM . ..”,“if ... else”用於編程)。

一致性產生目標使CLLMs能夠從Jacobi軌跡的任何點推斷出這樣的結構,促進CLLMs掌握大量的搭配,並因此同時預測多個字以最小化迭代步驟。

參考連結:

https://hao-ai-lab.github.io/blogs/cllm/

以上是3倍生成速度也降記憶體成本,超越Medusa2的高效率解碼框架終於來了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:jiqizhixin.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!