0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GPT架構(gòu)及推理原理

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2025-01-20 13:41 ? 次閱讀

導(dǎo)讀

本篇是作者從開發(fā)人員的視角,圍繞著大模型正向推理過程,對大模型的原理的系統(tǒng)性總結(jié),希望對初學(xué)者有所幫助。

引言

什么是人工智能?

清華大學(xué)出版社出版的《人工智能概論》中提出,人工智能是對人的意識、思維的信息過程的模擬。人工智能不是人的智能,但它能像人那樣思考,也可能超過人的智能。

基于這個設(shè)想,人工智能應(yīng)當(dāng)能夠執(zhí)行通常需要人類智能的任務(wù),如視覺感知、語音識別、決策和語言翻譯等工作。就像人一樣,可以看見、聽見、理解和表達(dá)。這涉及了眾多人工智能的分支學(xué)科,如計(jì)算機(jī)視覺(CV)、自然語言處理(NLP)、語音識別(VC)、知識圖譜(KG)等。

57244f68-d673-11ef-9310-92fbcf53809c.jpg

NLP語言模型的發(fā)展,引自《A Survey of Large Language Models》

NLP作為其中之一,其發(fā)展歷經(jīng)了多個階段。在統(tǒng)計(jì)語言模型階段,模型利用馬爾科夫假設(shè)學(xué)會了如何進(jìn)行預(yù)測。在神經(jīng)語言模型的階段,我們通過詞嵌入的向量表示讓模型開始理解詞的語義,并通過神經(jīng)網(wǎng)絡(luò)模型給人工智能裝上了神經(jīng)元,讓模型開始“思考”。在預(yù)訓(xùn)練語言模型階段,我們通過預(yù)訓(xùn)練告訴語言模型,要先學(xué)習(xí)走路再去跑。而在如今的大語言模型階段,我們基于擴(kuò)展法則認(rèn)識到了了力大磚飛的重要性,并收獲了各種涌現(xiàn)能力的驚喜,為AGI的發(fā)展立下了一個新的里程碑。

如今大模型已經(jīng)帶領(lǐng)NLP 領(lǐng)域走向了全新的階段,并逐步向其他AI領(lǐng)域擴(kuò)展。LangChain的2024年Agent調(diào)研報(bào)告顯示,51.1%的企業(yè)已經(jīng)在生產(chǎn)中使用Agent,78.1%的企業(yè)有計(jì)劃將Agent投入生產(chǎn),AI的浪潮已經(jīng)席卷而來。并且AI發(fā)展的步伐還在加快。模型方面,OpenAI在2024年12月的發(fā)布會上,推出了o1專業(yè)版,憑借其在后訓(xùn)練階段的深度推理,使得模型在數(shù)學(xué)、編程、博士級問題上達(dá)到了人類專家的水平,相比于此前的大模型達(dá)到了斷層領(lǐng)先,近期國內(nèi)Qwen推出了QwQ模型,月之暗面的KIMI推出了KIMI探索版,也都具有深度推理能力,國內(nèi)外AI上的差距正在逐步縮短。應(yīng)用方面,各家都在大力發(fā)展多模態(tài)AI,Sora、可靈等,讓視頻創(chuàng)意的落地成本從數(shù)十萬元降低到了幾十元,VLM的加持下的端到端自動駕駛也在大放異彩。

總而言之,我們?nèi)匀惶幵诘谒拇?a href="http://www.wenjunhu.com/v/" target="_blank">科技革命的起點(diǎn),業(yè)內(nèi)預(yù)測在2025年我們可能會見證AGI(通用人工智能)的落地,并且還提出了ASI(超級人工智能)的概念,認(rèn)為人類可能創(chuàng)造出在各個方面都超越人類智能的AI,AI很有可能帶領(lǐng)人類進(jìn)入新的時代。

目光放回到大模型本身,對于開發(fā)人員而言,大模型的重要性,不亞于JAVA編程語言。大模型的推理原理,就像JVM虛擬機(jī)原理一樣,如果不了解,那么在使用大模型時難免按照工程化的思維去思考,這樣常常會遇到困難,用不明白大模型。比如為什么模型不按照提示詞的要求輸出,為什么大家都在用思維鏈。

而本篇是作者從開發(fā)人員的視角,圍繞著大模型的正向推理過程,對大模型的原理的系統(tǒng)性總結(jié),希望對像我一樣的初學(xué)者有所幫助。文中會引入部分論文原文、計(jì)算公式和計(jì)算過程,同時會添加大量例子和解釋說明,以免內(nèi)容晦澀難懂。篇幅較長難免有所紕漏,歡迎各位指正。

大語言模型架構(gòu)

Transformer

What is Attention

573a128a-d673-11ef-9310-92fbcf53809c.jpg

鎮(zhèn)樓圖,來自萬物的起源《Attention is All You Need》

Transformer架構(gòu)由Google在2017年發(fā)表的論文《Attention is All You Need》首次提出,它使用自注意力(Self-Attention)機(jī)制取代了之前在 NLP 任務(wù)中常用的RNN(循環(huán)神經(jīng)網(wǎng)絡(luò)),使其成為預(yù)訓(xùn)練語言模型階段的代表架構(gòu)。

要澄清一點(diǎn),注意力機(jī)制并不是由Transformer提出。注意力機(jī)制最早起源于計(jì)算機(jī)視覺領(lǐng)域,其思想在上世紀(jì)九十年代就已經(jīng)被提出。在2014年的論文《Neural Machine Translation by Jointly Learning to Align and Translate》中注意力機(jī)制首次應(yīng)用于NLP領(lǐng)域,結(jié)合了RNN和注意力機(jī)制,提出了序列到序列(Seq2Seq)模型,來改進(jìn)機(jī)器翻譯的性能。Transformer的貢獻(xiàn)在于,它提出注意力機(jī)制不一定要和RNN綁定,我們可以將注意力機(jī)制單獨(dú)拿出來,形成一套全新的架構(gòu),這也就是論文標(biāo)題《Attention Is All You Need》的來源。

在正式開始前,首先需要說明,什么是注意力機(jī)制?

在NLP領(lǐng)域,有三個基礎(chǔ)概念:

分詞(Tokenization):首先大模型會將輸入內(nèi)容進(jìn)行分詞,分割成一系列的詞元(Token),形成一個詞元序列。

詞元(Token):指將輸入的文本分割成的最小單位,詞元可以是一個單詞、一個詞組、一個標(biāo)點(diǎn)符號、一個字符等。

詞嵌入(Embedding):分詞后的詞元將被轉(zhuǎn)換為高維空間中的向量表示,向量中包含了詞元的語義信息。

舉個例子,當(dāng)我們輸入“我可以擁有一杯咖啡嗎?”時,首先通過分詞形成“我”、“可以”、“擁有”、“一杯”、“咖啡”、“嗎?”這幾個詞元,然后通過詞嵌入轉(zhuǎn)變成高維空間中的向量。

在向量空間中,每一個點(diǎn)代表一個實(shí)體或者概念,我們稱之為“數(shù)據(jù)點(diǎn)”。這些數(shù)據(jù)點(diǎn)可以代表著具體的單詞、短語、句子,他們能夠被具體地、明確地識別出來,我們稱之為“實(shí)體”;也可以不直接對應(yīng)于一個具體的實(shí)體,而是表達(dá)一種對事物的抽象理解,我們稱之為“概念”。這些數(shù)據(jù)點(diǎn)在向量空間中的位置和分布反映了實(shí)體或概念之間的相似性和關(guān)系,相似的實(shí)體或概念在空間中會更接近,而不同的則相距較遠(yuǎn)。其所在空間的每一個方向(維度)都代表了數(shù)據(jù)點(diǎn)的某種屬性或特征。這些屬性和特征是通過模型訓(xùn)練獲得的,可能包括了“情感”、“語法”、“詞性”等方面,事實(shí)上由于這些屬性和特征是模型通過訓(xùn)練進(jìn)行內(nèi)部學(xué)習(xí)的結(jié)果,他們的具體含義往往難以直觀解釋清楚。

當(dāng)詞元被嵌入到向量空間中,每個詞元都會形成一個實(shí)體的數(shù)據(jù)點(diǎn),此時這些數(shù)據(jù)點(diǎn)所對應(yīng)的向量,就代表了詞本身的語義。但是在不同的上下文語境中,相同的詞也會有不同的語義。比如在“科技巨頭蘋果”、“美味的蘋果”這兩句話中,“蘋果”這個詞,分別代表著蘋果公司和水果。因此模型需要對原始向量“蘋果”,基于上下文中“科技巨頭”、“美味的”等信息,來進(jìn)行數(shù)據(jù)點(diǎn)位置的調(diào)整,豐富其語義。換句話說,詞元與上下文中各個詞元(包括其自己)之間具有一定程度的“依賴關(guān)系”,這種關(guān)系會影響其自身的語義。

為了進(jìn)一步解釋上述內(nèi)容,我畫了一張圖幫助大家理解。如下圖是一個向量空間,我們假設(shè)其只有兩個維度,分別是“經(jīng)濟(jì)價值”和“食用價值”?!翱萍季揞^”、“美味的”、“蘋果”在詞嵌入后,會在空間中分別形成自己的數(shù)據(jù)點(diǎn),顯然“科技巨頭”相對于“美味的”的經(jīng)濟(jì)價值屬性更明顯而食用價值的屬性更模糊。當(dāng)我們輸入“科技巨頭蘋果”時,“蘋果”的含義會受“科技巨頭”的影響,其數(shù)據(jù)點(diǎn)的位置會向“科技巨頭”靠攏,在空間中會形成一個新的概念。

5745d0ac-d673-11ef-9310-92fbcf53809c.png

向量空間中的“科技巨頭蘋果”

每個詞元都需要捕捉自身與序列中其他詞元的依賴關(guān)系,來豐富其語義。在“我配擁有一杯咖啡嗎?”中,對于“配”而言,它依賴“我”作為其主語,這是一條依賴關(guān)系。對于“咖啡”而言,“一杯”是其量詞,這也是一條依賴關(guān)系。

