《從零開始大模型開發與微調:基於PyTorch與ChatGLM》封麵

內容簡介

大模型是深度學習自然語言處理皇冠上的一顆明珠,也是當前AI和NLP研究與產業中最重要的方向之一。本書使用PyTorch 2.0作為學習大模型的基本框架,以ChatGLM為例詳細講解大模型的基本理論、算法、程序實現、應用實戰以及微調技術,為讀者揭示大模型開發技術。本書配套示例源代碼、PPT課件。

《從零開始大模型開發與微調:基於PyTorch與ChatGLM》共18章,內容包括人工智能與大模型、PyTorch 2.0深度學習環境搭建、從零開始學習PyTorch 2.0、深度學習基礎算法詳解、基於PyTorch卷積層的MNIST分類實戰、PyTorch數據處理與模型展示、ResNet實戰、有趣的詞嵌入、基於PyTorch循環神經網絡的中文情感分類實戰、自然語言處理的編碼器、預訓練模型BERT、自然語言處理的解碼器、強化學習實戰、隻具有解碼器的GPT-2模型、實戰訓練自己的ChatGPT、開源大模型ChatGLM使用詳解、ChatGLM高級定製化應用實戰、對ChatGLM進行高級微調。

《從零開始大模型開發與微調:基於PyTorch與ChatGLM》適合PyTorch深度學習初學者、大模型開發初學者、大模型開發人員學習,也適合高等院校人工智能、智能科學與技術、數據科學與大數據技術、計算機科學與技術等專業的師生作為教學參考書。

作者簡介

王曉華,高校計算機專業講師,研究方向為雲計算、大數據與人工智能。著有《PyTorch 2.0深度學習從零開始學》《Python機器學習與可視化分析實戰》《穀歌JAX深度學習從零開始學》《Spark 3.0大數據分析與挖掘:基於機器學習》《TensorFlow深度學習應用實踐》《OpenCV+TensorFlow深度學習與計算機視覺實戰》《TensorFlow知識圖譜實戰》《TensorFlow人臉識別實戰》《TensorFlow語音識別實戰》《TensorFlow+Keras自然語言處理實戰》《TensorFlow 2.0卷積神經網絡實戰》《Keras實戰:基於TensorFlow2.2的深度學習實踐》《TensorFlow 2.0深度學習從零開始學》《深度學習的數學原理與實現》。

目錄

