第2章 Ray Core入门
对于一本关于分布式Python的书,有一定讽刺意味的是,Python本身在分布式计算方面做的很差。Python的解释器是单线程的。因此,难以在同一台机器上利用多个CPU,更不用说在整个机群上使用纯Python了。这意味着需要额外的工具才能进行并行计算,幸好Python生态提供了一些工具。像multiprocessing[1]这样的库可以在单台机器上分发任务,但并不适用于更大规模的分布式计算。
从Python库的角度来看,Ray Core API足够强大,可以使整个Python社区更方便地进行一般的分布式编程。类比一下,有些公司在用例中使用部署预训练机器学习模型的方式,但这种策略并不总是有效的。通常情况下,需要训练定制模型才能成功。同样地,你的分布式计算任务可能只适合于现有框架的(可能存在局限性的)编程模型,但Ray Core凭借其通用性,可以为构建分布式应用程序提供全方位的解决方案[2]。由于Ray Core是基础,因此我们用完整的一章介绍Ray Core的基础知识,并在第3章使用Core API创建一个有趣的应用程序。这样,读者就能掌握关于Ray Core的实用知识,并可以在后面的章节和自己的项目中投入使用。
本章介绍Ray Core如何通过启动本地集群处理分布式计算,并介绍如何使用Ray简洁而强大的API实现并行计算。例如,通过基于Ray的示例以高效且异步的方式运行数据并行任务,这是使用其他工具很难复制的快捷方式。本章讨论了任务和执行器的工作方式,任务和执行器分别对应Python中的函数和类,但具有分布式功能。你还将学习如何将对象放入Ray的对象存储中以及如何检索它们。我们使用Ray Core API的6个基本API调用,为3个基本概念(任务、执行器和对象)提供具体示例。最后,我们将讨论Ray的底层系统组件及其架构。换句话说,本章将深入剖析Ray引擎的内部机制。