這種關(guān)系不只會在相鄰的詞元之間產(chǎn)生,在論文中有個詞叫長距離依賴關(guān)系(long-range dependencies ),它指在詞元序列中,相隔較遠(yuǎn)的位置的詞元之間的相互依賴或關(guān)聯(lián)。比如,在“我深切地感覺到,在這段漫長而忙碌的日子里,保持清醒和集中精力非常有用,難道此時不配擁有一杯咖啡嗎?”中,“我”和“配”之間相隔很遠(yuǎn),但他們?nèi)匀痪哂姓Z法層面的依賴關(guān)系。這種依賴關(guān)系可能非常長,從文章的開頭,一直到文章的結(jié)尾。比如,在一篇議論文中,作者可能在文章開頭提出一個論點(diǎn),然后通過一系列的論據(jù)和分析來支持這個論點(diǎn),直到文章結(jié)尾可能再次強(qiáng)調(diào)或總結(jié)這個論點(diǎn)。在這個過程中,文章開頭的論點(diǎn)和結(jié)尾的總結(jié)之間就存在著長距離依賴關(guān)系,它們在語義上是緊密相連的。

不過雖然詞元與各個詞元之間都可能存在依賴關(guān)系,但是其依賴程度不同,為了體現(xiàn)詞元之間的依賴程度,NLP選擇引入“注意力機(jī)制”。“注意力機(jī)制”可以動態(tài)地捕捉序列中不同位置元素之間的依賴關(guān)系,分析其強(qiáng)弱程度,并根據(jù)這些依賴關(guān)系生成新的序列表示。其核心思想是模仿人類的注意力,即在處理大量信息時,能夠聚焦于輸入數(shù)據(jù)的特定部分,忽略掉那些不太重要的信息,從而更好地理解輸入內(nèi)容。

繼續(xù)以“我配擁有一杯咖啡嗎?”為例,讀到“擁有”這個詞元時,我們會發(fā)現(xiàn)“我”是“擁有”的主語,“配”是對“擁有”的強(qiáng)調(diào),他們都與“擁有”產(chǎn)生了依賴關(guān)系。這句話的核心思想,是某人認(rèn)為自己有資格擁有某物,所以可能“配”相對“我”而言,對“擁有”來說更重要,那么我們在分析“擁有”這個詞的語義時,會給“配”分配更多的注意力,這通常體現(xiàn)為分配更高的“注意力權(quán)重”。

實(shí)際上,我們在日常工作中已經(jīng)應(yīng)用了注意力機(jī)制。比如,我們都知道思維鏈(COT,常用<輸入, 思考, 輸出>來描述)對大模型處理復(fù)雜問題時很有幫助,其本質(zhì)就是將復(fù)雜的問題拆分成相對簡單的小問題并分步驟處理,使模型能夠聚焦于問題的特定部分,來提高輸出質(zhì)量和準(zhǔn)確性?!熬劢埂钡倪@一過程,就是依賴模型的注意力機(jī)制完成。通常模型會依賴輸出內(nèi)容或內(nèi)部推理(如o1具有內(nèi)部推理過程,即慢思考)來構(gòu)建思考過程,但哪怕沒有這些內(nèi)容,僅僅依靠注意力本身,COT也能讓模型提高部分性能。

Why Transformer

自注意力機(jī)制是Transformer的核心。在論文中,Transformer說明了三點(diǎn)原因,來說明為何舍棄RNN和CNN,只保留注意力機(jī)制

Transformer論文:《Attention is All You Need》

原文:In this section we compare various aspects of self-attention layers to the recurrent and convolutional layers commonly used for mapping one variable-length sequence of symbol representations (x1, ..., xn) to another sequence of equal length (z1, ..., zn), with xi, zi ∈ Rd, such as a hidden layer in a typical sequence transduction encoder or decoder. Motivating our use of self-attention we consider three desiderata.- One is the total computational complexity per layer.

- Another is the amount of computation that can be parallelized, as measured by the minimum number of sequential operations required.

- The third is the path length between long-range dependencies in the network. Learning long-range dependencies is a key challenge in many sequence transduction tasks. One key factor affecting the ability to learn such dependencies is the length of the paths forward and backward signals have to traverse in the network. The shorter these paths between any combination of positions in the input and output sequences, the easier it is to learn long-range dependencies [12].

譯文:在這一部分中,我們比較了自注意力層與通常用于將一個可變長序列的符號表示(x1, ..., xn)映射到另一個等長序列(z1, ..., zn)的循環(huán)層和卷積層的不同方面,其中xi, zi ∈ Rd。我們考慮了三個主要因素來激勵我們使用自注意力:

- 每層的總計(jì)算復(fù)雜性

- 可以并行化的計(jì)算量,通過所需的最小順序操作數(shù)來衡量。

- 網(wǎng)絡(luò)中長距離依賴之間的路徑長度。學(xué)習(xí)長距離依賴性是許多序列轉(zhuǎn)換任務(wù)中的一個關(guān)鍵挑戰(zhàn)。影響學(xué)習(xí)這些依賴性能力的一個關(guān)鍵因素是前向和后向信號在網(wǎng)絡(luò)中必須穿越的路徑長度。輸入和輸出序列中任意兩個位置之間的路徑越短,學(xué)習(xí)長距離依賴性就越容易。

其中后兩點(diǎn)尤其值得注意:

并行化計(jì)算:在處理序列數(shù)據(jù)時,能夠同時處理序列中的所有元素,這很重要,是模型訓(xùn)練時使用GPU的并行計(jì)算能力的基礎(chǔ)。

長距離依賴捕捉:在注意力機(jī)制上不依賴于序列中元素的特定順序,可以有效處理序列中元素之間相隔較遠(yuǎn)但仍相互影響的關(guān)系。

可能有些難以理解,讓我們輸入“我配擁有一杯咖啡?”來進(jìn)行文本預(yù)測,分別看一下RNN和Transformer的處理方式。

574dd658-d673-11ef-9310-92fbcf53809c.png

依賴捕捉上的差異,是Transformer可以進(jìn)行并行處理的前提,而并行處理是Transformer的核心優(yōu)勢之一。在預(yù)訓(xùn)練語言模型階段,預(yù)訓(xùn)練(Pretrain)+微調(diào)(Finetune)是模型訓(xùn)練的主要范式。Transformer的并行化計(jì)算能力大大提高了模型訓(xùn)練的速度,長距離依賴捕捉能力為模型打開了上下文窗口,再結(jié)合位置編碼等能力,使得Transformer相對于RNN獲得了顯著優(yōu)勢。而預(yù)訓(xùn)練又為Transformer帶來了特征學(xué)習(xí)能力(從數(shù)據(jù)中自動學(xué)習(xí)和提取特征的能力)和遷移學(xué)習(xí)能力(將在一個任務(wù)上學(xué)習(xí)到的知識應(yīng)用到另一個相關(guān)任務(wù)上的能力)的提升,顯著提升了模型的性能和泛化能力。

這些優(yōu)勢,也正是GPT選擇Transformer的原因。

GPT-1的論文《Improving Language Understanding by Generative Pre-Training》

原文:For our model architecture, we use the Transformer, which has been shown to perform strongly on various tasks such as machine translation, document generation, and syntactic parsing. This model choice provides us with a more structured memory for handling long-term dependencies in text, compared to alternatives like recurrent networks, resulting in robust transfer performance across diverse tasks.

翻譯:對于我們的模型架構(gòu),我們使用了Transformer,它在機(jī)器翻譯、文檔生成和句法解析等各種任務(wù)上都表現(xiàn)出色。與循環(huán)網(wǎng)絡(luò)等替代方案相比,這種模型選擇為我們提供了更結(jié)構(gòu)化的記憶來處理文本中的長期依賴關(guān)系,從而在多樣化任務(wù)中實(shí)現(xiàn)了穩(wěn)健的遷移性能。

Transformer

57659ffe-d673-11ef-9310-92fbcf53809c.jpg

Transformer架構(gòu)圖,引自《A Survey of Large Language Models》

理解了Transformer的優(yōu)勢后,讓我們先忘記RNN,回到Transformer本身。從架構(gòu)圖中可知,Transformer架構(gòu)分為兩部分:

編碼器:用于理解輸入序列的內(nèi)容。它讀取輸入數(shù)據(jù),并將其轉(zhuǎn)換成一個連續(xù)的表示,這個表示捕捉了輸入數(shù)據(jù)的關(guān)鍵信息和上下文。

解碼器:用于生成輸出序列,使用編碼器的輸出和之前生成的輸出來預(yù)測序列中的下一個元素。

以文本翻譯為例,輸入“我愛喝咖啡”,并要求模型將其翻譯成英文。編碼器首先工作,通過理解每個詞元本身的含義,以及其上下文的依賴關(guān)系,形成一種向量形式的中間表示,并傳遞給解碼器,這里面包含了整個序列的語義,即“我愛喝咖啡”這句話的完整含義。解碼器結(jié)合該信息,從零開始,不斷地預(yù)測下一個最可能的英文詞元并生成詞元,直至完成翻譯。

值得注意的是,在解碼器的多頭注意力層(也叫交叉注意力層,或編碼器-解碼器自注意力層),編碼器所提供的輸出中,“我愛喝咖啡”這句話的含義已經(jīng)明示。這對于文本翻譯這種序列到序列的任務(wù)而言,可以確保生成內(nèi)容的準(zhǔn)確性,但對于預(yù)測類的任務(wù)而言,無疑是提前公布了答案,會降低預(yù)測的價值。

Transformer to GPT

隨著技術(shù)的演進(jìn),基于Transformer已經(jīng)形成了三種常見架構(gòu)

編碼器-解碼器架構(gòu)(Encoder-Decoder Architecture),參考模型:T5

編碼器架構(gòu)(Encoder-Only Architecture),參考模型:BERT

解碼器架構(gòu)(Decoder-Only Architecture),參考模型:GPT(來自O(shè)penAI)、Qwen(來自通義千問)、GLM(來自清華大學(xué))

其中編碼器-解碼器架構(gòu),適合進(jìn)行序列到序列的任務(wù),比如文本翻譯、內(nèi)容摘要。編碼器架構(gòu),適合需要對輸入內(nèi)容分析但不需要生成新序列的任務(wù),比如情感分析、文本分類。解碼器架構(gòu),適合基于已有信息生成新序列的任務(wù),比如文本生成、對話系統(tǒng)。

