Ray分布式机器学习:利用Ray进行大模型的数据处理、训练、推理和部署
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 总结

图1.4概述了Ray的三个层级。Ray的核心分布式执行引擎位于框架中心。Ray Core API是一个多功能的分布式计算库,而Ray Cluster支持多种方式部署计算任务。

对于实际的数据科学工作流,可以使用Ray Dataset进行数据处理,使用Ray RLlib进行强化学习,然后使用Ray Train进行分布式模型训练,接着使用Ray Tune进行超参数调优,最后使用Ray Serve进行模型部署。本章展示了每个库的示例,读者对它们的API有了一定的了解。Ray AIR为所有其他Ray ML库提供了统一的API,并都是根据数据科学家的需求构建的。

除此之外,Ray的生态还有许多扩展、集成和后端,稍后将详细介绍。

图1.4:Ray的三层架构


[1] “Python为主”是指Ray的所有高级库都是用Python编写的,并且新功能的开发是由Python社区的需求驱动的。同时,Ray支持多种编程语言,例如提供了Java API。因此,Ray以后也可能会支持其他对数据科学生态重要的语言。

[2] 长期以来,摩尔定律得到了事实的验证,但现在可能有迹象表明它正在减缓。一些人甚至说它已经失效了。我们不在书中争论这些观点。重要的不是计算机会变得越来越快,而是计算量变得越来越大。

[3] 从基本方法到复杂方法,有很多途径可以加速ML训练。例如,第6章将详细介绍分布式数据处理,第7章将介绍分布式模型训练。

[4] Ray背后的公司Anyscale(https://www.anyscale.com)正在构建Ray的托管平台,可以为Ray应用程序提供托管解决方案。

[5] 这听起来可能很严重,但并不是玩笑。举个例子,2021年3月,一家为数百万网站提供支持的法国数据中心完全被烧毁(https://oreil.ly/Nl9_o)。如果整个集群都烧毁了,Ray也是无能为力的。

[6] 这是一本Python图书,因此专注于Python,但Ray还具有Java API。不过,相比于Python版本,当前Java API成熟度较低。

[7] 之所以许多库建立在Ray Core之上,是因为Ray Core非常精简和直观。本书的目标之一是让用户利用Ray编写自己的应用,甚至编写库。

[8] 在本书中,我们通常只在需要时介绍依赖项,这样学习起来更容易。相反,GitHub上的notebook(https://oreil.ly/j9ccz)是一次性安装所有依赖项,这样就可以专注于运行代码而不是安装依赖项。

[9] 写作本书时,Python 3.10尚不支持Ray,因此需要使用3.7~3.9之间的Python版本。

[10] 还有其他与Ray集群交互的方式,例如Ray Jobs CLI(https://oreil.ly/XXnlW)。

[11] 我们向来不喜欢将数据科学归类为数学、编程和商业的交叉学科,因为这样无法指明数据科学家具体从事什么工作。

[12] 关于这个主题,建议阅读保罗·格雷厄姆(Paul Graham)的《黑客与画家》(Hackers and Painters)一书,并将“计算机科学”替换为“数据科学”。

[13] 关于创建机器学习应用的完整介绍,可参考Emmanuel Ameisen的Building Machine LearningPowered Applications一书(O'Reilly出版社)。

[14] 第6章将介绍Ray Dataset的基本原理,包括它对Arrow的使用。现在重点关注其API和具体的使用方法。

[15] 后面章节会进行详细介绍,特别是第6章,但请注意,Ray Dataset并不是通用的数据处理库。对于大规模数据处理,诸如Spark之类的工具具有更成熟和优化的支持。

[16] 如果你使用的是Mac,则需要安装tensorflow-macos。一般而言,如果在系统上安装Ray或其依赖项时遇到任何问题,则可以参考安装指南(https://docs.ray.io/en/latest/ray-overview/installation.html)。

[17] 根据所使用的操作系统,你可能需要先安装Rust编译器才能使其正常工作。例如,在Mac上,可以使用brew install rust进行安装。

[18] Spark是伯克利大学的另一个实验室——AMPLab创建的,互联网上有很多博客文章宣称应该将Ray作为Spark的替代品。不过,最好是将二者视为具有不同优势的工具,这两种工具都很可能长期共存。

[19] 在深度学习框架Keras(https://keras.io)成为TensorFlow的正式组成部分之前,Keras最初是一个方便的API规范,用于各种低级框架,如Theano或CNTK。从这个意义上说,Ray RLlib有机会成为“用于强化学习的Keras”,而Ray Tune可能是“用于超参数调优的Keras”。如果想将Ray RLlib和Ray Tune更广泛地用于机器学习,需要采用更优雅的API设计。