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

王曉華

  • 從零開始大模型開發與微調:基於 PyTorch 與 ChatGLM-preview-1
  • 從零開始大模型開發與微調:基於 PyTorch 與 ChatGLM-preview-2
  • 從零開始大模型開發與微調:基於 PyTorch 與 ChatGLM-preview-3
從零開始大模型開發與微調:基於 PyTorch 與 ChatGLM-preview-1

買這商品的人也買了...

商品描述

大模型是深度學習自然語言處理皇冠上的一顆明珠,也是當前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深度學習初學者、大模型開發初學者、大模型開發人員學習,也適合高等院校人工智能、智能科學與技術、數據科學與大數據技術、電腦科學與技術等專業的師生作為教學參考書。

目錄大綱

目    錄

 

第1章  新時代的曙光—人工智能與大模型 1

1.1  人工智能:思維與實踐的融合 1

1.1.1  人工智能的歷史與未來 2

1.1.2  深度學習與人工智能 2

1.1.3  選擇PyTorch 2.0實戰框架 3

1.2  大模型開啟人工智能的新時代 4

1.2.1  大模型帶來的變革 4

1.2.2  最強的中文大模型—清華大學ChatGLM介紹 5

1.2.3  近在咫尺的未來—大模型的應用前景 6

1.3  本章小結 7

第2章  PyTorch 2.0深度學習環境搭建 8

2.1  環境搭建1:安裝Python 8

2.1.1  Miniconda的下載與安裝 8

2.1.2  PyCharm的下載與安裝 11

2.1.3  Python代碼小練習:計算Softmax函數 14

2.2  環境搭建2:安裝PyTorch 2.0 15

2.2.1  Nvidia 10/20/30/40系列顯卡選擇的GPU版本 15

2.2.2  PyTorch 2.0 GPU Nvidia運行庫的安裝 15

2.2.3  PyTorch 2.0小練習:Hello PyTorch 18

2.3  生成式模型實戰:古詩詞的生成 18

2.4  圖像降噪:手把手實戰第一個深度學習模型 19

2.4.1  MNIST數據集的準備 19

2.4.2  MNIST數據集的特徵和標簽介紹 21

2.4.3  模型的準備和介紹 22

2.4.4  對目標的逼近—模型的損失函數與優化函數 24

2.4.5  基於深度學習的模型訓練 24

2.5  本章小結 26

第3章  從零開始學習PyTorch 2.0 27

3.1  實戰MNIST手寫體識別 27

3.1.1  數據圖像的獲取與標簽的說明 27

3.1.2  實戰基於PyTorch 2.0的手寫體識別模型 29

3.1.3  基於Netron庫的PyTorch 2.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.2  PyTorch中的捲積函數實現詳解 73

5.1.3  池化運算 75

5.1.4  Softmax激活函數 77

5.1.5  捲積神經網絡的原理 78

5.2  實戰:基於捲積的MNIST手寫體分類 80

5.2.1  數據的準備 80

5.2.2  模型的設計 81

5.2.3  基於捲積的MNIST分類模型 82

5.3  PyTorch的深度可分離膨脹捲積詳解 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.2  tensorboardX可視化組件的使用 100

6.2.3  tensorboardX對模型訓練過程的展示 103

6.3  本章小結 105

第7章  ResNet實戰 106

7.1  ResNet基礎原理與程序設計基礎 106

7.1.1  ResNet誕生的背景 107

7.1.2  PyTorch 2.0中的模塊工具 109

7.1.3  ResNet殘差模塊的實現 110

7.1.4  ResNet網絡的實現 112

7.2  ResNet實戰:CIFAR-10數據集分類 114

7.2.1  CIFAR-10數據集簡介 114

7.2.2  基於ResNet的CIFAR-10數據集分類 117

7.3  本章小結 118

第8章  有趣的詞嵌入 120

8.1  文本數據處理 120

8.1.1  Ag_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.1  FastText的原理與基礎算法 135

8.2.2  FastText訓練及其與PyTorch 2.0的協同使用 136

8.2.3  使用其他預訓練參數來生成PyTorch 2.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.3  ticks和Layer Normalization 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.1  BERT的基本架構與應用 194

11.1.2  BERT預訓練任務與微調 195

11.2  實戰BERT:中文文本分類 198

11.2.1  使用Hugging Face獲取BERT預訓練模型 198

11.2.2  BERT實戰文本分類 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章  基於PyTorch 2.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.1  PPO算法簡介 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.1  GPT-2模型簡介 250

14.1.1  GPT-2模型的輸入和輸出結構—自回歸性 251

14.1.2  GPT-2模型的PyTorch實現 252

14.1.3  GPT-2模型輸入輸出格式的實現 257

14.2  Hugging Face GPT-2模型源碼模型詳解 259

14.2.1  GPT2LMHeadModel類和GPT2Model類詳解 259

14.2.2  Block類詳解 270

14.2.3  Attention類詳解 274

14.2.4  MLP類詳解 281

14.3  Hugging Face GPT-2模型的使用與自定義微調 282

14.3.1  模型的使用與自定義數據集的微調 282

14.3.2  基於預訓練模型的評論描述微調 285

14.4  自定義模型的輸出 286

14.4.1  GPT輸出的結構 286

14.4.2  創造性參數temperature與採樣個數topK 288

14.5  本章小結 290

第15章  實戰訓練自己的ChatGPT 291

15.1  什麽是ChatGPT 291

15.2  RLHF模型簡介 293

15.2.1  RLHF技術分解 293

15.2.2  RLHF中的具體實現—PPO算法 296

15.3  基於RLHF實戰的ChatGPT正向評論的生成 297

15.3.1  RLHF模型進化的總體講解 297

15.3.2  ChatGPT評分模塊簡介 298

15.3.3  帶有評分函數的ChatGPT模型的構建 300

15.3.4  RLHF中的PPO算法—KL散度 301

15.3.5  RLHF中的PPO算法—損失函數 303

15.4  本章小結 304

第16章  開源大模型ChatGLM使用詳解 305

16.1  為什麽要使用大模型 305

16.1.1  大模型與普通模型的區別 306

16.1.2  一個神奇的現象—大模型的涌現能力 307

16.2  ChatGLM使用詳解 307

16.2.1  ChatGLM簡介及應用前景 308

16.2.2  下載ChatGLM 309

16.2.3  ChatGLM的使用與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.1  ChatGLM模型的本地化處理 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.1  PEFT技術詳解 358

18.4.2  PEFT的使用與參數設計 359

18.4.3  Huggingface專用PEFT的使用 360

18.5  本章小結 362