目錄
第1章新時代的曙光—人工智能與大模型 1
1.1人工智能:思維與實踐的融合 1
1.1.1人工智能的歷史與未來 2
1.1.2深度學習與人工智能 2
1.1.3選擇PyTorch2.0實戰框架 3
1.2大模型開啟人工智能的新時代 4
1.2.1大模型帶來的變革 4
1.2.2最強的中文大模型—清華大學ChatGLM介紹 5
1.2.3近在咫尺的未來—大模型的應用前景 6
1.3本章小結 7
第2章PyTorch2.0深度學習環境搭建 8
2.1環境搭建1:安裝Python 8
2.1.1Miniconda的下載與安裝 8
2.1.2PyCharm的下載與安裝 11
2.1.3Python代碼小練習:計算Softmax函數 14
2.2環境搭建2:安裝PyTorch2.0 15
2.2.1Nvidia10/20/30/40係列顯卡選擇的GPU版本 15
2.2.2PyTorch2.0GPUNvidia運行庫的安裝 15
2.2.3PyTorch2.0小練習:HelloPyTorch 18
2.3生成式模型實戰:古詩詞的生成 18
2.4圖像降噪:手把手實戰第一個深度學習模型 19
2.4.1MNIST數據集的準備 19
2.4.2MNIST數據集的特征和標簽介紹 21
2.4.3模型的準備和介紹 22
2.4.4對目標的逼近—模型的損失函數與優化函數 24
2.4.5基於深度學習的模型訓練 24
2.5本章小結 26
第3章從零開始學習PyTorch2.0 27
3.1實戰MNIST手寫體識別 27
3.1.1數據圖像的獲取與標簽的說明 27
3.1.2實戰基於PyTorch2.0的手寫體識別模型 29
3.1.3基於Netron庫的PyTorch2.0模型可視化 32
3.2自定義神經網絡框架的基本設計 34
3.2.1神經網絡框架的抽象實現 34
3.2.2自定義神經網絡框架的具體實現 35
3.3本章小結 43
第4章一學就會的深度學習基礎算法詳解 44
4.1反向傳播神經網絡的前身歷史 44
4.2反向傳播神經網絡兩個基礎算法詳解 47
4.2.1最小二乘法詳解 48
4.2.2梯度下降算法 50
4.2.3最小二乘法的梯度下降算法及其Python實現 52
4.3反饋神經網絡反向傳播算法介紹 58
4.3.1深度學習基礎 58
4.3.2鏈式求導法則 59
4.3.3反饋神經網絡的原理與公式推導 60
4.3.4反饋神經網絡原理的激活函數 64
4.3.5反饋神經網絡原理的Python實現 66
4.4本章小結 70
第5章基於PyTorch卷積層的MNIST分類實戰 71
5.1卷積運算的基本概念 71
5.1.1基本卷積運算示例 72
5.1.2PyTorch中的卷積函數實現詳解 73
5.1.3池化運算 75
5.1.4Softmax激活函數 77
5.1.5卷積神經網絡的原理 78
5.2實戰:基於卷積的MNIST手寫體分類 80
5.2.1數據的準備 80
5.2.2模型的設計 81
5.2.3基於卷積的MNIST分類模型 82
5.3PyTorch的深度可分離膨脹卷積詳解 84
5.3.1深度可分離卷積的定義 84
5.3.2深度的定義以及不同計算層待訓練參數的比較 86
5.3.3膨脹卷積詳解 87
5.3.4實戰:基於深度可分離膨脹卷積的MNIST手寫體識別 87
5.4本章小結 90
第6章可視化的PyTorch數據處理與模型展示 91
6.1用於自定義數據集的torch.utils.data工具箱使用詳解 92
6.1.1使用torch.utils.data.Dataset封裝自定義數據集 92
6.1.2改變數據類型的Dataset類中的transform的使用 93
6.1.3批量輸出數據的DataLoader類詳解 98
6.2實戰:基於tensorboardX的訓練可視化展示 100
6.2.1可視化組件tensorboardX的簡介與安裝 100
6.2.2tensorboardX可視化組件的使用 100
6.2.3tensorboardX對模型訓練過程的展示 103
6.3本章小結 105
第7章ResNet實戰 106
7.1ResNet基礎原理與程序設計基礎 106
7.1.1ResNet誕生的背景 107
7.1.2PyTorch2.0中的模塊工具 109
7.1.3ResNet殘差模塊的實現 110
7.1.4ResNet網絡的實現 112
7.2ResNet實戰:CIFAR-10數據集分類 114
7.2.1CIFAR-10數據集簡介 114
7.2.2基於ResNet的CIFAR-10數據集分類 117
7.3本章小結 118
第8章有趣的詞嵌入 120
8.1文本數據處理 120
8.1.1Ag_news數據集介紹和數據清洗 120
8.1.2停用詞的使用 123
8.1.3詞向量訓練模型Word2Vec使用介紹 125
8.1.4文本主題的提取:基於TF-IDF 128
8.1.5文本主題的提取:基於TextRank 132
8.2更多的詞嵌入方法—FastText和預訓練詞向量 134
8.2.1FastText的原理與基礎算法 135
8.2.2FastText訓練及其與PyTorch2.0的協同使用 136
8.2.3使用其他預訓練參數來生成PyTorch2.0詞嵌入矩陣(中文) 140
8.3針對文本的卷積神經網絡模型簡介—字符卷積 141
8.3.1字符(非單詞)文本的處理 141
8.3.2卷積神經網絡文本分類模型的實現—Conv1d(一維卷積) 148
8.4針對文本的卷積神經網絡模型簡介—詞卷積 151
8.4.1單詞的文本處理 151
8.4.2卷積神經網絡文本分類模型的實現—Conv2d(二維卷積) 153
8.5使用卷積對文本分類的補充內容 155
8.5.1漢字的文本處理 155
8.5.2其他細節 157
8.6本章小結 158
第9章基於循環神經網絡的中文情感分類實戰 160
9.1實戰:循環神經網絡與情感分類 160
9.2循環神經網絡理論講解 165
9.2.1什麼是GRU 165
9.2.2單向不行,那就雙向 167
9.3本章小結 168
第10章從零開始學習自然語言處理的編碼器 169
10.1編碼器的核心—注意力模型 170
10.1.1輸入層—初始詞向量層和位置編碼器層 170
10.1.2自注意力層 172
10.1.3ticks和LayerNormalization 177
10.1.4多頭注意力 178
10.2編碼器的實現 180
10.2.1前饋層的實現 181
10.2.2編碼器的實現 182
10.3實戰編碼器:拚音漢字轉化模型 184
10.3.1漢字拚音數據集處理 185
10.3.2漢字拚音轉化模型的確定 187
10.3.3模型訓練部分的編寫 190
10.4本章小結 191
第11章站在巨人肩膀上的預訓練模型BERT 193
11.1預訓練模型BERT 193
11.1.1BERT的基本架構與應用 194
11.1.2BERT預訓練任務與微調 195
11.2實戰BERT:中文文本分類 198
11.2.1使用HuggingFace獲取BERT預訓練模型 198
11.2.2BERT實戰文本分類 200
11.3更多的預訓練模型 203
11.4本章小結 205
第12章從1開始自然語言處理的解碼器 206
12.1解碼器的核心—注意力模型 206
12.1.1解碼器的輸入和交互注意力層的掩碼 207
12.1.2為什麼通過掩碼操作能夠減少幹擾 212
12.1.3解碼器的輸出(移位訓練方法) 213
12.1.4解碼器的實現 214
12.2解碼器實戰—拚音漢字翻譯模型 215
12.2.1數據集的獲取與處理 216
12.2.2翻譯模型 218
12.2.3拚音漢字模型的訓練 229
12.2.4拚音漢字模型的使用 230
12.3本章小結 231
第13章基於PyTorch2.0的強化學習實戰 232
13.1基於強化學習的火箭回收實戰 232
13.1.1火箭回收基本運行環境介紹 233
13.1.2火箭回收參數介紹 234
13.1.3基於強化學習的火箭回收實戰 234
13.1.4強化學習的基本內容 239
13.2強化學習的基本算法—PPO算法 243
13.2.1PPO算法簡介 243
13.2.2函數使用說明 244
13.2.3一學就會的TD-error理論介紹 245
13.2.4基於TD-error的結果修正 247
13.2.5對於獎勵的倒序構成的說明 248
13.3本章小結 249
第14章ChatGPT前身—隻具有解碼器的GPT-2模型 250
14.1GPT-2模型簡介 250
14.1.1GPT-2模型的輸入和輸出結構—自回歸性 251
14.1.2GPT-2模型的PyTorch實現 252
14.1.3GPT-2模型輸入輸出格式的實現 257
14.2HuggingFaceGPT-2模型源碼模型詳解 259
14.2.1GPT2LMHeadModel類和GPT2Model類詳解 259
14.2.2Block類詳解 270
14.2.3Attention類詳解 274
14.2.4MLP類詳解 281
14.3HuggingFaceGPT-2模型的使用與自定義微調 282
14.3.1模型的使用與自定義數據集的微調 282
14.3.2基於預訓練模型的評論描述微調 285
14.4自定義模型的輸出 286
14.4.1GPT輸出的結構 286
14.4.2創造性參數temperature與采樣個數topK 288
14.5本章小結 290
第15章實戰訓練自己的ChatGPT 291
15.1什麼是ChatGPT 291
15.2RLHF模型簡介 293
15.2.1RLHF技術分解 293
15.2.2RLHF中的具體實現—PPO算法 296
15.3基於RLHF實戰的ChatGPT正向評論的生成 297
15.3.1RLHF模型進化的總體講解 297
15.3.2ChatGPT評分模塊簡介 298
15.3.3帶有評分函數的ChatGPT模型的構建 300
15.3.4RLHF中的PPO算法—KL散度 301
15.3.5RLHF中的PPO算法—損失函數 303
15.4本章小結 304
第16章開源大模型ChatGLM使用詳解 305
16.1為什麼要使用大模型 305
16.1.1大模型與普通模型的區別 306
16.1.2一個神奇的現象—大模型的湧現能力 307
16.2ChatGLM使用詳解 307
16.2.1ChatGLM簡介及應用前景 308
16.2.2下載ChatGLM 309
16.2.3ChatGLM的使用與Prompt介紹 310
16.3本章小結 311
第17章開源大模型ChatGLM高級定製化應用實戰 312
17.1醫療問答GLMQABot搭建實戰—基於ChatGLM搭建專業客服問答機器人 312
17.1.1基於ChatGLM搭建專業領域問答機器人的思路 313
17.1.2基於真實醫療問答的數據準備 314
17.1.3文本相關性(相似度)的比較算法 315
17.1.4提示語句Prompt的構建 316
17.1.5基於單個文檔的GLMQABot的搭建 316
17.2金融信息抽取實戰—基於知識鏈的ChatGLM本地化知識庫檢索與智能答案生成 318
17.2.1基於ChatGLM搭建智能答案生成機器人的思路 319
17.2.2獲取專業(範疇內)文檔與編碼存儲 320
17.2.3查詢文本編碼的相關性比較與排序 322
17.2.4基於知識鏈的ChatGLM本地化知識庫檢索與智能答案生成 325
17.3基於ChatGLM的一些補充內容 327
17.3.1語言的藝術—Prompt的前世今生 328
17.3.2清華大學推薦的ChatGLM微調方法 329
17.3.2一種新的基於ChatGLM的文本檢索方案 330
17.4本章小結 331
第18章對訓練成本上億美元的ChatGLM進行高級微調 332
18.1ChatGLM模型的本地化處理 332
18.1.1下載ChatGLM源碼與合並存檔 332
18.1.2修正自定義的本地化模型 335
18.1.3構建GLM模型的輸入輸出示例 337
18.2高級微調方法1—基於加速庫Accelerator的全量數據微調 339
18.2.1數據的準備—將文本內容轉化成三元組的知識圖譜 339
18.2.2加速的秘密—Accelerate模型加速工具詳解 342
18.2.3更快的速度—使用INT8(INT4)量化模型加速訓練 345
18.3高級微調方法2—基於LoRA的模型微調 348
18.3.1對ChatGLM進行微調的方法—LoRA 348
18.3.2自定義LoRA的使用方法 349
18.3.3基於自定義LoRA的模型訓練 350
18.3.4基於自定義LoRA的模型推斷 352
18.3.5基於基本原理的LoRA實現 355
18.4高級微調方法3—基於Huggingface的PEFT模型微調 357
18.4.1PEFT技術詳解 358
18.4.2PEFT的使用與參數設計 359
18.4.3Huggingface專用PEFT的使用 360
18.5本章小結 362
······

最後修改:2025 年 01 月 31 日