機(jī)器之心原創(chuàng)
作者:張倩
雖然我們不知道誰(shuí)是下一個(gè) OpenAI,但是似乎找到了另一個(gè) Anthropic。
最近,大模型創(chuàng)投領(lǐng)域又發(fā)生了一件大事:大模型初創(chuàng)公司 Anthropic 獲得了亞馬遜 40 億美元的融資。該筆融資幾天后,又有消息傳出,谷歌等也要向這家公司再投 20 億美元。聽(tīng)到這些消息,不少人可能會(huì)問(wèn),這家公司有何過(guò)人之處?別急,我們來(lái)問(wèn)一下新必應(yīng)。
新必應(yīng)的答案顯示,在大模型方向上,除了一支優(yōu)秀的團(tuán)隊(duì),Anthropic 在技術(shù)上也非常領(lǐng)先,尤其在大模型支持的上下文窗口方面。
上下文窗口有多重要?回想一下使用 ChatGPT 處理長(zhǎng)文的經(jīng)歷,你是不是也經(jīng)常收到「文本過(guò)長(zhǎng)」的提示?這是因?yàn)?ChatGPT 至多只支持 32k tokens(約 2.5 萬(wàn)漢字)的上下文。這一限制讓很多行業(yè)的從業(yè)人員都很頭疼,尤其是律師、分析師、咨詢(xún)師、prompt 工程師等需要分析、處理較長(zhǎng)文本的工作。
此外, token 數(shù)量的限制還會(huì)導(dǎo)致模型「忘記」之前對(duì)話的重要信息,或者加重模型「幻覺(jué)」,就像 Character.AI 等聊天 AI 產(chǎn)品的用戶(hù)所抱怨的那樣。
為了解決這些問(wèn)題,Anthropic 在其產(chǎn)品 Claude 2.0 中提供了 100k tokens(實(shí)測(cè)約 8 萬(wàn)漢字)的上下文窗口,大大擴(kuò)展了其產(chǎn)品的應(yīng)用空間。
那么,如果這個(gè)窗口再大一點(diǎn)呢?
這是國(guó)內(nèi)大模型初創(chuàng)公司 Moonshot AI 推出的大模型智能助手 Kimi Chat,擁有超長(zhǎng)的上下文窗口。在動(dòng)圖展示的例子中,Kimi Chat 接收到的上下文達(dá)到了 15 萬(wàn)字,而實(shí)測(cè)中我們發(fā)現(xiàn),它甚至能一次處理 20 萬(wàn)字,大約是 Claude 2.0 中文上下文窗口的 2.5 倍,是全球市場(chǎng)上能夠產(chǎn)品化使用的大模型服務(wù)中所能支持的最長(zhǎng)上下文輸入長(zhǎng)度。GPT-4 等英文為基礎(chǔ)的模型產(chǎn)品需要做到接近 250k tokens 才能獲得與 Kimi Chat 同等的漢字上下文窗口。
那么,這么大的上下文窗口用起來(lái)是一種怎樣的體驗(yàn)?Moonshot AI 是怎么做到這一點(diǎn)的?在該功能開(kāi)放內(nèi)測(cè)之際,機(jī)器之心在第一時(shí)間拿到了內(nèi)測(cè)資格并進(jìn)行了測(cè)評(píng),同時(shí)也和 Moonshot AI 的技術(shù)團(tuán)隊(duì)聊了一些技術(shù)細(xì)節(jié)以及他們對(duì)該技術(shù)的思考,希望能給國(guó)內(nèi)關(guān)注大模型技術(shù)與應(yīng)用的讀者一些啟發(fā)。
原來(lái),不用擔(dān)心文本過(guò)長(zhǎng)是這種感覺(jué)
打開(kāi)「KIMI」的測(cè)試頁(yè)面,我們可以看到,它有一個(gè)簡(jiǎn)單的對(duì)話框,對(duì)話框的右側(cè)有幾個(gè)按鈕,分別是網(wǎng)絡(luò)開(kāi)關(guān)和文件上傳按鈕。這意味著,KIMI 不僅能分析我們提供的資料,還能在必要時(shí)自己上網(wǎng)查找,看起來(lái)非??孔V。
既然 KIMI 的強(qiáng)項(xiàng)是處理長(zhǎng)文本,那我們就選一些長(zhǎng)文本的場(chǎng)景來(lái)測(cè)試一下。第一份材料是《中華人民共和國(guó)刑事訴訟法》和《最高法關(guān)于適用〈中華人民共和國(guó)刑事訴訟法〉的解釋》組合起來(lái)的一份 word 材料,篇幅超過(guò) 12 萬(wàn)字,一般的大語(yǔ)言模型都無(wú)法處理。在詢(xún)問(wèn)了幾個(gè)比較具體的問(wèn)題后,我們發(fā)現(xiàn),KIMI 能夠根據(jù)材料回答大部分問(wèn)題,并給出答案依據(jù):
如果問(wèn)題超出了材料所給的范圍,它會(huì)自己上網(wǎng)檢索相關(guān)內(nèi)容,并歸納出答案,這是一種跨文檔的文本處理能力。
值得注意的是,KIMI 在回答一些比較綜合的問(wèn)題時(shí)會(huì)結(jié)合多個(gè)法條,并在消化了這些條款內(nèi)容的前提下,用自己的語(yǔ)言重新組織邏輯清晰的答案。
這種貫穿全文的強(qiáng)大理解能力在小說(shuō)的測(cè)試中表現(xiàn)得更為明顯。這里我們選取的是科幻小說(shuō)《三體 1》,雖然小說(shuō)有 20 萬(wàn)字,但 KIMI 能把它全部讀下來(lái),并梳理人物故事線等信息:
當(dāng)我們問(wèn)及小說(shuō)后半部分的內(nèi)容以及需要結(jié)合上下文理解的某些概念的引申含義時(shí),KIMI 回答起來(lái)也毫無(wú)壓力:
既然 KIMI 展現(xiàn)出了如此強(qiáng)大的上下文記憶能力,那多輪對(duì)話想必也能輕松應(yīng)對(duì)。于是,在另一項(xiàng)測(cè)試中,我們選取了《原神》人物胡桃的百科信息,讓 KIMI 在掌握胡桃全部信息的基礎(chǔ)上模仿后者與我們對(duì)話,就像科幻作品里的「數(shù)字生命」一樣。當(dāng)前大多數(shù)角色扮演類(lèi) AI 是消化不了這么多角色背景信息的,因此聊天過(guò)程中很容易讓人喪失沉浸感。
基于大模型設(shè)計(jì)的文字游戲玩家抱怨角色設(shè)定信息少,輸出缺乏邏輯性。
同樣的,我們也用《三體》試了一下,讓 KIMI 模仿大史說(shuō)話,效果也非常不錯(cuò):
重要的是,這種基于長(zhǎng)文本的多輪對(duì)話能力在科研、教育等場(chǎng)景中也非常實(shí)用,比如它可以解讀最近很火的微軟 GPT-4V 使用體驗(yàn)論文:
幾輪體驗(yàn)下來(lái),可以明顯感覺(jué)到,當(dāng)上下文窗口擴(kuò)展到 20 萬(wàn)字,我們能用大模型做的事情突然就多了很多。由于大部分文本材料都不會(huì)超過(guò)這個(gè)數(shù)字,我們終于不用再去一個(gè)一個(gè)檢查字?jǐn)?shù),也不用擔(dān)心和模型聊多了話題戛然而止。這是一種非常流暢的體驗(yàn),也讓人有信心去探索更多使用場(chǎng)景。
超長(zhǎng)上下文窗口,實(shí)現(xiàn)起來(lái)有多難?
既然擴(kuò)大上下文窗口如此有效,那為什么市面上現(xiàn)有的各路大模型大多還局限在 32k 或以下的 token 長(zhǎng)度呢?這是因?yàn)?,?shí)現(xiàn)模型對(duì)超長(zhǎng)上下文的處理在訓(xùn)練算法和工程實(shí)現(xiàn)上都面臨著艱巨的挑戰(zhàn)。
首先,從訓(xùn)練層面來(lái)看,想得到一個(gè)支持足夠長(zhǎng)上下文長(zhǎng)度的模型,不可避免地要面對(duì)如下困難:
如何讓模型能在數(shù)十萬(wàn) tokens 的上下文窗口中,準(zhǔn)確地關(guān)注到所需要的內(nèi)容?
如何讓模型在適應(yīng)長(zhǎng)文本工作方式時(shí),不降低其原有的基礎(chǔ)能力?
由超長(zhǎng)上下文窗口帶來(lái)的更高的算力需求和極嚴(yán)重的顯存壓力,如何在傳統(tǒng)的 3D 并行方案之外尋找到更多的并行空間?
缺乏充足的高質(zhì)量長(zhǎng)序列數(shù)據(jù),如何提供更多的有效數(shù)據(jù)給模型訓(xùn)練?
從推理層面來(lái)看,在獲得了支持超長(zhǎng)上下文的模型后,如何讓模型能服務(wù)眾多用戶(hù),同樣要面臨一番挑戰(zhàn):
一是 Transformer 模型中自注意力機(jī)制的計(jì)算量會(huì)隨著上下文長(zhǎng)度的增加呈平方級(jí)增長(zhǎng),比如上下文增加 32 倍時(shí),計(jì)算量實(shí)際會(huì)增長(zhǎng) 1000 倍,這會(huì)導(dǎo)致用戶(hù)需要等待極長(zhǎng)的時(shí)間才能獲得反饋;
二是長(zhǎng)下上文推理需要的顯存容量巨大:以 1750 億參數(shù)的 GPT-3 為例(GPT-4、Claude 等模型參數(shù)量未知,故無(wú)法估算),目前最高單機(jī)配置 (80 GiB * 8) 最多只能支持 64k 上下文長(zhǎng)度的推理,超長(zhǎng)文本對(duì)顯存的要求可見(jiàn)一斑;
三是目前的顯存帶寬無(wú)法滿(mǎn)足需求:英偉達(dá) A800 或 H800 的顯存帶寬高達(dá) 2-3 TiB/s,但面對(duì)如此長(zhǎng)的上下文,若只通過(guò)一些樸素的基本處理方法,生成速度只能達(dá)到 2~5 token/s,使用的體驗(yàn)極其卡頓。
當(dāng)然,上述問(wèn)題的解決存在一些「捷徑」,但這些捷徑往往都是以犧牲模型性能為代價(jià)的,導(dǎo)致模型的應(yīng)用價(jià)值大打折扣, 典型的做法包括:
首先,最容易想到的就是把模型做小,通過(guò)把參數(shù)減少到百億來(lái)提升上下文長(zhǎng)度。但模型小了之后,能力也會(huì)顯著下降,大量任務(wù)都無(wú)法勝任,就像未發(fā)育完全的蝌蚪。
其次,你可以讓模型「問(wèn)哪兒看哪兒」,就像只能在特定花蕊上采蜜的蜜蜂,無(wú)法關(guān)注到整體信息。這通常是通過(guò)對(duì)上下文的降采樣或者 RAG(檢索增強(qiáng)生成)方法來(lái)實(shí)現(xiàn)的,讓模型只關(guān)注和問(wèn)題直接相關(guān)的部分,減少計(jì)算量。但如此一來(lái),模型就無(wú)法回答那些需要基于全文理解來(lái)回答的問(wèn)題(例如從 50 個(gè)簡(jiǎn)歷中對(duì)候選人的畫(huà)像進(jìn)行歸納和總結(jié)),能力大打折扣。
最后,你還可以讓模型「邊看邊忘」,只讓它記住最新的輸入,就像只有 7 秒鐘記憶的金魚(yú)一樣。但很明顯,這種方法也做不到理解全文,尤其是跨文檔的長(zhǎng)文本的綜合理解(比如從一篇 10 萬(wàn)字的用戶(hù)訪談錄音轉(zhuǎn)寫(xiě)中提取最有價(jià)值的 10 個(gè)觀點(diǎn))。
總之,這些所謂的捷徑都無(wú)法達(dá)到理想的產(chǎn)品化效果。為了讓模型真正解決問(wèn)題,從好技術(shù)變成好產(chǎn)品,Moonshot AI 選擇直面挑戰(zhàn),從多個(gè)角度去解決長(zhǎng)上下文窗口的技術(shù)難題。
在模型訓(xùn)練方面,業(yè)界已經(jīng)有不少通過(guò)相對(duì)位置編碼外推來(lái)低成本地實(shí)現(xiàn)超長(zhǎng)上下文的模型,在各項(xiàng) benchmark 中分?jǐn)?shù)也非常高,但 Moonshot AI 發(fā)現(xiàn),這類(lèi)模型在實(shí)際的工作場(chǎng)景中并不能達(dá)到預(yù)期的效果。因此 Moonshot AI 選擇直面困難,逐一解決上述問(wèn)題。
總體來(lái)看,他們從如下幾個(gè)大方向入手來(lái)改善訓(xùn)練中遇到的問(wèn)題:
在傳統(tǒng)的 Tensor 并行、Data 并行、Pipeline 并行基礎(chǔ)上,增加了多項(xiàng)基于 Seqence 維度的并行策略,提升了并行效率;
利用定制版的 Flash Attention、Fuse Cross Entropy、CPU offload 等技術(shù)大幅度降低了顯存壓力;
使用了創(chuàng)新的訓(xùn)練方法,針對(duì)性地調(diào)配了多階段式訓(xùn)練方法,讓模型保留基礎(chǔ)能力的前提下,逐步激活長(zhǎng)上下文的能力。
當(dāng)然,模型訓(xùn)練是一項(xiàng)外科手術(shù)般精密的工作,每一個(gè)細(xì)節(jié)都不能出差錯(cuò)。因此,除了上述幾個(gè)大方向外,Moonshot AI 還在算法穩(wěn)定性、顯存占用、數(shù)據(jù)分布等方面進(jìn)行了上百項(xiàng)優(yōu)化。在強(qiáng)大的工程和算法能力加持下,他們最終讓直接訓(xùn)練超長(zhǎng)上下文模型成為可能。
模型有了,接下來(lái)還要優(yōu)化推理成本,以保證大量用戶(hù)都能高效、低成本地使用模型。為此,Moonshot AI 探索了諸多方案,比如:
用 GQA 替換 MHA:讓 KVCache 所占用的顯存大小大幅度縮小
Paged attention:保證顯存的充分利用;
低比特量化:通過(guò) W8A8,至多可以把推理速度在上述基礎(chǔ)上再提升一倍;
MoE & KVCache 裁減:讓顯存占用在上述基礎(chǔ)上再下降一倍;
此外,Moonshot AI 通過(guò)極高的工程代碼質(zhì)量,將所有的 overhead 降到最低,使得代碼性能不斷逼近理論上限,從而構(gòu)筑了高效推理的基礎(chǔ)。
通過(guò)組合這些關(guān)鍵技術(shù),Moonshot AI 在超長(zhǎng)文本下依然可以讓大量用戶(hù)同時(shí)獲得良好的使用體驗(yàn),并且擁有了在文本長(zhǎng)度和推理速度間靈活權(quán)衡的空間,其極限可處理的上下文長(zhǎng)度上限更是可以達(dá)到 150 萬(wàn)字以上,相當(dāng)于可以一次讓模型處理《三國(guó)演義》加《西游記》兩本名著。
大模型能力的二元性:為什么要死磕「長(zhǎng)上下文窗口」?
今年年初,在 GPT-4 問(wèn)世之前,一個(gè)號(hào)稱(chēng)「GPT-4 有 100 萬(wàn)億個(gè)參數(shù)」的謠言引發(fā)了不少關(guān)注。在無(wú)數(shù)次被轉(zhuǎn)發(fā)后,很多人信以為真,導(dǎo)致 OpenAI 首席執(zhí)行官 Sam Altman 不得不親自出來(lái)辟謠。這也在一定程度上反映了大模型領(lǐng)域?qū)τ趨?shù)量的一種「崇拜」。
誠(chéng)然,參數(shù)量對(duì)于大模型的能力高低十分重要,是大模型出現(xiàn)「涌現(xiàn)」現(xiàn)象的一道門(mén)檻。但除此之外呢?還有哪些方向沒(méi)有得到足夠的重視?在 Moonshot AI 看來(lái),長(zhǎng)上下文窗口就是其中之一。
我們知道,在傳統(tǒng)計(jì)算中有兩個(gè)核心原則:計(jì)算是按照順序逐步進(jìn)行的;每一步都有有限的復(fù)雜度容量。大型語(yǔ)言模型可以被看作是進(jìn)化了的計(jì)算實(shí)體,所以 Moonshot AI 認(rèn)為大模型能夠達(dá)到的最高水平由兩個(gè)因素決定:?jiǎn)尾襟E的容量(即模型在每一步中可以處理的信息量,對(duì)應(yīng)參數(shù)量)和執(zhí)行的步驟數(shù)(即模型能夠處理的上下文長(zhǎng)度)。
目前,大部分大模型研究都集中在增加模型參數(shù)量的大小,即增強(qiáng)「單步驟容量」。但 Moonshot AI 認(rèn)為,在保持一定參數(shù)量的同時(shí)放大另一個(gè)維度,即「步驟數(shù)」或上下文長(zhǎng)度也同樣重要。就像我們?cè)趯?shí)測(cè)中所看到的,上下文窗口就像大模型應(yīng)用的新「內(nèi)存」,窗口越大,用戶(hù)能用它做的事情就越廣泛;同時(shí),窗口所能容納的信息越多,模型在生成下一個(gè) token 時(shí)可以參考的信息就越多,「幻覺(jué)」發(fā)生的可能性就越小,生成的信息就越準(zhǔn)確。這是大模型技術(shù)落地的必要條件。
不過(guò),更為重要的是,Moonshot AI 已經(jīng)看到,超長(zhǎng)上下文窗口其實(shí)是大模型技術(shù)未來(lái)發(fā)展的必由之路。
如今,以 OpenAI 為代表,幾乎所有的頭部大模型企業(yè)都會(huì)走多模態(tài)技術(shù)道路,因?yàn)槿祟?lèi)文明的總和不止以文字的形式存在硬盤(pán)上,還隱藏于海量的語(yǔ)音、圖像、視頻等數(shù)據(jù)形態(tài)中。Moonshot AI 創(chuàng)始人楊植麟曾提到,他們相信對(duì)海量數(shù)據(jù)的無(wú)損壓縮可以實(shí)現(xiàn)高程度的智能。而無(wú)損壓縮等同于對(duì)數(shù)據(jù)聯(lián)合概率分布的預(yù)測(cè),這就找到了與多模態(tài)數(shù)據(jù)生成的契合點(diǎn),多模態(tài)數(shù)據(jù)的生成本質(zhì)上也是在做數(shù)據(jù)的聯(lián)合概率分布預(yù)測(cè),所以超長(zhǎng)上下文窗口技術(shù)對(duì)實(shí)現(xiàn)多模態(tài)至關(guān)重要,是一個(gè)必須解決的技術(shù)問(wèn)題。
大模型「登月計(jì)劃」第一步:歡迎來(lái)到 Long LLM 時(shí)代
能選出一個(gè)有前景的方向是一回事,能不能做成又是另外一回事,畢竟超長(zhǎng)上下文窗口打造起來(lái)并非易事,需要非常強(qiáng)的算法和工程能力。對(duì)此,楊植麟采取了和 Anthropic 類(lèi)似的策略:提高人才密度。
目前,Moonshot AI 的整個(gè)團(tuán)隊(duì)人數(shù)超過(guò)了 60 人,這些人絕大部分都是擁有世界級(jí)影響力工作的大模型專(zhuān)家,比如楊植麟本人提出的 Transformer-XL 是歷史上第一個(gè)在詞級(jí)別和字級(jí)別都全面超越 RNN 的注意力語(yǔ)言模型,解決了語(yǔ)言建模上下文長(zhǎng)度的關(guān)鍵問(wèn)題,定義了語(yǔ)言建模的新標(biāo)準(zhǔn);兩位聯(lián)合創(chuàng)始人 —— 周昕宇和吳育昕 —— 有著五位數(shù)的 Google Scholar 引用,在大模型方面有非常豐富的工程和算法經(jīng)驗(yàn)。還有一些核心成員參與了 Google Gemini、Bard、盤(pán)古、悟道等多個(gè)大模型的開(kāi)發(fā)。在這些人的共同努力下,Moonshot AI 僅用半年時(shí)間就打造出了一款世界領(lǐng)先的產(chǎn)品。
這款產(chǎn)品的誕生是有標(biāo)志性意義的,20 萬(wàn)字以及更長(zhǎng)的上下文窗口足以把使用大模型工作的你我從 LLM 時(shí)代帶入 L(Long)LLM 時(shí)代。在這個(gè)時(shí)代,我們可以擁有一個(gè)能記住與你所有交互細(xì)節(jié)的虛擬伴侶;可以將日常工作中的冗長(zhǎng)文件(如合同、研報(bào)、財(cái)務(wù)報(bào)告等)都丟給大模型來(lái)處理;還可以針對(duì)某個(gè)科學(xué)問(wèn)題, 將跨領(lǐng)域的相關(guān)學(xué)術(shù)論文作為上下文,利用大模型尋求解決問(wèn)題的新思路…… 可以說(shuō),上下文窗口越大,大模型留給用戶(hù)的創(chuàng)新空間就越大。
至少日常處理發(fā)票這種工作就不會(huì)浪費(fèi)時(shí)間了
此外,Moonshot AI 表示,本次推出的超長(zhǎng)上下文產(chǎn)品對(duì)于他們來(lái)說(shuō)僅僅是一個(gè)起點(diǎn)。隨著對(duì)應(yīng)用場(chǎng)景挖掘的逐漸深入以及相應(yīng)技術(shù)的優(yōu)化,他們很快就會(huì)開(kāi)放支持更長(zhǎng)上下文以及擁有其他能力的模型。
如果你也想體驗(yàn) Kimi Chat 的長(zhǎng)文本能力,可以點(diǎn)擊以下鏈接,申請(qǐng)加入內(nèi)測(cè)計(jì)劃:https://www.moonshot.cn/
聯(lián)系客服