8月11日-16日,第62屆國際計(jì)算語言學(xué)年會(Annual Meeting of the Association for Computational Linguistics,簡稱 ACL)在泰國曼谷舉行。
云天勵飛大模型團(tuán)隊(duì)的論文《Generation Meets Verification: Accelerating Large Language Model Inference with Smart Parallel Auto-Correct Decoding》被錄用為ACL24的Findings長文。這是云天勵飛大模型部分研究成果的階段性展示。
ACL 年會是計(jì)算語言學(xué)和自然語言處理領(lǐng)域國際排名第一的頂級學(xué)術(shù)會議,由國際計(jì)算語言學(xué)協(xié)會組織,每年召開一次,在中國計(jì)算機(jī)學(xué)會(CCF)推薦會議列表中被列為 A 類會議。
云天勵飛的入選論文提出了SPACE引擎—— 一種實(shí)現(xiàn)大模型推理無損加速的創(chuàng)新方案。在不同類型大模型測試的結(jié)果表明,使用SPACE引擎后,模型在HumanEval測試集上推理速度提升270%-400% ,推理結(jié)果質(zhì)量保持不變,可做到兼顧“算得快”和“算得準(zhǔn)”。
云天勵飛大模型團(tuán)隊(duì)的入選論文
主流推理方案難以做到“既要又要”
SPACE是S mart P arallel A uto-C orrect De coding的簡稱,意為“智能并行自動糾錯解碼”。
這個推理方案有兩大特點(diǎn):一是采用半自回歸 推理模型,極大加快推理速度;二是在推理過程中加入驗(yàn)證 手段,能夠在提升推理速度的同時,保證推理精度。
“半自回歸”是什么?為什么要加入驗(yàn)證的環(huán)節(jié)?在解釋這些問題前,我們需要先了解一下當(dāng)前大模型是如何“工作”的。
打開大語言模型的APP,我們在對話框輸入“大模型是什么?”,大模型會逐字逐句地輸出它的回答:“大模型是具有數(shù)千萬參數(shù)的深度學(xué)習(xí)模型。”這個回答的過程看似很簡單。但實(shí)際上,大模型在背后經(jīng)歷了多次“自回歸”的循環(huán)。
首先,大模型會根據(jù)我們輸入的內(nèi)容,先預(yù)測輸出的第一個字——“大”,然后把“大”字重新帶回到輸入端,基于“大”字預(yù)測下一個字應(yīng)該輸出什么。當(dāng)然,這個“預(yù)測”并不是憑空“瞎猜”,而是模型會根據(jù)前期訓(xùn)練過程中見過的數(shù)據(jù)綜合判斷,選擇概率最高的字,作為下一個輸出字。
在這個案例中,第二個輸出的字是“模”,輸出了第二個字后,大模型會再次把“大模”這兩個字帶回到輸入端,預(yù)測第三個生成的字。如此不斷循環(huán)往復(fù),直至完整的句子結(jié)束。
這個過程就是“自回歸”。
目前,自回歸是大模型推理采用的主流方案。 無論是ChatGPT、開源的Llama,還是國內(nèi)的一眾大模型,主要都是采用自回歸的推理方案。
自回歸方案示意圖
自回歸方案的優(yōu)勢和弊端也十分明顯。優(yōu)勢是能夠確保生成的內(nèi)容準(zhǔn)確且有意義,而且上下文連貫。弊端是計(jì)算成本高、推理延時長。
為了克服這些問題,行業(yè)提出的解決方案是 “半自回歸” 和 “投機(jī)解碼” 。
“半自回歸”是在“自回歸”和“非自回歸”之間的一種折中方案。上文提到,“自回歸” 是用已生成的詞來預(yù)測下一個詞;“非自回歸” 則是“自回歸”的反面,一次性預(yù)測整個句子。“非自回歸” 方案能夠提升推理效率,但是輸出的精度卻大打折扣。“半自回歸”方案,則是綜合考慮了“自回歸”和“非自回歸”的優(yōu)缺點(diǎn),平衡大模型推理對速度和精度的要求。
但是,采用“半自回歸”方案又引發(fā)了新的問題——一是大部分大模型用不了,二是精度無法達(dá)到產(chǎn)業(yè)要求。 主流大模型是按照自回歸的推理模式打造的,如果要采用半自回歸方案,則需要從頭開始重新訓(xùn)練大模型。而訓(xùn)練一次大模型需要消耗大量的電力、算力、人力,幾乎沒有人會為了改變推理方案,把好不容易訓(xùn)練出來的大模型推倒重來。
另一個方案是“投機(jī)解碼”。 這一方案按照“草擬——驗(yàn)證” 的流程工作,首先需要引入一個參數(shù)量相對較小的輔助模型,由小模型先“草擬”出候選答案,再由大模型去驗(yàn)證候選答案正確與否。得益于小模型相比大模型推理速度快,并且大模型能夠同時對多個候選答案進(jìn)行驗(yàn)證,這樣的解碼方式既能夠保證輸出結(jié)果的精度,同時也能夠加快推理速度。
但是這個方案同樣存在弊端。一是需要先做出十分“靠譜”的小模型,要能夠又快又準(zhǔn)地“草擬”出答案,而這本身就具有一定難度。二是兩個模型之間要做到“書同文,車同軌,度同制”,在分詞器、詞表等方面做到高度一致,才能夠保證驗(yàn)證結(jié)果。
SPACE推理引擎——小小改造、大大提速
既然幾個方案都無法做到“既要又要”,有沒有一種方案,能只保留它們的優(yōu)點(diǎn),規(guī)避他們的缺點(diǎn)呢?這就是云天勵飛大模型團(tuán)隊(duì)提出的SPACE推理引擎。SPACE通過結(jié)合“半自回歸監(jiān)督微調(diào)”和“自動修正解碼”兩種方案,使得大模型能夠在一次推理中生成多個結(jié)果,并且同步完成結(jié)果驗(yàn)證,保證生成結(jié)果的質(zhì)量。同時,這套推理引擎適用于任何的大模型 。通過模型的微調(diào)和優(yōu)化,任何大模型采用該推理引擎時,不僅無需再訓(xùn)練額外的輔助模型,還能提高推理效率,充分利用GPU等并行計(jì)算資源,達(dá)到較高的算力利用率。
自回歸方案(左)與SPACE方案(右)的區(qū)別
上文提到,多數(shù)大語言模型自帶“自回歸”的屬性,無法直接套用“半自回歸”的方案。對此,SPACE采用的是“半自回歸監(jiān)督微調(diào)”的方式,通過有監(jiān)督的訓(xùn)練,模型學(xué)會在遇到特殊的[MASK]標(biāo)識時提出一系列可能的候選字(如上圖所示)。這使得模型在推理時能夠進(jìn)行類似“猜測”的操作,輸出幾個最可能正確的候選字,從而具備半自回歸推理的能力。
簡單來說,有了“半自回歸監(jiān)督微調(diào)”方案的加持,在推理時大模型自己就能夠做出“猜測”,輸出大概率是正確的多個字作為候選答案。
但是,就跟考試一樣,草稿上可以列出大量的內(nèi)容,但是填到考卷上的,必須得是正確答案。如何保證正確?這就需要對結(jié)果進(jìn)行驗(yàn)證,而這就是“自動修正解碼”要做的工作。
具體來說,在推理時,我們把大模型在上一步推理時自己生成的候選詞也輸入到模型中,讓模型進(jìn)行自我校驗(yàn),自行判斷這些候選答案是否正確。
判斷的方式也很簡單,如果模型生成的詞與早先的候選答案相匹配,那就認(rèn)為候選詞是正確的。回顧下,在傳統(tǒng)的自回歸推理里面,如果一個詞是正確的,那么這個詞需要再重新輸入到語言模型中去推理產(chǎn)生下一個詞。
但是在SPACE這里卻不需要。由于我們已經(jīng)把候選詞提前輸入到模型中,并且這個候選詞被驗(yàn)證是正確的,所以這時候我們就可以直接從正確的候選詞里面獲取新的答案,從而節(jié)省了將答案重新輸入模型再進(jìn)行一次推理的時間。因此這種機(jī)制的優(yōu)勢在于,當(dāng)一個候選詞被驗(yàn)證為正確后,就無需再將其回輸模型生成下一個答案,從而減少了推理的時間。
作為類比,可以把傳統(tǒng)的自回歸推理比作4×100米接力賽跑:在常規(guī)比賽中,四名運(yùn)動員需按順序逐個接棒完成全部賽程,這就好比自回歸方案,需要逐字推理。而在SPACE的方案中,四名運(yùn)動員是同步起跑的,當(dāng)?shù)谝幻\(yùn)動員沖刺完100米到達(dá)終點(diǎn)的同時,其他運(yùn)動員也到達(dá)了屬于各自百米賽段的終點(diǎn)。但是第一名運(yùn)動員到達(dá)終點(diǎn)后需要進(jìn)行驗(yàn)證,若驗(yàn)證通過,第二名運(yùn)動員的成績即可確認(rèn),而后可以對第二名運(yùn)動員進(jìn)行驗(yàn)證,并依此類推。
若某名運(yùn)動員未能通過驗(yàn)證,那他就需要返回至屬于他的百米起跑線,重新起跑完成比賽。在最好的情況下,四個運(yùn)動員每人都能通過驗(yàn)證,那么這個小組相當(dāng)于只需要花常規(guī)比賽1/4的時間,就能完成比賽,從而達(dá)到加速效果;在最差的情況下,每個運(yùn)動員都未能通過驗(yàn)證,那么這時候需要花的時間就跟常規(guī)比賽一樣了。而能不能通過驗(yàn)證,主要取決于候選答案準(zhǔn)不準(zhǔn)確。
與此同時,在SPACE模型的推理過程中,我們也在輸入中插入特殊的[MASK]標(biāo)識,以此來引導(dǎo)大模型生成更新版的候選答案。在這種機(jī)制下,每一輪推理模型不僅驗(yàn)證了前一輪生成的候選詞的準(zhǔn)確性,也為接下來的推理提供了新的候選詞。
這種設(shè)計(jì)旨在增強(qiáng)候選詞的準(zhǔn)確度 ,因?yàn)槊慨?dāng)有新答案出現(xiàn)時,原有的候選詞通過更新將變得更加精確。這個過程有如天氣預(yù)報:我們每天都會對接下來一周的氣候情況做出預(yù)測,并且隨著時間的推移,對未來特定一天的天氣預(yù)測準(zhǔn)確度會逐漸提升。這是因?yàn)殡S著時間的推移,我們累積了更多的傳感數(shù)據(jù),這使得我們能夠提供更為精確的天氣預(yù)測。
傳統(tǒng)的驗(yàn)證和修正方法,是上文提到的“投機(jī)解碼”,即需要先訓(xùn)練出一個靠譜的小模型,再用大模型去驗(yàn)證,小模型的生成質(zhì)量很大程度上影響了最終結(jié)果。
但SPACE提出了一種新的方案,不需要使用小模型,就能夠達(dá)到生成和驗(yàn)證的目的,而且驗(yàn)證工作和生成工作可以同步進(jìn)行。如此一來,推理的效率和準(zhǔn)確率都能夠得到大幅提升。
讓我們再回到開頭例子,當(dāng)我們輸入“大模型是什么?”,在SPACE推理模式下,大模型首先會同時生成“大模型是具有數(shù)千萬參數(shù)的”這幾個詞,同時自動修正解碼算法會立馬對生成的多個詞逐一進(jìn)行驗(yàn)證,并且僅保留驗(yàn)證結(jié)果正確的詞輸出作為最終答案,從而實(shí)現(xiàn)在一次大模型前向推理的過程中生成多個詞的效果,達(dá)到加速目的。
最后,讓我們來看看SPACE的效果。
我們在一眾開源大語言模型上進(jìn)行了實(shí)驗(yàn),實(shí)驗(yàn)涵蓋了從60億到700億不同參數(shù)量的主流大語言模型。從下表中可以看到,SPACE在參數(shù)量更大的模型上,加速效果更明顯 。
此外,SPACE也能跟其他推理加速技術(shù),例如continue batching, flash attention, KV cache, quantization等,一起結(jié)合使用,從而帶來更快的推理速度。
為了驗(yàn)證這個觀點(diǎn),我們在一個主流推理框架TGI上實(shí)現(xiàn)了SPACE,實(shí)驗(yàn)證明在結(jié)合其他推理加速技術(shù)的情況下,SPACE帶來的加速效果也是同樣出眾。
大模型走入千行百業(yè),“推理”至關(guān)重要
訓(xùn)練和推理是大模型生命周期的兩個核心階段,訓(xùn)練是解決大模型“從無到有”的問題,而推理解決的是大模型如何應(yīng)用到千行百業(yè)的問題。
如果將去年定義為大模型爆發(fā)的元年,那么今年就是大模型應(yīng)用落地的元年,因此大模型的推理能力愈發(fā)受到重視。
云天勵飛為加速大模型的應(yīng)用做出了許多努力。在算力方面,去年公司推出大模型邊緣推理芯片DeepEdge10,近期推出IPU-X6000加速卡,可應(yīng)用于語言、視覺、多模態(tài)等各類大模型的推理加速。
在算法方面,云天勵飛提出SPACE推理引擎,大幅提升大模型推理速度。在應(yīng)用方面,云天勵飛自研大模型云天天書已經(jīng)在智慧政務(wù)、城市治理、智慧安防、智慧交通、智慧商業(yè)、智慧教育等多行業(yè)落地應(yīng)用,探索打造行業(yè)標(biāo)桿。
未來,云天勵飛將繼續(xù)努力,在大模型相關(guān)技術(shù)的研發(fā)和應(yīng)用推廣方面做出更大貢獻(xiàn)。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!