序 1
前言 3
第1 章 什么是Ray,它適合什么場景 .9
1.1 你為什么需要Ray 10
1.2 你可以在哪里運行Ray 11
1.3 用Ray 運行你的代碼 .13
1.4 Ray 在生態(tài)系統中的位置 .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 創(chuàng)建一個基礎的Ray 遠程actor 47
4.3 實現actor 的持久化.52
4.4 擴展Ray 遠程actor .57
4.5 Ray 遠程actor 的最佳實踐 62
4.6 總結 .63
第5 章 Ray 設計細節(jié) 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 運行時環(huán)境中的依賴關系管理 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 基本工作流概念實戰(zhàn) 138
8.4.1 工作流、步驟和對象138
8.4.2 動態(tài)工作流 .139
8.4.3 虛擬actor .140
8.5 工作流在現實生活中的應用 .141
8.5.1 構建工作流 .141
8.5.2 管理工作流 .142
8.5.3 構建動態(tài)工作流 144
8.5.4 構建具有條件步驟的工作流 145
8.5.5 處理異常 145
8.5.6 處理持久性保證 147
8.5.7 用虛擬actor 來擴展動態(tài)工作流148
8.5.8 與其他Ray 原語集成工作流 154
8.5.9 觸發(fā)工作流(連接到事件) 155
8.5.10 工作流元數據 157
8.6 總結 158
第9 章 Ray 的高級數據處理 161
9.1 創(chuàng)建和保存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 超參數調優(yōu)與Ray 結合 211
10.6 總結 218
第11 章 在Ray 中使用GPU 和加速器 219
11.1 GPU 的優(yōu)勢 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 在企業(yè)中的部署 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 監(jiān)控 233
12.9 用Ray 指標檢測你的代碼 236
12.10 用Ray 包裝自定義程序 .238
12.11 總結 .240
附錄A 太空海貍案例研究:actor、Kubernetes 等 241
附錄B 安裝和部署Ray 259
附錄C 使用Ray 進行調試 . 273