日日碰狠狠躁久久躁96avv-97久久超碰国产精品最新-婷婷丁香五月天在线播放,狠狠色噜噜色狠狠狠综合久久 ,爱做久久久久久,高h喷水荡肉爽文np肉色学校

睿治

智能數(shù)據(jù)治理平臺(tái)

睿治作為國(guó)內(nèi)功能最全的數(shù)據(jù)治理產(chǎn)品之一,入選IDC企業(yè)數(shù)據(jù)治理實(shí)施部署指南。同時(shí),在IDC發(fā)布的《中國(guó)數(shù)據(jù)治理市場(chǎng)份額》報(bào)告中,連續(xù)四年蟬聯(lián)數(shù)據(jù)治理解決方案市場(chǎng)份額第一。

非專(zhuān)業(yè)也能看懂的AI大模型工作原理!

時(shí)間:2026-01-14來(lái)源:一個(gè)數(shù)據(jù)人的自留地瀏覽數(shù):36

目錄

1?輸入:從用戶(hù)提問(wèn)到模型"看得懂"的矩陣

2?Transformer架構(gòu)與自注意力機(jī)制:模型如何“理解”上下文

3?輸出:從logits到人類(lèi)語(yǔ)言的“翻譯”

4?位置編碼和長(zhǎng)文本外推

5?實(shí)踐與思考

6 寫(xiě)在最后

本文介紹了AI大語(yǔ)言模型的完整工作流程,從文本輸入的預(yù)處理到最終輸出的生成過(guò)程。文章系統(tǒng)性地介紹了分詞與嵌入、Transformer架構(gòu)、自注意力機(jī)制、位置編碼、長(zhǎng)文本外推等核心技術(shù)概念,并結(jié)合DeepSeek V3等實(shí)際案例進(jìn)行詳細(xì)說(shuō)明。同時(shí),本文還提供了豐富的工程實(shí)踐指導(dǎo),包括上下文優(yōu)化、耗時(shí)控制、多Agent協(xié)同等實(shí)用策略關(guān)注騰訊云開(kāi)發(fā)者,一手技術(shù)干貨提前解鎖

在 ai 時(shí)代,也許我們應(yīng)該先了解大模型是如何解答我們的問(wèn)題的,了解大模型能做什么或者擅長(zhǎng)做什么,如此才能更好的利用它。本文盡量以非技術(shù)的方式來(lái)解釋 ai 大語(yǔ)言模型的工作原理,以及在工程實(shí)踐中如何更好的使用。


01輸入:從用戶(hù)提問(wèn)到模型"看得懂"的矩陣

1.1?輸入實(shí)際是文本

首先我們要知道的是,輸入給到大語(yǔ)言模型的是一個(gè)組合文本(稱(chēng)之為上下文),包括:

系統(tǒng)提示詞(對(duì)應(yīng)"你是個(gè)智能助手,回答時(shí)要可愛(ài)些"這種)

可用工具列表描述(對(duì)應(yīng)Function Call能力)

歷史對(duì)話(huà)(包括之前的問(wèn)題和回答)

用戶(hù)最新提問(wèn)

如下為目前共識(shí)的OpenAI API協(xié)議輸入示例,這些都將合并作為大模型調(diào)用的一次輸入(省略了部分工具描述信息,僅做理解):

