70B 模型,秒出 1000token,換算成字符接近 4000!
研究人員將 Llama3 進(jìn)行了微調(diào)并引入加速算法,和原生版本相比,速度足足快出了快了 13 倍!
不僅是快,在代碼重寫任務(wù)上的表現(xiàn)甚至超越了 GPT-4o。
這項成果,來自爆火的 AI 編程神器 Cursor 背后團(tuán)隊 anysphere,OpenAI 也參與過投資。
要知道在以快著稱的推理加速框架 Groq 上,70B Llama3 的推理速度也不過每秒 300 多 token。
Cursor 這樣的速度,可以說是實(shí)現(xiàn)了近乎即時的完整代碼文件編輯。
有人直呼好家伙,如果把 Cursor 魔改后的 Llama3 放到 Groq 上,是不是每秒能跑出上萬 token 了。
更是有人激動地說,在大模型領(lǐng)域,我們正在消除“延時”這一概念。
作者此次設(shè)計的加速方法,主要是用來解決一種名為“Fast Apply”的任務(wù),即對代碼內(nèi)容進(jìn)行快速修改并應(yīng)用。
首先需要說明的是,雖然說任務(wù)最終實(shí)現(xiàn)的效果是代碼的局部修改,但是實(shí)際操作過程中,輸出并非是只有變化的內(nèi)容,而是直接全局重寫。
這樣做的原因,是團(tuán)隊在預(yù)先測試后做出的選擇 —— 他們發(fā)現(xiàn),除了 Claude-3-Opus,大多數(shù)模型在真?局部修改任務(wù)上的表現(xiàn)都不理想。
之所以會這樣,主要有以下三個原因:
首先是直接重寫時會輸出更多 token,使得有更多的前向傳遞來確定正確的解決方案。
其次,模型的訓(xùn)練數(shù)據(jù)也大部分都是完整代碼,對局部修改相對陌生。
此外,大模型糟糕的數(shù)學(xué)運(yùn)算也無法保證能在輸出差異時正確處理行號。
(不過作者認(rèn)為這仍然是一個有潛力的未來研究方向。)
確定了采用全局重寫的方案后,Cursor 團(tuán)隊使用了任務(wù)相關(guān)的數(shù)據(jù)對 Llama3 進(jìn)行了微調(diào)。
所采用的數(shù)據(jù)有真實(shí)編輯數(shù)據(jù)與合成數(shù)據(jù)兩大來源,按照 1:4 的比例進(jìn)行了混合。
其中合成數(shù)據(jù)是指用 GPT-4 生成代碼編輯的建議,然后用其他模型將這些建議“應(yīng)用”到原始代碼上。
為了提高數(shù)據(jù)集的質(zhì)量,作者還對小文件、重復(fù)文件和無變化樣本進(jìn)行了下采樣。
為了評估這些模型的表現(xiàn),作者讓它們處理了 450 個代碼編輯任務(wù)(每個都不超過 400 行),并用 Claude3-Opus 對輸出進(jìn)行了打分。
最終,作者微調(diào)出的 70B Llama3 模型,表現(xiàn)幾乎與 Claude3-Opus-diff 匹配,并且優(yōu)于 GPT-4-Turbo 和 GPT-4o。
至此的微調(diào)解決了性能問題,但不難看出此時的 Llama3 速度依然很慢,每秒只能輸出不到 300 個字符(注意是字符,不是詞也不是 token)。
而讓改寫工作快到飛起的,還有另一項秘密武器。
針對代碼改寫任務(wù),Cursor 團(tuán)隊專門引入了一種名為預(yù)測性編輯(speculative edits)的算法。
這種方式用一種先驗(yàn)算法來對多個后續(xù) token 進(jìn)行預(yù)測,然后再用本體大模型進(jìn)行驗(yàn)證,降低了大模型的調(diào)用次數(shù),從而減輕了運(yùn)算量。
這種先驗(yàn)算法來自于代碼任務(wù)的一個特點(diǎn) —— 相比于其他文本,其詞表更小,且語法結(jié)構(gòu)、縮進(jìn)規(guī)則等擁有更高的確定性,利用先驗(yàn)知識可以更精準(zhǔn)預(yù)測未來的 token。
這樣的做法也與 GPT-4 和 Meta 有著共通之處 ——
傳統(tǒng)的語言模型推理推理速度較慢的原因,主要是預(yù)測下一個 token 的過程通常是自回歸的,即模型在生成每個 token 時,都要考慮之前生成的所有 token。
為了降低運(yùn)算量,以 GPT-4 為代表的大模型,使用了名為預(yù)測解碼(speculative decoding)的加速算法,通過小的近似模型提前進(jìn)行預(yù)測,然后再讓本體大模型對預(yù)測結(jié)果進(jìn)行驗(yàn)證。
Cursor 和 GPT-4 的區(qū)別就在于,前者的小“模型”是一種更確定的算法,而后者只是模型規(guī)模減小,本質(zhì)上仍是概率預(yù)測。
Meta 這邊則是推出了一次性預(yù)測多個后續(xù) token 的算法,用 n 個獨(dú)立的輸出頭并行預(yù)測 n 個未來 token,結(jié)果發(fā)現(xiàn)在編程任務(wù)上表現(xiàn)尤其優(yōu)異,原因是由于編程語言的邏輯結(jié)構(gòu)更嚴(yán)謹(jǐn),知識的內(nèi)在聯(lián)系更緊密。
當(dāng)然,Cursor 對這種特點(diǎn)利用更為充分,沒有用注意力頭,而是直接拿更確定的算法來做多 token 預(yù)測。
最終的結(jié)果就是,預(yù)測算法為 70B 的 Llama3 帶來了近 13 倍的速度提升,而測評表現(xiàn)沒有任何損失。
此外,作者還與企業(yè) AI 模型基礎(chǔ)設(shè)施平臺 fireworks.ai 合作,利用其優(yōu)化的推理引擎和定制化的硬件環(huán)境,進(jìn)一步提高了模型的運(yùn)行效率。
未來,團(tuán)隊還計劃進(jìn)行知識蒸餾,并把預(yù)測編輯算法遷移到更小的 8B Llama3,并擴(kuò)展到更多的編程語言和任務(wù)。
同時,對于 Cursor 團(tuán)隊研究過但并未采用的真?局部修改(Diff)算法,作者也計劃進(jìn)行改進(jìn)。
One More Thing在實(shí)驗(yàn)當(dāng)中,作者不僅用預(yù)測算法加速了 Llama3,也實(shí)現(xiàn)了對 GPT4-Turbo 的加速。
不過作者并沒有介紹具體在 GPT 當(dāng)中如何實(shí)現(xiàn),而是留做了思考題,還搞了一場“有獎競猜”。
能夠正確解答的人將獲得 1 個月的 Cursor 會員;如果能在 vllm 和 TensorRT-LLM 中實(shí)現(xiàn)預(yù)測加速,將分別獲得半年和一年的會員。
如果你感覺有思路的話,不妨挑戰(zhàn)試試(手動狗頭)。
參考鏈接:
https://cursor.sh/blog/instant-apply#user-content-fnref-feel-difference
本文來自微信公眾號:量子位 (ID:QbitAI),作者:克雷西
本文鏈接:http://www.www897cc.com/showinfo-45-4331-0.html70B 模型秒出 1000token,代碼重寫超越 GPT-4o,來自 OpenAI 投資的代碼神器 Cursor 團(tuán)隊
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com