序 1
前言 3
第1 章 什么是Ray,它适合什么场景 .9
1.1 你为什么需要Ray 10
1.2 你可以在哪里运行Ray 11
1.3 用Ray 运行你的代码 .13
1.4 Ray 在生态系统中的位置 .14
1.4.1 大数据/ 可扩展数据帧 .16
1.4.2 机器学习 .17
1.4.3 工作流调度 18
1.4.4 流处理 18
1.4.5 交互式 19
1.5 Ray 不适用于什么 19
1.6 总结 .19
第2 章 开始使用Ray(本地) 21
2.1 安装 .21
2.1.1 为x86 和M1 ARM 安装 .22
2.1.2 为ARM 安装(源码安装) 22
2.2 Hello World .24
2.2.1 Ray 远程函数(任务/Futures 对象)Hello World .24
2.2.2 Data Hello World .27
2.2.3 actor Hello World 28
2.3 总结 .30
第3 章 远程函数 31
3.1 Ray 远程函数的基本原理 .32
3.2 远程Ray 函数的组合 .38
3.3 Ray 远程函数的最佳实践 .41
3.4 综合示例42
3.5 总结 .44
第4 章 远程actor .45
4.1 理解Actor 模型 .46
4.2 创建一个基础的Ray 远程actor 47
4.3 实现actor 的持久化.52
4.4 扩展Ray 远程actor .57
4.5 Ray 远程actor 的最佳实践 62
4.6 总结 .63
第5 章 Ray 设计细节 65
5.1 容错性 65
5.2 Ray 对象 69
5.3 序列化/pickling .72
5.3.1 cloudpickle .73
5.3.2 Apache Arrow 75
5.4 资源/ 垂直扩展 .75
5.5 自动缩放器 78
5.6 放置组:组织任务和actor 79
5.7 命名空间84
5.8 运行时环境中的依赖关系管理 85
5.9 使用Ray Job API 部署Ray 应用程序 86
5.10 总结 89
第6 章 实现流式应用 91
6.1 Apache Kafka 93
6.1.1 Kafka 基本概念 93
6.1.2 Kafka API 96
6.2 将Kafka 与Ray 集成 .98
6.3 扩展我们的实现 .105
6.4 使用Ray 构建流处理应用程序 106
6.4.1 基于键的实现 .108
6.4.2 键独立方法 . 114
6.5 超越Kafka . 114
6.6 总结 115
第7 章 实现微服务 117
7.1 理解Ray 中的微服务架构 . 117
7.1.1 部署 . 118
7.1.2 部署的附加功能 121
7.1.3 部署组合 125
7.2 使用Ray Serve 进行模型服务 .127
7.2.1 简单模型服务示例 127
7.2.2 模型服务实现的注意事项 129
7.2.3 基于Ray 微服务框架的推测模型服务 131
7.3 总结 133
第8 章 Ray 工作流 135
8.1 什么是Ray 工作流? 135
8.2 它与其他解决方案有何不同? 136
8.3 Ray 工作流功能 136
8.3.1 有哪些主要功能 136
8.3.2 工作流原语 .137
8.4 基本工作流概念实战 138
8.4.1 工作流、步骤和对象138
8.4.2 动态工作流 .139
8.4.3 虚拟actor .140
8.5 工作流在现实生活中的应用 .141
8.5.1 构建工作流 .141
8.5.2 管理工作流 .142
8.5.3 构建动态工作流 144
8.5.4 构建具有条件步骤的工作流 145
8.5.5 处理异常 145
8.5.6 处理持久性保证 147
8.5.7 用虚拟actor 来扩展动态工作流148
8.5.8 与其他Ray 原语集成工作流 154
8.5.9 触发工作流(连接到事件) 155
8.5.10 工作流元数据 157
8.6 总结 158
第9 章 Ray 的高级数据处理 161
9.1 创建和保存Ray 数据集 162
9.2 使用Ray 数据集与不同工具协同工作 164
9.3 在Ray 数据集上使用工具 .166
9.3.1 类pandas 的DataFrames 与Dask 167
9.3.2 索引 .168
9.3.3 洗牌 .169
9.3.4 易并行计算操作 176
9.3.5 处理多个DataFrame 177
9.3.6 无法正常工作的功能180
9.3.7 速度较慢的情况 180
9.3.8 处理递归算法 .181
9.3.9 其他功能的不同之处181
9.3.10 类似pandas 的Modin DataFrames 182
9.3.11 使用Spark 处理大数据 182
9.3.12 使用本地工具进行处理 183
9.4 使用Ray 数据集内置操作 .183
9.5 使用Ray 实现数据集 187
9.6 总结 188
第10 章 Ray 如何助力机器学习 189
10.1 scikit-learn 与Ray 结合使用 189
10.2 Boosting 算法与Ray 结合使用 .194
10.2.1 使用XGBoost .194
10.2.2 使用LightGBM 196
10.3 PyTorch 与Ray 结合使用 198
10.4 强化学习与Ray 结合 204
10.5 超参数调优与Ray 结合 211
10.6 总结 218
第11 章 在Ray 中使用GPU 和加速器 219
11.1 GPU 的优势 219
11.2 构建模块 220
11.3 高级库 221
11.4 获取和释放GPU 及加速器资源 222
11.5 Ray 的机器学习库 222
11.6 使用GPU 和加速器的自动缩放器 223
11.7 CPU 回退设计模式 .224
11.8 其他(非GPU)加速器 225
11.9 总结 225
第12 章 Ray 在企业中的部署 227
12.1 Ray 依赖项安全问题 .227
12.2 与现有工具的交互 228
12.3 将Ray 与CI/CD 工具结合使用 228
12.4 Ray 的身份验证 228
12.5 Ray 的多租户 .230
12.6 数据源的凭证 231
12.7 永久集群与临时集群 .231
12.7.1 临时集群 231
12.7.2 永久集群 232
12.8 监控 233
12.9 用Ray 指标检测你的代码 236
12.10 用Ray 包装自定义程序 .238
12.11 总结 .240
附录A 太空海狸案例研究:actor、Kubernetes 等 241
附录B 安装和部署Ray 259
附录C 使用Ray 进行调试 . 273