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