大语言模型开发 用开源模型开发本地系统 版权信息
- ISBN:9787302670513
- 条形码:9787302670513 ; 978-7-302-67051-3
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 所属分类:>
大语言模型开发 用开源模型开发本地系统 本书特色
·本书基本覆盖大语言模型开发的多个方面。整体上可以参照OpenAI的安德烈·卡帕西(Andrej Karpathy)在微软的2023年Build大会报告中介绍的GPT助手训练流程。
·本书的内容来源不仅包含网络上的各类教程和文章,也包括原始论文和源代码。
·本书不但适用于大型语言模型应用开发人员,而且对于渴望深度探究ChatGPT背后的运行机制,更高效地运用和优化其功能的实践者,同样具有极高的参考价值。
大语言模型开发 用开源模型开发本地系统 内容简介
本书旨在帮助读者理解开源大语言模型的架构、训练和推理过程,以及相关的源代码。主要研究对象是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
展开全部
大语言模型开发 用开源模型开发本地系统 作者简介
范煜,江苏南通人,毕业于南京航空航天大学,研究员级高级工程师,中国商业联合会数据分析专业委员会专家组成员,南通理工学院教师,上海范思软件有限公司创始人,中国移动集团、51CTO外聘讲师经常在全国各地讲授大数据、数据分析人工智能、大语言模型等方面课程。研发了Fancy Q&A大语言模型应用开发平台。著有《人工智能与ChatGPT》《数据革命:大数据价值实现方法、技术与案例》。兼具人工智能、大数据、软件、工业控制(嵌入式系统和软PLC)技术背景。目前主要从事基于大语言模型的知识库建设与知识问答应用的研究和开发。