DeepSeek開發實戰

李寧

  • 出版商: 人民郵電
  • 出版日期: 2025-06-01
  • 售價: $539
  • 語言: 簡體中文
  • 頁數: 270
  • ISBN: 711567065X
  • ISBN-13: 9787115670656
  • 下單後立即進貨 (約4週~6週)

  • DeepSeek開發實戰-preview-1
  • DeepSeek開發實戰-preview-2
DeepSeek開發實戰-preview-1

商品描述

本書是一本全面介紹開發與應用DeepSeek大模型的實戰指南,旨在幫助讀者全面掌握大模型的技術與應用。本書首先介紹DeepSeek的核心概念、功能及未來發展方向,隨後深入探討大模型部署的硬件要求、量化技術、推理速度優化等關鍵問題,並詳細介紹Transforme架構和混合專家模型的理論基礎。接著介紹了如何用Ollama和LMStudio等工具在本地部署DeepSeek-R1模型,並結合Cherry Studio構建本地知識庫,實現智能問答和知識檢索功能。此外,本書還介紹AnythingLLM和Chatbox等大模型應用構建平臺,幫助讀者擴展應用場景。針對API與程序庫的使用,本書詳細講解Ollama的RESTful API、 OpenAI 兼容API以及相關程序庫。最後,本書通過介紹多個實戰項目(如代碼註釋翻譯器、構建知識庫、文章智能配圖器、意圖鑒別服務、多模態聊天機器人),使讀者可以將理論知識應用於實際開發中,掌握大模型的核心技術。

本書通俗易懂,適合數據科學家、大模型開發者、應用開發者、相關專業學生以及技術愛好者閱讀,無論是初學者還是有經驗的開發者,都能從本書中獲得有價值的知識和技能。

作者簡介

李寧 華為HDE(HUAWEI Developer Experts),開放原子基金會銀牌講師,51CTO學堂金牌講師,IT暢銷書作者。從事軟件研究和開發超過20年,長期從事編譯器、人工智能、Python、JavaScript、Java及跨平臺技術的研究和開發工作,曾出版多本圖書,包括《鴻蒙征途:App開發實戰》《AIGC自動化編程:基於CHATGPT和GITHUB COPILOT》

目錄大綱

第 1章 走進DeepSeek世界 1

1.1 什麼是DeepSeek 1

1.1.1 DeepSeek的發展歷程 2

1.1.2 DeepSeek的核心功能 2

1.1.3 DeepSeek的優勢 3

1.1.4 DeepSeek與其他大模型的比較 4

1.2 DeepSeek能做什麼 4

1.2.1 DeepSeek的應用場景 5

1.2.2 用DeepSeek做數學題 5

1.2.3 用DeepSeek編程 7

1.3 如何使用DeepSeek 11

1.3.1 DeepSeek的用戶界面和基本操作 11

1.3.2 移動端DeepSeek App 12

1.3.3 DeepSeek API 13

1.4 DeepSeek的DeepSeek-R1模型和蒸餾模型 18

1.4.1 DeepSeek-R1模型的原理 18

1.4.2 蒸餾模型 19

1.5 DeepSeek的未來展望 21

1.5.1 DeepSeek的發展趨勢和挑戰 21

1.5.2 DeepSeek對AIGC領域和社會的影響 22

1.6 本章小結 23

第 2章 DeepSeek大模型部署的硬件要求和技術 24

2.1 本地部署DeepSeek-R1的硬件條件 24

2.2 大模型到底需要多大的顯存 26

2.2.1 模型量化與顯存占用:不同“精度”的顯存開銷 27

2.2.2 激活參數與推理顯存:生成token的“動態”消耗 27

2.2.3 多用戶並發:顯存需求的“乘法效應” 28

2.2.4 如何估算大模型推理的顯存需求 29

2.3 精度與體積的權衡:揭示大模型量化的秘密 30

2.3.1 何謂模型量化:為大模型“精打細算” 30

2.3.2 精度標尺:FP32、FP16、Q8 與Q4的“位之爭” 30

2.3.3 參數、量化和蒸餾之間的關系 31