messages = [? ? {"role":?"system",?"content":?"你是個(gè)智能助手,回答時(shí)要可愛(ài)些"}, ? ?// 系統(tǒng)提示詞? ? {"role":?"user",?"content":?"你好"}, ? ? ? ? ? ? ? ? ? ? ? ? ??// 歷史提問(wèn)? ? {"role":?"assistant",?"content":?"你好,有什么能幫到你呀"}, ? ? ? ?// 歷史回答? ? {"role":?"user",?"content":?"查詢(xún)下今日天氣"}, ? ? ? ? ? ? ? ??// 最新提問(wèn)]tools = [{"type":"function","function":{"name":"get_weather","description":"Get current weather information"}}]

敲黑板:這部分需要理解的是輸入實(shí)際是個(gè)文本,并且每次調(diào)用大模型都是獨(dú)立的,能夠與用戶(hù)互動(dòng)是因?yàn)楣こ躺显诿看握{(diào)用時(shí)將歷史對(duì)話(huà)加了進(jìn)去。因此在一輪對(duì)話(huà)中每次調(diào)用時(shí)輸入的組合文本(即上下文)會(huì)越來(lái)越長(zhǎng),這點(diǎn)很重要。


1.2?文本如何變成數(shù)字:分詞與嵌入

理解了輸入文本,那么文本如何實(shí)際轉(zhuǎn)換為大模型計(jì)算時(shí)需要的矩陣呢(這里需要知道的是,大模型核心是進(jìn)行大量的數(shù)學(xué)運(yùn)算,主要是矩陣乘法),這里主要是分詞和嵌入兩步。

分詞

相當(dāng)于把文本"切碎"成更小的單元token。比如:

中文文本中,"北京"可能被切分為1個(gè)token,"的"也是1個(gè)token

英文,單詞"unhappy"可能被拆成"un"和"happy"兩個(gè)token

每個(gè)符號(hào)、數(shù)字都會(huì)單獨(dú)處理作為一個(gè)token

需要注意的是這里分詞的規(guī)則在不同的大模型里是不一樣的,有的模型可能一個(gè)漢字平均1 token,有的可能平均要0.5 token。

分詞完成后,每個(gè)token會(huì)通過(guò)預(yù)訓(xùn)練的詞匯表映射為對(duì)應(yīng)的數(shù)字ID,可以理解為token對(duì)應(yīng)在詞表中的位置,一般大模型對(duì)應(yīng)的詞表長(zhǎng)度為幾萬(wàn)甚至幾十萬(wàn)。

嵌入

嵌入過(guò)程則更加精妙。模型通過(guò)一個(gè)可學(xué)習(xí)的嵌入矩陣,將每個(gè)token的數(shù)字ID轉(zhuǎn)換為固定維度的向量。比如,ID為100的token可能變成一個(gè)512維的向量?[0.1, -0.3, ..., 0.8]?這些向量不僅包含詞匯的語(yǔ)義信息,還能在數(shù)學(xué)空間中表示詞與詞之間的關(guān)系,舉例來(lái)說(shuō)"貓"和"狗"對(duì)應(yīng)的向量在這512維空間里更接近或者說(shuō)更相似。

如此,輸入文本開(kāi)始先轉(zhuǎn)換為n個(gè)token,經(jīng)過(guò)嵌入后轉(zhuǎn)換為n個(gè)512維的向量,合并即為n×512的輸入矩陣。

敲黑板:這部分需要理解的是文本在給到模型計(jì)算之前會(huì)轉(zhuǎn)換為token序列,這里對(duì)應(yīng)token的長(zhǎng)度n就是文本中“詞”的數(shù)量,這里n就是最終輸入的上下文長(zhǎng)度。


1.3?上下文長(zhǎng)度的限制

需要注意的是,目前大模型都會(huì)對(duì)上下文長(zhǎng)度有嚴(yán)格限制,當(dāng)給到的上下文長(zhǎng)度超過(guò)限制大小時(shí)會(huì)直接報(bào)錯(cuò)(這里是對(duì)應(yīng)DeepSeek V3開(kāi)源代碼的實(shí)現(xiàn)),不過(guò)大部分工程實(shí)踐上在累計(jì)內(nèi)容超過(guò)上下文窗口時(shí),會(huì)自動(dòng)丟棄最早的數(shù)據(jù),保留最新的內(nèi)容,確保總長(zhǎng)度不超過(guò)模型的處理能力。

敲黑板:上下文長(zhǎng)度有限制,不能無(wú)限增加,而且需要注意的是這里上下文長(zhǎng)度限制是包含輸出長(zhǎng)度的,即理論上最大的輸入上下文長(zhǎng)度為128k - 4k = 124k(以DeepSeek-Chat默認(rèn)為例),為什么后面會(huì)解釋。

通過(guò)這一系列精密的轉(zhuǎn)換過(guò)程,人類(lèi)的自然語(yǔ)言最終變成了模型能夠進(jìn)行數(shù)學(xué)計(jì)算的矩陣形式,為后續(xù)的理解和生成奠定了基礎(chǔ)。

02Transformer架構(gòu)與自注意力機(jī)制:模型如何“理解”上下文

現(xiàn)在我們已經(jīng)有了一個(gè)包含詞義的輸入矩陣,接下來(lái)就要進(jìn)入大模型的核心計(jì)算環(huán)節(jié)——Transformer架構(gòu)。這個(gè)架構(gòu)的精髓在于自注意力機(jī)制,它讓模型能夠真正“理解”文本中各個(gè)詞語(yǔ)之間的復(fù)雜關(guān)系。


2.1?自注意力:模型如何“聚焦”重要信息

想象一下你閱讀一段文字時(shí),大腦會(huì)自動(dòng)關(guān)注與當(dāng)前理解最相關(guān)的詞語(yǔ),自注意力機(jī)制就是讓模型實(shí)現(xiàn)類(lèi)似的能力。在實(shí)現(xiàn)上,每個(gè)自注意力模塊都包含三個(gè)不同的權(quán)重矩陣:Wq、Wk、Wv,對(duì)應(yīng)的值是通過(guò)大量訓(xùn)練得到的。

Q、K、V矩陣:信息的三種角色

每個(gè)輸入token經(jīng)過(guò)與上述三個(gè)不同的權(quán)重矩陣相乘,分別生成三個(gè)矩陣:

Query(Q)矩陣:代表"我想要什么信息",用于主動(dòng)詢(xún)問(wèn)其他token

Key(K)矩陣:可以理解為"該token擁有什么信息",用于回應(yīng)其他token的詢(xún)問(wèn)

Value(V)矩陣:可以理解為該token的包含內(nèi)容信息的多少

這三個(gè)矩陣可以理解為信息交流的三個(gè)角色:Q是提問(wèn)者,K是應(yīng)答者,V是實(shí)際要傳遞的內(nèi)容。有了上述矩陣,接下來(lái)會(huì)對(duì)每個(gè)token計(jì)算它與之前所有token的關(guān)聯(lián)信息。

計(jì)算注意力分?jǐn)?shù):用當(dāng)前token的Query和之前所有token的Key內(nèi)積計(jì)算得到對(duì)應(yīng)注意力分?jǐn)?shù),可以理解為當(dāng)前token與之前token在這個(gè)注意力模塊下的關(guān)聯(lián)程度。分?jǐn)?shù)越高,代表該部分信息越重要。

