龍年春節期間(jiān)Sora的推出讓大模型又火了一把,作為重要的技術方向,很多同學都希望能夠深入掌握大模型的相關技術,經常有人問如何學習大模(mó)型技術?有哪些材料可以參考(kǎo)?這(zhè)裏筆者將收藏夾裏麵的(de)地(dì)址整理了一(yī)下,並加(jiā)上了筆者的一些思考,供(gòng)大家參考。
Google的Transformer模(mó)型論文《Attention Is All You Need》發表於(yú)2017年,其實已經相當長的時間了(le),這幾(jǐ)年(nián)累積(jī)下來講Transformer模型的文檔非常(cháng)多,比較通俗易懂的文(wén)章推薦如下:
1) 《超詳細圖解Self-Attention》,Transformer模型與傳統的CNN、RNN、Seq2Seq等神經網絡模型最核心的點就是引入了自注意力機製,本篇知乎文章(zhāng)對(duì)理解什麽是自注意力機製(zhì)非(fēi)常有幫助。

掃碼查看推薦文章
2) 《The Illustrated Transformer(圖解(jiě)Transformer)》,CSDN一篇文(wén)章,是國外一(yī)篇講解Transformer整體架構的博文的翻譯版,裏麵對(duì)每個Transformer架構的每個模塊都展開通過圖形示例等方式進(jìn)行了講解,搞懂這些環節基本(běn)可以理(lǐ)解Transformer用到的關鍵技術。

掃(sǎo)碼查看推薦文章
3) 《手寫AI-逐行手(shǒu)寫GPT模型》,這個是Bilibili上的一個(gè)培訓視頻(雖然免費的課程並不完整,但是夠用了),講(jiǎng)解了從零開始手寫(xiě)一(yī)個GPT的實現,通過代碼講解可(kě)以更(gèng)進一步了解GPT模型的技術原理是如何真正運(yùn)行起來的,能夠真正理解整(zhěng)個過(guò)程。

掃碼查看推薦(jiàn)視頻
這幾份材料(liào)從細節到整體,從原理到實現,覆蓋比較全麵,精讀之後對GPT模型(xíng)的原理基礎(chǔ)會有一個比較深(shēn)入的認識。
1) 自注意力機製可以將上下文信息壓縮到(dào)每個token的向量中,實現帶上下文的並行計算,使(shǐ)得大規模(mó)參數和數據堆疊成(chéng)為了(le)可能,而海量參數(shù)和數據帶(dài)來的推理能力湧現是這次大模型(xíng)技術的爆發點。
2) 目前大部分材料講解都是(shì)Encoder-Decoder架構,也就是論文(wén)上講的(de)架構,而目前我們(men)經常用的(de)大模型一般都是Decoder-Only的架構(除了ChatGLM之外),所以如果(guǒ)想了解Decoder-Only的實現可以(yǐ)參考mingpt等開源代碼,隻有300行。

掃碼查看參考文章
3) 文檔都有(yǒu)一定的滯後性,一些新(xīn)的機(jī)製可(kě)以對照著看torch的源碼(mǎ)或者transformer的源碼,很多時候理論研究半天不如看幾(jǐ)行代碼理解的透(tòu)徹,對於我們來說沒有必要把論文的公式都搞(gǎo)明白。

掃碼查看torch源碼

