大語言模型開發:用開源模型開發本地系統

範煜

  • 出版商: 清華大學
  • 出版日期: 2024-09-01
  • 定價: $708
  • 售價: 8.5$602
  • 語言: 簡體中文
  • ISBN: 730267051X
  • ISBN-13: 9787302670513
  • 相關分類: LangChain
  • 下單後立即進貨 (約4週~6週)

  • 大語言模型開發:用開源模型開發本地系統-preview-1
  • 大語言模型開發:用開源模型開發本地系統-preview-2
  • 大語言模型開發:用開源模型開發本地系統-preview-3
大語言模型開發:用開源模型開發本地系統-preview-1

商品描述

" 本書旨在幫助讀者理解開源大語言模型的架構、訓練和推理過程,以及相關的源代碼。主要研究對象是Meta開源的Llama模型。本書從Python Numpy實現單層感知機和神經網絡開始,逐步講解瞭如何實現Transformer模型和Llama模型。此外,本書還介紹了增量預訓練模型、監督微調和人類反饋強化學習等模型訓練過程。對於私有知識的加入,書中重點介紹了監督微調,也介紹了RAG中詞向量的計算。本書採用循序漸進的方式,通過功能框圖、代碼分解執行、執行結果顯示、背景知識補充等手段幫助讀者理解模型和算法。 本書的核心讀者群體定位為大語言模型應用的開發人員,特別適合那些想從電腦視覺轉向自然語言處理的人。此外,本書還適合作為大學本科生及研究生相關課程的參考教材使用。"

目錄大綱

第1章 自然語言處理

1.1人工智能的技術構成 002

1.1.1 機器學習和深度學習的區別 002

1.1.2 表示學習與深度學習的關系 003

1.2自然語言處理的發展階段 004

1.3規則驅動的方法 005

1.4統計方法 005

1.4.1 隱馬爾可夫模型 006

1.4.2 條件隨機場 007

1.5深度學習方法 008

1.5.1 Word2Vec詞嵌入 008

1.5.2 循環神經網絡 009

1.5.3 長短時記憶網絡模型 009

1.5.4 門控循環單元模型 010

1.6序列到序列模型 011

1.7註意力機制 011

1.8Transformer模型 012

1.9預訓練模型 012

1.10大語言模型 014

1.10.1 根據架構分類 014

1.10.2 根據訓練方式和預測方式

     分類 015

第2章 深度學習基礎

2.1深度學習 017

2.2感知機 017

2.2.1 前饋網絡 018

2.2.2 權重更新 019

2.2.3 反向傳播 021

2.3激活函數 022

2.3.1 常用激活函數 023

2.3.2 新型激活函數 024

2.4優化函數(算法) 026

2.4.1 梯度下降法 026

2.4.2 動量優化算法 027

2.4.3 AdaGrad優化算法 027

2.4.4 RMSProp優化算法 028

2.4.5 Adam優化算法 029

2.4.6 AdamW優化算法 030

2.5權值初始化 030

2.5.1 批歸一化 031

2.5.2 層歸一化 031

2.5.3 RMSNorm  032

2.6損失函數 033

2.6.1 均方誤差 034

2.6.2 均方根誤差 034

2.6.3 交叉熵損失 035

2.7模型評估 036

2.7.1 偏差/方差 036

2.7.2 過擬合與欠擬合 037

2.8正則化 038

2.9SoftMax函數 039

2.10簡易神經網絡搭建 039

2.11模型優化 042

2.11.1 梯度消失 042

2.11.2 梯度爆炸 043

2.11.3 優化手段 043

2.11.4 調參技巧 044

第3章 PyTorch開發基礎

3.1深度學習框架 046

3.2PyTorch簡介 046

3.3PyTorch安裝 047

3.3.1 CUDA安裝 047

3.3.2 阿裡雲GPU雲服務器 049

3.3.3 安裝PyTorch 049

3.3.4 安裝其他庫 050

3.3.5 檢查開發環境 050

3.4張量 050

3.4.1 張量創建函數定義 050

3.4.2 張量創建函數清單 051

3.4.3 隨機張量:torch.randn() 052

3.4.4 張量操作 054

3.4.5 CUDA張量 055

3.5梯度計算 055

3.5.1 導數與偏導數 055

3.5.2 導數規則 056

3.5.3 梯度 056

3.5.4 公式推導 056

3.5.5 自動梯度計算 057

3.5.6 代碼解析 058

3.6反向傳播 058

3.7torch.nn模塊構建神經網絡 060

3.7.1 nn.Linear層 060

3.7.2 nn.Sigmoid激活函數 061

3.7.3 nn.BCELoss損失函數 062

3.8torch.optim優化器 062

3.9訓練、驗證和測試過程 063

