本書從大型模型的結構講起,讓讀者了解大型模型的內(nèi)部實現(xiàn)原理,然后講解如何在特定任務下對大型模型進行預訓練、有監(jiān)督的微調(diào),以及進行強化學習。通過對模型采用不同方法的訓練,持續(xù)改進模型在特定任務上的性能。最后,本書將與讀者一起探討如何利用大型模型開發(fā)大模型時代的智能應用。
本書共9章,第1章講解大型模型發(fā)展的歷史及其帶來的變革。第2章深入講解大型模型內(nèi)部結構的演進。第3章會嘗試自己運行一個大模型。第4章介紹大型模型對模型訓練和推理過程中帶來的技術挑戰(zhàn)和解決辦法。第5章講解如何進行大型模型的預訓練以獲取大模型的基本能力。第6章講解如何對大模型進行有監(jiān)督的微調(diào),使大型模型輸出與人類意圖對齊。第7章講解如何通過強化學習進一步提升大型模型的表現(xiàn)。第8章講解如何對大模型進行評估。第9章講解如何利用大模型構建智能應用。
本書適合有一定深度學習基礎的讀者,幫助他們從原理到應用,快速了解大型模型的原理、訓練方法,并利用大型模型進行智能應用的開發(fā)。
時間回到2010年,筆者剛剛加入IBM SPSS Modeler的研發(fā)團隊,從此開始了筆者在人工智能領域的職業(yè)生涯。轉(zhuǎn)眼間,這段旅程已經(jīng)持續(xù)了十五年。這十五年里,人工智能的發(fā)展波瀾壯闊,筆者有幸站在科技的潮頭,見證了3次極具意義的浪潮。每次浪潮都代表了人類對于智能的探索邁入了新的階段,每次浪潮也深刻地改變了科技的邊界,社會的面貌,以及我們的日常生活。
在筆者的職業(yè)生涯中,第1次人工智能浪潮可以追溯到卷積神經(jīng)網(wǎng)絡的崛起。這一波浪潮最具代表性的事件,也就是深度學習在計算機視覺領域的突破性進展。從2012年AlexNet在ImageNet比賽上的驚艷表現(xiàn)開始,計算機視覺得以迅猛發(fā)展,神經(jīng)網(wǎng)絡在圖像識別、物體檢測、人臉識別等領域逐漸超過了人類的表現(xiàn)。可以說,卷積神經(jīng)網(wǎng)絡讓計算機具備了看的能力,得以從數(shù)億像素中理解出形狀和內(nèi)容。那一時期,視覺任務相對容易取得突破,這在一定程度上歸功于圖像本身所包含的直觀且自成一體的信息。就像一個三歲小孩能夠通過圖像辨別出水果、動物、人物一樣,計算機在有了強大的視覺模型之后也能通過學習海量的圖片,較為準確地判斷圖像中包含了什么。
然而,語言是另外一個層次的挑戰(zhàn)。語言是人類社會最自然的溝通工具,卻充滿了歧義和復雜的語境。一句話中的每個詞匯都可能包含多重含義,需要結合上下文乃至社會背景去理解,尤其是在日常交流中,隱含的諷刺、幽默,甚至體察情緒的能力遠遠超過一個剛學會說話的孩子。這就意味著,語言理解和生成任務對計算機來講要比視覺更具挑戰(zhàn)。
這就帶來了第2次人工智能浪潮: 基于Transformer的BERT預訓練模型的出現(xiàn)。BERT模型通過利用大量語料和創(chuàng)新性的訓練方法(例如前后句判斷和完形填空式的掩碼訓練)讓模型逐漸學會理解語義和語境。這一階段,基于Transformer架構的模型使自然語言處理實現(xiàn)了跨越式的發(fā)展。與之前的循環(huán)神經(jīng)網(wǎng)絡相比,Transformer顯著地提高了訓練效率,通過自注意力機制,不僅能并行處理序列數(shù)據(jù),還能在長句中抓住遠距離詞語之間的關聯(lián)。BERT的出現(xiàn)使NLP各項任務達到了前所未有的高度機器能夠理解段落、回答問題、生成摘要,并且通過預訓練與下游任務微調(diào)的結合方式,有效地解決了許多工程應用中的問題。
然后我們迎來了第3次浪潮,這一浪潮就是當前的大模型革命。GPT系列的出現(xiàn),尤其是GPT3的出現(xiàn)和ChatGPT的廣泛傳播,讓人工智能不再局限于特定領域,而是成為全社會的討論熱點。GPT3不僅是一種模型,它的能力和表現(xiàn)讓我們重新思考人與機器之間的互動模式。通過自然語言,GPT3具備了與人類進行復雜對話、進行推理、提供創(chuàng)意建議的能力,ChatGPT的出現(xiàn)更是掀起了一場關于人工智能將如何改變社會的全民討論。這是我們朝向通用人工智能邁出的重要一步,各行各業(yè)都在思考大模型將如何徹底變革其生產(chǎn)模式和交互方式。
大模型的崛起帶來了前所未有的理解、推理、生成的通用能力,也改變了人類與機器的交互方式。在這個大模型的時代,人與機器之間的界限變得越來越模糊,機器不再只是簡單地接受命令,它開始具備理解上下文、推測人類意圖,甚至具有一定創(chuàng)造力的能力。這種變革不僅是技術上的突破,更是一次對于人類社會運作方式的重新定義。
筆者深感非常幸運,能夠處在這樣一個激動人心的時代。人工智能的大浪潮,既推動了時代的進步,也讓我們這些從業(yè)者成為這場偉大變革的親歷者。筆者感受到的,不只是對于技術進步的震撼,更是對于未來無限可能性的憧憬。
本書旨在和讀者一起探索大模型的原理、發(fā)展和應用,筆者希望通過本書,能夠幫助更多的讀者理解大模型背后的技術,感受到它所帶來的改變。無論你是科技愛好者,還是從事其他領域的專業(yè)人士,筆者相信你都能在這場變革中找到屬于自己的啟發(fā)和機遇。
希望我們能夠共同見證大模型時代的到來,也希望我們能夠攜手探索,用大模型技術去改變我們的生活,讓人工智能成為我們?nèi)粘5闹帧⒒锇,甚至靈感的源泉。讓我們一起迎接這個充滿希望和挑戰(zhàn)的未來。
資源下載提示
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
視頻等資源: 掃描封底的文泉云盤防盜碼,再掃描書中相應章節(jié)的二維碼,可以在線學習。
筆者的閱歷有限,書中難免存在疏漏,希望讀者熱心指正,在此表示感謝。
薛鵬
2025年5月于西安
本書源碼
第1章大模型時代
1.1大模型的發(fā)展歷史
1.1.1注意力機制的發(fā)揚光大
1.1.2從GPT到InstructGPT
1.1.3ChatGPT驚艷登場
1.1.4全球首個AI程序員誕生
1.2大模型時代的新范式
第2章深入了解大模型(59min)
2.1Transformer橫空出世
2.1.1詞典生成
2.1.2詞嵌入
2.1.3自注意力機制
2.1.4層歸一化
2.1.5殘差連接
2.1.6前饋模塊
2.1.7Transformer的整體架構
2.1.8位置編碼
2.1.9解碼器的輸入輸出
2.1.10掩碼機制
2.1.11交叉注意力
2.1.12線性分類頭
2.2GPT
2.2.1GPT1
2.2.2GPT2
2.2.3GPT3
2.2.4GPT4
2.3OpenAI o1
2.4Llama
2.4.1Llama1
2.4.2Llama2
2.4.3Llama3
第3章運行第1個大模型
3.1HuggingFace介紹
3.2下載大模型
3.3運行大模型
3.4HuggingFace里的Tokenizer
3.5HuggingFace里的模型
3.5.1創(chuàng)建和保存模型
3.5.2控制大模型的輸出
第4章大模型帶來的技術挑戰(zhàn)(127min)
4.1GPU的工作原理
4.1.1CPU和GPU的區(qū)別
4.1.2GPU的架構
4.1.3GPU里的存儲
4.1.4Tensor Core
4.2大模型顯存占用
4.3優(yōu)化器
4.3.1指數(shù)加權平均
4.3.2SGD
4.3.3動量梯度下降
4.3.4RMSProp
4.3.5Adam
4.3.6AdamW
4.4混合精度訓練
4.4.1混合精度訓練原理
4.4.2在PyTorch里進行混合精度訓練
4.5模型的量化技術
4.5.1量化技術的原理
4.5.2訓練后動態(tài)量化
4.5.3訓練后靜態(tài)量化
4.5.4量化感知訓練
4.5.5LLM.int8
4.5.6NF4量化
4.6梯度累加
4.7梯度檢查點
4.8分布式訓練
4.8.1分布式數(shù)據(jù)并行
4.8.2DeepSpeed ZeRO
4.8.3Accelerate
4.9參數(shù)高效微調(diào)
4.9.1提示詞微調(diào)
4.9.2LoRA
4.10vLLM
4.10.1KV Cache
4.10.2Page Attention
4.10.3塊共享
4.10.4代碼示例
4.11FlashAttention
第5章大模型的預訓練(15min)
5.1預訓練的作用
5.2預訓練的數(shù)據(jù)
5.3預訓練的方法
5.4預訓練Llama3.1
5.4.1最簡訓練代碼
5.4.2數(shù)據(jù)清洗
5.4.3數(shù)據(jù)準備
5.4.4初始化模型
5.4.5模型預訓練
第6章大模型的監(jiān)督微調(diào)(13min)
6.1對話模板
6.2只關注回答
6.3噪聲嵌入微調(diào)
6.4SFT Trainer
第7章大模型的強化學習(69min)
7.1強化學習基礎
7.1.1強化學習里的基礎概念
7.1.2策略梯度算法
7.1.3ActorCritic算法
7.1.4廣義優(yōu)勢估計算法
7.2近端策略優(yōu)化
7.3直接偏好優(yōu)化
7.3.1KL散度
7.3.2BradleyTerry模型
7.3.3DPO的訓練目標
7.4利用TRL庫進行PPO訓練
7.4.1獎勵模型
7.4.2PPO模型
第8章大模型的評估
8.1困惑度
8.2人工評估
8.3可解析的測評集
8.3.1MMLU
8.3.2MMLUPRO
8.3.3IFEVAL
8.3.4BBH
8.3.5MATH
8.3.6GPQA
8.4利用大模型評估
第9章構建大模型應用
9.1提示詞工程
9.1.1明確的任務指示
9.1.2提供上下文信息
9.1.3賦予大模型角色
9.1.4給模型思考時間
9.1.5給模型參考示例
9.2LangChain介紹
9.3第1個LangChain程序
9.4構建一個聊天機器人
9.5LangChain的進階功能
9.5.1對輸出進行解析
9.5.2為提示詞增加樣例
9.6檢索增強生成
9.6.1RAG流程
9.6.2文檔分片
9.6.3向量嵌入模型
9.6.4向量存儲
9.6.5Retriever
9.6.6生成回答
9.7RAG進階
9.7.1問題轉(zhuǎn)化
9.7.2混合檢索
9.7.3索引增強
9.7.4檢索結果重排
9.8智能體
9.8.1創(chuàng)建第1個智能體
9.8.2給智能體定義工具
9.8.3智能體使用工具的原理
9.8.4給智能體增加記憶
9.8.5人與智能體合作
9.8.6多智能體協(xié)作