利用Dask擴展Python性能
[美]霍爾頓·卡勞(Holden Karau) [加]米卡·金明斯(Mika Kimmins) 著 馬宏華 譯
相關主題
商品描述
目錄大綱
目 錄
第1章 瞭解Dask 1
1.1 需要使用Dask的理由 1
1.2 Dask在生態系統中的定位 2
1.2.1 大數據 3
1.2.2 數據科學 3
1.2.3 並行分佈式Python 4
1.3 Dask社區庫 5
1.3.1 加速Python 5
1.3.2 SQL引擎 5
1.3.3 工作流程調度 6
1.4 Dask的局限性 7
1.5 小結 8
第2章 Dask基礎操作 9
2.1 本地安裝Dask 9
2.2 Hello World 10
2.2.1 Hello World任務 11
2.2.2 分佈式集合 13
2.2.3 Dask DataFrame 15
2.3 小結 16
第3章 Dask的工作原理:基礎知識 17
3.1 執行後端 17
3.1.1 本地後端 17
3.1.2 分佈式後端(Dask客戶端和調度程序) 18
3.2 Dask的診斷用戶界面 20
3.3 序列化和Pickling 21
3.4 分區/分塊集合 23
3.4.1 Dask數組 24
3.4.2 Dask bag 24
3.4.3 Dask DataFrame 25
3.4.4 打亂 25
3.4.5 加載期間分區 26
3.5 任務、圖和惰性評估 26
3.5.1 惰性評估 26
3.5.2 任務依賴關系 27
3.5.3 可視化 27
3.5.4 中間任務結果 29
3.5.5 任務規模調整 29
3.5.6 當任務圖變得太大時 29
3.5.7 組合計算 30
3.5.8 持久化、緩存和記憶化 30
3.6 容錯能力 31
3.7 小結 32
第4章 Dask DataFrame 33
4.1 Dask DataFrame的構建方式 33
4.2 加載和寫入 34
4.2.1 格式 34
4.2.2 文件系統 39
4.3 索引 40
4.4 打亂數據 40
4.4.1 滾動窗口和map_overlap 41
4.4.2 聚合 41
4.4.3 完全打亂 45
4.4.4 分區 45
4.5 尷尬的並行操作 47
4.6 使用多個DataFrame 48
4.6.1 組合DataFrame的常用函數解析 48
4.6.2 多DataFrame內部原理 50
4.6.3 缺失的功能 51
4.7 無法使用的功能 51
4.8 較慢的功能 51
4.9 處理遞歸算法 52
4.10 重新計算的數據 52
4.11 其他函數的差異 52
4.12 數據科學與Dask DataFrame:綜合演練 53
4.12.1 決定使用Dask 53
4.12.2 使用Dask進行探索性數據分析 54
4.13 小結 56
第5章 Dask的集合 57
5.1 Dask數組 57
5.1.1 常見用例 57
5.1.2 不適用Dask數組的情形 57
5.1.3 加載/保存 58
5.1.4 缺失的功能 58
5.1.5 特殊Dask函數 58
5.2 Dask bag 59
5.2.1 常見用例 59
5.2.2 加載和保存Dask bag 60
5.2.3 使用Dask bag加載雜亂數據 60
5.2.4 局限性 64
5.3 小結 64
第6章 高級任務調度:Futures 65
6.1 懶惰評估和急切評估 66
6.2 Futures的用例 66
6.3 啟動Futures 67
6.4 Futures生命周期 68
6.5 即發即棄 69
6.6 檢索結果 69
6.7 嵌套Futures 72
6.8 用於調度的分佈式數據結構 72
6.9 小結 73
第7章 添加可變狀態和Dask Actor 75
7.1 理解Actor模型 75
7.2 Dask Actor 76
7.2.1 創建第一個Actor 77
7.2.2 擴展Dask Actor 79
7.2.3 局限性 81
7.3 使用Dask Actor的時機 81
7.4 小結 82
第8章 評估Dask的組件和庫 83
8.1 項目評估的定性考慮因素 85
8.1.1 項目優先級 85
8.1.2 社區 86
8.1.3 Dask特定最佳實踐 87
8.1.4 最新的依賴項 88
8.1.5 文檔 88
8.1.6 貢獻的開放程度 89
8.1.7 可擴展性 89
8.2 開源項目評估的定量指標 90
8.2.1 版本歷史 90
8.2.2 提交頻率 91
8.2.3 庫的使用情況 91
8.2.4 代碼和最佳實踐 93
8.3 小結 94
第9章 遷移現有的分析工程 95
9.1 遷移到Dask中的原因 95
9.2 Dask的局限性 95
9.3 遷移路線圖 96
9.3.1 集群類型 96
9.3.2 開發:註意事項 99
9.3.3 部署監控 101
9.4 小結 103
第10章 使用GPU和其他特殊資源的Dask 105
10.1 透明加速器與非透明加速器 106
10.2 瞭解GPU或TPU是否有幫助 106
10.3 使Dask具有資源感知能力 107
10.4 安裝庫 108
10.5 在Dask任務中使用自定義資源 109
10.5.1 裝飾器 110
10.5.2 GPU 111
10.6 基於Dask的GPU加速 112
10.6.1 cuDF 112
10.6.2 BlazingSQL 113
10.6.3 cuStreamz 113
10.7 釋放加速器資源 113
10.8 設計模式:CPU回退 113
10.9 小結 114
第11章 使用Dask進行機器學習 115
11.1 並行化機器學習 115
11.2 使用Dask-ML的時機 116
11.3 Dask-ML和XGBoost入門 117
11.3.1 特徵工程 117
11.3.2 模型選擇和訓練 121
11.3.3 沒有Dask-ML等效項時的解決方案 122
11.3.4 結合使用Dask joblib 123
11.3.5 XGBoost與Dask 124
11.4 使用Dask-SQL的機器學習模型 126
11.5 推理和部署 129
11.5.1 手動分發數據和模型 129
11.5.2 使用Dask進行大規模推理 130
11.6 小結 132
第12章 生產化Dask:Notebook、部署、調整和監控 133
12.1 部署選項中需要考慮的因素 134
12.2 在Kubernetes上部署Dask 136
12.3 在Ray上部署Dask 138
12.4 在YARN上部署Dask 138
12.5 在高性能計算集群中部署Dask 141
12.5.1 在遠程集群中設置Dask 141
12.5.2 將本地電腦連接到HPC集群 147
12.6 Dask JupyterLab擴展 148
12.6.1 安裝JupyterLab擴展 148
12.6.2 啟動集群 149
12.6.3 用戶界面 149
12.6.4 觀察進度 150
12.7 瞭解Dask性能 150
12.7.1 分佈式計算中的指標 151
12.7.2 Dask儀表板 151
12.7.3 保存和共享Dask指標/性能日誌 157
12.7.4 高級診斷 159
12.8 擴展和調試最佳實踐 160
12.8.1 手動擴展 160
12.8.2 自適應/自動擴展 160
12.8.3 保留和刪除高計算成本的數據 160
12.8.4 Dask Nanny 161
12.8.5 worker內存管理 161
12.8.6 集群規模調整 162
12.8.7 重新審視分塊 162
12.8.8 避免重新分塊 163
12.9 作業調度 163
12.10 部署監控 164
12.11 小結 165
附錄A Dask用戶的關鍵系統概念 167
A.1 測試 167
A.1.1 手動測試 167
A.1.2 單元測試 167
A.1.3 集成測試 168
A.1.4 測試驅動開發 168
A.1.5 屬性測試 168
A.1.6 使用Notebook 168
A.1.7 在Notebook之外進行測試 169
A.1.8 在Notebook中測試:內聯斷言 169
A.2 數據和輸出驗證 169
A.3 點對點分佈與中心化分佈 170
A.4 並行方法 170
A.4.1 任務並行 171
A.4.2 數據並行 171
A.4.3 打亂和寬窄轉換 171
A.4.4 局限性 171
A.4.5 負載均衡 171
A.5 網絡容錯和CAP定理 172
A.6 遞歸 172
A.7 版本控制和分支:代碼和數據 173
A.8 隔離 174
A.9 機器容錯 174
A.10 可擴展性(向上和向下) 175
A.11 緩存、內存、磁盤和網絡 176
A.12 哈希 176
A.13 數據局部性 176
A.14 正好一次與至少一次 177
A.15 小結 177
附錄B 可擴展的DataFrame 179
B.1 工具 179
B.1.1 僅適用於一臺機器 180
B.1.2 分佈式計算 181
B.2 小結 184
附錄C 調試Dask 185
C.1 使用調試器 185
C.2 使用Dask的一般調試技巧 185
C.3 原生錯誤 186
C.4 關於官方建議處理壞記錄的一些說明 187
C.5 Dask診斷 187
C.6 小結 188
附錄D 使用Streamz和Dask進行流式處理 189
D.1 Dask上的Streamz入門 190
D.2 流數據源和接收器 190
D.3 字數統計 191
D.4 Dask流式處理的GPU管道 192
D.5 限制、挑戰和解決方法 193
D.6 小結 193