-
内容大纲
本书旨在帮助读者理解开源大语言模型的架构、训练和推理过程,以及相关的源代码。主要研究对象是Meta开源的Llama模型。本书从Python Numpy实现单层感知机和神经网络开始,逐步讲解了如何实现Transformer模型和Llama模型。此外,本书还介绍了增量预训练模型、监督微调和人类反馈强化学习等模型训练过程。对于私有知识的加入,书中重点介绍了监督微调,也介绍了RAG中词向量的计算。本书采用循序渐进的方式,通过功能框图、代码分解执行、执行结果显示、背景知识补充等手段帮助读者理解模型和算法。
本书的核心读者群体定位为大语言模型应用的开发人员,特别适合那些想从计算机视觉转向自然语言处理的人。此外,本书还适合作为大学本科生及研究生相关课程的参考教材使用。 -
作者介绍
范煜,江苏南通人,研究员级高级工程师,大数据软件专家,范思软件有限公司创始人,毕业于南京航空航天大学,喜爱阅读和旅行,对经济、管理、历史、地理等方面知识有浓厚兴趣。 -
目录
第1章 自然语言处理
1.1 人工智能的技术构成
1.1.1 机器学习和深度学习的区别
1.1.2 表示学习与深度学习的关系
1.2 自然语言处理的发展阶段
1.3 规则驱动的方法
1.4 统计方法
1.4.1 隐马尔可夫模型
1.4.2 条件随机场
1.5 深度学习方法
1.5.1 Word2Vec词嵌入
1.5.2 循环神经网络
1.5.3 长短时记忆网络模型
1.5.4 门控循环单元模型
1.6 序列到序列模型
1.7 注意力机制
1.8 Transformer模型
1.9 预训练模型
1.10 大语言模型
1.10.1 根据架构分类
1.10.2 根据训练方式和预测方式分类
第2章 深度学习基础
2.1 深度学习
2.2 感知机
2.2.1 前馈网络
2.2.2 权重更新
2.2.3 反向传播
2.3 激活函数
2.3.1 常用激活函数
2.3.2 新型激活函数
2.4 优化函数(算法)
2.4.1 梯度下降法
2.4.2 动量优化算法
2.4.3 AdaGrad优化算法
2.4.4 RMSProp优化算法
2.4.5 Adam优化算法
2.4.6 AdamW优化算法
2.5 权值初始化
2.5.1 批归一化
2.5.2 层归一化
2.5.3 RMSNorm
2.6 损失函数
2.6.1 均方误差
2.6.2 均方根误差
2.6.3 交叉熵损失
2.7 模型评估
2.7.1 偏差/方差
2.7.2 过拟合与欠拟合
2.8 正则化
2.9 SoftMax函数
2.10 简易神经网络搭建
2.11 模型优化
2.11.1 梯度消失
2.11.2 梯度爆炸
2.11.3 优化手段
2.11.4 调参技巧
第3章 PyTorch开发基础
3.1 深度学习框架
3.2 PyTorch简介
3.3 PyTorch安装
3.3.1 CUDA安装
3.3.2 阿里云GPU云服务器
3.3.3 安装PyTorch
3.3.4 安装其他库
3.3.5 检查开发环境
3.4 张量
3.4.1 张量创建函数定义
3.4.2 张量创建函数清单
3.4.3 随机张量:torch.randn()
3.4.4 张量操作
3.4.5 CUDA张量
3.5 梯度计算
3.5.1 导数与偏导数
3.5.2 导数规则
3.5.3 梯度
3.5.4 公式推导
3.5.5 自动梯度计算
3.5.6 代码解析
3.6 反向传播
3.7 torch.nn模块构建神经网络
3.7.1 nn.Linear层
3.7.2 nn.Sigmoid激活函数
3.7.3 nn.BCELoss损失函数
3.8 torch.optim优化器
3.9 训练、验证和测试过程
3.10 用PyTorch实现神经网络
3.10.1 实现单层感知机
3.10.2 实现简单神经网络
3.10.3 用torch.nn实现简单神经网络
3.11 源代码常用模块
3.11.1 nn.Parameter类
3.11.2 typing模块
3.11.3 logging模块
3.11.4 dataclasses
3.11.5 Fire库
第4章 Transformer模型详解
4.1 大语言模型的简介和分类
4.1.1 简介
4.1.2 分类
4.2 Transformer模型
4.2.1 模型构成
4.2.2 因果解码器结构
4.3 分词
4.3.1 词汇表
4.3.2 词汇表的生成
4.3.3 分词算法
4.3.4 字节对编码
4.3.5 句子片段
4.3.6 分词过程
4.3.7 词汇索引
4.4 词嵌入
4.4.1 标记嵌入
4.4.2 位置编码
4.4.3 词汇索引和词嵌入向量关系
4.5 位置编码方法
4.5.1 原生位置编码
4.5.2 旋转位置编码
4.5.3 位置编码的实现
4.5.4 Llama位置编码
4.5.5 长度扩展
4.6 自注意力机制
4.6.1 原理
4.6.2 注意力分数的计算
4.6.3 多头注意力机制
4.6.4 分组查询注意力
4.6.5 Llama 2源代码分析
4.7 残差连接和层归一化
4.7.1 预归一化
4.7.2 RMSNorm
4.7.3 Llama 2源代码分析
4.8 前馈网络
4.8.1 激活函数
4.8.2 前馈网络隐藏层维度
4.8.3 Llama 2源代码分析
4.8.4 演示代码
4.9 损失函数
4.10 掩码
4.11 PyTorch的nn.Transformer模块
4.11.1 模块组件
4.11.2 __call__函数
4.11.3 最简单的标准Transformer模型
4.11.4 纯解码器模型
4.11.5 Llama 2模型
第5章 大语言模型
5.1 什么是大语言模型
5.2 GPT简介
5.3 Llama简介
5.4 Llama的训练
5.4.1 训练数据
5.4.2 预训练
5.5 Llama 2 chat
5.5.1 监督微调
5.5.2 基于人类反馈的强化学习
5.6 Llama 2模型结构
5.7 Llama 2权重文件夹
5.8 参数量计算
5.8.1 标准Transformer解码器模型
5.8.2 Llama 2模型
5.8.3 用Transformers模块计算
5.8.4 直接解析模型文件
第6章 模型训练
6.1 模型训练的种类
6.2 Hugging Face训练环境
6.3 Transformers库
6.3.1 主要功能
6.3.2 函数
6.4 训练程序
6.5 分词处理
6.5.1 相关名词
6.5.2 input IDs
6.5.3 特殊标记
6.5.4 AutoTokenizer
6.5.5 分词
6.5.6 下划线
6.5.7 填空
6.6 量化技术
6.6.18 位量化技术
6.6.2 LLM.int8()
6.6.3 NF4和QLoRA
6.6.4 BitsAndBytes模型
6.7 优化技术
6.7.1 LoRA
6.7.2 PEFT库
6.8 训练代码示例
6.8.1 导入库和函数
6.8.2 参数定义
6.8.3 加载模型
6.8.4 加载分词器
6.8.5 数据预处理
6.8.6 用LoRA权重调整模型
6.8.7 LoRA模型训练
6.8.8 模型的合并
6.8.9 模型推理
6.8.10 加载多个LoRA并随时切换
6.9 加速技术和工具
6.9.1 DeepSpeed
6.9.2 FairScale
6.9.3 GPTQ
6.9.4 FSDP
6.10 超长上下文
6.10.1 外推能力
6.10.2 外推手段
6.10.3 StreamingLLM
第7章 模型微调
7.1 监督微调
7.2 开源数据集
7.3 数据集访问
7.3.1 datasets库
7.3.2 datasets常用的函数和类
7.3.3 加载数据集
7.3.4 数据集的处理
7.4 开源微调数据集
7.4.1 主要数据集
7.4.2 数据集格式
7.4.3 SQuAD
7.4.4 OSSIST1数据集格式
7.4.5 格式转换代码及分析
7.5 主要的微调模型
7.5.1 Alpaca羊驼
7.5.2 Vicuna小羊驼
7.5.3 LLaMA.cpp
7.5.4 Guanco
第8章 人类反馈强化学习
8.1 强化学习架构
8.2 演员-评论家架构
8.3 近端策略优化架构
8.4 DeepSpeed Chat
8.5 开源RLHF数据集
8.6 训练数据读取
8.6.1 第1步:SFT监督微调数据
8.6.2 第2步:奖励模型微调数据
8.6.3 第3步:RLHF微调数据
8.7 监督微调
8.8 奖励模型微调
8.9 RLHF微调
8.9.1 代码运行环境
8.9.2 准备训练数据
8.9.3 建立模型
8.9.4 演员模型、参考模型生成对数概率
8.9.5 计算对数概率
8.9.6 计算期望奖励
8.9.7 KL散度
8.9.8 计算实际奖励
8.9.9 优势函数
8.9.10 计算优势和回报
8.9.11 损失函数
第9章 模型推理
9.1 模型文件
9.2 推理
9.2.1 单轮推理
9.2.2 多轮推理
9.3 GPU推理
9.3.1 单卡
9.3.2 多卡
9.3.3 多机
9.4 Hugging Face Transformers库
9.4.1 简介
9.4.2 Pipeline API
9.4.3 Model and Tokenizer API
9.4.4 单轮推理
9.4.5 多轮推理
9.4.6 LoRA推理
9.4.7 vLLM
9.5 LLaMA.cpp
9.5.1 特色与优势
9.5.2 模型量化
9.5.3 k-quant量化
9.5.4 开发环境安装
9.5.5 构建执行程序
9.5.6 转换模型
9.5.7 推理
9.6 Gradio
9.6.1 简介
9.6.2 基本用法
9.6.3 复杂交互
9.6.4 聊天机器人
9.6.5 Gradio多轮推理
9.7 解码策略
9.7.1 常见解码策略
9.7.2 推理超参数
9.7.3 温度
9.7.4 top
9.7.5 top
9.7.6 重复惩罚
9.7.7 代码实现
9.8 推理加速技术
9.8.1 简介
9.8.2 纯C推理
9.8.3 投机采样
9.8.4 Medusa
9.8.5 流式推理
第10章 中文私有模型开发
10.1 基本思路
10.2 中文词汇表
10.3 模型下载
10.3.1 安装Git LFS
10.3.2 获取下载链接
10.3.3 直接单击链接分文件逐一下载
10.4 开发方案
10.4.1 演示系统开发
10.4.2 生产系统开发
10.4.3 实训系统开发
10.5 中文语料
10.5.1 预训练语料
10.5.2 微调数据集
第11章 模型评估
11.1 大语言模型评估
11.2 评估指标
11.2.1 困惑度
11.2.2 HellaSwag
11.2.3 BLEU
11.2.4 ROUGE
11.2.5 METEOR
11.3 基于上下文的学习
11.4 Llama 2预训练模型的评估
11.5 MMLU
11.6 标准基准测试
11.7 代码生成
11.7.1 Human-Eval代码生成基准测试
11.7.2 MBPP程序生成基准测试
11.8 考试AGI Eval
11.9 GSM8K
11.10 世界知识
11.10.1 NaturalQuestions
11.10.2 TriviaQA
11.11 通义千问评测
11.12 BBH
第12章 用于RAG的词向量计算
12.1 信息整合
12.2 向量数据库
12.3 词向量
12.4 嵌入向量生成模型
12.5 池化技术
12.6 计算词向量
12.6.1 使用OpenAI
12.6.2 使用Hugging Face
12.6.3 使用Llama
12.7 批量生成嵌入向量
12.8 池化算法
12.9 词向量文档检索
12.10 示例
12.10.1 PGVector简介
12.10.2 PGVector安装
12.10.3 向量数据库操作
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...