生成加權(quán)平均輸出:最后,用上一步得到的注意力分?jǐn)?shù)作為權(quán)重,分別與之前所有token的Value相乘并求和得到最終的注意力信息(注:實(shí)際計(jì)算要復(fù)雜些,這里不做展開(kāi)),這里可以理解為融合了之前所有序列上下文信息的新的向量。

經(jīng)過(guò)上面的計(jì)算后,得到了每個(gè)token與上下文關(guān)聯(lián)的信息,這個(gè)過(guò)程確保了模型的回復(fù)是基于整個(gè)上下文生成的,而不僅僅是孤立的最新問(wèn)題。

敲黑板:簡(jiǎn)單來(lái)講,自注意力機(jī)制就是將每個(gè)token與之前所有token通過(guò)計(jì)算得到相關(guān)信息,需要著重理解的是最后一個(gè)token的注意力信息包含了整個(gè)上下文所有信息。


2.2?多頭注意力:多角度理解文本

單一注意力機(jī)制可能不夠全面,因此Transformer采用了多頭注意力設(shè)計(jì)。可以理解為多個(gè)相同結(jié)構(gòu)、但不同權(quán)重矩陣的自注意力模塊共同組成,這些模塊并行計(jì)算,并在最終輸出時(shí)合并。

不同注意力頭就像不同的“專(zhuān)家”,各自關(guān)注文本的不同方面,所有頭的計(jì)算結(jié)果最終拼接在一起,通過(guò)線(xiàn)性變換融合成完整的輸出。這種設(shè)計(jì)讓模型能夠同時(shí)從多個(gè)角度理解文本,大大增強(qiáng)了表達(dá)能力。


2.3?前饋網(wǎng)絡(luò)層

上面提到了Transformer架構(gòu)的核心是自注意力模塊,但又不止于此,一個(gè)完整的Transformer層主要包括多頭自注意力層以及前饋網(wǎng)絡(luò)層(還有別的模塊,偏技術(shù)細(xì)節(jié)不影響理解這里不做展開(kāi))。

如果說(shuō)自注意力機(jī)制的作用是“聚合信息”——將序列中所有位置的信息通過(guò)注意力權(quán)重整合到一起,那么前饋網(wǎng)絡(luò)層的作用就是"加工和提煉這些聚合后的信息"。

您可以將其類(lèi)比于人類(lèi)的理解過(guò)程:

自注意力層:相當(dāng)于你聽(tīng)取了一場(chǎng)討論,了解了每個(gè)人(每個(gè)詞)的觀點(diǎn)以及它們之間的關(guān)聯(lián)。

前饋網(wǎng)絡(luò)層:相當(dāng)于你回到自己的辦公室,獨(dú)自消化和深入思考剛才聽(tīng)到的所有信息,形成自己更深刻、更抽象的理解。

如此,一個(gè) transformer 層結(jié)構(gòu)可以簡(jiǎn)略表示為下圖:

敲黑板:實(shí)際上可以簡(jiǎn)單理解,通過(guò)注意力機(jī)制讓模型能夠?qū)W到利用并關(guān)聯(lián)上下文信息,通過(guò)前饋網(wǎng)絡(luò)層讓模型能學(xué)到特征的進(jìn)一步提取和轉(zhuǎn)換。


2.4?大模型之“大”

都說(shuō)大模型,大模型到底大在何處?

參數(shù)量

參數(shù)量是衡量模型復(fù)雜度的核心指標(biāo),Transformer架構(gòu)的大模型通常擁有數(shù)百億甚至數(shù)千億參數(shù),這么多參數(shù)都體現(xiàn)在哪?前面介紹了Transformer層包括多頭注意力層和前饋網(wǎng)絡(luò)層,在實(shí)際我們使用的大模型中都會(huì)對(duì)這兩部分進(jìn)行優(yōu)化調(diào)整,同時(shí)通過(guò)對(duì)Transformer層進(jìn)行堆疊來(lái)增加模型的表現(xiàn)力。

以DeepSeek V3為例,其注意力層為潛在多頭注意力層(MLA,這個(gè)是為了減少緩存的使用,不展開(kāi)介紹),頭數(shù)為128,對(duì)應(yīng)有128個(gè)自注意力模塊,前饋網(wǎng)絡(luò)層包括257個(gè)專(zhuān)家(包括一個(gè)共享專(zhuān)家,256個(gè)可選專(zhuān)家,這里可以理解為257個(gè)前饋網(wǎng)絡(luò)層并行,這跟多頭很類(lèi)似,區(qū)別是這里專(zhuān)家是選擇使用的),然后這樣的Transformer層在DeepSeek V3中有58層,還有3層無(wú)專(zhuān)家的Transformer層,共61層。

