利用Dask擴展Python性能

[美]霍爾頓·卡勞(Holden Karau) [加]米卡·金明斯(Mika Kimmins) 著 馬宏華 譯

  • 出版商: 清華大學
  • 出版日期: 2024-08-01
  • 定價: $534
  • 售價: 8.5$454
  • 語言: 簡體中文
  • ISBN: 7302666296
  • ISBN-13: 9787302666295
  • 下單後立即進貨 (約4週~6週)

  • 利用Dask擴展Python性能-preview-1
  • 利用Dask擴展Python性能-preview-2
  • 利用Dask擴展Python性能-preview-3
利用Dask擴展Python性能-preview-1

相關主題

商品描述

"《利用 Dask 擴展 Python 性能》詳細闡述了與 Dask 擴展 Python 性能相關的基本知識,主要包括瞭解 Dask、Dask 基礎操作、Dask 的工作原理、Dask DataFrame、Dask 的集合、高級任務調度、添加可變狀態和 Dask Actor、評估 Dask 的 組件和庫、遷移現有的分析工程、使用 GPU 和其他特殊資源的 Dask、使用 Dask 進行機器學習、生產化 Dask 等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和 參考手冊。"

目錄大綱

目    錄

第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