3.10用PyTorch實現神經網絡 064

3.10.1 實現單層感知機 064

3.10.2 實現簡單神經網絡 065

3.10.3 用torch.nn實現簡單神經

網絡 067

3.11源代碼常用模塊 068

3.11.1 nn.Parameter類 068

3.11.2 typing模塊 069

3.11.3 logging模塊 070

3.11.4 dataclasses 071

3.11.5 Fire庫 073

第4章 Transformer模型詳解

4.1大語言模型的簡介和分類 076

4.1.1 簡介 076

4.1.2 分類 076

4.2Transformer模型 078

4.2.1 模型構成 078

4.2.2 因果解碼器結構 080

4.3分詞 081

4.3.1 詞匯表 082

4.3.2 詞匯表的生成 083

4.3.3 分詞算法 083

4.3.4 字節對編碼 084

4.3.5 句子片段 084

4.3.6 分詞過程 085

4.3.7 詞匯索引 085

4.4詞嵌入 086

4.4.1 標記嵌入 087

4.4.2 位置編碼 089

4.4.3 詞匯索引和詞嵌入向量關系 090

4.5位置編碼方法 090

4.5.1 原生位置編碼 090

4.5.2 旋轉位置編碼 092

4.5.3 位置編碼的實現 093

4.5.4 Llama位置編碼 094

4.5.5 長度擴展 097

4.6自註意力機制 098

4.6.1 原理 098

4.6.2 註意力分數的計算 099

4.6.3 多頭註意力機制 101

4.6.4 分組查詢註意力 102

4.6.5 Llama 2源代碼分析 103

4.7殘差連接和層歸一化 106

4.7.1 預歸一化 106

4.7.2 RMSNorm 107

4.7.3 Llama 2源代碼分析 107

4.8前饋網絡 108

4.8.1 激活函數 109

4.8.2 前饋網絡隱藏層維度 110

4.8.3 Llama 2源代碼分析 110

4.8.4 演示代碼 112

4.9損失函數 113

4.10掩碼 114

4.11PyTorch的nn.Transformer模塊 115

4.11.1 模塊組件 115

4.11.2 __call__函數 116

4.11.3 最簡單的標準Transformer

模型 116

4.11.4 純解碼器模型 117

4.11.5 Llama 2模型 118

第5章 大語言模型

5.1什麽是大語言模型 125

5.2GPT簡介 125

5.3Llama簡介 126

5.4Llama的訓練 128

5.4.1 訓練數據 128

5.4.2 預訓練 129

5.5Llama 2 chat 130

5.5.1 監督微調 130

5.5.2 基於人類反饋的強化學習 130

5.6Llama 2模型結構 132

5.7Llama 2權重文件夾 134

5.8參數量計算 136

5.8.1 標準Transformer解碼器模型 136

5.8.2 Llama 2模型 137

5.8.3用Transformers模塊計算 139

5.8.4 直接解析模型文件 139

第6章 模型訓練

6.1模型訓練的種類 146

6.2Hugging Face訓練環境 146

6.3Transformers庫 147

6.3.1 主要功能 147

6.3.2 函數 148

6.4訓練程序 149

6.5分詞處理 149

6.5.1 相關名詞 149

6.5.2 input IDs 150

6.5.3 特殊標記 150

6.5.4 AutoTokenizer 152

6.5.5 分詞 153

6.5.6 下劃線 154

6.5.7 填空 154

6.6量化技術 155

6.6.1 8位量化技術 155

6.6.2 LLM.int8() 156

6.6.3 NF4和QLoRA 157

6.6.4 BitsAndBytes模型 159

6.7優化技術 161

6.7.1 LoRA 161

6.7.2 PEFT庫 162

6.8訓練代碼示例 164

6.8.1 導入庫和函數 164

6.8.2 參數定義 164

6.8.3 加載模型 165

6.8.4 加載分詞器 165

6.8.5 數據預處理 165

6.8.6 用LoRA權重調整模型 168

6.8.7 LoRA模型訓練 168

6.8.8 模型的合並 170

6.8.9 模型推理 172

6.8.10 加載多個LoRA並隨時切換 173

6.9加速技術和工具 175

6.9.1 DeepSpeed 176

6.9.2 FairScale 176

6.9.3 GPTQ 177

6.9.4 FSDP 177

6.10超長上下文 178

6.10.1 外推能力 178

6.10.2 外推手段 179

6.10.3 StreamingLLM 179

第7章 模型微調

7.1監督微調 182

7.2開源數據集 182

7.3數據集訪問 182

7.3.1 datasets庫 182

7.3.2 datasets常用的函數和類 183

7.3.3 加載數據集 183

7.3.4 數據集的處理 184

7.4開源微調數據集 186