掃碼查看transformer源碼(mǎ)
模型各層計算時都是[ batch_size, sequence_length, hidden_size]這樣的三維矩(jǔ)陣,如(rú)何從這個矩陣中取(qǔ)出預測的(de)下一個字符的?我們都知道Transformer在輸出時是一個字(zì)符一個字符輸出的(de),並不能一次預測一段內容,但是我們計算矩陣實(shí)際上是三維的,這個對應關係如何(hé)?沒有看到這方麵的解釋(shì),從(cóng)代碼logits[:,-1,:].max(dim=1)[1]可以看到,實際在推理輸出時,隻(zhī)使(shǐ)用(yòng)了(le)最後一個字符對應的那行向量來進行輸出(chū),從中選出最大值並將這個值映射(shè)到字典表。從理論上猜測,下一個(gè)輸出字符與最後一個字符的關聯是最緊密的,而其他字符都(dōu)通過注意力機製(zhì)某種(zhǒng)程度(dù)上在這組向量中都是有表達的。
大模型的推理參數temperature,為何一個簡單(dān)的(de)除法就可以實現了?看到temperature參數的實現代(dài)碼:logits = logits[:, -1, :] / temperature感覺有點奇怪,為何對所有的向量直(zhí)接做一個除法就可以改變模型輸出的(de)風格?(保守 VS 激進),其實這個與top_p參數有關係( top_p是累計概率,找N個候選達到總體概率超過top_p的(de)值就結束),所以當temperature對向量成比例的放大,選到的候選單詞就少,反之就會越多,通過這種方式來影響整體輸出。這也是為什麽(me)temperature和top_p參數通常(cháng)隻調一個。
如果覺得技術原理太枯(kū)燥了,簡(jiǎn)單了解一下也行,並不會影響我們使用大模型,因為即使看懂了代(dài)碼,大模型還是一個黑盒(hé),哪些場景能夠實現,哪些場景(jǐng)不能夠實現(xiàn)也需要測試才能得(dé)到結論。當然如果我們僅僅(jǐn)從自己的經驗(yàn)中去學習那就太局限了,我們可以(yǐ)聽聽業界大佬的見解,他們(men)見多識廣,有很多思路可以學習。
甲小(xiǎo)姐對話(huà)周(zhōu)鴻禕:不發展AI才是最大的不安全(quán)
注解:周鴻(hóng)禕的兩篇(piān)觀點分享,一(yī)篇是2023年7月份(fèn),一篇是2023年(nián)12月份,周教主(zhǔ)雖(suī)然言語比較犀利但(dàn)是接(jiē)地氣,直白易懂。
陳巍:ChatGPT發展(zhǎn)曆(lì)程、原理、技術架構(gòu)詳解(jiě)和產業未來
注解:比較完整(zhěng)的關於ChatGPT的分(fèn)析,信息量挺大,也很全麵
百川智能王小川:大模(mó)型(xíng)創業100天,我確認找到(dào)了屬於我的「無人區」 VS 太卷了!關(guān)於大模型和AIGC的36條筆記和真話
注解:可能是王小川對行業發展的一(yī)些觀察、經驗和思考。這些筆記(jì)和(hé)真話涵蓋了技術發展(zhǎn)、應用場景、商業模式、市場動態、未來預(yù)測和創業心(xīn)得。
總結一下,將兩篇文章放在一起,一個火山、一個冰川,對照閱讀。
大咖們的(de)觀點各有千秋,大模型到底是否是奇點的開始可能還需要爭論一段時間,我個人的看(kàn)法是:
大模型相對以前的小模型來說是個跨越,在(zài)通用性、質量上都有變革性的提升
大模型在知識壓縮、存(cún)儲、召回上實(shí)現(xiàn)了突破,實現了通過自然語言來檢索海量知識
但是從應用場景來看,大模型並(bìng)沒有比小模型擴(kuò)展出太多的範圍(wéi),與小模型一樣,依然缺乏場景和(hé)數據
目前語言模型的提升應該進入了瓶(píng)頸(jǐng)期,現在開始向MOE和多模態方向的(de)探索
Lora是一種高效參數微調(PEFT)方法(fǎ),也是目前(qián)最流行的模型訓練微調方法,很好的平衡(héng)了效率和質量,這篇文章雖然是英(yīng)文(wén),但是是科普性的,簡單易讀,能夠比較透(tòu)徹的理解Lora、QLora等技術原理。