其中參數(shù)量主要由專(zhuān)家組成,一共14906個(gè)專(zhuān)家,每個(gè)專(zhuān)家有7168×2048×3 = 44,040,192個(gè)參數(shù),一共有6564.6億個(gè)參數(shù),算上其他的參數(shù),總共是6710億。當(dāng)然由于DeepSeek的專(zhuān)家是可選的,每次計(jì)算只使用256中的8個(gè),實(shí)際計(jì)算使用的參數(shù)約為370億。

訓(xùn)練量

大模型這么大的參數(shù)量,每個(gè)參數(shù)的取值都是通過(guò)一次次訓(xùn)練來(lái)逐漸調(diào)整的,訓(xùn)練數(shù)據(jù)要求非常大。同樣以DeepSeek V3為例,其預(yù)訓(xùn)練階段就使用了14.8萬(wàn)億token的數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練,需要知道的是,大模型在訓(xùn)練時(shí)每條數(shù)據(jù)都不會(huì)只用來(lái)訓(xùn)練1次,而是訓(xùn)練多次。


03輸出:從logits到人類(lèi)語(yǔ)言的“翻譯”

經(jīng)過(guò)前兩章的介紹,我們已經(jīng)知道模型如何將用戶(hù)提問(wèn)轉(zhuǎn)換為矩陣輸入,以及如何通過(guò)自注意力機(jī)制理解上下文關(guān)系。現(xiàn)在,模型手中已經(jīng)有了一個(gè)包含豐富語(yǔ)義信息的“隱藏狀態(tài)矩陣”(即上面的輸出矩陣,可以理解為經(jīng)過(guò)了多層Transformer后,對(duì)每個(gè)token位置都生成了一個(gè)包含所有上下文信息的高維向量),接下來(lái)需要完成最關(guān)鍵的一步:將這些抽象的高維向量“翻譯”回人類(lèi)能夠理解的自然語(yǔ)言。


3.1?線(xiàn)性層:從隱藏狀態(tài)到詞匯表映射

隱藏狀態(tài)矩陣中的每個(gè)向量都濃縮了對(duì)應(yīng)token的上下文信息,但這些向量仍然處于模型內(nèi)部的表示空間。為了生成人類(lèi)可讀的文字,模型需要通過(guò)線(xiàn)性層將這些向量映射到詞匯表空間。

線(xiàn)性層的作用相當(dāng)于一個(gè)"翻譯官",它將每個(gè)token對(duì)應(yīng)的高維向量轉(zhuǎn)換為一個(gè)長(zhǎng)度等于詞匯表大小的新向量。如果詞匯表包含5萬(wàn)個(gè)詞,那么線(xiàn)性層的輸出就是一個(gè)5萬(wàn)維的向量,每個(gè)維度對(duì)應(yīng)詞匯表中一個(gè)特定詞的可能性得分。因?yàn)槲覀冚斎霑r(shí)n個(gè)token,所以這里會(huì)得到n個(gè)向量,分別對(duì)應(yīng)該位置下一個(gè)詞的得分向量,在最終輸出時(shí)使用最后一個(gè)。


3.2?Softmax:將得分轉(zhuǎn)換為概率分布

線(xiàn)性層輸出的向量包含的是原始得分(raw scores),這些得分被稱(chēng)為logits。每個(gè)logits數(shù)組看起來(lái)可能像這樣:[2.1, -0.3, 1.8, ..., 0.02],其中每個(gè)數(shù)值代表對(duì)應(yīng)詞匯的"傾向程度"。

然而,這些logits還不能直接用于選擇輸出詞匯,因?yàn)樗鼈兊臄?shù)值范圍不確定,而且總和不為1。這時(shí)就需要Softmax函數(shù)登場(chǎng):

Softmax的核心作用是將logits轉(zhuǎn)換為標(biāo)準(zhǔn)的概率分布:

將所有l(wèi)ogits值映射到0到1之間

確保所有概率值的總和恰好等于1

保持?jǐn)?shù)值間的相對(duì)大小關(guān)系(得分高的詞概率仍然高)

經(jīng)過(guò)Softmax處理后,原來(lái)的logits數(shù)組變成了類(lèi)似[0.15, 0.02, 0.25, ..., 0.001]的概率分布,每個(gè)數(shù)值明確表示對(duì)應(yīng)詞匯被選中的概率。好的,到這里我們的大模型終于能返回一個(gè)詞了,具體輸出哪個(gè)呢,一般是根據(jù)上面的概率分布來(lái)隨機(jī)抽取,每個(gè)位置的值對(duì)應(yīng)輸出詞表中這個(gè)位置的詞的概率。需要注意的是,一般情況這個(gè)概率分布會(huì)比較集中,即某個(gè)詞或某幾個(gè)詞的概率很大,其他很小。


3.3?自回歸生成:逐詞構(gòu)建完整回答

經(jīng)過(guò)上面那么復(fù)雜的計(jì)算,我們發(fā)現(xiàn)大模型只輸出了一個(gè)詞,那么完整輸出對(duì)應(yīng)的后面的詞是怎么來(lái)的呢。

這里大模型生成文本的過(guò)程是自回歸的,這意味著模型不是一次性生成整個(gè)回答,而是像人類(lèi)思考一樣,一個(gè)詞一個(gè)詞地逐步構(gòu)建:

