第1章 大模型时代的开端 ……………………………………………………1
1.1大模型的历史与发展 ……………………………………………………1
1.1.1大模型的“涌现” ……………………………………………………1
1.1.2深度学习与大模型的起源 ……………………………………………3
1.1.3大模型的概念与特点 …………………………………………………4
1.1.4大模型开启了深度学习的新时代 ……………………………………5
1.2为什么要使用大模型 ……………………………………………………6
1.2.1大模型与普通模型的区别 ……………………………………………7
1.2.2为什么选择ChatGLM …………………………………………………8
1.2.3大模型应用场合与发展趋势 …………………………………………9
1.3本章小结 …………………………………………………………………10
第2章 PyTorch 2.0深度学习环境搭建 ………………………………………11
2.1安装Python开发环境 ……………………………………………………12
2.1.1Miniconda的下载与安装 ………………………………………………12
2.1.2PyCharm的下载与安装 ………………………………………………14
2.1.3softmax函数练习 ……………………………………………………18
2.2安装PyTorch 2.0 …………………………………………………………19
2.2.1NVIDIA 10/20/30/40系列显卡选择的GPU版本 ………………………19
2.2.2PyTorch 2.0 GPU NVIDIA运行库的安装 ………………………………19
2.2.3Hello PyTorch …………………………………………………………22
2.3Hello ChatGLM3 ……………………………………………………………23
2.3.1ChatGLM3简介与安装 …………………………………………………23
2.3.2CPU版本的ChatGLM3推演 ……………………………………………25
2.3.3GPU(INT4或INT8量化)版本的ChatGLM3推演 ……………………26
2.3.4GPU(half或float量化)版本的ChatGLM3推演 ……………………28
2.3.5离线状态的ChatGLM3的使用 …………………………………………29
2.3.6ChatGLM的高级使用 …………………………………………………30
2.4本章小结 …………………………………………………………………32
第3章 基于gradio的云上自托管ChatGLM3部署实战 ………………………32
3.1gradio的基本使用详解 ……………………………………………………33
3.1.1从gradio的Interface开始 ……………………………………………33
3.1.2gradio输入与输出组件 ………………………………………………35
3.1.3启动gradio的launch …………………………………………………41
3.1.4gradio中多样化的输入和输出组件 ……………………………………42
3.1.5gradio中常用的几个组件 ……………………………………………45
3.1.6使用gradio搭建视频上色服务 …………………………………………57
3.2基于gradio的猫狗分类可视化训练与预测实战 …………………………59
3.2.1运行环境与数据集的准备 ……………………………………………60
3.2.2模型的设计 ……………………………………………………………63
3.2.3PyTorch模型训练的基本流程 …………………………………………64
3.2.4可视化训练流程 ………………………………………………………65
3.2.5使用训练好的模型完成gradio可视化图像分类 ………………………67
3.3基于网页端的ChatGLM3部署和使用 ………………………………………70
3.3.1使用gradio搭建ChatGLM3网页客户端 ………………………………71
3.3.2使用ChatGLM3自带的网页客户端 ……………………………………72
3.4基于私有云服务的ChatGLM3部署和使用 …………………………………73
3.4.1使用FastAPI完成ChatGLM3私有云交互端口的搭建(重要) ………73
3.4.2基于streamlit的ChatGLM3自带的网页客户端 ………………………74
3.5本章小结 …………………………………………………………………74
第4章 使用ChatGLM3与LangChain实现知识图谱抽取和智能问答 …………75
4.1当ChatGLM3遇见LangChain ………………………………………………76
4.1.1LangChain的基本构成、组件与典型场景 ……………………………76
4.1.2确认统一地址的ChatGLM3部署方案 ………………………………78
4.1.3使用ChatGLM3构建LangChain的LLM终端 …………………………78
4.1.4从一个简单的提示模板开始 …………………………………………81
4.1.5ChatGLM3格式化提示词的构建与使用 ………………………………82
4.2ChatGLM3+LangChain搭建专业问答机器人 ………………………………84
4.2.1使用LangChain的LLM终端完成文本问答 …………………………84
4.2.2数据准备与基础算法分析 ……………………………………………86
4.2.3使用LangChain完成提示语Prompt工程 ……………………………87
4.2.4基于ChatGLM3的LLM终端完成专业问答 …………………………88
4.3使用ChatGLM3的LLM终端搭建知识图谱抽取与智能问答 ………………88
4.3.1基于ChatGLM3的LLM终端完成知识图谱抽取 ………………………89
4.3.2基于ChatGLM3的LLM终端完成智能问答 …………………………89
4.4本章小结 …………………………………………………………………91
第5章 适配ChatGLM3终端的Template与Chain详解 …………………………93
5.1基于输入模板的人机交互 …………………………………………………93
5.1.1提示模板的4种类型 …………………………………………………94
5.1.2可嵌套的提示模板 ……………………………………………………95
5.2Template中示例的最佳选择 ………………………………………………97
5.2.1基于长度的输出示例 …………………………………………………97
5.2.2基于相似度的输出示例 ………………………………………………99
5.3使用Chain提高ChatGLM3的能力 ……………………………………………100
5.3.1Chain的数学计算方法 ………………………………………………101
5.3.2多次验证检查器 ……………………………………………………101
5.4LangChain中的记忆功能 …………………………………………………102
5.4.1ConversationChain会话链的使用 ……………………………………102
5.4.2系统memory的使用 …………………………………………………103
5.5基于ChatGLM3终端撰写剧情梗概、评论与宣传文案实战 …………………105
5.5.1对过程进行依次调用的顺序链SimpleSequentialChain ………………105
5.5.2对过程进行依次调用的顺序链SequentialChain ……………………107
5.5.3对顺序链添加额外参数的方法 ………………………………………109
5.6本章小结 …………………………………………………………………111
第6章 ChatGLM3多文本检索的增强生成实战 ………………………………112
6.1使用自然语言处理方法对目标进行查找 ……………………………………113
6.1.1数据集的准备 …………………………………………………………113
6.1.2分别基于BM25与LLM终端进行目标查找的方法 ……………………114
6.1.3建立工业级标准化输出:LLM终端与BM25结合 ……………………116
6.2基于LLM终端完成文本内容抽取与文本问答 ………………………………118
6.2.1读取目标内容 …………………………………………………………118
6.2.2LangChain对文档的读取与分割方法 ………………………………119
6.2.3基于LangChain的文本分块 …………………………………………123
6.2.4找到最近似问题的文本段落 …………………………………………124
6.2.5使用LLM终端完成智能文本问答 ……………………………………125
6.3使用LLM终端完成反向问题推断 ……………………………………………127
6.3.1文本问题提取实战 ……………………………………………………127
6.3.2存储提取后的内容 ……………………………………………………130
6.4本章小结 …………………………………………………………………132
第7章 构建以人为本的ChatGLM3规范化Prompt提示工程 ……………………132
7.1提示工程模板构建的输入与输出格式 ………………………………………132
7.1.1提示模板的输入格式 …………………………………………………133
7.1.2提示模板的输出格式 …………………………………………………135
7.2提示工程模板高级用法 ……………………………………………………138
7.2.1提示模板的自定义格式 ………………………………………………138
7.2.2提示模板的FewShotPromptTemplate格式 …………………………139
7.2.3部分格式化的提示模板详解 …………………………………………140
7.3结合提示工程的网页搜索服务实战 …………………………………………142
7.3.1网页搜索的API实现 …………………………………………………142
7.3.2网页问答提示模板的实现 ……………………………………………143
7.3.3结合网页搜索的LLM终端问答实战 …………………………………144
7.4本章小结 …………………………………………………………………145
第8章 使用ChatGLM3的思维链构建 …………………………………………146
8.1思维链初探 …………………………………………………………………146
8.1.1思维链源于人类使用自然语言的概念来理解事物 ……………………147
8.1.2思维链的优势与应用场景 ……………………………………………147
8.2思维链详解及其实战 ………………………………………………………149
8.2.1思维链详解 ……………………………………………………………149
8.2.2基于ChatGLM3的思维链实战 …………………………………………149
8.3本章小结 …………………………………………………………………150
第9章 GLM源码分析与文本生成实战 …………………………………………152
9.1GLM组件详解 ………………………………………………………………153
9.1.1GLM模型架构重大突破:旋转位置编码 ……………………………154
9.1.2添加旋转位置编码的注意力机制 ……………………………………154
9.1.3新型的激活函数GLU详解 ……………………………………………156
9.1.4GLM“三角掩码”与“错位”输入输出格式详解 ……………………156
9.2GLM整体架构详解与文本生成实战 …………………………………………157
9.2.1调整架构顺序的GLMBlock ……………………………………………159
9.2.2自定义GLM模型(单文本生成版) …………………………………159
9.3本章小结 …………………………………………………………………162
第10章 低资源单GPU微调ChatGLM3实战 ……………………………………167
10.1什么是大模型微调 ………………………………………………………168
10.1.1大模型微调的作用 …………………………………………………168
10.1.2大模型微调技术有哪些 ……………………………………………168
10.1.3参数高效微调详解 …………………………………………………169
10.2ChatGLM3大模型微调的准备内容 …………………………………………169
10.2.1从数据准备看ChatGLM3微调:有监督微调详解 …………………170
10.2.2从实施看ChatGLM3微调:LoRA详解 ………………………………172
10.2.3适配ChatGLM3微调的辅助库:PEFT详解 …………………………173
10.3虚拟客服多轮问答实战 ……………………………………………………180
10.3.1ChatGLM3数据输入结构和处理函数 ………………………………181
10.3.2ChatGLM3微调训练 …………………………………………………186
10.3.3ChatGLM3微调推理 …………………………………………………189
10.4加速的秘密:accelerate训练方法与模型量化详解 …………………………191
10.4.1加速器accelerate详解与完整代码编写 ……………………………192
10.4.2加速的秘密1:大模型的量化技术 …………………………………195
10.4.3加速的秘密2:大模型的INT8量化方案 ……………………………196
10.4.4加速的秘密3:大模型ChatGLM3中的量化源码分析与实践 ………198
10.5更快的量化训练方案:QLoRA基础内容详解 ………………………………200
10.5.1加速的秘密4:基于bitsandbytes的ChatGLM3量化QLoRA实现 ……200
10.5.2加速的秘密5:QLoRA详解 …………………………………………202
10.5.3微调的目的:让生成的结果更聚焦于任务 …………………………205
10.6QLoRA微调文本生成实战 …………………………………………………207
10.6.1数据处理 ……………………………………………………………207
10.6.2损失函数设计 ………………………………………………………210
10.6.3基于QLoRA的ChatGLM3文本生成微调实战 ………………………211
10.6.4基于QLoRA的ChatGLM3文本生成 …………………………………213
10.7本章小结 …………………………………………………………………215
第11章 会使用工具的ChatGLM3 ……………………………………………216
11.1ChatGLM3调用工具源码详解与实战 ………………………………………216
11.1.1Python调用工具详解 …………………………………………………217
11.1.2ChatGLM3工具调用流程详解 …………………………………………218
11.1.3大模型ChatGLM3工具调用实战详解 ………………………………220
11.1.4大模型ChatGLM3工具调用原理详解 ………………………………223
11.1.5ChatGLM3消息传递方式详解 ………………………………………230
11.2ChatGLM3官方工具注册与调用源码分析与实战 ……………………………231
11.2.1Python中的装饰器与回调函数 ………………………………………233
11.2.2ChatGLM3官方工具函数的注册源码分析详解 ……………………236
11.2.3大模型ChatGLM3官方工具调用的判定依据详解 …………………237
11.2.4ChatGLM3官方工具函数的调用分析详解 …………………………238
11.2.5ChatGLM3调用工具分析与实战演示 ………………………………240
11.3ChatGLM3实战:构建个人助理之美妆助手 ………………………………240
11.3.1背景和参考资料设定 ………………………………………………246
11.3.2美妆助手的使用实战 ………………………………………………247
11.4本章小结 …………………………………………………………………247
第12章 上市公司财务报表非结构化信息抽取实战 …………………………249
12.1超长文本处理功能的ChatGLM3与真实财务报表的处理 ……………………250
12.1.1ChatGLM3-6B-32K模型的获取与缓存 ………………………………250
12.1.2超大规模的2020 - 2023年真实中国股票市场年度财务报表数据库的建立 …250
12.2单报表非结构化信息抽取实战 ……………………………………………253
12.2.1单报表数据探查与提取信息结构化处理 …………………………253
12.2.2单报表数据非结构化信息抽取的实现 ……………………………254
12.3本章小结 …………………………………………………………………256
第13章 上市公司财务报表智能问答与财务预警实战 ………………………257
13.1基于ChatGLM3的非结构化数据抽取与大规模财务报表数据库的建立 …………257
13.1.1逐行代码讲解使用ChatGLM3对关键数据进行抽取 ………………257
13.1.2大规模上市公司财务报表目标字段抽取函数的建立 ………………258
13.1.3大规模上市公司财务报表目标字段数据库的建立 …………………260
13.2基于自然语言的上市公司财务报表智能问答与财务预警实战 ………………262
13.2.1使用自然语言结合ChatGLM3实现上市公司财务报表智能问答与预警解决方案1 …264
13.2.2使用自然语言结合ChatGLM3-6B实现上市公司财务报表智能问答与预警解决方案2 …264
13.2.3使用自然语言结合ChatGLM3实现上市公司财务报表智能问答与预警解决方案3 …267
13.3本章小结 …………………………………………………………………270
附录 大模型的“幻觉” ……………………………………………………272