14天速成LLM高手!大佬開源學(xué)習(xí)筆記,GitHub狂攬700星
無論是面試找工作、還是自學(xué)創(chuàng)業(yè),甚至想要在圈子內(nèi)討論一下AGI的潛力,但凡想要深度參與到AI浪潮中,不可避免的就是學(xué)習(xí)大型語言模型(LLM)的底層原理。
但AI發(fā)展這么多年,論文、學(xué)習(xí)資料多如牛毛,并且更新?lián)Q代極快,如何快速入門,學(xué)習(xí)到那些真正的基礎(chǔ)知識,對于新手來說都是一個難題。
最近,一位AI從業(yè)者在網(wǎng)上分享了自己的學(xué)習(xí)過程,僅用14天就學(xué)完了LLM所需要的核心知識,學(xué)習(xí)筆記在GitHub上斬獲了675+星星,并且還在持續(xù)上漲。
倉庫鏈接:https://github.com/hesamsheikh/ml-retreat
學(xué)習(xí)路線中的主要知識點包括token嵌入、位置嵌入、自注意力、Transformer、對Q、K、V的直觀理解、因果和多頭注意力、溫度、top-k、top-p、分類和指令微調(diào)、旋轉(zhuǎn)位置編碼(RoPE)、KV緩存、無限注意力(長上下文窗口)、專家混合(MoE)、分組查詢注意力(grouped query attention)、llama-2架構(gòu)及相關(guān)技術(shù)等。
學(xué)習(xí)LLM三步走
作者把學(xué)習(xí)路線分為了三個步驟:
1. 從頭開始構(gòu)建大模型(Build an LLM from Scratch)
這部分主要是總結(jié)語言模型的基礎(chǔ)知識,包括token、位置嵌入、自注意力機制、Transformer架構(gòu)、最初版本的注意力機制(Attention is All You Need論文)和微調(diào)的基本原理。
雖然網(wǎng)絡(luò)上已經(jīng)有很多資源,但其中最關(guān)鍵的參考資料是Sebastian Raschka編寫的《從頭開始構(gòu)建大型語言模型》(Build a Large Language Model From Scratch),這本書解釋技術(shù)原理時非常巧妙,讀者也很容易理解。
在學(xué)習(xí)構(gòu)建智能體時,一個無法繞過的難題就是研究自注意力機制的工作原理:自注意力機制可以讓模型在處理文本時,能夠理解每個單詞或短語(也可以叫做token)在整體上下文中的位置和重要性。
整個過程會涉及到三個關(guān)鍵概念:查詢(query)、鍵(key)和值(value),其中查詢代表模型在尋找信息時提出的問題,鍵則是數(shù)據(jù)庫中的索引,幫助智能體快速找到相關(guān)信息,而值則是查詢所尋求的具體信息或數(shù)據(jù)。
三個組件的相互作用,使得智能體能夠在處理語言時,不僅可以關(guān)注單個單詞,還能理解單詞之間的相互關(guān)系,從而更準確地捕捉文本的深層含義。
2. 大模型幻覺(LLM Hallucination)
在學(xué)習(xí)的第二部分,作者推薦學(xué)習(xí)「什么是幻覺」以及「LLMs為什么會產(chǎn)生幻覺」,可能也是潛伏在很多學(xué)習(xí)者腦海中的問題,對理解語言模型也有很大幫助。
幻覺是指模型生成的文本與現(xiàn)實世界的事實或用戶的輸入不一致的現(xiàn)象,對于研究人員以及使用LLM構(gòu)建應(yīng)用的人來說是一個巨大的挑戰(zhàn)。
在研究過程中,你可能會意識到大模型的各種問題,諸如:
位置偏差(positional bias),即模型傾向于關(guān)注距離較近的token,而忽略了更遠的token,偏差可能會影響模型對文本整體含義的理解。
曝光偏差(exposure bias),在推理階段,模型預(yù)測出一個錯誤的token可能會影響后續(xù)token的生成,可能會導(dǎo)致模型在生成文本時出現(xiàn)一連串的錯誤,從而降低輸出質(zhì)量。
還會意識到數(shù)據(jù)、訓(xùn)練和推理對「幻覺」問題都有不同的影響。
為了緩解幻覺問題,可以嘗試不同的訓(xùn)練策略,以減少模型在訓(xùn)練和推理時的不一致性;還可以考慮如何通過引入位置編碼來解決位置偏差問題,以及如何通過增加模型的上下文理解能力來減少幻覺的發(fā)生。
總的來說,這些問題的解決需要深入理解模型的工作原理,以及如何通過各種技術(shù)手段來優(yōu)化,隨著研究的深入,可以開發(fā)出更加強大和可靠的智能體,以支持各種語言處理任務(wù)。
3. LLM Edge:不止注意力
最后階段會學(xué)習(xí)到一些不那么「基礎(chǔ)」的一些知識,但在構(gòu)建LLM系統(tǒng)時非常關(guān)鍵,主要包括:
暫停(Pause) Tokens:讓大模型有更多時間「思考」。
無限注意力(Infini-attention):通過利用之前處理過的token的記憶,可以讓大模型的上下文窗口變的非常大,比如Gemini模型的上下文窗口就高達100萬個token。
旋轉(zhuǎn)位置編碼(RoPE,Rotary Positional Embedding):一種相對位置編碼方法,在Llama以及其他許多大型語言模型中廣泛使用,主要優(yōu)勢在于能夠關(guān)注序列中距離較遠的token。
KV緩存(KV Cache):消除在生成先前token時重復(fù)的計算,可以提高效率。
專家混合(MoE,Mixture of Experts):不止使用單一的大規(guī)模模型,而是結(jié)合了多個較小的LLMs,由Mistral模型推廣(Mistral的8個大小為7B的模型在某些任務(wù)上的表現(xiàn)超過了Llama 2的70B模型)。
為了回顧這些主題,作者主要研究了Meta的Llama模型的架構(gòu)和代碼,相關(guān)資源可以在代碼倉庫中找到。
學(xué)習(xí)資源
在研究這些主題時,作者并不只依賴單一的資源,例如在學(xué)習(xí)大型語言模型(LLMs)的基礎(chǔ)知識時,主要參考了《從頭開始構(gòu)建大型語言模型》這本書;與此同時,讀論文也是必不可少的,特別是那些首次提出某項技術(shù)的研究(比如原始的Transformer論文),以及綜述論文,匯總了眾多研究并給出了簡潔的總結(jié)。
一些教學(xué)視頻也很有用,可以作為預(yù)熱,讓心里有一個大概的印象,一個比較好的資源是Andrej Karpathy,其中包含了大量「從零開始解釋大型語言模型」的教學(xué)視頻。
預(yù)備知識
數(shù)學(xué)知識
線性代數(shù):向量和矩陣,矩陣乘法
概率論和統(tǒng)計學(xué):概率的基本概念,隨機變量和分布,期望值和方差,最大似然估計(MLE)
微積分:微分和積分(尤其是用于反向傳播),偏導(dǎo)數(shù)(用于基于梯度的優(yōu)化)
優(yōu)化:梯度下降,隨機梯度下降(SGD),高級優(yōu)化器(例如Adam)
編程、框架
Python:熟悉如NumPy和Pandas這樣的庫
深度學(xué)習(xí)框架:TensorFlow或PyTorch,熟悉模型訓(xùn)練、調(diào)試和評估
深度學(xué)習(xí)概念
理解感知機、激活函數(shù)和層。反向傳播和梯度下降。損失函數(shù)(交叉熵,均方誤差)
卷積神經(jīng)網(wǎng)絡(luò)(CNNs)(可選,但有幫助):有助于理解模型中層的操作
溫馨提示
享受學(xué)習(xí)過程
雖然作者確實在兩周之內(nèi)把這些主題都學(xué)完了,涉及的概念也不是特別復(fù)雜,但作者表示,兩周只是用來強調(diào)這并不是一項難以完成的任務(wù),你并不需要設(shè)定一個嚴格的截止日期來學(xué)習(xí)這些資源。
在剛開始學(xué)習(xí)的時候,我也沒想過14天就能學(xué)完,一切都是順其自然,即使最后花了一個月,也沒有任何問題,要享受發(fā)現(xiàn)新事物的樂趣。
不要拘泥于學(xué)習(xí)路線圖
每個人都有自己的學(xué)習(xí)節(jié)奏和背景知識,你可以對學(xué)習(xí)路線圖進行調(diào)整。
學(xué)習(xí)是一個非常個性化的體驗,要學(xué)什么是基于「你已知的」和「你想知道的」,對于每個人來說,這個問題的答案都是不同的,所以不要完全照搬學(xué)習(xí)路線圖,可以選擇其中感興趣的部分。
沒有一本書、資源或路線圖是最佳的,所以不要將自己局限于單一的資源。
不必讀完所有內(nèi)容
當(dāng)你拿起一本書、觀看YouTube視頻或閱讀論文來研究這些材料時,并沒有規(guī)定要必須從頭到尾讀完,只需要獲取到所需要的信息,就可以關(guān)掉了。
特別是論文,完整看完可能會非常耗時,所以在閱讀這些材料之前,先確定你心中的問題,并有針對性地尋找答案,可以避免在不相關(guān)的內(nèi)容上浪費時間,即使這些內(nèi)容可能很有價值,但可能與你的需求無關(guān)。