初始預(yù)測(cè):基于完整的輸入上下文,模型預(yù)測(cè)第一個(gè)詞的概率分布(即上面的過(guò)程)

詞選擇:根據(jù)概率分布選擇一個(gè)詞(可能是概率最高的詞,也有可能是概率低的詞)

迭代擴(kuò)展:將已生成的詞作為新的輸入的一部分,預(yù)測(cè)下一個(gè)詞

重復(fù)直到結(jié)束:持續(xù)這個(gè)過(guò)程,直到生成完整的回答或達(dá)到長(zhǎng)度限制

這種“滾雪球”式的生成方式確保了前后文的連貫性,每個(gè)新詞的產(chǎn)生都基于之前所有已生成的內(nèi)容。

敲黑板:大模型經(jīng)過(guò)Transformer層提取的特征在經(jīng)過(guò)計(jì)算后最終輸出的是詞表中每個(gè)詞的概率分布,根據(jù)相應(yīng)概率抽取最終輸出的詞。接下來(lái)將生成的詞添加到輸入后繼續(xù)上述流程接著預(yù)測(cè)輸出,整體上是一個(gè)一個(gè)token輸出。這也是為什么上下文限制要包括輸出長(zhǎng)度的原因。


3.4?生成策略:如何從概率中選擇詞匯

對(duì)于概率分布,模型有多種選擇策略,一般是按照概率分布進(jìn)行抽取。在創(chuàng)造性的場(chǎng)景中可能體現(xiàn)為每次的輸出結(jié)果不同,這對(duì)詩(shī)詞創(chuàng)造等比較有用。但在一些場(chǎng)景中我們希望模型輸出的結(jié)果更可靠、更穩(wěn)定,這里有什么方法嗎。

目前來(lái)說(shuō),模型一般會(huì)提供兩個(gè)參數(shù)來(lái)給用戶(hù)用以調(diào)整,這在我們平時(shí)使用的元寶等平臺(tái)都會(huì)開(kāi)放給用戶(hù)修改。對(duì)應(yīng)temperature(溫度)和top-p(又稱(chēng)核采樣),它們協(xié)同工作,共同決定了模型在“想象力”與“可靠性”之間的平衡。

temperature:調(diào)整模型原始輸出的概率分布(logits)的"尖銳"或"平滑"程度,通過(guò)改變概率分布的形狀來(lái)控制隨機(jī)性。可以理解為值小于1時(shí)原本概率高的調(diào)整后會(huì)更高,進(jìn)而更容易被選擇,等于0時(shí)就變成了只選擇概率最高的詞

top-p:像一個(gè)動(dòng)態(tài)的候選詞篩選器,從概率最高的詞開(kāi)始累加,僅從累積概率達(dá)到閾值p的最小候選集合中采樣。可以理解為在抽取時(shí)只從概率較高的前幾個(gè)詞中抽取

在實(shí)際應(yīng)用中可以結(jié)合使用場(chǎng)景來(lái)調(diào)整參數(shù)以達(dá)到我們期望的性能,這里不做展開(kāi)。

注:這里在DeepSeek V3的代碼中只看到了temperature參數(shù)的支持。

04位置編碼和長(zhǎng)文本外推

到這里我們已經(jīng)談得上大致理解了大模型從輸入到輸出的基本工作原理,不過(guò)在介紹中刻意忽略了一個(gè)細(xì)節(jié),斟酌再三還是決定單獨(dú)介紹這部分,因?yàn)檫@個(gè)非常重要!


4.1 位置編碼

上面我們提到了Transformer架構(gòu)核心在自注意力機(jī)制,通過(guò)計(jì)算每個(gè)token和其他token的相關(guān)性得分來(lái)獲取相關(guān)信息,其中核心計(jì)算是token之間的矩陣運(yùn)算,然而這種計(jì)算方式丟失了位置信息,要知道"我咬狗"和"狗咬我"這種相同詞組成的短句含義是相差甚遠(yuǎn)的。因此引入了位置編碼的概念,將位置信息添加在輸入矩陣中,一般分為絕對(duì)位置編碼和相對(duì)位置編碼。

絕對(duì)位置編碼:給每個(gè)位置一個(gè)"唯一身份證",Transformer架構(gòu)原版的實(shí)現(xiàn)。核心是通過(guò)編碼的方式將位置信息添加到每個(gè)token的輸入向量中,缺點(diǎn)是當(dāng)輸入長(zhǎng)度超過(guò)模型訓(xùn)練長(zhǎng)度時(shí),模型沒(méi)見(jiàn)過(guò)對(duì)應(yīng)位置編碼,會(huì)導(dǎo)致性能急劇下降。

相對(duì)位置編碼:關(guān)注的相對(duì)距離而不是絕對(duì)距離。在計(jì)算注意力分?jǐn)?shù)時(shí),注入兩個(gè)詞之間的相對(duì)距離信息。