解碼器架構(gòu)下,又有兩個分支:

因果解碼器(Causal Decoder),參考模型:GPT、Qwen

前綴解碼器(Prefix Decoder),參考模型:GLM

二者之間的主要差異在于注意力的模式。因果解碼器的特點(diǎn),是在生成每個詞元時,只能看到它之前的詞元,而不能看到它之后的詞元,這種機(jī)制通過掩碼實(shí)現(xiàn),確保了模型在生成當(dāng)前詞元時,不會利用到未來的信息,我們稱之為“單向注意力”。前綴解碼器對于輸入(前綴)部分使用“雙向注意力”進(jìn)行編碼,這意味著前綴中的每個詞元都可以訪問前綴中的所有其他詞元,但這僅限于前綴部分,生成輸出時,前綴解碼器仍然采用單向的掩碼注意力,即每個輸出詞元只能依賴于它之前的所有輸出詞元。

578112d4-d673-11ef-9310-92fbcf53809c.jpg

不同架構(gòu)的注意力模式比較,引自《A Survey of Large Language Models》

可能有些晦澀,讓我們參考《大語言模型概述》的例子來說明一下。該例子中,已經(jīng)存在了“大家共同努力”這六個詞元,模型正在思考如何產(chǎn)生下一個新的詞元。此時,“大家共”是輸入(前綴),“同努力”是模型解碼已經(jīng)產(chǎn)生的輸出,藍(lán)色代表可以前綴詞元之間可以互相建立依賴關(guān)系,灰色代表掩碼,無法建立依賴關(guān)系。

因果解碼器和前綴解碼器的差異在“大家共”(前綴)所對應(yīng)的3*3的方格中,兩種解碼器都會去分析前綴詞元之間的依賴關(guān)系。對于因果解碼器而言,哪怕詞元是前綴的一部分,也無法看到其之后的詞元,所以對于前綴中的“家”(對應(yīng)第二行第二列),它只能建立與“大”(第二行第一列)的依賴關(guān)系,無法看到“共”(第二行第三列)。而在前綴解碼器中,“家”可以同時建立與“大”和“共”的依賴關(guān)系。

5792243e-d673-11ef-9310-92fbcf53809c.jpg

最后貼一張圖大家感受一下不同架構(gòu)之間注意力模式上的差異。

單向注意力和雙向注意力,有各自的優(yōu)勢,例如,對于文本生成任務(wù),可能會優(yōu)先考慮單向注意力以保持生成的連貫性。而對于需要全面理解文本的任務(wù),可能會選擇雙向注意力以獲取更豐富的上下文信息。如上圖分別是編碼器架構(gòu)(BERT)、編碼器-解碼器架構(gòu)(T5)、因果解碼器架構(gòu)(GPT)、前綴解碼器架構(gòu)(T5、GLM)的注意力模式。

這些架構(gòu)在當(dāng)今的大語言模型階段都有應(yīng)用,其中因果解碼器架構(gòu)是目前的主流架構(gòu),包括Qwen-2.5在內(nèi)的眾多模型采用的都是這種架構(gòu)。具體可以參考下面的大語言模型架構(gòu)配置圖,其中類別代表架構(gòu),L 表示隱藏層層數(shù),N 表示注意力頭數(shù),H 表示隱藏狀態(tài)的大小。

57a0c28c-d673-11ef-9310-92fbcf53809c.jpg

大語言模型架構(gòu)配置表,引自《A Survey of Large Language Models》

從2018年GPT-1開始,模型的基本原理確實(shí)經(jīng)歷了一些變化和改進(jìn),但是探討其基本架構(gòu)仍然有價值。

GPT

時間來到2018年,OpenAI團(tuán)隊(duì)的論文《Improving Language Understanding by Generative Pre-Training》橫空出世,它提出可以在大規(guī)模未標(biāo)注數(shù)據(jù)集上預(yù)訓(xùn)練一個通用的語言模型,再在特定NLP子任務(wù)上進(jìn)行微調(diào),從而將大模型的語言表征能力遷移至特定子任務(wù)中。其創(chuàng)新之處在于,提出了一種新的預(yù)訓(xùn)練-微調(diào)框架,并且特別強(qiáng)調(diào)了生成式預(yù)訓(xùn)練在語言模型中的應(yīng)用。生成式,指的是通過模擬訓(xùn)練數(shù)據(jù)的統(tǒng)計(jì)特性來創(chuàng)造原始數(shù)據(jù)集中不存在的新樣本,這使得GPT在文本生成方面具有顯著的優(yōu)勢。

57ba7bb4-d673-11ef-9310-92fbcf53809c.jpg

GPT模型架構(gòu),引自GPT-1的論文《Improving Language Understanding by Generative Pre-Training》

上圖來自于GPT-1的論文,圖片左側(cè)是GPT涉及到的核心組件,這是本文的重點(diǎn)內(nèi)容。圖片右側(cè)是針對不同NLP任務(wù)的輸入格式,這些格式是為了將各種任務(wù)的輸入數(shù)據(jù)轉(zhuǎn)換為Transformer模型能夠處理的序列形式,用于模型與訓(xùn)練的過程。

GPT使用了Transformer的解碼器部分,同時舍棄了編碼器中的交叉注意力機(jī)制層,保留了其余部分。整體上模型結(jié)構(gòu)分為三部分:

輸入層(Input Layer):將文本轉(zhuǎn)換為模型可以處理的格式,涉及分詞、詞嵌入、位置編碼等。

隱藏層(Hidden Layer):由多個Transformer的解碼器堆疊而成,是GPT的核心,負(fù)責(zé)模型的理解、思考的過程。

輸出層(Output Layer):基于隱藏層的最終輸出生成為模型的最終預(yù)測,在GPT中,該過程通常是生成下一個詞元的概率分布。

在隱藏層中,最核心的兩個結(jié)構(gòu)分別是

掩碼多頭自注意力層(Masked Multi Self Attention Layers,對應(yīng)Transformer的Masked Multi-Head Attention Layers,簡稱MHA,也叫MSA)。

前置反饋網(wǎng)絡(luò)層(Feed Forward Networks Layers,簡稱FFN,與MLP類似)。

MHA的功能是理解輸入內(nèi)容,它使模型能夠在處理序列時捕捉到輸入數(shù)據(jù)之間的依賴關(guān)系和上下文信息,類似于我們的大腦在接收到新的信息后進(jìn)行理解的過程。FFN層會對MHA的輸出進(jìn)行進(jìn)一步的非線性變換,以提取更高級別的特征,類似于我們的大腦在思考如何回應(yīng),進(jìn)而基于通過訓(xùn)練獲得的信息和知識,產(chǎn)生新的內(nèi)容。

舉個例子,當(dāng)我們輸入“美國2024年總統(tǒng)大選勝出的是”時,MHA會理解每個詞元的含義及其在序列中的位置,讀懂問題的含義,并給出一種中間表示,F(xiàn)FN層則會對這些表示進(jìn)行進(jìn)一步的變換,進(jìn)而從更高級別的特征中得到最相近的信息——“川普”。

57bf41ee-d673-11ef-9310-92fbcf53809c.jpg

MHA和FFN的多層結(jié)構(gòu),引自3Blue1Brown的視頻《GPT是什么?直觀解釋Transformer》

隱藏層不只有一層,而是一種多層嵌套的結(jié)構(gòu)。如上圖,Attention是MHA,Multilayer Perceptron(MLP)是FFN,它們就像奧利奧餅干一樣彼此交錯。這是為了通過建立更深的網(wǎng)絡(luò)結(jié)構(gòu),幫助模型在不同的抽象層次上捕捉序列內(nèi)部的依賴關(guān)系,最終將整段文字的所有關(guān)鍵含義,以某種方式充分融合到最后的輸出中。隱藏層的層數(shù)并不是越多越好,這取決于模型的設(shè)計(jì),可以參考前文貼過的模型參數(shù)表,其中的L就代表該模型的隱藏層的層數(shù)。較新的Qwen2-72B有80層,GPT-4有120層。

目前主流的大模型,在這兩層都進(jìn)行了不同程度的優(yōu)化。比如Qwen2使用分組查詢注意力(Grouped Multi-Query Attention,簡稱GQA)替代MHA來提高吞吐量,并在部分模型上嘗試使用混合專家模型(Mixture-of-Experts,簡稱MoE)來替代傳統(tǒng)FFN。GPT-4則使用了多查詢注意力(Multi-Query Attention)來減少注意力層的KV緩存的內(nèi)存容量,并使用了具有16個專家的混合專家模型。關(guān)于這里提到的較新的技術(shù),在后文中會詳細(xì)闡述。

57cd4ea6-d673-11ef-9310-92fbcf53809c.jpg

編碼器-解碼器架構(gòu)與解碼器架構(gòu),引自Llama的論文

此外,模型還保留了Transformer的其他部分,包括了(參考上圖右半部分,該圖片的細(xì)節(jié)更多一些)

詞嵌入 (Embedding,對應(yīng)GPT論文中的Text & Position Embed)。

位置編碼(Positional Encodings,簡稱PE,對應(yīng)GPT論文中的Text & Position Embed,Rotary Positional Encodings是位置編碼的一種技術(shù))。

層歸一化(Layer Norm,上圖中表示為RMS Norm,通常與殘差連接一起用,Layer Norm和RMS Norm是歸一化的兩種不同技術(shù))。

線性層(Linear,負(fù)責(zé)將FFN層的輸出通過線性變換,通常用于將模型的輸出映射到所需的維度)。

Softmax(Softmax層,負(fù)責(zé)生成概率分布,以便進(jìn)行最終的預(yù)測)。

這些部分單獨(dú)拿出來看會有些抽象,讓我們嘗試將一段文本輸入給大模型,看一看大模型的整體處理流程

1.分詞(Tokenization):首先大模型會進(jìn)行分詞,將文本內(nèi)容分割成一系列的詞元(token)。

2.詞嵌入(Embedding):分詞后的詞元將被轉(zhuǎn)換為高維空間中的向量表示,向量中包含了詞元的語義信息。

3.位置編碼(PE):將詞元的在序列中的位置信息,添加到詞嵌入中,以告知模型每個單詞在序列中的位置。

