书籍详情
机器学习流水线实战
作者:[美] 汉内斯·哈普克(Hannes Hapke) 著,孔晓泉,郑炜,江骏 译
出版社:人民邮电出版社
出版时间:2021-11-01
ISBN:9787115573216
定价:¥109.80
购买这本书可以去
内容简介
本书介绍如何构建完整的机器学习流水线,从而在生产环境中准备数据以及训练、验证、部署和管理机器学习模型。你将了解机器学习流水线的每个环节,以及如何利用TensorFlow Extended(TFX)构建机器学习流水线。模型的生命周期是一个闭环,其中包括数据读取、数据校验、数据预处理、模型训练、模型分析、模型验证、模型部署、模型反馈等环节。你将学习如何利用Beam、Airflow、Kubeflow、TensorFlow Serving等工具将每一个环节的工作自动化。学完本书,你将不再止步于训练单个模型,而是能够从更高的角度将模型产品化,从而为公司创造更大的价值。
作者简介
汉内斯·哈普克(Hannes Hapke),数据科学家,善于解决各行各业的机器学习问题,与他人合著有《自然语言处理实战》。 凯瑟琳·纳尔逊(Catherine Nelson),数据科学家,牛津大学硕士,长期为企业提供机器学习解决方案。【译者介绍】孔晓泉,谷歌认证机器学习专业人士,TensorFlow Addons的Codeowner之一,上海TensorFlow User Group核心组织者,多年来一直在世界500强公司带领团队构建机器学习应用和平台。另外,他还作为技术审稿人参与了TensorFlow文档的本地化工作。郑炜,明尼苏达大学双子城分校机械工程硕士,伊利诺伊大学香槟分校机械工程学士,谷歌认证机器学习专业人士,ABB电气事业部中国技术中心算法项目经理、算法工程师,参与算法开发和算法工作流搭建等工作。江骏,蚂蚁集团技专业人士(花名“有练”)、谷歌认证机器学习专业人士、蚂蚁云原生机器学习平台技术负责人,专注于AI基础架构和训练框架优化。
目录
本书赞誉 xiii
序 xv
前言 xvii
第 1 章 入门 1
1.1 为什么要用机器学习流水线 1
1.2 什么时候考虑使用机器学习流水线 2
1.3 机器学习流水线步骤概述 3
1.3.1 数据读取和版本控制 4
1.3.2 数据校验 4
1.3.3 数据预处理 4
1.3.4 模型训练和模型调优 5
1.3.5 模型分析 5
1.3.6 模型版本控制 5
1.3.7 模型部署 6
1.3.8 反馈循环 6
1.3.9 数据隐私 6
1.4 流水线编排 7
1.4.1 为什么使用流水线编排工具 7
1.4.2 有向无环图 7
1.5 示例项目 8
1.5.1 项目结构 9
1.5.2 机器学习模型 9
1.5.3 示例项目的目标 10
1.6 小结 10
第 2 章 TensorFlow Extended入门 11
2.1 什么是TFX 12
2.2 安装TFX 13
2.3 TFX组件概述 14
2.4 什么是机器学习元数据 15
2.5 交互式流水线 16
2.6 TFX的替代品 17
2.7 Apache Beam简介 18
2.7.1 安装 18
2.7.2 基本数据流水线 19
2.7.3 执行流水线 22
2.8 小结 22
第 3 章 数据读取 23
3.1 数据读取的概念 23
3.1.1 读取本地数据文件 24
3.1.2 读取远程数据文件 29
3.1.3 直接从数据库中读取数据 29
3.2 数据准备 31
3.2.1 拆分数据集 31
3.2.2 跨越数据集 33
3.2.3 对数据集进行版本控制 34
3.3 数据读取策略 34
3.3.1 结构化数据 35
3.3.2 自然语言处理中的文本数据 35
3.3.3 用于计算机视觉问题的图像数据 35
3.4 小结 36
第 4 章 数据校验 37
4.1 为什么要进行数据校验 38
4.2 TFDV 39
4.2.1 安装 39
4.2.2 根据数据生成统计信息 40
4.2.3 从数据生成模式 41
4.3 识别数据中的问题 42
4.3.1 比较数据集 43
4.3.2 更新模式 44
4.3.3 数据偏斜和漂移 45
4.3.4 存在偏差的数据集 46
4.3.5 在TFDV中切分数据 47
4.4 使用GCP处理大型数据集 49
4.5 将TFDV集成到机器学习流水线中 51
4.6 小结 53
第 5 章 数据预处理 54
5.1 为什么要进行数据预处理 55
5.1.1 在整个数据集的上下文中预处理数据 55
5.1.2 扩展预处理步骤 55
5.1.3 避免训练–服务偏斜 55
5.1.4 将预处理步骤和机器学习模型作为一个工件进行部署 56
5.1.5 检查流水线中的预处理结果 56
5.2 使用TFT做数据预处理 57
5.2.1 安装 58
5.2.2 预处理策略 58
5.2.3 最佳实践 60
5.2.4 TFT函数 60
5.2.5 TFT的独立执行 63
5.2.6 将TFT集成到机器学习流水线中 64
5.3 小结 67
第 6 章 模型训练 68
6.1 定义示例项目的模型 69
6.2 TFX Trainer组件 72
6.2.1 run_fn()函数 72
6.2.2 运行Trainer组件 76
6.2.3 其他关于Trainer组件的注意事项 77
6.3 在交互式流水线中使用TensorBoard 78
6.4 分布策略 80
6.5 模型调整 82
6.5.1 超参数调整的策略 82
6.5.2 TFX流水线中的超参数调整 83
6.6 小结 83
第 7 章 模型分析和模型验证 84
7.1 如何分析模型 85
7.1.1 分类指标 85
7.1.2 回归指标 87
7.2 TensorFlow模型分析 88
7.2.1 用TFMA分析单个模型 88
7.2.2 用TFMA分析多个模型 91
7.3 模型公平性分析 93
7.3.1 用TFMA划分模型预测 94
7.3.2 用公平性指标检查决策阈值 96
7.3.3 详解假设分析工具 98
7.4 模型可解释性 102
7.4.1 使用WIT生成模型解释 103
7.4.2 其他模型解释方法 105
7.5 用TFX进行分析和验证 106
7.5.1 ResolverNode 106
7.5.2 Evaluator组件 107
7.5.3 用Evaluator组件进行验证 107
7.5.4 TFX Pusher组件 108
7.6 小结 109
第 8 章 用TensorFlow Serving部署模型 110
8.1 简单的模型服务器 111
8.2 基于Python API部署模型的缺点 112
8.2.1 缺少代码隔离 112
8.2.2 缺少模型版本控制 112
8.2.3 低效的模型推算 112
8.3 TensorFlow Serving 113
8.4 TensorFlow Serving架构概述 113
8.5 为TensorFlow Serving导出模型 113
8.6 模型签名 115
8.7 查看导出的模型 117
8.7.1 查看模型 118
8.7.2 测试模型 119
8.8 设置TensorFlow Serving 120
8.8.1 Docker安装 120
8.8.2 原生Ubuntu安装 120
8.8.3 从源码编译TensorFlow Serving 121
8.9 配置TensorFlow服务器 121
8.9.1 单一模型配置 121
8.9.2 多模型配置 124
8.10 REST与gRPC 126
8.10.1 REST 126
8.10.2 gRPC 126
8.11 用模型服务器预测 126
8.11.1 用REST获得模型预测 126
8.11.2 通过gRPC使用TensorFlow Serving 128
8.12 用TensorFlow Serving进行模型A/B测试 131
8.13 从模型服务器获取模型元数据 132
8.13.1 使用REST请求模型元数据 132
8.13.2 使用gRPC请求模型元数据 133
8.14 批量推算请求 134
8.15 配置批量预测 135
8.16 其他TensorFlow Serving优化方法 136
8.17 TensorFlow Serving的替代品 137
8.17.1 BentoML 137
8.17.2 Seldon 138
8.17.3 GraphPipe 138
8.17.4 Simple TensorFlow Serving 138
8.17.5 MLflow 138
8.17.6 Ray Serve 139
8.18 在云端部署 139
8.18.1 用例 139
8.18.2 在GCP上进行示例部署 139
8.19 使用TFX流水线进行模型部署 144
8.20 小结 145
第 9 章 使用TensorFlow Serving进行进阶模型部署 146
9.1 解耦部署环节 146
9.1.1 工作流概述 147
9.1.2 优化远程模型加载 149
9.2 为部署模型进行优化 149
9.2.1 量化 149
9.2.2 剪枝 150
9.2.3 蒸馏 151
9.3 在TensorFlow Serving中使用TensorRT 151
9.4 TFLite 152
9.4.1 用TFLite优化模型的步骤 152
9.4.2 使用TensorFlow Serving实例部署TFLite模型 153
9.5 监测TensorFlow Serving实例 154
9.5.1 设置Prometheus 154
9.5.2 TensorFlow Serving配置 156
9.6 使用TensorFlow Serving和Kubernetes进行简单的扩容 157
9.7 小结 159
第 10 章 TensorFlow Extended的高级功能 160
10.1 流水线的高级功能 160
10.1.1 同时训练多个模型 161
10.1.2 导出TFLite模型 162
10.1.3 热启动模型训练 164
10.2 人工审核 165
10.2.1 创建Slack组件 166
10.2.2 如何使用Slack组件 166
10.3 TFX自定义组件 167
10.3.1 自定义组件的应用场景 168
10.3.2 从零创建自定义组件 168
10.3.3 复用现有组件 176
10.4 小结 179
第 11 章 流水线第 一部分:Apache Beam和Apache Airflow 180
11.1 选择哪种编排工具 181
11.1.1 Apache Beam 181
11.1.2 Apache Airflow 181
11.1.3 Kubeflow Pipelines 181
11.1.4 AI Platform上的Kubeflow Pipelines 182
11.2 将交互式TFX流水线转换为生产流水线 182
11.3 Beam和Airflow的简单交互式流水线转换 184
11.4 Apache Beam简介 185
11.5 使用Apache Beam编排TFX流水线 185
11.6 Apache Airflow简介 187
11.6.1 安装和初始设置 187
11.6.2 基本Airflow示例 188
11.7 使用Apache Airflow编排TFX流水线 191
11.7.1 流水线设置 192
11.7.2 运行流水线 193
11.8 小结 194
第 12 章 流水线第二部分:Kubeflow Pipelines 195
12.1 Kubeflow Pipelines概述 196
12.1.1 安装和初始设置 198
12.1.2 访问已安装的Kubeflow Pipelines 199
12.2 使用Kubeflow Pipelines编排TFX流水线 200
12.2.1 流水线设置 202
12.2.2 运行流水线 206
12.2.3 Kubeflow Pipelines的有用功能 211
12.3 基于Google Cloud AI Platform的流水线 215
12.3.1 流水线设置 215
12.3.2 TFX流水线设置 218
12.3.3 运行流水线 221
12.4 小结 222
第 13 章 反馈循环 223
13.1 显式反馈和隐式反馈 224
13.1.1 数据飞轮 224
13.1.2 现实世界中的反馈循环 225
13.2 收集反馈的设计模式 227
13.2.1 用户根据预测采取了某些措施 227
13.2.2 用户对预测的质量进行评分 228
13.2.3 用户纠正预测 228
13.2.4 众包打标 228
13.2.5 专家打标 229
13.2.6 自动产生反馈 229
13.3 如何跟踪反馈循环 229
13.3.1 跟踪显式反馈 230
13.3.2 跟踪隐式反馈 230
13.4 小结 231
第 14 章 机器学习的数据隐私 232
14.1 数据隐私问题 232
14.1.1 为什么关心数据隐私 232
14.1.2 最简单的加强隐私保护的方法 233
14.1.3 哪些数据需要保密 233
14.2 差分隐私 234
14.2.1 局部差分隐私和全局差分隐私 235
14.2.2 epsilon、delta和隐私预算 235
14.2.3 机器学习的差分隐私 236
14.3 TensorFlow Privacy 236
14.3.1 使用差分隐私优化器进行训练 237
14.3.2 计算epsilon 238
14.4 联邦学习 239
14.5 加密机器学习 241
14.5.1 加密模型训练 241
14.5.2 将训练好的模型转换为加密的预测服务 242
14.6 其他数据保密方法 243
14.7 小结 243
第 15 章 流水线的未来和下一步 244
15.1 模型实验跟踪 244
15.2 关于模型发布管理的思考 245
15.3 未来的流水线能力 246
15.4 TFX与其他机器学习框架 246
15.5 测试机器学习模型 247
15.6 用于机器学习的CI/CD系统 247
15.7 机器学习工程社区 247
15.8 小结 247
附录A 机器学习基础架构简介 249
附录B 在Google Cloud上设置Kubernetes集群 262
附录C 操作Kubeflow Pipelines的技巧 268
关于作者 276
关于封面 276
序 xv
前言 xvii
第 1 章 入门 1
1.1 为什么要用机器学习流水线 1
1.2 什么时候考虑使用机器学习流水线 2
1.3 机器学习流水线步骤概述 3
1.3.1 数据读取和版本控制 4
1.3.2 数据校验 4
1.3.3 数据预处理 4
1.3.4 模型训练和模型调优 5
1.3.5 模型分析 5
1.3.6 模型版本控制 5
1.3.7 模型部署 6
1.3.8 反馈循环 6
1.3.9 数据隐私 6
1.4 流水线编排 7
1.4.1 为什么使用流水线编排工具 7
1.4.2 有向无环图 7
1.5 示例项目 8
1.5.1 项目结构 9
1.5.2 机器学习模型 9
1.5.3 示例项目的目标 10
1.6 小结 10
第 2 章 TensorFlow Extended入门 11
2.1 什么是TFX 12
2.2 安装TFX 13
2.3 TFX组件概述 14
2.4 什么是机器学习元数据 15
2.5 交互式流水线 16
2.6 TFX的替代品 17
2.7 Apache Beam简介 18
2.7.1 安装 18
2.7.2 基本数据流水线 19
2.7.3 执行流水线 22
2.8 小结 22
第 3 章 数据读取 23
3.1 数据读取的概念 23
3.1.1 读取本地数据文件 24
3.1.2 读取远程数据文件 29
3.1.3 直接从数据库中读取数据 29
3.2 数据准备 31
3.2.1 拆分数据集 31
3.2.2 跨越数据集 33
3.2.3 对数据集进行版本控制 34
3.3 数据读取策略 34
3.3.1 结构化数据 35
3.3.2 自然语言处理中的文本数据 35
3.3.3 用于计算机视觉问题的图像数据 35
3.4 小结 36
第 4 章 数据校验 37
4.1 为什么要进行数据校验 38
4.2 TFDV 39
4.2.1 安装 39
4.2.2 根据数据生成统计信息 40
4.2.3 从数据生成模式 41
4.3 识别数据中的问题 42
4.3.1 比较数据集 43
4.3.2 更新模式 44
4.3.3 数据偏斜和漂移 45
4.3.4 存在偏差的数据集 46
4.3.5 在TFDV中切分数据 47
4.4 使用GCP处理大型数据集 49
4.5 将TFDV集成到机器学习流水线中 51
4.6 小结 53
第 5 章 数据预处理 54
5.1 为什么要进行数据预处理 55
5.1.1 在整个数据集的上下文中预处理数据 55
5.1.2 扩展预处理步骤 55
5.1.3 避免训练–服务偏斜 55
5.1.4 将预处理步骤和机器学习模型作为一个工件进行部署 56
5.1.5 检查流水线中的预处理结果 56
5.2 使用TFT做数据预处理 57
5.2.1 安装 58
5.2.2 预处理策略 58
5.2.3 最佳实践 60
5.2.4 TFT函数 60
5.2.5 TFT的独立执行 63
5.2.6 将TFT集成到机器学习流水线中 64
5.3 小结 67
第 6 章 模型训练 68
6.1 定义示例项目的模型 69
6.2 TFX Trainer组件 72
6.2.1 run_fn()函数 72
6.2.2 运行Trainer组件 76
6.2.3 其他关于Trainer组件的注意事项 77
6.3 在交互式流水线中使用TensorBoard 78
6.4 分布策略 80
6.5 模型调整 82
6.5.1 超参数调整的策略 82
6.5.2 TFX流水线中的超参数调整 83
6.6 小结 83
第 7 章 模型分析和模型验证 84
7.1 如何分析模型 85
7.1.1 分类指标 85
7.1.2 回归指标 87
7.2 TensorFlow模型分析 88
7.2.1 用TFMA分析单个模型 88
7.2.2 用TFMA分析多个模型 91
7.3 模型公平性分析 93
7.3.1 用TFMA划分模型预测 94
7.3.2 用公平性指标检查决策阈值 96
7.3.3 详解假设分析工具 98
7.4 模型可解释性 102
7.4.1 使用WIT生成模型解释 103
7.4.2 其他模型解释方法 105
7.5 用TFX进行分析和验证 106
7.5.1 ResolverNode 106
7.5.2 Evaluator组件 107
7.5.3 用Evaluator组件进行验证 107
7.5.4 TFX Pusher组件 108
7.6 小结 109
第 8 章 用TensorFlow Serving部署模型 110
8.1 简单的模型服务器 111
8.2 基于Python API部署模型的缺点 112
8.2.1 缺少代码隔离 112
8.2.2 缺少模型版本控制 112
8.2.3 低效的模型推算 112
8.3 TensorFlow Serving 113
8.4 TensorFlow Serving架构概述 113
8.5 为TensorFlow Serving导出模型 113
8.6 模型签名 115
8.7 查看导出的模型 117
8.7.1 查看模型 118
8.7.2 测试模型 119
8.8 设置TensorFlow Serving 120
8.8.1 Docker安装 120
8.8.2 原生Ubuntu安装 120
8.8.3 从源码编译TensorFlow Serving 121
8.9 配置TensorFlow服务器 121
8.9.1 单一模型配置 121
8.9.2 多模型配置 124
8.10 REST与gRPC 126
8.10.1 REST 126
8.10.2 gRPC 126
8.11 用模型服务器预测 126
8.11.1 用REST获得模型预测 126
8.11.2 通过gRPC使用TensorFlow Serving 128
8.12 用TensorFlow Serving进行模型A/B测试 131
8.13 从模型服务器获取模型元数据 132
8.13.1 使用REST请求模型元数据 132
8.13.2 使用gRPC请求模型元数据 133
8.14 批量推算请求 134
8.15 配置批量预测 135
8.16 其他TensorFlow Serving优化方法 136
8.17 TensorFlow Serving的替代品 137
8.17.1 BentoML 137
8.17.2 Seldon 138
8.17.3 GraphPipe 138
8.17.4 Simple TensorFlow Serving 138
8.17.5 MLflow 138
8.17.6 Ray Serve 139
8.18 在云端部署 139
8.18.1 用例 139
8.18.2 在GCP上进行示例部署 139
8.19 使用TFX流水线进行模型部署 144
8.20 小结 145
第 9 章 使用TensorFlow Serving进行进阶模型部署 146
9.1 解耦部署环节 146
9.1.1 工作流概述 147
9.1.2 优化远程模型加载 149
9.2 为部署模型进行优化 149
9.2.1 量化 149
9.2.2 剪枝 150
9.2.3 蒸馏 151
9.3 在TensorFlow Serving中使用TensorRT 151
9.4 TFLite 152
9.4.1 用TFLite优化模型的步骤 152
9.4.2 使用TensorFlow Serving实例部署TFLite模型 153
9.5 监测TensorFlow Serving实例 154
9.5.1 设置Prometheus 154
9.5.2 TensorFlow Serving配置 156
9.6 使用TensorFlow Serving和Kubernetes进行简单的扩容 157
9.7 小结 159
第 10 章 TensorFlow Extended的高级功能 160
10.1 流水线的高级功能 160
10.1.1 同时训练多个模型 161
10.1.2 导出TFLite模型 162
10.1.3 热启动模型训练 164
10.2 人工审核 165
10.2.1 创建Slack组件 166
10.2.2 如何使用Slack组件 166
10.3 TFX自定义组件 167
10.3.1 自定义组件的应用场景 168
10.3.2 从零创建自定义组件 168
10.3.3 复用现有组件 176
10.4 小结 179
第 11 章 流水线第 一部分:Apache Beam和Apache Airflow 180
11.1 选择哪种编排工具 181
11.1.1 Apache Beam 181
11.1.2 Apache Airflow 181
11.1.3 Kubeflow Pipelines 181
11.1.4 AI Platform上的Kubeflow Pipelines 182
11.2 将交互式TFX流水线转换为生产流水线 182
11.3 Beam和Airflow的简单交互式流水线转换 184
11.4 Apache Beam简介 185
11.5 使用Apache Beam编排TFX流水线 185
11.6 Apache Airflow简介 187
11.6.1 安装和初始设置 187
11.6.2 基本Airflow示例 188
11.7 使用Apache Airflow编排TFX流水线 191
11.7.1 流水线设置 192
11.7.2 运行流水线 193
11.8 小结 194
第 12 章 流水线第二部分:Kubeflow Pipelines 195
12.1 Kubeflow Pipelines概述 196
12.1.1 安装和初始设置 198
12.1.2 访问已安装的Kubeflow Pipelines 199
12.2 使用Kubeflow Pipelines编排TFX流水线 200
12.2.1 流水线设置 202
12.2.2 运行流水线 206
12.2.3 Kubeflow Pipelines的有用功能 211
12.3 基于Google Cloud AI Platform的流水线 215
12.3.1 流水线设置 215
12.3.2 TFX流水线设置 218
12.3.3 运行流水线 221
12.4 小结 222
第 13 章 反馈循环 223
13.1 显式反馈和隐式反馈 224
13.1.1 数据飞轮 224
13.1.2 现实世界中的反馈循环 225
13.2 收集反馈的设计模式 227
13.2.1 用户根据预测采取了某些措施 227
13.2.2 用户对预测的质量进行评分 228
13.2.3 用户纠正预测 228
13.2.4 众包打标 228
13.2.5 专家打标 229
13.2.6 自动产生反馈 229
13.3 如何跟踪反馈循环 229
13.3.1 跟踪显式反馈 230
13.3.2 跟踪隐式反馈 230
13.4 小结 231
第 14 章 机器学习的数据隐私 232
14.1 数据隐私问题 232
14.1.1 为什么关心数据隐私 232
14.1.2 最简单的加强隐私保护的方法 233
14.1.3 哪些数据需要保密 233
14.2 差分隐私 234
14.2.1 局部差分隐私和全局差分隐私 235
14.2.2 epsilon、delta和隐私预算 235
14.2.3 机器学习的差分隐私 236
14.3 TensorFlow Privacy 236
14.3.1 使用差分隐私优化器进行训练 237
14.3.2 计算epsilon 238
14.4 联邦学习 239
14.5 加密机器学习 241
14.5.1 加密模型训练 241
14.5.2 将训练好的模型转换为加密的预测服务 242
14.6 其他数据保密方法 243
14.7 小结 243
第 15 章 流水线的未来和下一步 244
15.1 模型实验跟踪 244
15.2 关于模型发布管理的思考 245
15.3 未来的流水线能力 246
15.4 TFX与其他机器学习框架 246
15.5 测试机器学习模型 247
15.6 用于机器学习的CI/CD系统 247
15.7 机器学习工程社区 247
15.8 小结 247
附录A 机器学习基础架构简介 249
附录B 在Google Cloud上设置Kubernetes集群 262
附录C 操作Kubeflow Pipelines的技巧 268
关于作者 276
关于封面 276
猜您喜欢