這里只介紹目前主流方案RoPE(旋轉(zhuǎn)位置編碼),核心思想是將每個(gè)token的位置信息轉(zhuǎn)換為對(duì)應(yīng)高維空間的角度信息,對(duì)應(yīng)每個(gè)位置會(huì)對(duì)應(yīng)一個(gè)旋轉(zhuǎn)角度,在注意力得分計(jì)算時(shí)會(huì)將兩個(gè)token對(duì)應(yīng)的query和key矩陣進(jìn)行對(duì)應(yīng)角度的旋轉(zhuǎn),這樣在計(jì)算注意力得分的結(jié)果會(huì)與他們的相對(duì)距離有關(guān)。具體原理這里不介紹了,不打職業(yè)不用學(xué),需要知道的是在編碼具體實(shí)現(xiàn)上通過(guò)設(shè)計(jì)使得計(jì)算注意力時(shí)具備遠(yuǎn)程衰減的特性,即距離越長(zhǎng),得分越低,這個(gè)特性使得模型天然能夠更關(guān)注附近的信息。

相比于絕對(duì)編碼,相對(duì)編碼中模型學(xué)到的是相對(duì)位置關(guān)系,即使輸入長(zhǎng)度超過(guò)模型訓(xùn)練長(zhǎng)度時(shí),模型也能復(fù)用訓(xùn)練中學(xué)到的相對(duì)位置規(guī)律。

敲黑板:核心是通過(guò)巧妙的數(shù)學(xué)編碼將相對(duì)位置信息加在了自注意力得分的計(jì)算上,有個(gè)很重要的細(xì)節(jié)是,在編碼上通過(guò)設(shè)計(jì)使得相對(duì)位置越遠(yuǎn)的token間注意力得分會(huì)相對(duì)較低。


4.2?長(zhǎng)文本外推

但是,即使相對(duì)編碼比絕對(duì)編碼在長(zhǎng)文本時(shí)更具優(yōu)勢(shì),但是其學(xué)到的相對(duì)位置關(guān)系的距離也是有限的,當(dāng)輸入長(zhǎng)度過(guò)長(zhǎng)時(shí),其性能也會(huì)下降,這時(shí)候就需要外推策略。

為了保證模型對(duì)長(zhǎng)輸入文本也能有個(gè)較高的性能,研究人員相繼提出了多種方法。這里簡(jiǎn)單介紹:

一種是基于插值的方式,基本思想是對(duì)于訓(xùn)練時(shí)的0-4k這樣的距離,在實(shí)際使用時(shí)將0-32k壓縮到0-4k的表示(模型更熟悉這個(gè)范圍的距離)。當(dāng)然這個(gè)方式不夠靈活,目前業(yè)界較優(yōu)的方案是YaRN,可以理解為對(duì)不同長(zhǎng)度的相對(duì)距離進(jìn)行不同的插值策略。

一種是基于選擇策略的方式。基本思想是對(duì)超長(zhǎng)文本,在計(jì)算時(shí)不再計(jì)算與全局所有token的注意力關(guān)系,避免超長(zhǎng)文本計(jì)算的耗時(shí)過(guò)長(zhǎng)。比較典型的方案是滑動(dòng)窗口計(jì)算的方式,每個(gè)詞只關(guān)注固定窗口長(zhǎng)度中相鄰詞的信息,也有通過(guò)某些策略從全局中挑選部分區(qū)間進(jìn)行計(jì)算,整體方案是有損的,不過(guò)通過(guò)設(shè)計(jì)盡量降低對(duì)模型效果的影響。


4.3?長(zhǎng)文本訓(xùn)練

也許你會(huì)疑惑如果大模型學(xué)到了相對(duì)距離的概念,那理論上距離變長(zhǎng)也應(yīng)該可以的才對(duì)。這就要提到前面說(shuō)的大模型的大在訓(xùn)練量了,模型的性能直接取決于訓(xùn)練量,在4k長(zhǎng)度下訓(xùn)練的模型即使學(xué)會(huì)了相對(duì)位置的概念,到了32k甚至更長(zhǎng)的距離時(shí)表現(xiàn)也會(huì)變差,因?yàn)槿狈τ?xùn)練。(這可以類(lèi)比于,在人機(jī)模式打了很多把游戲,你的能力有了顯著提升,并且已經(jīng)學(xué)會(huì)了技能的使用和對(duì)線(xiàn)的技巧,但接下來(lái)讓你跟真人高玩對(duì)線(xiàn),用的技能和英雄還是那些,但就是打不過(guò))

既然如此,為什么不直接用長(zhǎng)文本進(jìn)行訓(xùn)練呢?這里主要有兩個(gè)原因:

計(jì)算復(fù)雜度與成本爆炸:基于前面的自注意力機(jī)制計(jì)算的原理,我們知道每個(gè)token都要和上下文中前面的所有token進(jìn)行注意力計(jì)算,因此上下文越長(zhǎng),計(jì)算量和中間結(jié)果就會(huì)越多,這直接與長(zhǎng)度的平方成正比。因此在大訓(xùn)練量的需求下,直接對(duì)長(zhǎng)文本進(jìn)行訓(xùn)練的資源和時(shí)間消耗都是非常大的。

訓(xùn)練數(shù)據(jù)的稀缺性和質(zhì)量難題:即使是互聯(lián)網(wǎng)時(shí)代,長(zhǎng)文本的訓(xùn)練數(shù)據(jù)仍然本身較少,大部分還是短文。并且高質(zhì)量的可訓(xùn)練數(shù)據(jù)更為稀缺。