4.掩碼多頭自注意力層(MHA):通過自注意力機(jī)制捕捉序列內(nèi)部詞元間的依賴關(guān)系,形成對輸入內(nèi)容的理解。

5.前饋反饋網(wǎng)絡(luò)(FFN):基于MHA的輸出,在更高維度的空間中,從預(yù)訓(xùn)練過程中學(xué)習(xí)到的特征中提取新的特征。

6.線性層(Linear):將FFN層的輸出映射到詞匯表的大小,來將特征與具體的詞元關(guān)聯(lián)起來,線性層的輸出被稱作logits。

7.Softmax:基于logits形成候選詞元的概率分布,并基于解碼策略選擇具體的輸出詞元。

在該流程中,我故意省略了層歸一化,層歸一化主要是在模型訓(xùn)練過程中改善訓(xùn)練過程,通過規(guī)范化每一層的輸出,幫助模型更穩(wěn)定地學(xué)習(xí)。而在使用模型時,輸入數(shù)據(jù)會按照訓(xùn)練階段學(xué)到的層歸一化參數(shù)進(jìn)行處理,但這個參數(shù)是固定的,不會動態(tài)調(diào)整,從這個意義上說,層歸一化不會直接影響模型的使用過程。

分詞、詞嵌入、位置編碼,屬于輸入層,MHA、FFN屬于隱藏層,線性層、Softmax屬于輸出層。可能讀到這里,對于輸入層的理解會相對清晰,對其他層的理解還有些模糊。沒關(guān)系,它們的作用有簡單的幾句話很難描述清楚,請繼續(xù)往下讀,在讀完本文的所有內(nèi)容后,再回頭來看會比較清楚。本文中,我們會圍繞著隱藏層和輸出層來詳細(xì)介紹,尤其是其中GPT的核心——隱藏層。

自注意力機(jī)制(Attention)

MHA(多頭注意力)

MHA,全拼Multi-Head Attention(多頭注意力),在GPT等因果解碼器架構(gòu)下模型中,指掩碼多頭自注意力,全拼Masked Multi Self Attention。“掩碼”賦予了GPT單向注意力的特性,這符合因果解碼器的架構(gòu),“多頭”使GPT可以從不同角度發(fā)現(xiàn)特征,自注意力中的“自”指的是模型關(guān)注的是單一詞元序列,而不是不同序列之間的特征,比如RNN的循環(huán)注意力圍繞的是同一序列的不同時間步。

多頭注意力機(jī)制的概念,來自于上古時期Google的論文《Attention Is All You Need》 。

57d5fa24-d673-11ef-9310-92fbcf53809c.jpg

縮放點(diǎn)積注意力(左)和多頭注意力(右),來自《Attention Is All You Need》

從上圖可以看到,多頭注意力是由多個并行運(yùn)行的縮放點(diǎn)積注意力組成,其中縮放點(diǎn)積注意力的目的,是幫助模型在大量數(shù)據(jù)中快速找到并專注于那些對當(dāng)前任務(wù)最有價值的信息,讓我們由此講起。

單頭注意力(縮放點(diǎn)積注意力)

57e3e3be-d673-11ef-9310-92fbcf53809c.png

了解模型計(jì)算注意力的過程是很重要的,Transformer團(tuán)隊(duì)使用了上圖中非常簡潔的公式來表達(dá)縮放點(diǎn)積注意力的計(jì)算過程。首先要再次明確一下,注意力的計(jì)算是詞元維度的,它計(jì)算的是當(dāng)前詞元與上下文中其他詞元的依賴關(guān)系,并在此基礎(chǔ)上調(diào)整詞元本身的語義。比如在“我配擁有一杯咖啡嗎?”中,會分別計(jì)算“我”、“配”、“擁有”、“一杯”、“咖啡”、“嗎?”各自的注意力,并分別調(diào)整每個詞元的語義。 整個公式可以看作兩部分,首先是含softmax在內(nèi)的注意力權(quán)重計(jì)算過程,其作用是計(jì)算“當(dāng)前詞元”與“其他詞元”(包含當(dāng)前詞元自身)之間的注意力權(quán)重,來體現(xiàn)他們之間的依賴程度,其結(jié)果是一個總和為1的比例分布。比如輸入“我愛你”時,“你”會分別計(jì)算與“我”、“愛”、“你”三個詞元的注意力權(quán)重,并獲得一個比例分布比如[0.2,0.3,0.5]。? 然后,這些注意力權(quán)重會分別與“其他詞元”各自的57f02d18-d673-11ef-9310-92fbcf53809c.png相乘獲得“當(dāng)前詞元”的數(shù)據(jù)點(diǎn)在向量空間中偏移的方向和距離。比如,我們設(shè)原本“你”的數(shù)據(jù)點(diǎn)的坐標(biāo)是57fdde18-d673-11ef-9310-92fbcf53809c.png,那么在注意力計(jì)算后57fdde18-d673-11ef-9310-92fbcf53809c.png的值會變成5825dbb6-d673-11ef-9310-92fbcf53809c.png,其計(jì)算的方式就是58348422-d673-11ef-9310-92fbcf53809c.png。如果說57fdde18-d673-11ef-9310-92fbcf53809c.png就是在前文What is Attention小節(jié)中舉例的“科技巨頭蘋果”中“蘋果(實(shí)體)”所在的位置,那么此時5825dbb6-d673-11ef-9310-92fbcf53809c.png就是“蘋果公司(概念)”所在的位置。 上述描述可能還不夠透徹,請跟著我進(jìn)一步逐步拆解其計(jì)算過程。 首先,X為輸入的詞元序列的嵌入矩陣,包含了詞元的語義信息和位置信息,矩陣中的每一列就是一個詞元的向量,列的長度就是隱藏層的參數(shù)量,比如GPT-3的隱藏層參數(shù)量是12288,那么在輸入100個詞元的情況下,矩陣的大小就是100 * 12288。 585d8d90-d673-11ef-9310-92fbcf53809c.png是通過訓(xùn)練得到的三個權(quán)重矩陣,在模型訓(xùn)練過程中這三個參數(shù)矩陣可以采用隨機(jī)策略生成,然后通過訓(xùn)練不斷調(diào)整其參數(shù)。輸入矩陣X通過與585d8d90-d673-11ef-9310-92fbcf53809c.png相乘,可以分別得到Q、K、V三個矩陣。

58773d26-d673-11ef-9310-92fbcf53809c.jpg

QKV計(jì)算公式,引自《A Survey of Large Language Models》? 那么Q、K、V分別是什么?

原文:An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. The output is computed as a weighted sum of the values, where the weight assigned to each value is computed by a compatibility function of the query with the corresponding key. 翻譯:注意力函數(shù)可以被描述為將一個查詢(query)和一組鍵值對(key-value pairs)映射到一個輸出(output)的過程,其中查詢、鍵、值和輸出都是向量。輸出是通過值的加權(quán)和計(jì)算得到的,每個值所分配的權(quán)重是通過查詢與相應(yīng)鍵的兼容性函數(shù)(compatibility function)計(jì)算得出的。

我們可以認(rèn)為

Q:查詢,通??梢哉J(rèn)為模型代表當(dāng)前的“問題”或“需求”,其目的是探尋其他詞元與當(dāng)前詞元的相關(guān)性。

K:鍵,即關(guān)鍵信息,這些信息用于判斷詞元的相關(guān)性,可能包括語義信息、語法角色或其他與任務(wù)相關(guān)的信息。

V:值,即對于鍵所標(biāo)識的關(guān)鍵信息的具體“回應(yīng)”或“擴(kuò)展”,可以認(rèn)為它是鍵背后的詳細(xì)信息。

Q屬于當(dāng)前詞元,而K、V都屬于其他詞元,每個詞元的K、V之間都是相互綁定的。就像是一本書,V就是這本書的摘要、作者、具體內(nèi)容,K就是這本書的標(biāo)簽和分類。 每個詞元,都會用自身的Q和其它詞元的K,來衡量588a9060-d673-11ef-9310-92fbcf53809c.png588f0302-d673-11ef-9310-92fbcf53809c.png之間的相關(guān)性。衡量的方式就是計(jì)算QK之間的點(diǎn)積,在公式中體現(xiàn)為589c62f4-d673-11ef-9310-92fbcf53809c.png。點(diǎn)積運(yùn)算是綜合衡量兩個向量在各個維度上的相關(guān)性的一種方式,比如58a85668-d673-11ef-9310-92fbcf53809c.png,其點(diǎn)積的結(jié)果就是58b4d816-d673-11ef-9310-92fbcf53809c.png,即對應(yīng)分量的乘積之和。相關(guān)性的大小,就是通過點(diǎn)積運(yùn)算獲得的結(jié)果的大小體現(xiàn)的。? 舉個例子,以“有一天,一位勇敢的探險家”作為輸入序列給大模型

Q:假設(shè)Q代表著“查找最相關(guān)的信息點(diǎn)”這個概念,那么在“探險家”這個詞元上,Q所對應(yīng)的這一列,可能代表“和探險家最相關(guān)的信息點(diǎn)是什么?”,那它尋找的可能就是“冒險”、“勇氣”、“積極”等特征。

K:在“勇敢的”這個詞元上,K可能在語義上與“冒險”、“勇氣”相關(guān)聯(lián),在語法上與“修飾語”相關(guān)聯(lián),在情感上與“積極”相關(guān)聯(lián)。這些都屬于關(guān)鍵信息。

V:在“探險家”這個token上,如果Q是“和探險家最相關(guān)的信息點(diǎn)是什么”,那么V向量將提供與“探險家”直接相關(guān)的上下文信息,比如探險家的行為、特征或相關(guān)事件。

對于“探險家”所對應(yīng)的Q的向量,會分別與序列中的其他詞元對應(yīng)的K向量計(jì)算點(diǎn)積,獲得與“有一天”、“一位”、“勇敢的”、“探險家”這些詞元點(diǎn)積的值,這代表著二者之間的語義相似度。有可能,“探險家”由于其也具有“冒險”、“勇氣”等關(guān)鍵特征,其與“勇敢的”的點(diǎn)積相對更大,那么其在歸一化后的占比也會更高,在GPT的理解中,“勇敢的”對于“探險家”而言,就更重要。 關(guān)于為何要使用點(diǎn)積進(jìn)行運(yùn)算,論文中也進(jìn)行了分析,文中分析了加性注意力和點(diǎn)積注意力的這兩種兼容性函數(shù)之間的差異,發(fā)現(xiàn)點(diǎn)積注意力能夠捕捉序列中元素間的長距離依賴關(guān)系的同時,在計(jì)算上高效且能穩(wěn)定梯度。