7.4.1 主要數據集 186

7.4.2 數據集格式 186

7.4.3SQuAD 187

7.4.4 OSSIST1數據集格式 189

7.4.5 格式轉換代碼及分析 190

7.5主要的微調模型 193

7.5.1 Alpaca羊駝 193

7.5.2 Vicuna小羊駝 193

7.5.3 LLaMA.cpp 194

7.5.4 Guanco  194

第8章 人類反饋強化學習

8.1強化學習架構 196

8.2演員-評論家架構 197

8.3近端策略優化架構 197

8.4DeepSpeed Chat 198

8.5開源RLHF數據集 199

8.6訓練數據讀取 205

8.6.1 第1步:SFT監督微調數據 206

8.6.2 第2步:獎勵模型微調數據 207

8.6.3 第3步:RLHF微調數據 209

8.7監督微調 210

8.8獎勵模型微調 212

8.9RLHF微調 217

8.9.1 代碼運行環境 218

8.9.2 準備訓練數據 219

8.9.3 建立模型 221

8.9.4 演員模型、參考模型生成對數

概率 221

8.9.5 計算對數概率 223

8.9.6 計算期望獎勵 225

8.9.7 KL散度 226

8.9.8 計算實際獎勵 226

8.9.9 優勢函數 228

8.9.10 計算優勢和回報 228

8.9.11 損失函數 229

第9章 模型推理

9.1模型文件 233

9.2推理 233

9.2.1 單輪推理 235

9.2.2 多輪推理 235

9.3GPU推理 235

9.3.1 單卡 235

9.3.2 多卡 235

9.3.3 多機 236

9.4Hugging Face Transformers庫 237

9.4.1 簡介 237

9.4.2 Pipeline API 237

9.4.3 Model and Tokenizer API 239

9.4.4 單輪推理 240

9.4.5 多輪推理 242

9.4.6 LoRA推理 245

9.4.7 vLLM 245

9.5LLaMA.cpp 248

9.5.1 特色與優勢 248

9.5.2 模型量化 249

9.5.3 k-quant量化 249

9.5.4 開發環境安裝 250

9.5.5 構建執行程序 252

9.5.6 轉換模型 252

9.5.7 推理 252

9.6Gradio 254

9.6.1 簡介 254

9.6.2 基本用法 255

9.6.3 復雜交互 255

9.6.4 聊天機器人 257

9.6.5 Gradio多輪推理 258

9.7解碼策略 261

9.7.1 常見解碼策略 261

9.7.2 推理超參數 262

9.7.3 溫度 262

9.7.4 top-k 263

9.7.5 top-p 264

9.7.6 重復懲罰 265

9.7.7 代碼實現 266

9.8推理加速技術 270

9.8.1 簡介 270

9.8.2 純C推理 271

9.8.3 投機採樣 271

9.8.4 Medusa 272

9.8.5 流式推理 272

第10章 中文私有模型開發

10.1基本思路 275

10.2中文詞匯表 276

10.3模型下載 277

10.3.1 安裝Git LFS 277

10.3.2 獲取下載鏈接 277

10.3.3 直接單擊鏈接分文件逐一

下載 278

10.4開發方案 279

10.4.1 演示系統開發 279

10.4.2 生產系統開發 280

10.4.3 實訓系統開發 280

10.5中文語料 280

10.5.1 預訓練語料 282

10.5.2 微調數據集 285

第11章 模型評估

11.1大語言模型評估 292

11.2評估指標 293

11.2.1 困惑度 293

11.2.2 HellaSwag 293

11.2.3 BLEU 294

11.2.4 ROUGE 294

11.2.5 METEOR 294

11.3基於上下文的學習 294

11.4Llama 2預訓練模型的評估 296

11.5MMLU 299

11.6標準基準測試 299

11.7代碼生成 300

11.7.1 Human-Eval代碼生成基準

測試 300

11.7.2 MBPP程序生成基準測試 300

11.8考試AGI Eval 301

11.9GSM8K 302

11.10世界知識 302

11.10.1 NaturalQuestions 302

11.10.2 TriviaQA 303

11.11通義千問評測 303

11.12BBH 304

第12章 用於RAG的詞向量計算

12.1信息整合 306

12.2向量數據庫 307

12.3詞向量 307

12.4嵌入向量生成模型 308

12.5池化技術 309

12.6計算詞向量 310

12.6.1 使用OpenAI 310

12.6.2 使用Hugging Face  310

12.6.3 使用Llama 2  312

12.7批量生成嵌入向量 313

12.8池化算法 315

12.9詞向量文檔檢索 317

12.10示例 318

12.10.1 PGVector簡介 318

12.10.2 PGVector安裝 318

12.10.3 向量數據庫操作 319

參考文獻 320