内容简介
本书深入探索将机器学习应用投入生产所需的各类技术,以及在此过程中需要考虑的关键问题和应对方法。本书包括核心的机器学习工程主题:数据的收集、验证、存储与特征工程。模型的分析、部署、监控与日志记录。借助 TensorFlow Extended(TFX)及其他工具高效构建和管理机器学习流水线。此外,本书提供了丰富的实战案例,包括 NLP 和计算机视觉模型的端到端机器学习流水线。
目录
目录
序 1
前言 5
第1 章 生产型机器学习系统概论 13
11 什么是生产型机器学习 13
12 机器学习工作流的优势 15
121 聚焦开发新模式,而非维持现有模式 15
122 预防BUG 15
123 创建用于调试与结果复现的记录 16
124 标准化 16
125 机器学习工作流的商业案例 16
13 何时使用机器学习工作流 17
14 机器学习工作流的步骤 17
141 数据输入和数据版本管理 18
142 数据验证 18
143 特征工程 19
144 模型训练和调优 19
145 模型分析 20
146 模型部署 20
15 前瞻 20
第2 章 数据收集、标注和验证 21
21 数据收集的关键考量 21
22 负责任的数据收集 22
23 数据标注:生产ML 中的数据变化和漂移 24
24 数据标注:直接标注和人工标注 25
25 数据验证:检测数据问题 26
26 数据验证:TFDV 26
261 使用TFDV 进行偏差检测 28
262 偏差类型 28
27 示例:利用TFDV 发现不平衡数据集 29
28 结论 32
第3 章 特征工程和特征选择 33
31 特征工程简介 33
32 预处理操作 35
33 特征工程技术 36
331 标准化与归一化 36
332 分桶 37
333 特征交叉 37
334 维度与嵌入 38
335 可视化 38
34 大规模特征转换 39
341 选择一个能良好扩展的框架 39
342 避免训练与(推理)服务不一致 39
343 考虑实例级别转换与全数据遍历转换 40
35 使用TensorFlow Transform 41
351 分析器 43
352 代码示例 44
36 特征选择45
361 特色空间 45
362 特征选择概述 46
363 过滤方法 47
364 封装方法 48
365 嵌入方法 50
366 LLM 和GenAI 的特征和示例选择 50
37 示例:使用TF Transform 对文本进行分词 51
371 使用TF Transform 的优势 54
372 TF Transform 的替代方案 55
38 结论 55
第4 章 数据处理和数据存储 57
41 数据处理58
42 机器学习元数据 59
43 使用数据模式 60
431 数据模式开发 61
432 数据模式环境 61
433 不同数据集之间的变化 62
44 企业数据存储 63
441 特征存储 63
442 数据仓库 64
443 数据湖 65
45 结论 66
第5 章 高级标注,增强和数据预处理 67
51 高级标注67
511 半监督标注 68
512 主动学习 70
513 弱监督 73
514 高级标注回顾 75
52 数据增强75
521 CIFAR-10 示例 76
522 其他数据增强技术 77
523 数据增强回顾 77
53 举例:时间序列数据的预处理 77
531 窗口 79
532 取样 80
54 结论 81
第6 章 模型资源管理技术 83
61 降维:维度对性能的影响 83
611 示例:使用Keras 进行词嵌入 84
612 维度灾难 88
613 增加维度会增大特征空间的容量 90
614 降维 91
62 量化与剪枝 94
621 移动设备、物联网(IoT)、边缘计算及相关应用场景 94
622 量化 95
623 使用TF Lite 优化TensorFlow 模型 101
624 优化选项 102
625 剪枝 103
63 知识蒸馏106
631 教师网络与学生网络107
632 知识蒸馏技术 108
633 TMKD:用于问答任务的知识蒸馏 111
634 通过蒸馏EfficientNets 提高模型鲁棒性 113
64 结论 114
第7 章 高性能建模 117
71 分布式训练 117
72 高效输入流水线 121
721 输入流水线的基础 121
722 输入流水线模式:提高效率 122
723 使用TensorFlow Data 优化输入流水线 124
73 大模型训练:巨型神经网络的崛起与并行化 126
731 潜在的解决方案及其不足之处 127
732 流水线并行化是救星吗 128
74 结论 130
第8 章 模型分析 131
81 模型性能分析 131
811 黑盒评估 132
812 性能指标与优化目标132
82 高级模型分析 133
821 TFMA 133
822 学习可解释性工具(LIT) 139
83 高级模型调试 140
831 基线模型 142
832 敏感性分析 142
833 残差分析 146
84 模型修复147
85 歧视修复148
86 公平性 148
861 公平性评估 149
862 公平性考量 151
87 持续评估与监控 151
88 结论 152
第9 章 可解释性 153
91 可解释性人工智能 153
92 模型解释方法 156
921 方法分类 156
922 内在可解释模型 160
923 通用模型方法 165
924 局部可解释的通用模型解释(LIME) 169
925 Shapley 值 170
926 SHAP 库 172
927 测试概念激活向量 174
928 AI 解释 176
93 示例:使用SHAP 探索模型敏感性 177
931 回归模型 177
932 自然语言处理模型 178
94 结论 180
第10 章 神经架构搜索 181
101 超参数调优 181
102 AutoML 简介 183
103 NAS 的关键组成部分 183
1031 搜索空间 184
1032 搜索策略 186
1033 性能评估策略 188
104 云上的AutoML 189
1041 亚马逊SageMaker Autopilot 189
1042 微软Azure 自动化机器学习 190
1043 谷歌云AutoML 191
105 使用AutoML 192
106 生成式AI 与AutoML 192
107 结论 193
第11 章 模型服务基础 195
111 模型训练 195
112 模型预测 196
113 延迟 196
114 吞吐量 196
115 成本 197
116 模型服务的资源和需求 197
1161 成本与复杂性 197
1162 加速器 198
1163 喂养“巨兽” 199
117 模型部署 200
1171 数据中心部署 200
1172 移动与分布式部署 200
118 模型服务器 202
119 托管服务 203
1110 结论 203
第12 章 模型服务模式 205
121 批量推理 205
1211 批量吞吐量206
1212 批量推理用例 207
1213 分布式批处理与流处理系统中的ETL 208
122 实时推理简介 209
1221 实时预测的同步交付 210
1222 实时预测的异步交付 210
1223 优化实时推理 210
123 实时推理用例 211
124 模型集成服务 212
1241 集成拓扑结构 212
1242 集成示例 213
1243 集成服务考量 213
1244 模型路由:GenAI 中的集成模型 213
125 实时数据预处理与后处理214
1251 训练转换与服务转换 215
1252 窗口化 216
1253 预处理选项216
1254 引入TensorFlow Transform 218
1255 后处理 220
126 边缘推理和浏览器推理 220
1261 挑战 221
1262 容器化模型部署 222
1263 在设备上进行训练 222
1264 联邦学习 223
1265 运行时互通性 223
1266 浏览器推理224
127 结论 225
第13 章 模型服务基础设施 227
131 模型服务器 228
1311 TensorFlow Serving 228
1312 NVIDIA Triton 推理服务器 231
1313 TorchServe 231
132 构建可扩展的基础设施 233
133 容器化 234
1331 传统部署时代 234
1332 虚拟化部署时代 234
1333 容器部署时代 235
1334 容器化框架Docker 236
1335 容器编排 237
134 基于冗余的可靠性和可用性 241
1341 可观测性 242
1342 高可用 242
1343 自动部署 244
135 硬件加速器 244
1351 GPU 244
1352 TPU 245
136 结论 246
第14 章 模型服务示例 247
141 案例:使用TensorFlow Serving 部署TensorFlow 模型 247
1411 为TF Serving 导出Keras 模型 247
1412 使用Docker 设置TF Serving 248
1413 TF Serving 基本配置 248
1414 使用REST 构造模型预测请求 250
1415 使用gRPC 构造模型预测请求 251
1416 从分类和回归模型中获取预测 253
1417 使用载荷 253
1418 从TF Serving 获取模型元数据 254
1419 构造批量推理请求 255
142 案例:使用TF Profiler 优化TF Serving 推理 257
1421 前置条件 257
1422 TensorBoard 设置 258
1423 模型性能剖析 259
143 案例:TorchServe 基础设置 263
1431 安装TorchServe 依赖项 264
1432 为TorchServe 导出模型 264
1433 设置TorchServe 265
1434 构造模型预测请求 268
1435 构造批量推理请求 268
144 结论 269
第15 章 模型管理和交付 271
151 实验跟踪 271
1511 在Notebook 中进行实验 272
1512 实验的整体实践 273
1513 实验跟踪和版本工具 274
152 MLOps 简介 278
1521 数据科学家和软件工程师 278
1522 机器学习工程师 278
1523 产品与服务中的机器学习 279
1524 MLOps 279
153 MLOps 方法论 281
1531 第0 级MLOps 281
1532 第1 级MLOps 283
1533 第2 级MLOps 287
1534 工作流编排组件 289
154 三类自定义组件 291
1541 基于Python 函数的组件 291
1542 基于容器的组件 292
1543 完全自定义的组件 293
155 深入TFX 297
1551 TFX SDK297
1552 中间表示 298
1553 运行时 298
1554 使用TFX 组件实现机器学习流水线 298
1555 TFX 高级特性 300
156 管理模型版本 302
1561 模型版本化的方法 302
1562 模型血缘 304
1563 模型注册表304
157 持续集成和持续部署 305
1571 持续集成 305
1572 持续交付 307
158 渐进式交付 308
1581 蓝/ 绿部署 308
1582 金丝雀部署308
1583 在线实验 310
159 结论 311
第16 章 模型监控和日志 313
161 监控的重要性 314
162 机器学习中的可观测性 315
1621 你应该监控什么 316
1622 在TFX 中自定义告警 318
163 日志 319
164 分布式追踪 320
165 监控模型衰减 322
1651 数据漂移与概念漂移 322
1652 模型衰减检测 324
1653 监督式监控技术 325
1654 无监督监控技术 326
1655 缓解模型衰减 327
166 模型重训练 328
1661 何时重训练328
1662 自动化重训练 328
167 结论 329
第17 章 隐私与法律要求 331
171 为什么数据隐私很重要 332
1711 哪些数据需要保密 332
1712 危害 333
1713 只收集你所需的数据 333
1714 从网页和其他来源抓取的生成式AI 数据 334
172 法律要求 334
1721 GDPR 和CCPA 335
1722 GDPR 的被遗忘权 335
173 假名化与匿名化 336
174 差分隐私 337
1741 本地和全局DP 338
1742 Epsilon-Delta DP 339
1743 将差分隐私应用到机器学习 339
1744 TensorFlow Privacy 示例 341
175 联邦学习 343
176 加密机器学习 344
177 结论 345
第18 章 编排机器学习流水线 347
181 流水线编排简介 347
1811 为什么需要流水线编排 348
1812 有向无环图348
182 使用TFX 的流水线编排 349
1821 交互式TFX 流水线 349
1822 转换交互式流水线用于生产 351
183 使用Apache Beam 编排TFX 流水线 352
184 使用Kubeflow 流水线编排TFX 流水线 354
1841 Kubeflow 流水线简介 354
1842 安装和初始化设置 355
1843 访问Kubeflow 流水线 357
1844 从TFX 到Kubeflow 的工作流 358
1845 OpFunc 函数361
1846 编排Kubeflow 流水线 363
185 Google Cloud Vertex 流水线 366
1851 配置Google Cloud 与Vertex 流水线366
1852 配置Google Cloud 服务账号 370
1853 使用Vertex 流水线编排流水线 372
1854 执行Vertex 流水线 375
186 选择你的编排器 377
1861 交互式TFX 377
1862 Apache Beam 377
1863 Kubeflow 流水线 377
1864 Google Cloud Vertex 流水线 378
187 替代TFX 378
188 结论 378
第19 章 TFX 进阶 381
191 进阶流水线实践 381
1911 配置你的组件 381
1912 导入工件 382
1913 使用解析器节点 384
1914 执行条件流水线 385
1915 导出TF Lite 模型 385
1916 热启动模型训练 387
1917 使用退出处理器 388
1918 从TFX 触发消息 390
192 自定义TFX 组件:架构和用例 391
1921 TFX 组件架构 391
1922 自定义组件用例 392
193 使用基于函数的自定义组件 393
194 从零开始编写自定义组件394
1941 定义组件规范 395
1942 定义组件通道 397
1943 编写自定义执行器 397
1944 编写自定义驱动器 400
1945 组装自定义组件 402
1946 使用我们的基础自定义组件 403
195 实现回顾 404
196 复用已有组件 404
197 创建基于容器的自定义组件 408
198 哪种自定义组件更适合你410
199 TFX 插件 411
1910 结论 411
第20 章 面向计算机视觉问题的机器学习流水线 413
201 我们的数据 414
202 我们的模型 414
203 自定义摄取组件 415
204 数据预处理 416
205 导出模型 418
206 我们的流水线 419
2061 数据摄取 419
2062 数据预处理420
2063 模型训练 421
2064 模型评估 421
2065 模型导出 424
2066 整合 424
207 在Apache Beam 中执行 425
208 在Vertex 流水线中执行 426
209 使用TensorFlow Serving 部署模型 428
2010 结论 430
第21 章 自然语言处理的机器学习流水线 431
211 我们的数据 431
212 我们的模型 432
213 数据导入组件 433
214 数据预处理 434
215 整合流水线 437
216 执行流水线 437
217 使用Google Cloud Vertex 进行模型部署 439
2171 注册你的机器学习模型 439
2172 创建新的模型端点 441
2173 部署你的机器学习模型 442
2174 向已部署模型发起预测请求 444
2175 清理已部署的模型 445
218 结论 446
第22 章 生成式人工智能 447
221 生成模型 448
222 GenAI 模型类型 448
223 智能体与副驾驶 449
224 预训练 450
2241 预训练数据集 450
2242 嵌入 451
2243 带掩码的自监督训练 451
225 微调 453
2251 微调与迁移学习 453
2252 微调数据集453
2253 生产环境中的微调注意事项 454
2254 微调与模型API 的对比 454
226 参数高效微调 455
2261 LoRA 455
2262 S-LoRA 455
227 人类对齐 456
2271 基于人类反馈的强化学习(RLHF) 456
2272 基于AI 反馈的强化学习(RLAIF) 457
2273 直接偏好优化(DPO) 457
228 提示词 457
229 链式调用 458
2210 检索增强生成(RAG) 458
2211 ReAct 框架 459
2212 评估 460
22121 评估技术 460
22122 跨模型基准测试 461
2213 LMOps 461
2214 生成式AI 攻击 462
22141 越狱攻击 462
22142 提示注入 462
2215 负责任的生成式AI 463
22151 责任的设计 463
22152 进行对抗性测试 464
22153 宪法式AI 464
2216 结论 465
第23 章 机器学习的未来:生产系统与下一步方向 467
231 让我们从“机器学习系统”而非“机器学习模型”的角度思考 467
232 让机器学习系统更贴近领域专家 468
233 隐私比以往任何时候都更重要 468
234 结论 468



