原文:The two most commonly used attention functions are additive attention [ 2], and dot-product (multi-plicative) attention. Dot-product attention is identical to our algorithm, except for the scaling factor. Additive attention computes the compatibility function using a feed-forward network with a single hidden layer. While the two are similar in theoretical complexity, dot-product attention is much faster and more space-efficient in practice, since it can be implemented using highly optimized matrix multiplication code. 翻譯:兩種最常用的注意力函數(shù)是加性注意力[2]和點(diǎn)積(乘法)注意力。點(diǎn)積注意力與我們的算法相同,除了有一個縮放因子。加性注意力使用具有單個隱藏層的前饋網(wǎng)絡(luò)來計(jì)算兼容性函數(shù)。雖然兩者在理論上的復(fù)雜度相似,但在實(shí)踐中,點(diǎn)積注意力要快得多,也更節(jié)省空間,因?yàn)樗梢岳酶叨葍?yōu)化的矩陣乘法代碼來實(shí)現(xiàn)。

點(diǎn)積的結(jié)果會除以58c27aca-d673-11ef-9310-92fbcf53809c.png的平方根,來對點(diǎn)積的結(jié)果進(jìn)行縮放,確保數(shù)值穩(wěn)定,這一段在原文中也有表述。通過將“探險家”與每一個詞元都進(jìn)行一次計(jì)算,就可以得到一個向量,向量中的每一個元素代表著“探險家”與對應(yīng)詞元的點(diǎn)積的值。之后進(jìn)行掩碼(Mask),在前文中提到,在因果解碼器中,當(dāng)前詞元是無法看到自身之后的詞元的,所以需要將當(dāng)前詞元之后的所有點(diǎn)積置為負(fù)無窮,以便使其在歸一化后的占比為零。? 最后對點(diǎn)積softmax進(jìn)行歸一化,就可以得到一個總和為1的一個比例分布,這個分布就叫“注意力分布”。下面表格中“探險家”所對應(yīng)的那一列,就是“探險家”的注意力分布,代表著從“探險家”的視角出發(fā),每一個詞元對于自身內(nèi)容理解的重要程度。

KeyQuery Q 有一天 Q 一位 勇敢的 探險家
K 有一天 1 0.13 0.03 0.02
K 一位 0 0.87 0.1 0.05
K 勇敢的 0 0 0.87 0.08
K 探險家 0 0 0 0.85

一個可能的Softmax后的概率分布(每一列的和都為1,灰色代表掩碼)

最后,將Softmax后獲得的注意力分布,分別與每一個K對應(yīng)的V相乘,通過注意力權(quán)重加權(quán)求和,就可以得到一個向量,稱為上下文向量。它就是58cf3d6e-d673-11ef-9310-92fbcf53809c.png求解出來的值,其中包含了序列中與當(dāng)前元素最相關(guān)的信息,可以認(rèn)為是模型在結(jié)合了上下文的信息后,對序列內(nèi)容的理解的一種表示形式。

多頭注意力

關(guān)于什么是多頭注意力,為何使用多頭注意力,論文中有這樣一段描述,各位一看便知。

原文:Instead of performing a single attention function with dmodel-dimensional keys, values and queries, we found it beneficial to linearly project the queries, keys and values h times with different, learned linear projections to dk, dk and dv dimensions, respectively. On each of these projected versions of queries, keys and values we then perform the attention function in parallel, yielding dv-dimensional output values. These are concatenated and once again projected, resulting in the final values, as depicted in Figure 2. Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions. With a single attention head, averaging inhibits this. 翻譯:我們發(fā)現(xiàn),與其執(zhí)行一個具有dmodel維鍵、值和查詢的單一注意力函數(shù),不如將查詢、鍵和值線性投影h次,使用不同的、學(xué)習(xí)得到的線性投影到dk、dk和dv維度。然后我們并行地在這些投影版本的查詢、鍵和值上執(zhí)行注意力函數(shù),得到dv維的輸出值。這些輸出值被連接起來,再次被投影,得到最終的值,如圖2所示。多頭注意力允許模型同時關(guān)注不同表示子空間中的信息,以及不同位置的信息。而單一注意力頭通過平均操作抑制了這一點(diǎn)。

多頭注意力的“多頭”,指的是點(diǎn)積注意力函數(shù)實(shí)例有多種。不同的頭,他們的585d8d90-d673-11ef-9310-92fbcf53809c.png都可能不同,這可能意味著詞元會從不同角度去發(fā)問,同時表達(dá)出不同角度的特征,比如一個頭可能專注于捕捉語法信息,另一個頭可能更關(guān)注語義信息,還有一個頭可能更關(guān)注情感分析。這對于充分捕獲上下文信息,尤其是在處理復(fù)雜的序列數(shù)據(jù)時,變得更加強(qiáng)大和靈活。? 這種優(yōu)化并沒有使計(jì)算的復(fù)雜度升高,論文中特別提到

原文:In this work we employ h = 8 parallel attention layers, or heads. For each of these we use dk = dv = dmodel/h = 64. Due to the reduced dimension of each head, the total computational cost is similar to that of single-head attention with full dimensionality.

翻譯:在這項(xiàng)工作中,我們使用了 h=8 個并行的注意力層,或者說是“頭”(heads)。對于每一個頭,我們設(shè)置 dk=dv=dm/h=64 。這里的dk和dv分別代表鍵(keys)和值(values)的維度,而58fff256-d673-11ef-9310-92fbcf53809c.png是模型的總維度。

進(jìn)一步舉個例子來解釋一下這段內(nèi)容。下面是節(jié)選的GPT-3模型配置,N代表注意力頭數(shù),H代表隱藏狀態(tài)的大小(參數(shù)量)。在單頭注意力的情況下,每個頭都是12288維,而在多頭注意力的情況下,頭與頭之間會均分參數(shù)量,每個頭的參數(shù)量只有12288/96 =128維,并且不同頭的注意力計(jì)算都是并行的。

590e7998-d673-11ef-9310-92fbcf53809c.jpg

GPT-3模型配置,引自《A Survey of Large Language Models》 如今,這種設(shè)計(jì)隨著技術(shù)的發(fā)展有所演進(jìn),Q的頭數(shù)在標(biāo)準(zhǔn)的MHA下,通常與KV的頭數(shù)相同,然后目前主流的大模型都進(jìn)行KV緩存的優(yōu)化,Q和KV的頭數(shù)可能并不相同。比如我們常用的Qwen2-72B,其隱藏層有8192個參數(shù),有64個Q和8個KV頭,每個頭的參數(shù)量是128。數(shù)據(jù)來自于Qwen2的技術(shù)報(bào)告(如下圖),具體技術(shù)細(xì)節(jié)在后續(xù)GQA部分會有詳細(xì)說明。

59161220-d673-11ef-9310-92fbcf53809c.jpg

Qwen2系列模型參數(shù),引自《QWEN2 TECHNICAL REPORT》? 回到計(jì)算過程中,多頭注意力,會在每個頭都按照縮放點(diǎn)積注意力的方式進(jìn)行運(yùn)算后,將他們產(chǎn)生的上下文向量進(jìn)行連接,基于輸出投影矩陣5925ea88-d673-11ef-9310-92fbcf53809c.png進(jìn)行變換。這個過程是為了綜合不同注意力頭所提供的信息,就像是綜合考慮96個人的不同意見,并形成最終的結(jié)論。 這種綜合的過程并不是簡單地求平均值,而是通過5925ea88-d673-11ef-9310-92fbcf53809c.png進(jìn)行的連接操作。

59528a2a-d673-11ef-9310-92fbcf53809c.png

具體來說,首先多頭注意力會獲取每個單頭注意力所提供的上下文向量,并在特征維度上進(jìn)行連接,形成一個更長的向量,對應(yīng)公式中的5960377e-d673-11ef-9310-92fbcf53809c.png,其中h是注意力頭數(shù)。拼接后的矩陣的維度是隱藏層的維度,比如GPT-3有96個頭,每個頭有128*12288維,那么拼接后形成的就是一個12288*12288維的矩陣。5925ea88-d673-11ef-9310-92fbcf53809c.png是模型在訓(xùn)練過程中學(xué)習(xí)到的關(guān)鍵組成部分,將拼接后的矩陣向量基于該矩陣做一次線性變換,有助于模型在多頭注意力的基礎(chǔ)上進(jìn)一步優(yōu)化特征表示,提高模型的整體性能。 至此,標(biāo)注的MHA的相關(guān)內(nèi)容就結(jié)束了。接下來MHA層的輸出,會傳遞到下一層,可能是FFN,也可能是MoE,取決于具體的模型。在此之前,先來看一下大模型對注意力層的優(yōu)化。 ?

KV Cache

前文提到,因果解碼器的特點(diǎn),是在生成每個詞元時,只能看到它之前的詞元,而不能看到它之后的詞元。也就是說,無論模型在自回歸過程中生成多少詞元,此前已經(jīng)生成的詞元對上下文內(nèi)容的理解,都不會發(fā)生任何改變。因此我們在自回歸過程中,不需要在生成后續(xù)詞元時重新計(jì)算已經(jīng)生成的詞元的注意力。

59773122-d673-11ef-9310-92fbcf53809c.jpg

我是真的愛喝咖啡? 但是,新生成的詞元的注意力需要計(jì)算,這會涉及新生成的詞元的Q與其它詞元的K計(jì)算點(diǎn)積,并使用其它詞元的V生成上下文向量。而此前生成的詞元K、V,實(shí)際上始終不會改變,因此我們可以將他們緩存起來,在新生成的詞元計(jì)算注意力的時候直接使用,避免重復(fù)計(jì)算,這就是KV緩存。如上圖,已經(jīng)生成的詞元“我”、“愛”、“喝”都不會重新計(jì)算注意力,但是新生成的“咖啡”需要計(jì)算注意力,期間我們需要用到的是“咖啡”的 Q,和“我”、“愛”、“喝”的K、V。 KV緩存的核心思想是:

