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