目 录
第1章 语言的觉醒:为何大语言模型引起了广泛关注 1
1.1 大语言模型加速信息传递 2
1.2 大语言模型应用中的自建与采购决策权衡 6
1.2.1 采购:成熟的路径选择 6
1.2.2 构建:不走寻常路 7
1.2.3 重要提示:即刻拥抱未来 12
1.3 破除迷思 14
1.4 本章小结 16
第2章 大语言模型技术内幕:语言建模深度解析 17
2.1 语言建模 18
2.1.1 语言特征 19
2.1.2 符号学 23
2.1.3 多语言自然语言处理 25
2.2 语言建模技术 26
2.2.1 N-gram与基于语料库的技术 27
2.2.2 贝叶斯技术 29
2.2.3 马尔可夫链 33
2.2.4 连续语言建模 35
2.2.5 词向量技术(Embedding) 39
2.2.6 多层感知机 40
2.2.7 循环神经网络和长短时记忆网络 42
2.2.8 注意力机制 49
2.3 注意力机制即一切 51
2.3.1 编码器 51
2.3.2 解码器 53
2.3.3 Transformer 54
2.4 超大规模变换器 56
2.5 本章小结 60
第3章 大语言模型运维:构建LLM平台 63
3.1 大语言模型运维简介 63
3.2 大语言模型的运维挑战 64
3.2.1 漫长的下载时间 64
3.2.2 更长的部署时间 65
3.2.3 延迟 66
3.2.4 管理GPU 66
3.2.5 文本数据的特殊性 67
3.2.6 token限制引发瓶颈 67
3.2.7 幻觉导致混淆 69
3.2.8 偏见与伦理考量 70
3.2.9 安全问题 70
3.2.10 控制成本 72
3.3 LLMOps要点 72
3.3.1 压缩 73
3.3.2 分布式计算 80
3.4 运行大语言模型的基础设施 84
3.4.1 数据基础设施 86
3.4.2 实验跟踪器 87
3.4.3 模型注册表 87
3.4.4 特征存储 88
3.4.5 向量数据库 89
3.4.6 监控系统 90
3.4.7 支持GPU的工作站 91
3.4.8 部署服务 91
3.5 本章小结 92
第4章 大语言模型数据工程:构建成功的基石 95
4.1 模型是基础 96
4.1.1 GPT 97
4.1.2 BLOOM 97
4.1.3 LLaMA 98
4.1.4 Wizard 98
4.1.5 Falcon 99
4.1.6 Vicuna 99
4.1.7 Dolly 100
4.1.8 OpenChat 100
4.2 大语言模型的评估 101
4.2.1 文本评估指标 101
4.2.2 行业基准 104
4.2.3 负责任的AI基准测试 108
4.2.4 开发自定义基准测试 111
4.2.5 评估代码生成器 113
4.2.6 评估模型参数 114
4.3 大语言模型的数据 116
4.3.1 你应该了解的数据集 116
4.3.2 数据清理与准备 120
4.4 文本处理器 125
4.4.1 分词化 125
4.4.2 嵌入 130
4.5 准备一个Slack数据集 132
4.6 本章小结 133
第5章 训练大语言模型:如何生成生成器 135
5.1 多GPU训练环境 136
5.1.1 设置 136
5.1.2 库 139
5.2 基础的训练技术 141
5.2.1 从零开始 143
5.2.2 迁移学习(微调) 149
5.2.3 提示工程(Prompting) 153
5.3 高级训练技术 154
5.3.1 提示调优 155
5.3.2 使用知识蒸馏进行微调 160
5.3.3 基于人类反馈的强化学习 164
5.3.4 专家混合模型 166
5.3.5 LoRA与PEFT 169
5.4 训练技巧与窍门 174
5.4.1 训练数据规模的注意事项 174
5.4.2 高效训练 174
5.4.3 局部极小值陷阱 175
5.4.4 超参数调优技巧 176
5.4.5 关于操作系统的说明 176
5.4.6 激活函数的建议 176
5.5 本章小结 177
第6章 LLM服务:实用指南 179
6.1 构建LLM服务 179
6.1.1 模型编译 180
6.1.2 大语言模型的存储策略 186
6.1.3 自适应请求批处理 188
6.1.4 流量控制 189
6.1.5 流式响应 191
6.1.6 特征存储 192
6.1.7 检索增强生成 195
6.1.8 LLM服务库 198
6.2 设置基础设施 199
6.2.1 集群配置 200
6.2.2 自动扩展 202
6.2.3 滚动更新 206
6.2.4 推理图 208
6.2.5 监控 211
6.3 生产环境中的挑战 214
6.3.1 模型更新与重新训练 214
6.3.2 负载测试 214
6.3.3 排查高延迟问题 218
6.3.4 资源管理 220
6.3.5 成本工程 220
6.3.6 安全性 221
6.4 边缘部署 223
6.5 本章小结 224
第7章 提示工程:成为LLM的“专家” 227
7.1 提示你的模型 227
7.1.1 少样本提示 228
7.1.2 单样本提示 229
7.1.3 零样本提示 231
7.2 提示工程的基础 232
7.2.1 提示的结构 233
7.2.2 提示超参数之外 235
7.2.3 挖掘训练数据 236
7.3 提示工程工具 237
7.3.1 LangChain 238
7.3.2 Guidance 239
7.3.3 DSPy 241
7.3.4 其他工具虽可用,但…… 242
7.4 高级提示工程技术 242
7.4.1 为大语言模型提供工具 242
7.4.2 ReAct 245
7.5 本章小结 248
第8章 大语言模型运维:构建 LLM平台 249
8.1 构建应用程序 249
8.1.1 前端流式传输 250
8.1.2 保持历史记录 254
8.1.3 与聊天机器人交互的功能 257
8.1.4 token计数 260
8.1.5 检索增强生成(RAG)的应用 261
8.2 边缘应用 262
8.3 大语言模型代理 265
8.4 本章小结 272
第9章 创建一个大语言模型项目: 重新实现LLama 3 275
9.1 实现Meta的LLama模型 276
9.1.1 分词化与配置 276
9.1.2 数据集、数据加载、评估与生成 278
9.1.3 网络架构 283
9.2 简化的LLama模型 286
9.3 让它变得更好 290
9.3.1 量化 291
9.3.2 LoRA 292
9.3.3 完全分片数据并行——量化LoRA 295
9.4 部署到Hugging Face Hub Space 296
9.5 本章小结 299
第10章 创建编程助手项目:这个项目可以助你事半功倍 301
10.1 我们的模型 302
10.2 数据为王 304
10.2.1 我们的向量数据库 305
10.2.2 我们的数据集 305
10.2.3 使用RAG 309
10.3 构建VS Code扩展 312
10.4 经验总结与下一步行动 319
10.5 本章小结 322
第11章 在树莓派上部署大语言模型:性能极限挑战 323
11.1 设置你的树莓派 324
11.1.1 Pi Imager 324
11.1.2 连接到Pi 327
11.1.3 软件安装与更新 329
11.2 模型准备 331
11.3 模型服务 332
11.4 改进措施 334
11.4.1 使用更好的界面 335
11.4.2 调整量化方式 335
11.4.3 增加多模态能力 336
11.4.4 在Google Colab上部署模型 340
11.5 本章小结 343
第12章 生产环境,瞬息万变:一切才刚刚开始 345
12.1 概览 345
12.2 大语言模型的未来 346
12.2.1 政府与监管 347
12.2.2 大语言模型正变得更大 350
12.2.3 多模态空间 356
12.2.4 数据集 357
12.2.5 解决幻觉问题 358
12.2.6 新硬件 364
12.2.7 智能体将变得有用 365
12.3 最终思考 369
12.4 本章小结 369
附录A 语言学的历史 371
附录B 基于人类反馈的强化学习 379
附录C 多模态潜在空间 383
