從零構建大模型 Build a Large Language Model (from Scratch)
[美]塞巴斯蒂安·拉施卡(Sebastian Raschka)
商品描述
本書是關於如何從零開始構建大模型的指南,由暢銷書作家塞巴斯蒂安·拉施卡撰寫,通過清晰的文字、圖表和實例,逐步指導讀者創建自己的大模型。在本書中,讀者將學習如何規劃和編寫大模型的各個組成部分、為大模型訓練準備適當的數據集、進行通用語料庫的預訓練,以及定製特定任務的微調。此外,本書還將探討如何利用人工反饋確保大模型遵循指令,以及如何將預訓練權重加載到大模型中。
作者簡介
塞巴斯蒂安·拉施卡(Sebastian Raschka),極具影響力的人工智能專家,本書配套GitHub項目LLMs-from-scratch達4萬星。現在大模型獨角獸公司Lightning Al任資深研究工程師。博士畢業於密歇根州立大學,2018~2023年威斯康星大學麥迪遜分校助理教授(終身教職),從事深度學習科研和教學。除本書外,他還寫作了暢銷書《大模型技術30講》和《Python機器學習》。
【譯者簡介】
覃立波,中南大學特聘教授,博士生導師。現任中國中文信息學會青工委秘書長。主要研究興趣為人工智能、自然語言處理、大模型等。曾擔任ACL.EMNLP、NAACL、IJCAI等國際會議領域主席或高級程序委員會委員。
馮驍騁,哈爾濱工業大學計算學部社會計算與交互機器人研究中心教授,博士生導師,人工智能學院副院長。研究興趣包括自然語言處理、大模型等。在ACL、AAAl、IJCAl、TKDE、TOIS 等CCFA/B類國際會議及期刊發表論文50餘篇。
劉乾,新加坡某公司的研究科學家,主要研究方向是代碼生成與自然語言推理。他在頂級人工智能會議(如ICLR、NeurlPS、ICML)上發表了數十篇論文,曾獲得2020年百度獎學金提名獎、北京市2023年優秀博士論文提名獎、2024年 KAUST Rising Stars in Al等榮譽。
【主審人簡介】
車萬翔,哈爾濱工業大學計算學部長聘教授,博士生導師,人工智能研究院副院長,國家級青年人才,斯坦福大學訪問學者。
黃科科,中南大學教授,博士生導師,自動化學院副院長,國家級青年人才。
目錄大綱
第 1章 理解大語言模型 1
1.1 什麽是大語言模型 2
1.2 大語言模型的應用 3
1.3 構建和使用大語言模型的各個階段 4
1.4 Transformer架構介紹 6
1.5 利用大型數據集 9
1.6 深入剖析GPT架構 11
1.7 構建大語言模型 13
1.8 小結 14
第 2章 處理文本數據 15
2.1 理解詞嵌入 16
2.2 文本分詞 18
2.3 將詞元轉換為詞元ID 21
2.4 引入特殊上下文詞元 25
2.5 BPE 29
2.6 使用滑動窗口進行數據採樣 31
2.7 創建詞元嵌入 37
2.8 編碼單詞位置信息 40
2.9 小結 44
第3章 編碼註意力機制 45
3.1 長序列建模中的問題 46
3.2 使用註意力機制捕捉數據依賴關系 48
3.3 通過自註意力機制關註輸入的不同部分 49
3.3.1 無可訓練權重的簡單自註意力機制 50
3.3.2 計算所有輸入詞元的註意力權重 54
3.4 實現帶可訓練權重的自註意力機制 57
3.4.1 逐步計算註意力權重 58
3.4.2 實現一個簡化的自註意力Python類 63
3.5 利用因果註意力隱藏未來詞匯 66
3.5.1 因果註意力的掩碼實現 67
3.5.2 利用dropout掩碼額外的註意力權重 70
3.5.3 實現一個簡化的因果註意力類 72
3.6 將單頭註意力擴展到多頭註意力 74
3.6.1 疊加多個單頭註意力層 74
3.6.2 通過權重劃分實現多頭註意力 77
3.7 小結 82
第4章 從頭實現GPT模型進行文本生成 83
4.1 構建一個大語言模型架構 84
4.2 使用層歸一化進行歸一化激活 89
4.3 實現具有GELU激活函數的前饋神經網絡 94
4.4 添加快捷連接 99
4.5 連接Transformer塊中的註意力層和線性層 102
4.6 實現GPT模型 105
4.7 生成文本 110
4.8 小結 115
第5章 在無標簽數據上進行預訓練 116
5.1 評估文本生成模型 117
5.1.1 使用GPT來生成文本 117
5.1.2 計算文本生成損失 119
5.1.3 計算訓練集和驗證集的損失 126
5.2 訓練大語言模型 131
5.3 控制隨機性的解碼策略 137
5.3.1 溫度縮放 138
5.3.2 Top-k採樣 141
5.3.3 修改文本生成函數 142
5.4 使用PyTorch加載和保存模型權重 144
5.5 從OpenAI加載預訓練權重 145
5.6 小結 152
第6章 針對分類的微調 153
6.1 不同類型的微調 154
6.2 準備數據集 155
6.3 創建數據加載器 159
6.4 初始化帶有預訓練權重的模型 163
6.5 添加分類頭 166
6.6 計算分類損失和準確率 172
6.7 在有監督數據上微調模型 176
6.8 使用大語言模型作為垃圾消息分類器 182
6.9 小結 184
第7章 通過微調遵循人類指令 185
7.1 指令微調介紹 186
7.2 為有監督指令微調準備數據集 187
7.3 將數據組織成訓練批次 190
7.4 創建指令數據集的數據加載器 201
7.5 加載預訓練的大語言模型 204
7.6 在指令數據上微調大語言模型 207
7.7 抽取並保存模型回復 211
7.8 評估微調後的大語言模型 216
7.9 結論 224
7.9.1 下一步 225
7.9.2 跟上領域的最新進展 225
7.9.3 寫在最後 225
7.10 小結 225
附錄A PyTorch簡介 227
附錄B 參考文獻和延伸閱讀 263
附錄C 練習的解決方案 273
附錄D 為訓練循環添加更多細節和優化功能 285
附錄E 使用LoRA進行參數高效微調 294
附錄F 理解推理大語言模型:構建與優化推理模型的方法和策略 308