本書是一本全面介紹開發(fā)與應(yīng)用DeepSeek大模型的實戰(zhàn)指南,旨在幫助讀者全面掌握大模型的技術(shù)與應(yīng)用。本書首先介紹DeepSeek的核心概念、功能及未來發(fā)展方向,隨后深入探討大模型部署的硬件要求、量化技術(shù)、推理速度優(yōu)化等關(guān)鍵問題,并詳細(xì)介紹Transforme架構(gòu)和混合專家模型的理論基礎(chǔ)。接著介紹了如何用Ollama和LMStudio等工具在本地部署DeepSeek-R1模型,并結(jié)合Cherry Studio構(gòu)建本地知識庫,實現(xiàn)智能問答和知識檢索功能。此外,本書還介紹AnythingLLM和Chatbox等大模型應(yīng)用構(gòu)建平臺,幫助讀者擴(kuò)展應(yīng)用場景。針對API與程序庫的使用,本書詳細(xì)講解Ollama的RESTful API、 OpenAI 兼容API以及相關(guān)程序庫。最后,本書通過介紹多個實戰(zhàn)項目(如代碼注釋翻譯器、構(gòu)建知識庫、文章智能配圖器、意圖鑒別服務(wù)、多模態(tài)聊天機(jī)器人),使讀者可以將理論知識應(yīng)用于實際開發(fā)中,掌握大模型的核心技術(shù)。 本書通俗易懂,適合數(shù)據(jù)科學(xué)家、大模型開發(fā)者、應(yīng)用開發(fā)者、相關(guān)專業(yè)學(xué)生以及技術(shù)愛好者閱讀,無論是初學(xué)者還是有經(jīng)驗的開發(fā)者,都能從本書中獲得有價值的知識和技能。
1.覆蓋從理論到實戰(zhàn) :本書不僅講解了大模型的量化技術(shù)、推理優(yōu)化等理論知識,還涵蓋豐富的實戰(zhàn)項目,幫助讀者將理論轉(zhuǎn)化為實際應(yīng)用。
2.多工具支持 :書中詳細(xì)介紹了Ollama、LM Studio等本地部署工具,幫助讀者快速部署本地大模型,快速上手。
2.實戰(zhàn)項目豐富 :五大實戰(zhàn)項目(如代碼注釋翻譯器、構(gòu)建知識庫、多模態(tài)聊天機(jī)器人等),貼近實際場景,讓讀者快速掌握大模型的核心技術(shù),并在此基礎(chǔ)上開發(fā)更多創(chuàng)新應(yīng)用。
李寧 華為HDE(HUAWEI Developer Experts),開放原子基金會銀牌講師,51CTO學(xué)堂金牌講師,IT暢銷書作者。從事軟件研究和開發(fā)超過20年,長期從事編譯器、人工智能、Python、JavaScript、Java及跨平臺技術(shù)的研究和開發(fā)工作,曾出版多本圖書,包括《鴻蒙征途:App開發(fā)實戰(zhàn)》《AIGC自動化編程:基于CHATGPT和GITHUB COPILOT》
第 1章 走進(jìn)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的應(yīng)用場景5
1.2.2 用DeepSeek做數(shù)學(xué)題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領(lǐng)域和社會的影響22
1.6 本章小結(jié)23
第 2章 DeepSeek大模型部署的硬件要求和技術(shù)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ā):顯存需求的乘法效應(yīng)28
2.2.4 如何估算大模型推理的顯存需求29
2.3 精度與體積的權(quán)衡:揭示大模型量化的秘密30
2.3.1 何謂模型量化:為大模型精打細(xì)算30
2.3.2 精度標(biāo)尺:FP32、FP16、Q8 與Q4的位之爭30
2.3.3 參數(shù)、量化和蒸餾之間的關(guān)系31
2.3.4 比特之內(nèi)的秘密:量化參數(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)化技術(shù)與存儲帶寬:多管齊下提升效率33
2.5 推理速度與延遲:除了顯存,性能也很重要34
2.5.1 推理速度與延遲:用戶體驗的晴雨表34
2.5.2 影響推理性能的其他因素34
2.5.3 CPU與GPU的協(xié)同:軟硬結(jié)合,發(fā)揮最大效能35
2.6 大模型背后的秘密武器:Transformer架構(gòu)36
2.6.1 從注意力機(jī)制開始:像人類一樣思考36
2.6.2 Transformer架構(gòu)的基本結(jié)構(gòu):積木搭建的變形金剛36
2.6.3 Transformer架構(gòu)與硬件需求:大力士的胃口37
2.7 DeepSeek中的MoE38
2.7.1 MoE的基本原理38
2.7.2 MoE的應(yīng)用38
2.7.3 DeepSeek的創(chuàng)新性MoE39
2.8 本章小結(jié)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中進(jìn)行推理46
3.7 Ollama命令行參數(shù)和子命令詳解47
3.8 導(dǎo)入GGUF格式的模型文件51
3.9 本章小結(jié)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 模型加載設(shè)置詳解61
4.5.4 用LM Studio聊天64
4.5.5 模型推理參數(shù)設(shè)置65
4.6 本章小結(jié)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 本地知識庫的理論基礎(chǔ)73
5.5.1 本地知識庫、嵌入模型與向量數(shù)據(jù)庫的關(guān)系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 遠(yuǎn)程訪問Ollama服務(wù)83
5.9 本章小結(jié)83
第6章 更多的大模型應(yīng)用構(gòu)建平臺84
6.1 一體化的開源AI應(yīng)用平臺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 聊天機(jī)器人應(yīng)用Chatbox89
6.2.1 Chatbox簡介89
6.2.2 安裝Chatbox90
6.2.3 配置Chatbox90
6.2.4 在Chatbox中聊天90
6.3 本章小結(jié)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基礎(chǔ)98
7.3.1 Flask簡介98
7.3.2 安裝Flask99
7.3.3 一個簡單的Flask應(yīng)用示例99
7.4 模型操作100
7.4.1 列出本地模型100
7.4.2 獲取模型信息103
7.4.3 拉取模型108
7.4.4 復(fù)制模型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 本章小結(jié)128
第8章 Ollama程序庫129
8.1 Ollama程序庫簡介129
8.2 安裝Ollama程序庫130
8.3 Node.js基礎(chǔ)131
8.3.1 Node.js簡介131
8.3.2 安裝Node.js131
8.3.3 編寫一個Node.js程序132
8.3.4 常用的Node.js內(nèi)置模塊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 本章小結(jié)141
第9章 Ollama OpenAI兼容API142
9.1 OpenAI API簡介142
9.1.1 OpenAI API的概念和特點142
9.1.2 OpenAI API成為兼容標(biāo)準(zhǔn)的原因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ù)調(diào)用154
9.4.1 函數(shù)調(diào)用簡介154
9.4.2 用Python通過OpenAI API程序庫實現(xiàn)函數(shù)調(diào)用155
9.4.3 用JavaScript通過OpenAI API程序庫實現(xiàn)函數(shù)調(diào)用159
9.4.4 用Go通過HTTP實現(xiàn)函數(shù)調(diào)用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 調(diào)用LM Studio的OpenAI兼容API170
9.7 本章小結(jié)171
第 10章 llama.cpp實戰(zhàn)172
10.1 llama.cpp基礎(chǔ)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 大語言模型服務(wù)化工具llama-server180
10.1.6 大語言模型基準(zhǔn)測試工具llama-bench184
10.1.7 大語言模型量化工具llama-quantize185
10.2 llama-cpp-python基礎(chǔ)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 本章小結(jié)191
第 11章 項目實戰(zhàn):代碼注釋翻譯器192
11.1 項目簡介192
11.2 項目設(shè)計與架構(gòu)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 調(diào)用OpenAI API進(jìn)行翻譯206
11.4.3 替換源代碼中的注釋208
11.5 運(yùn)行項目210
11.6 改進(jìn)方向和擴(kuò)展211
11.7 本章小結(jié)212
第 12章 項目實戰(zhàn):構(gòu)建知識庫213
12.1 知識庫與向量數(shù)據(jù)庫213
12.1.1 知識庫的原理213
12.1.2 什么是向量數(shù)據(jù)庫214
12.1.3 嵌入模型、向量數(shù)據(jù)庫與知識庫的關(guān)系214
12.2 Chroma基礎(chǔ)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 關(guān)聯(lián)元數(shù)據(jù)219
12.3 知識庫服務(wù)項目基礎(chǔ)220
12.3.1 項目簡介220
12.3.2 項目設(shè)計與架構(gòu)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服務(wù)226
12.5 運(yùn)行和測試項目227
12.5.1 建立知識庫227
12.5.2 啟動服務(wù)227
12.5.3 使用curl測試項目227
12.5.4 使用Python測試項目228
12.6 改進(jìn)方向和擴(kuò)展228
12.7 本章小結(jié) 229
第 13章 項目實戰(zhàn):文章智能配圖器230
13.1 項目簡介230
13.2 項目設(shè)計與架構(gòu)231
13.3 Stable Diffusion基礎(chǔ)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 運(yùn)行和測試項目242
13.7 改進(jìn)方向與未來展望242
13.8 本章小結(jié)243
第 14章 項目實戰(zhàn):意圖鑒別服務(wù)244
14.1 項目簡介244
14.1.1 意圖鑒別:大模型的調(diào)度器244
14.1.2 技術(shù)創(chuàng)新點:用裝飾器定義意圖方法245
14.2 項目設(shè)計與架構(gòu)246
14.2.1 意圖鑒別服務(wù)的工作流程246
14.2.2 系統(tǒng)架構(gòu)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 構(gòu)建意圖鑒別Web服務(wù)256
14.4 運(yùn)行和測試項目258
14.5 本章小結(jié)259
第 15章 項目實戰(zhàn):多模態(tài)聊天機(jī)器人260
15.1 項目簡介260
15.2 項目設(shè)計與架構(gòu)261
15.2.1 總體設(shè)計理念261
15.2.2 系統(tǒng)架構(gòu)261
15.2.3 運(yùn)作流程262
15.3 項目核心代碼實現(xiàn)262
15.3.1 文件結(jié)構(gòu)與功能概述263
15.3.2 主文件解析263
15.3.3 處理文生圖請求266
15.3.4 文章配圖功能調(diào)用267
15.3.5 使用知識庫回答問題267
15.4 運(yùn)行和測試項目268
15.5 本章小結(jié)270