本書是一本全面介紹開發(fā)與應用DeepSeek大模型的實戰(zhàn)指南,旨在幫助讀者全面掌握大模型的技術與應用。本書首先介紹DeepSeek的核心概念、功能及未來發(fā)展方向,隨后深入探討大模型部署的硬件要求、量化技術、推理速度優(yōu)化等關鍵問題,并詳細介紹Transforme架構和混合專家模型的理論基礎。接著介紹了如何用Ollama和LMStudio等工具在本地部署DeepSeek-R1模型,并結合Cherry Studio構建本地知識庫,實現(xiàn)智能問答和知識檢索功能。此外,本書還介紹AnythingLLM和Chatbox等大模型應用構建平臺,幫助讀者擴展應用場景。針對API與程序庫的使用,本書詳細講解Ollama的RESTful API、 OpenAI 兼容API以及相關程序庫。最后,本書通過介紹多個實戰(zhàn)項目(如代碼注釋翻譯器、構建知識庫、文章智能配圖器、意圖鑒別服務、多模態(tài)聊天機器人),使讀者可以將理論知識應用于實際開發(fā)中,掌握大模型的核心技術。 本書通俗易懂,適合數(shù)據(jù)科學家、大模型開發(fā)者、應用開發(fā)者、相關專業(yè)學生以及技術愛好者閱讀,無論是初學者還是有經驗的開發(fā)者,都能從本書中獲得有價值的知識和技能。
1.覆蓋從理論到實戰(zhàn) :本書不僅講解了大模型的量化技術、推理優(yōu)化等理論知識,還涵蓋豐富的實戰(zhàn)項目,幫助讀者將理論轉化為實際應用。
2.多工具支持 :書中詳細介紹了Ollama、LM Studio等本地部署工具,幫助讀者快速部署本地大模型,快速上手。
2.實戰(zhàn)項目豐富 :五大實戰(zhàn)項目(如代碼注釋翻譯器、構建知識庫、多模態(tài)聊天機器人等),貼近實際場景,讓讀者快速掌握大模型的核心技術,并在此基礎上開發(fā)更多創(chuàng)新應用。
李寧 華為HDE(HUAWEI Developer Experts),開放原子基金會銀牌講師,51CTO學堂金牌講師,IT暢銷書作者。從事軟件研究和開發(fā)超過20年,長期從事編譯器、人工智能、Python、JavaScript、Java及跨平臺技術的研究和開發(fā)工作,曾出版多本圖書,包括《鴻蒙征途:App開發(fā)實戰(zhàn)》《AIGC自動化編程:基于CHATGPT和GITHUB COPILOT》
第 1章 走進DeepSeek世界1
1.1 什么是DeepSeek1
1.1.1 DeepSeek的發(fā)展歷程2
1.1.2 DeepSeek的核心功能2
1.1.3 DeepSeek的優(yōu)勢3
1.1.4 DeepSeek與其他大模型的比較4
1.2 DeepSeek能做什么4
1.2.1 DeepSeek的應用場景5
1.2.2 用DeepSeek做數(shù)學題5
1.2.3 用DeepSeek編程7
1.3 如何使用DeepSeek11
1.3.1 DeepSeek的用戶界面和基本操作11
1.3.2 移動端DeepSeek App12
1.3.3 DeepSeek API13
1.4 DeepSeek的DeepSeek-R1模型和蒸餾模型18
1.4.1 DeepSeek-R1模型的原理18
1.4.2 蒸餾模型19
1.5 DeepSeek的未來展望21
1.5.1 DeepSeek的發(fā)展趨勢和挑戰(zhàn)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 激活參數(shù)與推理顯存:生成token的動態(tài)消耗27
2.2.3 多用戶并發(fā):顯存需求的乘法效應28
2.2.4 如何估算大模型推理的顯存需求29
2.3 精度與體積的權衡:揭示大模型量化的秘密30
2.3.1 何謂模型量化:為大模型精打細算30
2.3.2 精度標尺:FP32、FP16、Q8 與Q4的位之爭30
2.3.3 參數(shù)、量化和蒸餾之間的關系31
2.3.4 比特之內的秘密:量化參數(shù)的廬山真面目32
2.4 存儲帶寬瓶頸:推理速度的限制32
2.4.1 什么是存儲帶寬:數(shù)據(jù)傳輸?shù)母咚俟?2
2.4.2 存儲帶寬在大模型推理中的作用:將數(shù)據(jù)喂給計算單元33
2.4.3 量化如何緩解存儲帶寬的壓力:數(shù)據(jù)瘦身加速傳輸33
2.4.4 優(yōu)化技術與存儲帶寬:多管齊下提升效率33
2.5 推理速度與延遲:除了顯存,性能也很重要34
2.5.1 推理速度與延遲:用戶體驗的晴雨表34
2.5.2 影響推理性能的其他因素34
2.5.3 CPU與GPU的協(xié)同:軟硬結合,發(fā)揮最大效能35
2.6 大模型背后的秘密武器:Transformer架構36
2.6.1 從注意力機制開始:像人類一樣思考36
2.6.2 Transformer架構的基本結構:積木搭建的變形金剛36
2.6.3 Transformer架構與硬件需求:大力士的胃口37
2.7 DeepSeek中的MoE38
2.7.1 MoE的基本原理38
2.7.2 MoE的應用38
2.7.3 DeepSeek的創(chuàng)新性MoE39
2.8 本章小結39
第3章 用Ollama本地部署DeepSeek-R141
3.1 Ollama簡介41
3.2 安裝Ollama42
3.3 Ollama支持的DeepSeek系列模型43
3.4 用Ollama部署模型44
3.5 模型的存儲位置45
3.6 在Ollama中進行推理46
3.7 Ollama命令行參數(shù)和子命令詳解47
3.8 導入GGUF格式的模型文件51
3.9 本章小結51
第4章 用LM Studio本地部署DeepSeek-R152
4.1 LM Studio簡介52
4.1.1 什么是LM Studio52
4.1.2 LM Studio的核心功能52
4.1.3 LM Studio的優(yōu)勢53
4.1.4 LM Studio支持的平臺53
4.1.5 LM Studio的硬件要求54
4.2 LM Studio的適用場景54
4.3 安裝LM Studio55
4.4 LM Studio支持的大模型格式56
4.4.1 大模型格式GGUF56
4.4.2 模型格式MLX57
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 模型推理參數(shù)設置65
4.6 本章小結68
第5章 用Cherry Studio建立本地知識庫69
5.1 Cherry Studio簡介69
5.2 安裝Cherry Studio70
5.3 在Cherry Studio中使用DeepSeek-R171
5.4 在Cherry Studio中使用DeepSeek-R1聊天72
5.5 本地知識庫的理論基礎73
5.5.1 本地知識庫、嵌入模型與向量數(shù)據(jù)庫的關系73
5.5.2 嵌入模型74
5.5.3 向量數(shù)據(jù)庫75
5.5.4 嵌入模型與向量數(shù)據(jù)庫的工作流程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應用平臺AnythingLLM84
6.1.1 AnythingLLM簡介84
6.1.2 安裝AnythingLLM85
6.1.3 本地部署DeepSeek-R1模型86
6.1.4 訪問Ollama中的大語言模型87
6.1.5 在AnythingLLM中聊天87
6.1.6 在AnythingLLM中建立本地知識庫88
6.2 聊天機器人應用Chatbox89
6.2.1 Chatbox簡介89
6.2.2 安裝Chatbox90
6.2.3 配置Chatbox90
6.2.4 在Chatbox中聊天90
6.3 本章小結91
第7章 Ollama的RESTful API92
7.1 Ollama API簡介92
7.1.1 RESTful API92
7.1.2 程序庫93
7.1.3 OpenAI兼容API94
7.2 使用curl測試Ollama RESTful API95
7.2.1 curl簡介95
7.2.2 使用curl測試Ollama文本生成API96
7.3 Python Flask基礎98
7.3.1 Flask簡介98
7.3.2 安裝Flask99
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 創(chuàng)建模型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.js131
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程序庫實現(xiàn)會話136
8.5.2 用JavaScript程序庫實現(xiàn)會話138
8.6 生成文本向量139
8.6.1 用Python程序庫生成文本向量139
8.6.2 用JavaScript程序庫生成文本向量140
8.7 本章小結141
第9章 Ollama OpenAI兼容API142
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程序庫的優(yōu)勢144
9.2.2 安裝OpenAI API程序庫145
9.2.3 用其他語言訪問OpenAI API146
9.3 3種編程語言實現(xiàn)多輪會話147
9.3.1 用Python通過OpenAI API程序庫實現(xiàn)多輪會話147
9.3.2 用JavaScript通過OpenAI API程序庫實現(xiàn)多輪會話149
9.3.3 用Go通過HTTP實現(xiàn)多輪會話151
9.4 3種編程語言實現(xiàn)函數(shù)調用154
9.4.1 函數(shù)調用簡介154
9.4.2 用Python通過OpenAI API程序庫實現(xiàn)函數(shù)調用155
9.4.3 用JavaScript通過OpenAI API程序庫實現(xiàn)函數(shù)調用159
9.4.4 用Go通過HTTP實現(xiàn)函數(shù)調用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兼容API170
9.7 本章小結171
第 10章 llama.cpp實戰(zhàn)172
10.1 llama.cpp基礎172
10.1.1 llama.cpp簡介172
10.1.2 llama.cpp安裝174
10.1.3 命令行交互利器llama-cli176
10.1.4 更簡單的大語言模型推理方案llama-run179
10.1.5 大語言模型服務化工具llama-server180
10.1.6 大語言模型基準測試工具llama-bench184
10.1.7 大語言模型量化工具llama-quantize185
10.2 llama-cpp-python基礎187
10.2.1 llama-cpp-python簡介187
10.2.2 安裝llama-cpp-python188
10.2.3 用llama-cpp-python生成文本189
10.2.4 用llama-cpp-python獲取文本向量190
10.3 本章小結191
第 11章 項目實戰(zhàn):代碼注釋翻譯器192
11.1 項目簡介192
11.2 項目設計與架構193
11.2.1 兩大核心模塊193
11.2.2 代碼注釋翻譯器的工作流程194
11.3 核心模塊代碼解析198
11.3.1 注釋提取的統(tǒng)一入口198
11.3.2 編程語言類型的快速識別199
11.3.3 注釋提取的核心原理與實現(xiàn)技巧200
11.3.4 批量生成翻譯prompt203
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章 項目實戰(zhàn):構建知識庫213
12.1 知識庫與向量數(shù)據(jù)庫213
12.1.1 知識庫的原理213
12.1.2 什么是向量數(shù)據(jù)庫214
12.1.3 嵌入模型、向量數(shù)據(jù)庫與知識庫的關系214
12.2 Chroma基礎215
12.2.1 Chroma簡介215
12.2.2 Chroma的主要功能215
12.2.3 安裝Chroma216
12.2.4 向量存儲與檢索216
12.2.5 數(shù)據(jù)持久化保存217
12.2.6 關聯(lián)元數(shù)據(jù)219
12.3 知識庫服務項目基礎220
12.3.1 項目簡介220
12.3.2 項目設計與架構221
12.4 核心代碼實現(xiàn)222
12.4.1 獲取嵌入向量222
12.4.2 加載知識庫223
12.4.3 實現(xiàn)檢索功能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章 項目實戰(zhàn):文章智能配圖器230
13.1 項目簡介230
13.2 項目設計與架構231
13.3 Stable Diffusion基礎231
13.3.1 Stable Diffusion簡介232
13.3.2 安裝Stable Diffusion232
13.3.3 使用Stable Diffusion生成圖像233
13.4 Stable Diffusion API234
13.4.1 文生圖234
13.4.2 圖生圖236
13.5 項目核心代碼實現(xiàn)238
13.5.1 配置與初始化238
13.5.2 文本處理與prompt生成239
13.5.3 圖像生成與保存240
13.6 運行和測試項目242
13.7 改進方向與未來展望242
13.8 本章小結243
第 14章 項目實戰(zhàn):意圖鑒別服務244
14.1 項目簡介244
14.1.1 意圖鑒別:大模型的調度器244
14.1.2 技術創(chuàng)新點:用裝飾器定義意圖方法245
14.2 項目設計與架構246
14.2.1 意圖鑒別服務的工作流程246
14.2.2 系統(tǒng)架構248
14.2.3 項目核心文件及其作用249
14.3 核心代碼實現(xiàn)詳解250
14.3.1 定義意圖方法的裝飾器250
14.3.2 使用裝飾器定義意圖方法251
14.3.3 參數(shù)類型映射253
14.3.4 解析裝飾器方法并生成Tools JSON254
14.3.5 獲取意圖信息255
14.3.6 構建意圖鑒別Web服務256
14.4 運行和測試項目258
14.5 本章小結259
第 15章 項目實戰(zhàn):多模態(tài)聊天機器人260
15.1 項目簡介260
15.2 項目設計與架構261
15.2.1 總體設計理念261
15.2.2 系統(tǒng)架構261
15.2.3 運作流程262
15.3 項目核心代碼實現(xiàn)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