利用Dask扩展Python性能
Holden Karau, Mika Kimmins
马宏华 译
出版时间:2024年08月
页数:193
“本书写得非常棒,如果你是Dask的新用户或考虑在项目中使用Dask,那么这几乎是一本必读书册。Dask提供了强大的功能以及许多需要牢记的微妙技巧,而本书则是探索这一新领域的理想工具。”
——Adam Breindel
数据工程和ML/AI独立顾问
“很高兴能看到本领域专家写的有关Dask的图书。”
——Matthew Rocklin
初始Dask维护者和Coiled Computing首席执行官

现代系统包含具有并行计算潜力的多核CPU和GPU,但许多科学Python工具的设计并没有很好地利用这种并行性。通过本书的深入介绍,数据科学家和Python程序员将了解Dask并行计算开源库,掌握如何利用它提供的API,使包括NumPy、Pandas和scikit-learn在内的PyData库易于并行化。
本书作者Holden Karau和Mika Kimmins向你展示了如何在本地系统中使用Dask计算,然后扩展到云端以应对更繁重的工作负载。这本实用手册解释了为什么Dask在行业专家和学者中很受欢迎,并被沃尔玛、Capital One、哈佛医学院和美国国家航空航天局(NASA)等组织使用。
在本书中你会学习到:
● 如何使用Dask进行批量数据并行处理
● 理解Dask的关键分布式系统概念
● 将Dask与高级API和构建块一起使用的方法
● 如何使用集成库
● 如何将Dask与GPU结合使用
  1. 第1章 了解Dask
  2. 1.1 需要使用Dask的理由
  3. 1.2 Dask在生态系统中的定位
  4. 1.2.1 大数据
  5. 1.2.2 数据科学
  6. 1.2.3 并行分布式Python
  7. 1.3 Dask社区库
  8. 1.3.1 加速Python
  9. 1.3.2 SQL引擎
  10. 1.3.3 工作流程调度
  11. 1.4 Dask的局限性
  12. 1.5 小结
  13. 第2章 Dask基础操作
  14. 2.1 本地安装Dask
  15. 2.2 Hello World
  16. 2.2.1 Hello World任务
  17. 2.2.2 分布式集合
  18. 2.2.3 Dask DataFrame
  19. 2.3 小结
  20. 第3章 Dask的工作原理:基础知识
  21. 3.1 执行后端
  22. 3.1.1 本地后端
  23. 3.1.2 分布式后端(Dask客户端和调度程序)
  24. 3.2 Dask的诊断用户界面
  25. 3.3 序列化和Pickling
  26. 3.4 分区/分块集合
  27. 3.4.1 Dask数组
  28. 3.4.2 Dask bag
  29. 3.4.3 Dask DataFrame
  30. 3.4.4 打乱
  31. 3.4.5 加载期间分区
  32. 3.5 任务、图和惰性评估
  33. 3.5.1 惰性评估
  34. 3.5.2 任务依赖关系
  35. 3.5.3 可视化
  36. 3.5.4 中间任务结果
  37. 3.5.5 任务规模调整
  38. 3.5.6 当任务图变得太大时
  39. 3.5.7 组合计算
  40. 3.5.8 持久化、缓存和记忆化
  41. 3.6 容错能力
  42. 3.7 小结
  43. 第4章 Dask DataFrame
  44. 4.1 Dask DataFrame的构建方式
  45. 4.2 加载和写入
  46. 4.2.1 格式
  47. 4.2.2 文件系统
  48. 4.3 索引
  49. 4.4 打乱数据
  50. 4.4.1 滚动窗口和map_overlap
  51. 4.4.2 聚合
  52. 4.4.3 完全打乱
  53. 4.4.4 分区
  54. 4.5 尴尬的并行操作
  55. 4.6 使用多个DataFrame
  56. 4.6.1 组合DataFrame的常用函数解析
  57. 4.6.2 多DataFrame内部原理
  58. 4.6.3 缺失的功能
  59. 4.7 无法使用的功能
  60. 4.8 较慢的功能
  61. 4.9 处理递归算法
  62. 4.10 重新计算的数据
  63. 4.11 其他函数的差异
  64. 4.12 数据科学与Dask DataFrame:综合演练
  65. 4.12.1 决定使用Dask
  66. 4.12.2 使用Dask进行探索性数据分析
  67. 4.13 小结
  68. 第5章 Dask的集合
  69. 5.1 Dask数组
  70. 5.1.1 常见用例
  71. 5.1.2 不适用Dask数组的情形
  72. 5.1.3 加载/保存
  73. 5.1.4 缺失的功能
  74. 5.1.5 特殊Dask函数
  75. 5.2 Dask bag
  76. 5.2.1 常见用例
  77. 5.2.2 加载和保存Dask bag
  78. 5.2.3 使用Dask bag加载杂乱数据
  79. 5.2.4 局限性
  80. 5.3 小结
  81. 第6章 高级任务调度:Futures
  82. 6.1 懒惰评估和急切评估
  83. 6.2 Futures的用例
  84. 6.3 启动Futures
  85. 6.4 Futures生命周期
  86. 6.5 即发即弃
  87. 6.6 检索结果
  88. 6.7 嵌套Futures
  89. 6.8 用于调度的分布式数据结构
  90. 6.9 小结
  91. 第7章 添加可变状态和Dask Actor
  92. 7.1 理解Actor模型
  93. 7.2 Dask Actor
  94. 7.2.1 创建第一个Actor
  95. 7.2.2 扩展Dask Actor
  96. 7.2.3 局限性
  97. 7.3 使用Dask Actor的时机
  98. 7.4 小结
  99. 第8章 评估Dask的组件和库
  100. 8.1 项目评估的定性考虑因素
  101. 8.1.1 项目优先级
  102. 8.1.2 社区
  103. 8.1.3 Dask特定最佳实践
  104. 8.1.4 最新的依赖项
  105. 8.1.5 文档
  106. 8.1.6 贡献的开放程度
  107. 8.1.7 可扩展性
  108. 8.2 开源项目评估的定量指标
  109. 8.2.1 版本历史
  110. 8.2.2 提交频率
  111. 8.2.3 库的使用情况
  112. 8.2.4 代码和最佳实践
  113. 8.3 小结
  114. 第9章 迁移现有的分析工程
  115. 9.1 迁移到Dask中的原因
  116. 9.2 Dask的局限性
  117. 9.3 迁移路线图
  118. 9.3.1 集群类型
  119. 9.3.2 开发:注意事项
  120. 9.3.3 部署监控
  121. 9.4 小结
  122. 第10章 使用GPU和其他特殊资源的Dask
  123. 10.1 透明加速器与非透明加速器
  124. 10.2 了解GPU或TPU是否有帮助
  125. 10.3 使Dask具有资源感知能力
  126. 10.4 安装库
  127. 10.5 在Dask任务中使用自定义资源
  128. 10.5.1 装饰器
  129. 10.5.2 GPU
  130. 10.6 基于Dask的GPU加速
  131. 10.6.1 cuDF
  132. 10.6.2 BlazingSQL
  133. 10.6.3 cuStreamz
  134. 10.7 释放加速器资源
  135. 10.8 设计模式:CPU回退
  136. 10.9 小结
  137. 第11章 使用Dask进行机器学习
  138. 11.1 并行化机器学习
  139. 11.2 使用Dask-ML的时机
  140. 11.3 Dask-ML和XGBoost入门
  141. 11.3.1 特征工程
  142. 11.3.2 模型选择和训练
  143. 11.3.3 没有Dask-ML等效项时的解决方案
  144. 11.3.4 结合使用Dask joblib
  145. 11.3.5 XGBoost与Dask
  146. 11.4 使用Dask-SQL的机器学习模型
  147. 11.5 推理和部署
  148. 11.5.1 手动分发数据和模型
  149. 11.5.2 使用Dask进行大规模推理
  150. 11.6 小结
  151. 第12章 生产化Dask:Notebook、部署、调整和监控
  152. 12.1 部署选项中需要考虑的因素
  153. 12.2 在Kubernetes上部署Dask
  154. 12.3 在Ray上部署Dask
  155. 12.4 在YARN上部署Dask
  156. 12.5 在高性能计算集群中部署Dask
  157. 12.5.1 在远程集群中设置Dask
  158. 12.5.2 将本地计算机连接到HPC集群
  159. 12.6 Dask JupyterLab扩展
  160. 12.6.1 安装JupyterLab扩展
  161. 12.6.2 启动集群
  162. 12.6.3 用户界面
  163. 12.6.4 观察进度
  164. 12.7 了解Dask性能
  165. 12.7.1 分布式计算中的指标
  166. 12.7.2 Dask仪表板
  167. 12.7.3 保存和共享Dask指标/性能日志
  168. 12.7.4 高级诊断
  169. 12.8 扩展和调试最佳实践
  170. 12.8.1 手动扩展
  171. 12.8.2 自适应/自动扩展
  172. 12.8.3 保留和删除高计算成本的数据
  173. 12.8.4 Dask Nanny
  174. 12.8.5 worker内存管理
  175. 12.8.6 集群规模调整
  176. 12.8.7 重新审视分块
  177. 12.8.8 避免重新分块
  178. 12.9 作业调度
  179. 12.10 部署监控
  180. 12.11 小结
  181. 附录A Dask用户的关键系统概念
  182. A.1 测试
  183. A.1.1 手动测试
  184. A.1.2 单元测试
  185. A.1.3 集成测试
  186. A.1.4 测试驱动开发
  187. A.1.5 属性测试
  188. A.1.6 使用Notebook
  189. A.1.7 在Notebook之外进行测试
  190. A.1.8 在Notebook中测试:内联断言
  191. A.2 数据和输出验证
  192. A.3 点对点分布与中心化分布
  193. A.4 并行方法
  194. A.4.1 任务并行
  195. A.4.2 数据并行
  196. A.4.3 打乱和宽窄转换
  197. A.4.4 局限性
  198. A.4.5 负载均衡
  199. A.5 网络容错和CAP定理
  200. A.6 递归
  201. A.7 版本控制和分支:代码和数据
  202. A.8 隔离
  203. A.9 机器容错
  204. A.10 可扩展性(向上和向下)
  205. A.11 缓存、内存、磁盘和网络
  206. A.12 哈希
  207. A.13 数据局部性
  208. A.14 正好一次与至少一次
  209. A.15 小结
  210. 附录B 可扩展的DataFrame
  211. B.1 工具
  212. B.1.1 仅适用于一台机器
  213. B.1.2 分布式计算
  214. B.2 小结
  215. 附录C 调试Dask
  216. C.1 使用调试器
  217. C.2 使用Dask的一般调试技巧
  218. C.3 原生错误
  219. C.4 关于官方建议处理坏记录的一些说明
  220. C.5 Dask诊断
  221. C.6 小结
  222. 附录D 使用Streamz和Dask进行流式处理
  223. D.1 Dask上的Streamz入门
  224. D.2 流数据源和接收器
  225. D.3 字数统计
  226. D.4 Dask流式处理的GPU管道
  227. D.5 限制、挑战和解决方法
  228. D.6 小结
书名:利用Dask扩展Python性能
译者:马宏华 译
国内出版社:清华大学出版社
出版时间:2024年08月
页数:193
书号:978-7-302-66629-5
原版书书名:Scaling Python with Dask
原版书出版商:O'Reilly Media
Holden Karau
 
Holden Karau是一位加拿大人,在IBM的Spark技术中心担任软件开发工程师。同时作为一位Spark committer,经常在PySpark和机器学习方面进行贡献。另外曾在多次国际会议中发表关于Spark的演讲。
Databricks的软件开发工程师,活跃于开源社区。她还著有《Spark快速数据处理》。
 
 
Mika Kimmins
 
Mika Kimmins是一名数据工程师、分布式系统研究员和机器学习顾问。她参与了各种自然语言处理(NLP)项目,包括语言建模、强化学习和机器学习管道等。
 
 
购买选项
定价:89.00元
书号:978-7-302-66629-5
出版社:清华大学出版社