緩存不變性:在自回歸生成過程中,已經(jīng)生成的詞元的鍵(Key,K)和值(Value,V)不會改變。

避免重復(fù)計(jì)算:由于K和V不變,模型在生成新詞元時,不需要重新計(jì)算這些已生成詞元的K和V。

動態(tài)更新:當(dāng)新詞元生成時,它的查詢(Query,Q)會與緩存的K進(jìn)行點(diǎn)積計(jì)算,以確定其與之前所有詞元的關(guān)聯(lián)。同時,新詞元的K和V會被計(jì)算并添加到緩存中,以便用于下一個詞元的生成。

在使用KV Cache的情況下,大模型的推理過程常被分為兩個階段

預(yù)填充階段(Prefill):模型處理輸入序列,計(jì)算它們的注意力,并存儲K和V矩陣到KV Cache中,為后續(xù)的自回歸過程做準(zhǔn)備。

解碼階段(Decode):模型使用KV緩存中的信息,逐個生成輸出新詞元,計(jì)算其注意力,并將其K、V添加到KV Cache中。

其中預(yù)填充階段是計(jì)算密集型的,因?yàn)槠渖婕暗搅司仃嚦朔ǖ挠?jì)算,而解碼階段是內(nèi)存密集型的,因?yàn)樗婕暗搅舜罅繉彺娴脑L問。緩存使用的是GPU的顯存,因此我們下一個面臨的問題是,如何減少KV Cache的顯存占用。?

MQA

2019年,Google團(tuán)隊(duì)發(fā)布了論文《Fast Transformer Decoding: One Write-Head is All You Need》,并提出了多查詢注意力的這一MHA的架構(gòu)變種,其全拼是Multi-Query Attention,簡稱MQA,GPT-4模型就是采用的MQA來實(shí)現(xiàn)其注意力層。? Google為何要提出,論文中提到

原文1:Transformer relies on attention layers to communicate information between and across sequences. One major challenge with Transformer is the speed of incremental inference. As we will discuss, the speed of incremental Transformer inference on modern computing hardware is limited by the memory bandwidth necessary to reload the large "keys" and "values" tensors which encode the state of the attention layers. 原文2:We propose a variant called multi-query attention, where the keys and values are shared across all of the different attention "heads", greatly reducing the size of these tensors and hence the memory bandwidth requirements of incremental decoding. 翻譯1:Transformer依賴于注意力層來在序列之間和內(nèi)部傳遞信息。Transformer面臨的一個主要挑戰(zhàn)是增量推理的速度。正如我們將要討論的,現(xiàn)代計(jì)算硬件上增量Transformer推理的速度受到重新加載注意力層狀態(tài)所需的大型“鍵”和“值”張量內(nèi)存帶寬的限制。 翻譯2:我們提出了一種變體,稱為多查詢注意力(Multi-Query Attention),其中鍵(keys)和值(values)在所有不同的注意力“頭”(heads)之間共享,大大減少了這些張量的大小,從而降低了增量解碼的內(nèi)存帶寬需求。

增量推理(Incremental Inference)是指在處理序列數(shù)據(jù)時,模型逐步生成輸出結(jié)果的過程。張量其實(shí)就是多維數(shù)組,在注意力層主要指的是各個與注意力有關(guān)的權(quán)重矩陣。不難看出,Google團(tuán)隊(duì)注意到了K、V所帶來的巨大內(nèi)存帶寬占用,通過MQA將K、V在不同注意力頭之間共享,提高了模型的性能。

59846cc0-d673-11ef-9310-92fbcf53809c.jpg

MHA、GQA、MQA的比較,引自《GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints》 我們用GPT-3舉例,它有96個自注意力頭。那么在傳統(tǒng)MHA中,生成一個新的詞元,都需要重新計(jì)算96個Q、K、V矩陣。而在MQA中,只需要計(jì)算96個Q矩陣,再計(jì)算1次K、V矩陣,再將其由96個頭共享。每次Q、K、V的計(jì)算都需要消耗內(nèi)存帶寬,通過降低K、V的計(jì)算次數(shù),可以有效優(yōu)化模型的解碼速度。

5988b834-d673-11ef-9310-92fbcf53809c.jpg

在WMT14英德(English to German)翻譯任務(wù)上的性能比較,來自《Fast Transformer Decoding: One Write-Head is All You Need》 BLEU是一種評估機(jī)器翻譯質(zhì)量的自動化指標(biāo),分?jǐn)?shù)越高表示翻譯質(zhì)量越好。根據(jù)論文中對性能比較的結(jié)果,MQA確實(shí)相對于MHA,在翻譯效果上的性能有所下降,但是相對于其他減少注意力頭數(shù)量等替代方案而言,效果仍然很好。 實(shí)際上由于KV緩存的使用,MQA降低的主要資源消耗,并不是內(nèi)存帶寬,而是內(nèi)存占用,也就是KV緩存的大小。?

GQA

GQA,來自于Google團(tuán)隊(duì)的2023年的論文《GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints》,GQA的全拼是Grouped Query Attention(分組查詢注意力),被包括Llama3、Qwen2在內(nèi)的眾多主流模型廣泛采用。 論文中提到

原文:However, multi-query attention (MQA) can lead to quality degradation and training instability, and it may not be feasible to train separate models optimized for quality and inference. Moreover, while some language models already use multiquery attention, such as PaLM (Chowdhery et al., 2022), many do not, including publicly available language models such as T5 (Raffel et al., 2020) and LLaMA (Touvron et al., 2023). 翻譯:然而,多查詢注意力(MQA)可能導(dǎo)致質(zhì)量下降和訓(xùn)練不穩(wěn)定性,并且可能不切實(shí)際去訓(xùn)練分別針對質(zhì)量和推理優(yōu)化的獨(dú)立模型。此外,雖然一些語言模型已經(jīng)采用了多查詢注意力,例如PaLM(Chowdhery等人,2022年),但許多模型并沒有采用,包括公開可用的語言模型,如T5(Raffel等人,2020年)和LLaMA(Touvron等人,2023年)。

5999f086-d673-11ef-9310-92fbcf53809c.jpg

MHA、MQA、GQA的性能比較,引自《GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints》? 它的本質(zhì)其實(shí)是對MHA、MQA的一種折中,在顯存占用和推理性能上的一種平衡。上圖是對MQA、GQA、MHA三種注意力模式下模型性能的比較。(XXL代表Extra Extra Large,超大型模型,具備最多的參數(shù)量,Large代表大型模型,其參數(shù)量在標(biāo)準(zhǔn)模型和XXL之間)。

前饋神經(jīng)網(wǎng)絡(luò)

FFN,全拼Feed-Forward Network,前饋神經(jīng)網(wǎng)絡(luò)。FFN層,通過對自注意力層提供的充分結(jié)合了上下文信息的輸出進(jìn)行處理,在高維空間中進(jìn)行結(jié)合訓(xùn)練獲得的特征和知識,獲得新的特征。FFN因其簡單性,在深度學(xué)習(xí)領(lǐng)域備受歡迎,其原理也相對更容易解釋。

59a7c062-d673-11ef-9310-92fbcf53809c.jpg

FFN層的處理過程,引自3Blue1Brown的視頻《直觀解釋大語言模型如何儲存事實(shí)》? 在Transformer中,F(xiàn)FN層由兩個線性變換和一個激活函數(shù)構(gòu)成,它的處理過程是詞元維度的,每個詞元都會并行地進(jìn)行計(jì)算,如上圖,因此在學(xué)習(xí)FFN層的處理過程時,我們只需要分析單個詞元的處理過程。

59b69a38-d673-11ef-9310-92fbcf53809c.png

這個過程同樣可以用一個簡潔的公式來表示,如上圖,讓我們來逐步解讀一下。 首先,X是輸入向量,代表了已經(jīng)充分結(jié)合上下文信息的單個詞元,它由自注意力層提供,其維度就是隱藏層的維度,比如GPT-3中是12288。我們將接收到的詞元,首先與通過模型訓(xùn)練獲得的矩陣59c8f4b2-d673-11ef-9310-92fbcf53809c.png相乘,進(jìn)行一次線性變換,進(jìn)而將輸入向量映射到一個更高維度的空間,這個空間通常被稱為FFN的“隱藏層”。這個過程可以認(rèn)為是對輸入的“擴(kuò)展”,目的是使FFN的隱藏層能夠表達(dá)更多的特征,這一層的維度通常比自注意力層提供的輸出維度大得多,比如GPT-3中它的維度是49152,剛好是自注意力層輸出維度的四倍。 舉個例子,假設(shè)在自注意力層產(chǎn)生的輸入中,模型只能了解到詞元的語法特征、語義特征,比如“勇敢的”,模型能感知到它是“形容詞”、代表“勇敢”。那么在經(jīng)過這次線性變換后,模型通過擴(kuò)充維度,就能感知到其“情感特征”,比如“正向”、“積極”。 b代表bias,中文意思是偏置、偏見、傾向性,它也是通過模型訓(xùn)練獲得的,在模型的正向推理過程中可以視為一個常數(shù)。神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元可以通過公式59dd5dee-d673-11ef-9310-92fbcf53809c.png來表示,b在其中可以控制函數(shù)到原點(diǎn)的距離,也叫函數(shù)的截距。通過引入bias,可以避免模型訓(xùn)練過程中的過擬合,增強(qiáng)其泛化性,以更好地適應(yīng)不同的數(shù)據(jù)分布,進(jìn)而提高預(yù)測的準(zhǔn)確性。 59ea0f76-d673-11ef-9310-92fbcf53809c.png,西格瑪,代表激活函數(shù)。激活函數(shù)的作用,是為模型引入非線性的因素,作為一個“開關(guān)”或者“調(diào)節(jié)器”,來控制信息在神經(jīng)網(wǎng)絡(luò)中的傳遞方式,即某些特征是否應(yīng)當(dāng)被傳遞到下一層。這種非線性的因素,使得模型能夠?qū)W習(xí)和模擬復(fù)雜的函數(shù)映射關(guān)系。并通過讓模型專注于那些對當(dāng)前任務(wù)更有幫助的正向特征,來讓模型能夠更好的選擇和組合特征。 舉個例子,我們通過線性變換,獲得了關(guān)于輸入內(nèi)容的大量特征信息,但其中一部分信息相對沒那么重要或毫不相關(guān),我們需要將他們?nèi)サ?,避免對后續(xù)的推理產(chǎn)生影響。比如“我”這個詞,自身的語法特征很清晰,我們要保留,但是其并沒有什么情感特征,因此我們要將與“我”的情感特征相關(guān)的信息去除。

