蘋果芯跑大模型不用降計算精度,投機采樣殺瘋了,GPT-4也在用
專攻代碼的Code Llama一出,大家伙都盼著誰來后續(xù)量化瘦身一下,好在本地也能運行。
果然是llama.cpp作者Georgi Gerganov出手了,但他這回不按套路出牌:
不量化,就用FP16精度也讓34B的Code LLama跑在蘋果電腦上,推理速度超過每秒20個token。
圖片
原本需要4個高端GPU才能搞定的活現(xiàn)在用只有800GB/s帶寬的M2 Ultra就夠了,代碼寫起來嗖嗖快。
老哥隨后公布了秘訣,答案很簡單,就是投機采樣(speculative sampling/decoding)。
圖片
此舉引來眾多大佬圍觀。
OpenAI創(chuàng)始成員Andrej Karpathy評價這是一種非常出色的推理時優(yōu)化,并給出了更多技術(shù)解讀。
英偉達科學家范麟熙也認為,這是每個大模型從業(yè)者都應(yīng)該熟悉的技巧。
圖片
GPT-4也在用的方法
其實不光想在本地跑大模型的人在用投機采樣,谷歌OpenAI這樣的超級巨頭也在用。
根據(jù)之前泄露的資料,GPT-4就用了這個方法來降低推理成本,不然根本承受不起這么燒錢。
圖片
而最新爆料表示谷歌DeepMind聯(lián)手開發(fā)的下一代大模型Gemini很可能也會用。
雖然OpenAI的具體方法都保密,但谷歌團隊已經(jīng)把論文發(fā)出來了,并且入選ICML 2023 Oral。
圖片
方法很簡單,先訓練一個與大模型近似、更便宜的小模型,讓小模型先生成K個token,然后讓大模型去做評判。
大模型接受的部分就可以直接用,大模型不接受的部分再由大模型修改。
在原始論文中使用T5-XXL模型演示,在生成結(jié)果不變的情況下獲得了2-3倍的推理加速。
圖片
Andjrey Karpathy把這個方法比喻成“先讓小模型打草稿”。
他解釋這個方法有效的關(guān)鍵之處在于,給大模型一次輸入一個token和一次輸入一批token,預測下一個token所需時間是差不多的。
但每一個token都依賴前一個token,所以正常情況無法一次對多個token進行采樣。
小模型雖然能力較差,但實際生成一個句子時有很多部分是非常簡單的,小模型也能勝任,只有遇到困難的部分再讓大模型上就好了。
原論文認為,這樣做無需改變大模型的結(jié)構(gòu),也無需重新訓練,就可以直接加速已有的現(xiàn)成模型。
對于不會降低精度這一點,在論文附錄部分也給出了數(shù)學論證。
圖片
了解了原理,再來看Georgi Gerganov這次的具體設(shè)置。
他使用4bit量化的7B模型作為“草稿”模型,每秒約能生成80個token。
而FP16精度的34B模型單獨使用每秒只能生成10個token。
使用投機采樣方法后獲得了2倍的加速,與原論文數(shù)據(jù)相符。
圖片
他額外表示,速度可能會根據(jù)生成的內(nèi)容而有所不同,但在代碼生成上非常有效,草稿模型能猜對大多數(shù)token。
圖片
最后,他還建議Meta以后在發(fā)布模型時直接把小的草稿模型附帶上吧,受到大伙好評。
圖片
作者已創(chuàng)業(yè)
作者Georgi Gerganov,今年三月LlaMA剛出一代的時候就移植到了C++上,開源項目llama.cpp獲星已接近4萬。
圖片
最開始他搞這個只是當成一個業(yè)余興趣,但因為反響熱烈,6月份他直接宣布創(chuàng)業(yè)。
新公司ggml.ai,主打llama.cpp背后的C語言機器學習框架,致力于在邊緣設(shè)備上運行AI。
圖片
創(chuàng)業(yè)時獲得來自GitHub前CEONat Friedman、Y Combinator合伙人Daniel Gross的種子前投資。
LlaMA2發(fā)布后他也很活躍,最狠的一次直接把大模型塞進了瀏覽器里。
圖片
谷歌投機采樣論文:https://arxiv.org/abs/2211.17192
參考鏈接:[1]https://x.com/ggerganov/status/1697262700165013689[2]https://x.com/karpathy/status/1697318534555336961