2.3.4 比特之內的秘密:量化參數的“廬山真面目” 32

2.4 存儲帶寬瓶頸:推理速度的限制 32

2.4.1 什麼是存儲帶寬:數據傳輸的“高速公路” 32

2.4.2 存儲帶寬在大模型推理中的作用:將數據“餵”給計算單元 33

2.4.3 量化如何緩解存儲帶寬的壓力:數據“瘦身”加速傳輸 33

2.4.4 優化技術與存儲帶寬:“多管齊下”提升效率 33

2.5 推理速度與延遲:除了顯存,性能也很重要 34

2.5.1 推理速度與延遲:用戶體驗的“晴雨表” 34

2.5.2 影響推理性能的其他因素 34

2.5.3 CPU與GPU的協同:軟硬結合,發揮最大效能 35

2.6 大模型背後的秘密武器:Transformer架構 36

2.6.1 從“註意力”機制開始:像人類一樣思考 36

2.6.2 Transformer架構的基本結構:積木搭建的“變形金剛” 36

2.6.3 Transformer架構與硬件需求:“大力士”的胃口 37

2.7 DeepSeek中的MoE 38

2.7.1 MoE的基本原理 38

2.7.2 MoE的應用 38

2.7.3 DeepSeek的創新性MoE 39

2.8 本章小結 39

第3章 用Ollama本地部署DeepSeek-R1 41

3.1 Ollama簡介 41

3.2 安裝Ollama 42

3.3 Ollama支持的DeepSeek系列模型 43

3.4 用Ollama部署模型 44

3.5 模型的存儲位置 45

3.6 在Ollama中進行推理 46

3.7 Ollama命令行參數和子命令詳解 47

3.8 導入GGUF格式的模型文件 51

3.9 本章小結 51

第4章 用LM Studio本地部署DeepSeek-R1 52

4.1 LM Studio簡介 52

4.1.1 什麼是LM Studio 52

4.1.2 LM Studio的核心功能 52

4.1.3 LM Studio的優勢 53

4.1.4 LM Studio支持的平臺 53

4.1.5 LM Studio的硬件要求 54

4.2 LM Studio的適用場景 54

4.3 安裝LM Studio 55

4.4 LM Studio支持的大模型格式 56

4.4.1 大模型格式——GGUF 56

4.4.2 模型格式——MLX 57

4.5 本地部署DeepSeek-R1模型 58

4.5.1 從Hugging Face下載模型文件 58

4.5.2 本地部署DeepSeek-R1模型 60

4.5.3 模型加載設置詳解 61

4.5.4 用LM Studio聊天 64

4.5.5 模型推理參數設置 65

4.6 本章小結 68

第5章 用Cherry Studio建立本地知識庫 69

5.1 Cherry Studio簡介 69

5.2 安裝Cherry Studio 70

5.3 在Cherry Studio中使用DeepSeek-R1 71

5.4 在Cherry Studio中使用DeepSeek-R1聊天 72

5.5 本地知識庫的理論基礎 73

5.5.1 本地知識庫、嵌入模型與向量數據庫的關系 73

5.5.2 嵌入模型 74

5.5.3 向量數據庫 75

5.5.4 嵌入模型與向量數據庫的工作流程 76

5.5.5 整合本地模型與嵌入模型 76

5.6 建立和使用本地知識庫 78

5.6.1 本地部署嵌入模型 78

5.6.2 建立本地知識庫 78

5.6.3 使用DeepSeek-R1編寫倉頡代碼 80

5.7 智能體 80

5.7.1 Cherry Studio中的智能體 80

5.7.2 在自定義的智能體中使用知識庫 82

5.8 遠程訪問Ollama服務 83

5.9 本章小結 83

第6章 更多的大模型應用構建平臺 84

6.1 一體化的開源AI應用平臺——AnythingLLM 84

6.1.1 AnythingLLM簡介 84

6.1.2 安裝AnythingLLM 85

6.1.3 本地部署DeepSeek-R1模型 86

6.1.4 訪問Ollama中的大語言模型 87

6.1.5 在AnythingLLM中聊天 87