59f287dc-d673-11ef-9310-92fbcf53809c.jpg

不同函數(shù)的曲線對比,引自《A Survey of Large Language Models》 當(dāng)然,“去除”這個詞其實(shí)并不準(zhǔn)確,應(yīng)當(dāng)叫做“抑制”。ReLU作為一種激活函數(shù),會將所有相乘后結(jié)果為零的部分去除,只保留所有結(jié)果為正的信息,我們可以認(rèn)為是“去除”。不過ReLU在目前主流的大模型中并不常用,比如Qwen、Llama等模型選擇使用SwiGLU,GPT選擇GeLU,他們的曲線相對更加平滑,如上圖。不同激活函數(shù)的選擇,是一種對于模型的非線性特性和模型性能之間的權(quán)衡,類似于ReLU這種函數(shù)可能會導(dǎo)致關(guān)閉的神經(jīng)元過多,導(dǎo)致模型能夠感知到的特征過少,變得稀疏。

5a007fea-d673-11ef-9310-92fbcf53809c.jpg

FFN層的處理過程,引自3Blue1Brown的視頻《直觀解釋大語言模型如何儲存事實(shí)》? 在經(jīng)過激活函數(shù)進(jìn)行非線性變換處理后的向量,會再次通過矩陣5a188342-d673-11ef-9310-92fbcf53809c.png進(jìn)行第二次線性變換,將高維空間中的向量,重新映射回原始維度,并追加第二個偏置5a2638d4-d673-11ef-9310-92fbcf53809c.png,來形成模型的輸出。這種降維操作,一方面使得FFN層的輸出能夠與下一層(自注意力層或輸出層)的輸入維度相匹配,保持模型的深度不變,減少后續(xù)層的計(jì)算量,另一方面模型可以對升維后學(xué)習(xí)到的特征進(jìn)行選擇和聚焦,只保留最重要的信息,這有助于提高模型的泛化能力。到此單次FFN層的執(zhí)行過程就講述完畢了,整體過程可以參考上圖。? 總結(jié)一下,向上的線性變換,使得詞元能夠表達(dá)出更多的特征,激活函數(shù)通過非線性因素,來增強(qiáng)模型對特征的表達(dá)能力,向下的線性變換,會將這些特征進(jìn)行組合,這就是FFN層中模型的“思考”過程。 另外要說明,向量的特征,并不會像我們前面舉例的那樣簡單地可以概括為“語義”、“語法”、“情感”特征。比如在模型訓(xùn)練過程中,模型可能學(xué)習(xí)到“美國總統(tǒng)”和“川普”之間具有關(guān)聯(lián)性,“哈利”與“波特”之間具有關(guān)聯(lián)性,“唱”、“跳”、“Rap”與“籃球”之間具有關(guān)聯(lián)性,這些關(guān)聯(lián)性很難用簡單的語言來表達(dá)清楚,但它們也實(shí)實(shí)在在地形成了“川普”、“波特”、“籃球”的某些特征。 有人會說“訓(xùn)練大模型的過程就像煉丹”,這其實(shí)是在描述模型內(nèi)部的黑盒性。而我們使用大模型時,也要避免工程化的思維,認(rèn)為大模型一定會按照預(yù)設(shè)的規(guī)則去執(zhí)行,這其實(shí)并不尊重模型本身的特性。因?yàn)槟P偷耐评磉^程,不僅僅受到輸入(包括提示詞以及模型自回歸過程中不斷產(chǎn)生的輸出)的影響,還會受到訓(xùn)練數(shù)據(jù)、模型架構(gòu)、以及訓(xùn)練過程中的超參數(shù)的影響。但我們可以在理解了注意力機(jī)制后通過設(shè)計(jì)良好的提示詞,在理解了模型的思考過程后通過進(jìn)行模型的微調(diào)或增強(qiáng)學(xué)習(xí),來馴化大模型。

5a34beae-d673-11ef-9310-92fbcf53809c.jpg

FFN層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖 最后,我想講一個概念。在各種技術(shù)報(bào)告中,我們常會看到一個詞——“稠密模型”,它指的是模型在處理任務(wù)時,模型的每個神經(jīng)元都彼此相連,所有參數(shù)都共同參與計(jì)算的模型。如上圖,F(xiàn)FN層無論是在向上的線性變換還是向下的線性變換的過程中,每一個神經(jīng)元都彼此相連,因此這兩層線性變換其實(shí)就是FFN層的兩層稠密層,F(xiàn)FN層也就可以視為稠密模型的一種形式。? 稠密模型由于其參數(shù)量很大,能夠捕捉更豐富的特征和復(fù)雜的模式,但這也導(dǎo)致其較高的訓(xùn)練和推理成本,且在數(shù)據(jù)集規(guī)模較少時,嘗試去擬合那些不具有普遍性的噪聲,導(dǎo)致模型的過擬合,降低模型的泛化性。? 與“稠密模型”相對應(yīng)的是“稀疏模型”,其核心思想是利用數(shù)據(jù)的稀疏性,即數(shù)據(jù)中只有少部分特征是重要的,大部分特征都是冗余或者噪聲。MoE就是一種典型的稀疏模型,目前在GPT-4,以及Qwen2的部分模型等眾多大語言模型上,被用于替代FFN層。

輸出層

在最后的最后,模型在經(jīng)過多輪的隱藏層的計(jì)算后,獲得了最終的隱藏狀態(tài)。輸出層,則負(fù)責(zé)將這個隱藏狀態(tài),轉(zhuǎn)換為下一個詞元的概率分布。

5a50aeac-d673-11ef-9310-92fbcf53809c.png

X是隱藏層的最終輸出,其維度是5a58af4e-d673-11ef-9310-92fbcf53809c.png,5a66df7e-d673-11ef-9310-92fbcf53809c.png是輸入序列的長度,5a71a904-d673-11ef-9310-92fbcf53809c.png是隱藏層的維度。而5a7f7c3c-d673-11ef-9310-92fbcf53809c.png是通過訓(xùn)練獲得的權(quán)重矩陣,其維度是5a8cda12-d673-11ef-9310-92fbcf53809c.png5a9a2c9e-d673-11ef-9310-92fbcf53809c.png是詞匯表的大小,比如Qwen2-72B的詞匯表大小是151646。通過矩陣相乘,再與偏置bias相加,就可以將隱藏狀態(tài)轉(zhuǎn)換為輸出詞元的分?jǐn)?shù),也就是5ab5c0da-d673-11ef-9310-92fbcf53809c.png,它代表了模型經(jīng)過“思考”后的特征,用哪個“詞元”來形容更合適。

5acdc91e-d673-11ef-9310-92fbcf53809c.png

然后將5ab5c0da-d673-11ef-9310-92fbcf53809c.png通過歸一化操作(Softmax),轉(zhuǎn)換為詞元的概率,在此基礎(chǔ)上結(jié)合解碼策略,就可以選擇具體的下一個詞元進(jìn)行輸出。這個公式非常簡單,其中5ae2a302-d673-11ef-9310-92fbcf53809c.png就是某一個詞元的分?jǐn)?shù)。通過將指數(shù)函數(shù)應(yīng)用于5ae2a302-d673-11ef-9310-92fbcf53809c.png形成5b164ffe-d673-11ef-9310-92fbcf53809c.png,不僅可以確保詞元分?jǐn)?shù)的數(shù)值為正(便于轉(zhuǎn)換為概率),還能增加不同分?jǐn)?shù)之間的差異性。最后將單個詞元的分?jǐn)?shù),與所有詞元的分?jǐn)?shù)之和相除,就能得到單個詞元的概率,如此就能獲得詞匯表中每個詞元的概率分布。

此時,你可能會好奇,那個5b2201b4-d673-11ef-9310-92fbcf53809c.png是什么?5b2201b4-d673-11ef-9310-92fbcf53809c.png指的是temperature,沒錯就是我們在神機(jī)平臺上常常見到的那個大模型節(jié)點(diǎn)的參數(shù),它通過影響softmax后的概率,來影響最終輸出概率分布的平滑程度。類似作用的還有top_p參數(shù),這也是在模型的輸出層起作用。這些參數(shù)很重要,并且我們在開發(fā)過程中會常常遇到。 至此,模型的推理過程核心內(nèi)容就都講述清楚了,當(dāng)然還有很多內(nèi)容,比如分詞、詞嵌入、位置編碼、殘差連接、層歸一化、以及FFN之后又興起的MoE架構(gòu)等內(nèi)容,篇幅所限,此處不再展開。

寫在最后

提示工程

Prompt Engineering(提示工程),則是指針對特定任務(wù)設(shè)計(jì)合適的任務(wù)提示(Prompt)的過程。? 在大模型的開發(fā)和性能優(yōu)化的過程中,OpenAI建議將提示工程作為大模型應(yīng)用的起點(diǎn),從上下文優(yōu)化、大模型優(yōu)化兩個角度思考,這兩種角度對應(yīng)了兩個方向:提示工程、微調(diào)。

提示工程:通過精心設(shè)計(jì)的輸入提示(Prompt)來引導(dǎo)預(yù)訓(xùn)練模型生成期望的輸出,而無需對模型的權(quán)重進(jìn)行調(diào)整。

微調(diào):微調(diào)是在預(yù)訓(xùn)練模型的基礎(chǔ)上,使用特定任務(wù)的數(shù)據(jù)進(jìn)一步訓(xùn)練模型,以調(diào)整模型權(quán)重,使其更好地適應(yīng)特定任務(wù)。

