第 1 章 NLP 基础概念 1
1.1 什么是 NLP 1
1.2 NLP 发展历程 2
1.3 NLP 任务 3
1.3.1 中文分词 3
1.3.2 子词切分 3
1.3.3 词性标注 4
1.3.4 文本分类 5
1.3.5 实体识别 5
1.3.6 关系抽取 6
1.3.7 文本摘要 6
1.3.8 机器翻译 7
1.3.9 自动问答 8
1.4 文本表示的发展历程 8
1.4.1 词向量 9
1.4.2 语言模型 10
1.4.3 Word2Vec 10
1.4.4 ELMo 11
1.5 本章小结 12
参考资料 12
第 2 章 Transformer 架构 14
2.1 注意力机制 14
2.1.1 什么是注意力机制 14
2.1.2 深入理解注意力机制 17
2.1.3 注意力机制的实现 19
2.1.4 自注意力 20
2.1.5 掩码自注意力 20
2.1.6 多头注意力 22
2.2 编码器 - 解码器架构 26
2.2.1 Seq2Seq 27
2.2.2 全连接神经网络 28
2.2.3 层归一化 29
2.2.4 残差连接 31
2.2.5 编码器 32
2.2.6 解码器 33
2.3 搭建一个 Transformer 模型 34
2.3.1 嵌入层 35
2.3.2 位置编码 36
2.3.3 一个完整的 Transformer 41
参考资料 44
第 3 章 PLM 45
3.1 仅编码器 PLM 45
3.1.1 BERT 46
3.1.2 RoBERTa 54
3.1.3 ALBERT 57
3.2 编码器 - 解码器 PLM 59
T5 60
3.3 仅解码器 PLM 66
3.3.1 GPT 66
3.3.2 LLaMA 72
3.3.3 GLM 74
参考资料 78
第 4 章 LLM 80
4.1 什么是 LLM 81
4.1.1 LLM 的定义 81
4.1.2 LLM 的能力 82
4.1.3 LLM 的特点 84
4.2 如何训练一个 LLM 86
4.2.1 预训练 87
4.2.2 SFT 91
4.2.3 RLHF 96
参考资料 100
第 5 章 动手搭建大模型 101
5.1 动手搭建一个 LLaMA2 大模型 101
5.1.1 定义超参数 101
5.1.2 构建 RMS 归一化 102
5.1.3 构建 LLaMA2 Attention 模块 104
5.1.4 构建 LLaMA2 MLP 模块 111
5.1.5 构建 LLaMA2 的解码器层 113
5.1.6 构建 LLaMA2 大模型 115
5.2 训练分词器 119
5.2.1 词级分词器 119
5.2.2 字符级分词器 120
5.2.3 子词级分词器 120
5.2.4 训练一个分词器 122
5.3 预训练一个小型 LLM 129
5.3.1 数据下载 129
5.3.2 分词器训练实战 131
5.3.3 数据集 137
5.3.4 预训练 142
5.3.5 SFT 训练 148
5.3.6 使用模型生成文本 154
第 6 章 大模型训练流程实践 161
6.1 模型预训练 161
6.1.1 Transformers 框架介绍 161
6.1.2 初始化 LLM 162
6.1.3 预训练数据处理 166
6.1.4 使用 Trainer 类进行训练 169
6.1.5 使用 DeepSpeed 实现分布式训练 170
6.2 模型 SFT 178
6.2.1 预训练与 SFT 179
6.2.2 微调数据处理 179
6.3 高效微调 185
6.3.1 高效微调方案 186
6.3.2 LoRA 微调 187
6.3.3 LoRA 微调的原理 188
6.3.4 LoRA 微调的代码实现 189
6.3.5 使用 peft 实现 LoRA 微调 192
参考资料 194
第 7 章 大模型应用 195
7.1 大模型评测 195
7.1.1 LLM 的评测数据集 196
7.1.2 主流的大模型评测榜单 197
7.1.3 特定的大模型评测榜单 198
7.2 RAG 199
7.2.1 RAG 的基本原理 199
7.2.2 实现一个 RAG 框架 200
7.3 智能体 209
7.3.1 什么是智能体 209
7.3.2 智能体的类型 210
7.3.3 动手构造一个小型智能体 212
参考资料 219