掃碼查看推薦文(wén)章
LLM大語言(yán)模型之Generate/Inference(生成/推理(lǐ))中(zhōng)參數與解碼策略原(yuán)理及其代碼實現我們在使(shǐ)用OpenAI的(de)接口調用大模型的時候,有很多參數,比如temperature、top_p、top_k、repeat_penality等,我們除了(le)不斷優化Prompt之外,這些參數(shù)也應該仔細加以考慮(lǜ)以更匹配我(wǒ)們的場景。

掃碼查(chá)看推薦文章
RAG方向建(jiàn)議(yì)大家直接看llama.index這(zhè)個開源社區,有文檔和代碼,很清晰。

掃碼查看推薦文章
Prompt工程的通用框架以及案例解析:模(mó)型本(běn)身智(zhì)能才是關鍵,Prompt僅用做錦(jǐn)上添花Prompt工(gōng)程相關,是(shì)否需要仔細(xì)寫Prompt?是的,能起決定性作用麽?不一(yī)定。

掃碼查看推薦文章(zhāng)
Transformer 是(shì)一種基於自(zì)注意力機製的深度學習模(mó)型,廣泛用於自(zì)然(rán)語(yǔ)言處(chù)理、計算(suàn)機視覺和(hé)音頻處(chù)理等領域。以(yǐ)下是一些 Transformer 學習筆記:
✅ Transformer 模型由兩部(bù)分(fèn)組成:編碼器和解碼器。編碼器將輸入序列編碼(mǎ)成一個連續的向量,解碼器則根據編碼器的輸出和已經生成的目標序列來(lái)生成下一個目標token。
✅ 自注意力機製是 Transformer 模型的核心。它(tā)允許模型在處理每個token時,查看序(xù)列中的所有其他token,並利用(yòng)它們的信息來計算注意力權重。這些(xiē)權重(chóng)用於加(jiā)權輸入序列中的所有token,生成一個加權的表示,作為下一個(gè)token的輸入。
✅ Transformer 模型(xíng)使用了(le)一種名為位置編碼的技術,將序列中每個token的位置信息編碼為它們的位置向量(liàng)。這些位置向量被添加到token的嵌入向量中,使(shǐ)模型能夠理解序列中token的順序。
✅ Transformer 模型使用(yòng)了一種名為多頭注意力機製的技術,它將(jiāng)輸入序列分成(chéng)多個頭,每個頭計算不同的注(zhù)意力權重。這有助於模型在處理每個token時,從(cóng)不同的(de)角度獲取輸入序列的信息,提高模型的表現。
✅ Transformer 模型使用了一種名為前饋神經(jīng)網絡的技術,它將(jiāng)編碼器和解碼器中的每個層都連接起來。前饋(kuì)神經網絡有助於模型在處理每個token時,更好地學習(xí)非線性變換,提高模型的(de)表現。
✅ Transformer 模型(xíng)的訓練過程(chéng)可以使用多種(zhǒng)技術,如學習率衰減、數據增強(qiáng)和正則(zé)化等。這些技(jì)術有助於模型(xíng)在訓練過程(chéng)中避免過擬(nǐ)合,提高模(mó)型的泛化能力(lì)。
Transformer 是一種強大的(de)深度學習模型,具有很多優點,如並行計算能力、良好的表現和泛化能力(lì)等。但是,它也有一些缺點,如計算成本高、訓(xùn)練時間長等。在實際應(yīng)用中,需(xū)要根據具體任務和數據集選擇(zé)合適的模型和訓練技術。
兩點(diǎn)體會分享:
① 數字世界變化越來越(yuè)快,必須得(dé)卷,也要相信世界真的(de)在變化,可以根據自己的喜好去刷最新的論文,或者去刷開源社區,與外部對齊認知。
② 習慣往往製約(yuē)了我們擁抱變化的能力(lì),而開(kāi)放(fàng)的交流和不保留的分享其實是一種學習、成長的新方式。