6.1.6 在AnythingLLM中建立本地知識庫 88

6.2 聊天機器人應用——Chatbox 89

6.2.1 Chatbox簡介 89

6.2.2 安裝Chatbox 90

6.2.3 配置Chatbox 90

6.2.4 在Chatbox中聊天 90

6.3 本章小結 91

第7章 Ollama的RESTful API 92

7.1 Ollama API簡介 92

7.1.1 RESTful API 92

7.1.2 程序庫 93

7.1.3 OpenAI兼容API 94

7.2 使用curl測試Ollama RESTful API 95

7.2.1 curl簡介 95

7.2.2 使用curl測試Ollama文本生成API 96

7.3 Python Flask基礎 98

7.3.1 Flask簡介 98

7.3.2 安裝Flask 99

7.3.3 一個簡單的Flask應用示例 99

7.4 模型操作 100

7.4.1 列出本地模型 100

7.4.2 獲取模型信息 103

7.4.3 拉取模型 108

7.4.4 復制模型 111

7.4.5 刪除模型 112

7.4.6 創建模型 113

7.5 會話管理 117

7.5.1 單輪會話 117

7.5.2 多輪會話 124

7.6 文本向量生成 126

7.7 本章小結 128

第8章 Ollama程序庫 129

8.1 Ollama程序庫簡介 129

8.2 安裝Ollama程序庫 130

8.3 Node.js基礎 131

8.3.1 Node.js簡介 131

8.3.2 安裝Node.js 131

8.3.3 編寫一個Node.js程序 132

8.3.4 常用的Node.js內置模塊 133

8.3.5 使用第三方模塊 133

8.4 模型操作 133

8.4.1 用Python程序庫操作模型 134

8.4.2 用JavaScript程序庫操作模型 135

8.5 會話 136

8.5.1 用Python程序庫實現會話 136

8.5.2 用JavaScript程序庫實現會話 138

8.6 生成文本向量 139

8.6.1 用Python程序庫生成文本向量 139

8.6.2 用JavaScript程序庫生成文本向量 140

8.7 本章小結 141

第9章 Ollama OpenAI兼容API 142

9.1 OpenAI API簡介 142

9.1.1 OpenAI API的概念和特點 142

9.1.2 OpenAI API成為兼容標準的原因 143

9.1.3 兼容OpenAI API的好處 143

9.2 OpenAI API程序庫 144

9.2.1 使用OpenAI API程序庫的優勢 144

9.2.2 安裝OpenAI API程序庫 145

9.2.3 用其他語言訪問OpenAI API 146

9.3 3種編程語言實現多輪會話 147

9.3.1 用Python通過OpenAI API程序庫實現多輪會話 147

9.3.2 用JavaScript通過OpenAI API程序庫實現多輪會話 149

9.3.3 用Go通過HTTP實現多輪會話 151

9.4 3種編程語言實現函數調用 154

9.4.1 函數調用簡介 154

9.4.2 用Python通過OpenAI API程序庫實現函數調用 155

9.4.3 用JavaScript通過OpenAI API程序庫實現函數調用 159

9.4.4 用Go通過HTTP實現函數調用 162

9.5 3種編程語言獲取文本向量 166

9.5.1 用Python通過OpenAI API程序庫獲取文本向量 167

9.5.2 用JavaScript通過OpenAI API程序庫獲取文本向量 168

9.5.3 用Go通過HTTP獲取文本向量 168

9.6 調用LM Studio的OpenAI兼容API 170

9.7 本章小結 171

第 10章 llama.cpp實戰 172

10.1 llama.cpp基礎 172

10.1.1 llama.cpp簡介 172

10.1.2 llama.cpp安裝 174

10.1.3 命令行交互利器llama-cli 176

10.1.4 更簡單的大語言模型推理方案llama-run 179

10.1.5 大語言模型服務化工具llama-server 180

10.1.6 大語言模型基準測試工具llama-bench 184

10.1.7 大語言模型量化工具llama-quantize 185

10.2 llama-cpp-python基礎 187

10.2.1 llama-cpp-python簡介 187

10.2.2 安裝llama-cpp-python 188

