第 2 章 Ray Core 入门 Ray Core 入门
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
对于一本关于分布式 Python 的书来说,Python 本身在很大程度上无法用于分布式计算,这不无讽刺意味。其解释器实际上是单线程的。例如,这使得使用普通 Python 很难在同一台机器上利用多个 CPU,更不用说整个机器集群了。这意味着你需要额外的工具,幸运的是 Python 生态系统为你提供了一些选择。像multiprocessing 这样的库可以帮助你在单台机器上分布工作、1但不能超出这个范围。
作为一个 Python 库,Ray Core API 的强大功能足以让整个 Python 社区更容易使用通用分布式编程。打个比方,有些公司在用例中部署预先训练好的 ML 模型就可以了,但这种策略并不总是有效的。通常不可避免地需要训练自定义模型才能取得成功。 同样,您的分布式工作负载可能只是适合现有框架的(可能有局限性的)编程模型,但 Ray Core 由于其通用性,可以解锁构建分布式应用程序的全部内容。2 由于 Ray Core 是如此基础,我们用了整整一章来介绍 Ray Core 的基础知识,并用第 3 章的全部内容来使用 Core API 构建一个有趣的应用程序。 这样,您就掌握了有关 Ray Core 的实用知识,可以在后面的章节和自己的项目中使用它。
在本章中,您将了解 Ray Core 如何通过启动本地集群来处理分布式计算,还将学习如何使用 Ray 简洁而强大的 API 来并行化一些有趣的计算。 例如,您将构建一个示例,在 Ray 上高效、异步地运行数据并行任务,这种便捷的方式是其他工具难以复制的。 我们将讨论任务和角色如何作为 Python 中函数和类的分布式版本来工作。 您还将学习如何将对象放入 Ray 的对象存储区,以及如何检索对象。我们仅使用 Ray Core API 的六个基本 API 调用,就为您提供了这三个基本概念(任务、角色和对象)的具体示例。 最后,我们将讨论 Ray 底层的系统组件及其架构的外观。 换句话说,在本章中,我们将带您了解 Ray 引擎的引擎盖。
Ray Core 简介
本章的主要内容是我们将一起构建的一个扩展的 Ray Core 示例。,Ray 的许多概念都可以通过一个好的示例来解释,所以这正是我们要做的。
备注
和以前一样,您可以自己输入代码(强烈建议这样做)或按照本章的笔记本来学习本示例。 无论如何,请确保您已经安装了 Ray,例如pip install ray 。
在第 1 章中,我们向您展示了如何通过调用import ray 启动本地集群,然后用ray.init() 对其进行初始化。运行此代码后,您将看到如下形式的输出。在此示例输出中,我们省略了很多信息,因为这需要您先了解更多 Ray 的内部信息:
... INFO services.py:1263 -- View the Ray dashboard at http://127.0.0.1:8265
{'node_ip_address': '192.168.1.41',
...
'node_id': '...'}
从输出的第一行可以看出,Ray 自带了一个预先打包好的仪表盘。3 您可以在http://127.0.0.1:8265 上查看,除非输出显示的是另一个端口。如果您想探索仪表板,可以慢慢来。例如,您应该看到列出的所有 CPU 内核以及您的(微不足道的)Ray 应用程序的总利用率。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access