提示工程側(cè)重于優(yōu)化輸入數(shù)據(jù)的形式和內(nèi)容,以激發(fā)模型的潛在能力,來提高輸出的準(zhǔn)確性和相關(guān)性。它可以快速適應(yīng)新任務(wù)。而微調(diào)可以使模型更深入地理解特定領(lǐng)域的知識和語言模式,進(jìn)而顯著提高模型在特定任務(wù)上的性能,但其在靈活性上相對較弱,訓(xùn)練依賴于計(jì)算資源和高質(zhì)量的標(biāo)注數(shù)據(jù)。對于高德的業(yè)務(wù)團(tuán)隊(duì)而言,會相對更側(cè)重靈活性來適應(yīng)快速變化的業(yè)務(wù)需求,因此基于提示工程進(jìn)行優(yōu)化的方法已經(jīng)成為我們使用大語言模型解決下游任務(wù)的主要途徑。? 實(shí)際上不僅僅對于業(yè)務(wù)團(tuán)隊(duì),對于任何團(tuán)隊(duì),在使用大模型時,都應(yīng)從提示工程開始。OpenAI針對需要提供給大模型額外知識的場景提供了一份合理的優(yōu)化路線圖(如下圖):從基礎(chǔ)Prompt開始,通過提示工程優(yōu)化Prompt,接入簡單RAG,進(jìn)行模型微調(diào),接入高級ARG,最后帶著RAG樣本進(jìn)行模型微調(diào)。

5b4640d8-d673-11ef-9310-92fbcf53809c.jpg

OpenAI: How to maximize LLM performance(https://humanloop.com/blog/optimizing-llms) 通過提示工程我們可以應(yīng)對大部分的業(yè)務(wù)場景,如果性能不夠,第一件事是要考慮提示工程,再考慮其他手段。RAG的功能是上下文增強(qiáng),其輸出結(jié)果是提示詞的一部分,因此RAG也可以視為提示工程的一部分。而對于有垂類場景模型需求的場景,也需要通過提示工程來獲取高質(zhì)量的用例數(shù)據(jù),來進(jìn)行模型微調(diào),再基于微調(diào)后模型產(chǎn)出的更高質(zhì)量用例,正向迭代來進(jìn)一步優(yōu)化性能。 對于開發(fā)人員而言,如果希望提升馴化大模型的能力,我建議從提示工程開始。這包括了提示詞結(jié)構(gòu)化(LangGPT等)、提示設(shè)計(jì)方法(如OpenAI提出的六大原則)、提示框架(ReACT等)、提示技術(shù)(COT、Few-Shot、RAG等)、Agent的概念和架構(gòu)。?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 人工智能
    +關(guān)注

    關(guān)注

    1793

    文章

    47567

    瀏覽量

    239421
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    356

    瀏覽量

    15454

原文標(biāo)題:一文徹底講透GPT架構(gòu)及推理原理

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    使用TC21x的GPT實(shí)現(xiàn)1m計(jì)時器執(zhí)行定時任務(wù),怎么配置GTM和GPT?

    專家們好,我想使用TC21x的GPT實(shí)現(xiàn)1m計(jì)時器執(zhí)行定時任務(wù),不知道怎么配置GTM和GPT?
    發(fā)表于 02-06 06:47

    GPT定時器?基本知識詳解

    一、GPT定時器? 以前的延時,通過空指令進(jìn)行延時,不準(zhǔn)確。當(dāng)修改時鐘頻率后,才用延時就會有很大的變動。而6ULL的GPT是一個高精度定時器裝置。? GPT是一個32bit的向上計(jì)數(shù)器,有兩個輸入
    發(fā)表于 12-07 12:10

    GPT高精度延時定時器簡介

    Linux NXP (I.MX6ULL) GPT高精度延時定時器0、GPT 定時器簡介1、GPT 定時器特性如下:2、GPT 定時器的可選時鐘源如下圖所示:3、
    發(fā)表于 01-12 06:46

    GPT2模塊的相關(guān)資料推薦

    定時器 GPT2 模塊這次簡單介紹下GPT2GPT2 模塊框圖**捕捉/重載寄存器 CAPREL 可用來捕捉定時器 T5 的值, 或者重載定時器 T6。 同時, 特殊模式促進(jìn)兩種功能對寄存器
    發(fā)表于 02-22 07:57

    使用NVIDIA TensorRT優(yōu)化T5和GPT-2

    在這篇文章中,我們向您介紹了如何將擁抱臉 PyTorch T5 和 GPT-2 模型轉(zhuǎn)換為優(yōu)化的 TensorRT 推理引擎。 TensorRT 推理機(jī)用作原始 HuggingFace T5
    的頭像 發(fā)表于 03-31 17:25 ?3728次閱讀
    使用NVIDIA TensorRT優(yōu)化T5和<b class='flag-5'>GPT</b>-2

    使用FasterTransformer和Triton推理服務(wù)器部署GPT-J和T5

    這篇文章是大型Transformer模型(例如 EleutherAI 的 GPT-J 6B 和 Google 的 T5-3B)的優(yōu)化推理指南。這兩種模型在許多下游任務(wù)中都表現(xiàn)出良好的效果,并且是研究人員和數(shù)據(jù)科學(xué)家最常用的模型之一。
    的頭像 發(fā)表于 10-10 15:57 ?7086次閱讀
    使用FasterTransformer和Triton<b class='flag-5'>推理</b>服務(wù)器部署<b class='flag-5'>GPT</b>-J和T5

    ChatGPT/GPT的原理 ChatGPT的技術(shù)架構(gòu)

    ChatGPT 是基于GPT-3.5(Generative Pre-trained Transformer 3.5)架構(gòu)開發(fā)的對話AI模型,是InstructGPT 的兄弟模型。 ChatGPT很可能是OpenAI 在GPT-4
    發(fā)表于 02-24 10:05 ?1835次閱讀

    GPT/GPT-2/GPT-3/InstructGPT進(jìn)化之路

    在預(yù)訓(xùn)練階段,GPT 選擇 transformer 的 decoder 部分作為模型的主要模塊,transformer 是 2017年 google 提出的一種特征抽取模型,GPT 以多層 transformer 堆疊的方式構(gòu)成了整個預(yù)訓(xùn)練模型結(jié)構(gòu)。
    的頭像 發(fā)表于 03-03 11:14 ?3813次閱讀

    GPT-4拿下最難數(shù)學(xué)推理數(shù)據(jù)集新SOTA!新型Prompting讓大模型推理能力狂升!

    方法大幅超過 GPT-4+CoT。比如,在現(xiàn)在最難的數(shù)學(xué)推理數(shù)據(jù)集 MATH 上,GPT-4+CoT 只有 42.5%
    的頭像 發(fā)表于 05-15 15:35 ?715次閱讀
    <b class='flag-5'>GPT</b>-4拿下最難數(shù)學(xué)<b class='flag-5'>推理</b>數(shù)據(jù)集新SOTA!新型Prompting讓大模型<b class='flag-5'>推理</b>能力狂升!

    將客戶360度系統(tǒng)與GPT API集成:技術(shù)架構(gòu)視角

    Customer 360 系統(tǒng)的功能,通過自然語言處理、文本生成和數(shù)據(jù)分析增加價值。本文深入探討了將 GPT API 與客戶 360 系統(tǒng)集成的技術(shù)架構(gòu),探討了各種集成方法、架構(gòu)組件和用例。
    發(fā)表于 06-09 09:20 ?494次閱讀
    將客戶360度系統(tǒng)與<b class='flag-5'>GPT</b> API集成:技術(shù)<b class='flag-5'>架構(gòu)</b>視角

    爆了!GPT-4模型架構(gòu)、訓(xùn)練成本、數(shù)據(jù)集信息都被扒出來了

    文章稱,他們從許多來源收集了大量有關(guān) GPT-4 的信息,包括模型架構(gòu)、訓(xùn)練基礎(chǔ)設(shè)施、推理基礎(chǔ)設(shè)施、參數(shù)量、訓(xùn)練數(shù)據(jù)集組成、token 量、層數(shù)、并行策略、多模態(tài)視覺適應(yīng)、不同工程權(quán)衡背后的思維過程、獨(dú)特的實(shí)現(xiàn)技術(shù)以及如何減輕與
    的頭像 發(fā)表于 07-12 14:16 ?847次閱讀
    爆了!<b class='flag-5'>GPT</b>-4模型<b class='flag-5'>架構(gòu)</b>、訓(xùn)練成本、數(shù)據(jù)集信息都被扒出來了

    GPT-4沒有推理能力嗎?

    今年三月,OpenAI 重磅發(fā)布了 GPT-4 大模型,帶來了比 ChatGPT 背后 GPT-3.5 更強(qiáng)的推理、計(jì)算、邏輯能力,也引發(fā)了全民使用的熱潮。在各行各領(lǐng)域研究人員、開發(fā)者、設(shè)計(jì)師的使用過程中,「
    的頭像 發(fā)表于 08-11 14:20 ?931次閱讀
    <b class='flag-5'>GPT</b>-4沒有<b class='flag-5'>推理</b>能力嗎?

    AI推理框架軟件ONNX Runtime正式支持龍架構(gòu)

    近日,知名AI推理框架開源社區(qū)ONNX Runtime正式發(fā)布支持龍架構(gòu)的版本1.17.0。
    的頭像 發(fā)表于 03-12 12:23 ?611次閱讀
    AI<b class='flag-5'>推理</b>框架軟件ONNX Runtime正式支持龍<b class='flag-5'>架構(gòu)</b>

    ONNX Runtime支持龍架構(gòu),AI推理生態(tài)再添新翼

    近日,備受矚目的AI推理框架開源社區(qū)ONNX Runtime宣布推出支持龍架構(gòu)的新版本1.17.0,這一里程碑式的更新意味著龍芯平臺上的AI推理應(yīng)用開發(fā)與部署將更加便捷。
    的頭像 發(fā)表于 03-27 10:58 ?764次閱讀

    OpenAI即將發(fā)布“草莓”推理大模型

    科技界迎來新動態(tài),據(jù)可靠消息透露,OpenAI正緊鑼密鼓地籌備著一項(xiàng)重大發(fā)布——預(yù)計(jì)在兩周內(nèi),將正式推出名為“草莓”的新型AI推理模型,并將其無縫融入ChatGPT服務(wù)中。這款以卓越推理能力為核心的大模型,旨在突破現(xiàn)有GPT-4
    的頭像 發(fā)表于 09-11 16:53 ?553次閱讀