10.2.3 用llama-cpp-python生成文本 189

10.2.4 用llama-cpp-python獲取文本向量 190

10.3 本章小結 191

第 11章 項目實戰:代碼註釋翻譯器 192

11.1 項目簡介 192

11.2 項目設計與架構 193

11.2.1 兩大核心模塊 193

11.2.2 代碼註釋翻譯器的工作流程 194

11.3 核心模塊代碼解析 198

11.3.1 註釋提取的統一入口 198

11.3.2 編程語言類型的快速識別 199

11.3.3 註釋提取的核心原理與實現技巧 200

11.3.4 批量生成翻譯prompt 203

11.4 主程序代碼解析 204

11.4.1 加載API配置信息 204

11.4.2 調用OpenAI API進行翻譯 206

11.4.3 替換源代碼中的註釋 208

11.5 運行項目 210

11.6 改進方向和擴展 211

11.7 本章小結 212

第 12章 項目實戰:構建知識庫 213

12.1 知識庫與向量數據庫 213

12.1.1 知識庫的原理 213

12.1.2 什麼是向量數據庫 214

12.1.3 嵌入模型、向量數據庫與知識庫的關系 214

12.2 Chroma基礎 215

12.2.1 Chroma簡介 215

12.2.2 Chroma的主要功能 215

12.2.3 安裝Chroma 216

12.2.4 向量存儲與檢索 216

12.2.5 數據持久化保存 217

12.2.6 關聯元數據 219

12.3 知識庫服務項目基礎 220

12.3.1 項目簡介 220

12.3.2 項目設計與架構 221

12.4 核心代碼實現 222

12.4.1 獲取嵌入向量 222

12.4.2 加載知識庫 223

12.4.3 實現檢索功能 224

12.4.4 基於Flask的Web服務 226

12.5 運行和測試項目 227

12.5.1 建立知識庫 227

12.5.2 啟動服務 227

12.5.3 使用curl測試項目 227

12.5.4 使用Python測試項目 228

12.6 改進方向和擴展 228

12.7 本章小結 229

第 13章 項目實戰:文章智能配圖器 230

13.1 項目簡介 230

13.2 項目設計與架構 231

13.3 Stable Diffusion基礎 231

13.3.1 Stable Diffusion簡介 232

13.3.2 安裝Stable Diffusion 232

13.3.3 使用Stable Diffusion生成圖像 233

13.4 Stable Diffusion API 234

13.4.1 文生圖 234

13.4.2 圖生圖 236

13.5 項目核心代碼實現 238

13.5.1 配置與初始化 238

13.5.2 文本處理與prompt生成 239

13.5.3 圖像生成與保存 240

13.6 運行和測試項目 242

13.7 改進方向與未來展望 242

13.8 本章小結 243

第 14章 項目實戰:意圖鑒別服務 244

14.1 項目簡介 244

14.1.1 意圖鑒別:大模型的“調度器” 244

14.1.2 技術創新點:用裝飾器定義意圖方法 245

14.2 項目設計與架構 246

14.2.1 意圖鑒別服務的工作流程 246

14.2.2 系統架構 248

14.2.3 項目核心文件及其作用 249

14.3 核心代碼實現詳解 250

14.3.1 定義意圖方法的裝飾器 250

14.3.2 使用裝飾器定義意圖方法 251

14.3.3 參數類型映射 253

14.3.4 解析裝飾器方法並生成Tools JSON 254

14.3.5 獲取意圖信息 255

14.3.6 構建意圖鑒別Web服務 256

14.4 運行和測試項目 258

14.5 本章小結 259

第 15章 項目實戰:多模態聊天機器人 260

15.1 項目簡介 260

15.2 項目設計與架構 261

15.2.1 總體設計理念 261

15.2.2 系統架構 261

15.2.3 運作流程 262

15.3 項目核心代碼實現 262

15.3.1 文件結構與功能概述 263

15.3.2 主文件解析 263

15.3.3 處理文生圖請求 266

15.3.4 文章配圖功能調用 267

15.3.5 使用知識庫回答問題 267

15.4 運行和測試項目 268

15.5 本章小結 270