短文本預(yù)訓(xùn)練 + 長(zhǎng)文本微調(diào)(主流方法)

目前主流方式都是在短文本下進(jìn)行大量訓(xùn)練得到基礎(chǔ)模型,然后通過(guò)少量的長(zhǎng)文本數(shù)據(jù)進(jìn)行微調(diào)。

階段一(基礎(chǔ)預(yù)訓(xùn)練):在大量高質(zhì)量的較短文本(如2K、4K、8K)上完成核心的語(yǔ)言模型預(yù)訓(xùn)練。這個(gè)階段讓模型學(xué)會(huì)基本的語(yǔ)言能力、常識(shí)和推理邏輯。成本相對(duì)可控。

階段二(長(zhǎng)度擴(kuò)展微調(diào)):使用外推技術(shù),在相對(duì)較少的長(zhǎng)文本數(shù)據(jù)上對(duì)模型進(jìn)行微調(diào)。這里DeepSeek V3是先擴(kuò)展至32k,然后擴(kuò)展至128k。

為什么有效??因?yàn)槟P驮陔A段一已經(jīng)學(xué)會(huì)了"如何思考"。階段二只是教它"如何在更長(zhǎng)的上下文中運(yùn)用這種思考能力"。這比從零開(kāi)始學(xué)習(xí)所有東西要高效得多。

注:大模型的發(fā)展日新月異,目前有些模型已經(jīng)支持了 1M 長(zhǎng)度上下文了

敲黑板:針對(duì)長(zhǎng)文本的支持,主流方式仍是采用大量短文本數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練的方式,并在此基礎(chǔ)上通過(guò)少量長(zhǎng)文本的訓(xùn)練來(lái)提高模型對(duì)長(zhǎng)文本輸入的支持。這里重點(diǎn)是什么,重點(diǎn)在于即使做了非常多的工作來(lái)增加長(zhǎng)文本的支持,但是不可否認(rèn)的是訓(xùn)練的稀缺以及在外推方式上的有損設(shè)計(jì),都會(huì)導(dǎo)致在長(zhǎng)文本下模型的表現(xiàn)會(huì)劣于短文本。

05實(shí)踐與思考

到這里你已經(jīng)大致了解大語(yǔ)言模型的工作原理和實(shí)現(xiàn)細(xì)節(jié),那么知道了這些對(duì)我們實(shí)踐應(yīng)用有哪些指導(dǎo)意義呢?


5.1?多模態(tài)輸入的實(shí)現(xiàn)原理

已知使用的DeepSeek V3輸入是文本,那猜測(cè)這里大概率的工程實(shí)現(xiàn)是對(duì)圖片做圖像識(shí)別,得到一個(gè)識(shí)別結(jié)果的文本,將這個(gè)文本和問(wèn)題一起給到大模型作為輸入。不理解的是,按理來(lái)說(shuō)圖像識(shí)別算法應(yīng)該已經(jīng)比較成熟了,準(zhǔn)確率應(yīng)該很高才對(duì)。自己測(cè)試后確實(shí)也還是不對(duì),不過(guò)根據(jù)思考過(guò)程可以發(fā)現(xiàn)確實(shí)有額外的輸入文本給到大模型(大約23顆的計(jì)數(shù))。

這里也測(cè)試了混元(已知混元是多模態(tài)的大模型,在輸入時(shí)是支持輸入圖像的,簡(jiǎn)單理解應(yīng)該是通過(guò)編碼器將圖片轉(zhuǎn)換成跟token類(lèi)似的輸入向量給到Transformer架構(gòu)),結(jié)果也是不對(duì),而且看思考過(guò)程很難看出來(lái)是真的用了圖片特征token還是單純的在瞎說(shuō)。已知大模型輸出是一個(gè)一個(gè)通過(guò)概率輸出的,因此在系統(tǒng)提示詞沒(méi)有嚴(yán)格限制的情況很容易出現(xiàn)編瞎話(huà)的問(wèn)題。

這里想說(shuō)的是,像DeepSeek這類(lèi)大語(yǔ)言模型目前主要還是以輸入文本為主,對(duì)于非文本的需求大概率是通過(guò)特殊的工程方案來(lái)實(shí)現(xiàn)的。

5.2?通過(guò)上下文限制提高系統(tǒng)穩(wěn)定性

我們知道模型在短文本(一般是4k)進(jìn)行了大量訓(xùn)練,理論上這個(gè)區(qū)間模型效果和穩(wěn)定性都是最高的,那么在工程實(shí)踐中應(yīng)盡量避免長(zhǎng)上下文的情況。以Agent為例,關(guān)鍵就是他的prompt(系統(tǒng)提示詞)和可用工具列表描述,這部分不應(yīng)過(guò)多(提示詞一般對(duì)應(yīng)規(guī)則,工具描述對(duì)應(yīng)能力)。

并且過(guò)多的規(guī)則和可用工具容易導(dǎo)致模型出現(xiàn)混亂,最終輸出的格式不符合預(yù)期,如下示例實(shí)際模型是想輸出的調(diào)用工具的能力,但是由于輸出時(shí)格式不對(duì),導(dǎo)致解析失敗。

這只是不穩(wěn)定的變現(xiàn)的一種,有時(shí)還會(huì)出現(xiàn)循環(huán)輸出的情況如下圖,看完文章你應(yīng)該能理解這種問(wèn)題出現(xiàn)的原因(輸出是概率預(yù)測(cè))

5.3?耗時(shí)影響

每次調(diào)用的耗時(shí)由什么決定呢,以上理解我們知道第一個(gè)token的輸出需要將所有輸入上下文全部計(jì)算后得到,這個(gè)耗時(shí)完全取決于上下文長(zhǎng)度,越長(zhǎng)則耗時(shí)越高(并且是與長(zhǎng)度的平方成正相關(guān)),隨后依次輸出,每個(gè)token輸出的間隔耗時(shí)取決于上下文長(zhǎng)度(這里會(huì)利用之前計(jì)算過(guò)的緩存,但仍需要將新的token與上下文所有token進(jìn)行計(jì)算),所有token輸出總耗時(shí)取決于輸出的字?jǐn)?shù)。因此一次調(diào)用耗時(shí)的曲線(xiàn)近似可以理解為如下圖所示,其中t1與上下文長(zhǎng)度平方成正比,直線(xiàn)斜率k與上下文長(zhǎng)度成正比。

知道了耗時(shí)組成,那么在實(shí)踐中如果想每次調(diào)用耗時(shí)降低,我們能做什么呢?

還是減少上下文長(zhǎng)度,因?yàn)榭偤臅r(shí)與長(zhǎng)度平方成正比

限制模型單詞輸出的長(zhǎng)度,這里一般可以通過(guò)prompt規(guī)則或者接口參數(shù)限制,因?yàn)楹芏鄷r(shí)候大模型會(huì)有啰里啰嗦的特性!


5.4?如何有效減少上下文

實(shí)踐中我們會(huì)發(fā)現(xiàn)很多時(shí)候模型不總會(huì)按預(yù)期輸出,因此我們會(huì)增加很多的規(guī)則來(lái)提醒模型怎么做,當(dāng)我們就是有這么多要求怎么辦呢,也許你需要拆分了。

通過(guò)多Agent協(xié)同的方式將你期望的功能進(jìn)行拆分,每個(gè)子Agent對(duì)應(yīng)一部分能力,通過(guò)一個(gè)主Agent進(jìn)行統(tǒng)籌規(guī)劃。

這里主Agent只需要知道每個(gè)子Agent能做什么,而不需要知道其對(duì)應(yīng)prompt的具體規(guī)則,因此其上下文可以做到盡量的縮小,耗時(shí)也會(huì)有效降低。在使用時(shí)主Agent只需要將用戶(hù)提問(wèn)拆分為不同子任務(wù)交由子Agent執(zhí)行即可。同時(shí)每個(gè)子Agent的功能相對(duì)簡(jiǎn)單,因此上下文也不會(huì)太長(zhǎng)。

這種方案會(huì)相對(duì)增加調(diào)用大模型的次數(shù),但是通過(guò)減少上下文又降低了每次調(diào)用上下文的長(zhǎng)度,在調(diào)用耗時(shí)與上下文平方成正比的情況下,整體耗時(shí)反而會(huì)縮短。比如原12k的上下文,現(xiàn)在變成了4個(gè)3k上下文的子Agent,簡(jiǎn)單計(jì)算下:122 = 144,四個(gè)子Agent對(duì)應(yīng) 4 × 32 = 36。


5.5?歷史對(duì)話(huà)

歷史對(duì)話(huà)過(guò)多也會(huì)導(dǎo)致上下文的膨脹,不過(guò)很多時(shí)候用戶(hù)的問(wèn)題并不需要?dú)v史信息做參考,或者歷史信息里包含的有用信息很少,用戶(hù)很多時(shí)候單純是懶得清理上下文。

因此工程上可以通過(guò)一些方式減少歷史對(duì)話(huà),一種可行的方案可能是,將歷史對(duì)話(huà)存儲(chǔ)起來(lái),在用戶(hù)提問(wèn)時(shí),先檢索有沒(méi)有相關(guān)記錄,并僅將相關(guān)記錄附在歷史對(duì)話(huà)里。

06寫(xiě)在最后

以上全文基于個(gè)人理解,歡迎批評(píng)指正。

Vaswani, A., et al. The Annotated Transformer. Harvard NLP. https://nlp.seas.harvard.edu/2018/04/03/attention.html

-End-原創(chuàng)作者|顏培榮
(部分內(nèi)容來(lái)源網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除)
立即申請(qǐng)數(shù)據(jù)分析/數(shù)據(jù)治理產(chǎn)品免費(fèi)試用 我要試用
  • 相關(guān)主題
  • 相關(guān)大數(shù)據(jù)問(wèn)答
  • 相關(guān)大數(shù)據(jù)知識(shí)
customer

在線(xiàn)咨詢(xún)

在線(xiàn)咨詢(xún)

點(diǎn)擊進(jìn)入在線(xiàn)咨詢(xún)