官术网_书友最值得收藏!

1.2 分布式計(jì)算框架

Ray的核心是分布式計(jì)算框架。本節(jié)只講解基本的術(shù)語,第2章會(huì)深入討論Ray的架構(gòu)。簡而言之,Ray設(shè)置并管理計(jì)算機(jī)集群環(huán)境,以便用戶可以在集群環(huán)境中運(yùn)行分布式任務(wù)。Ray集群由通過網(wǎng)絡(luò)連接的節(jié)點(diǎn)組成。用戶在位于主節(jié)點(diǎn)(head node)的驅(qū)動(dòng)程序(driver,即程序根節(jié)點(diǎn))上編寫程序。驅(qū)動(dòng)程序可以運(yùn)行作業(yè)(job),即在集群節(jié)點(diǎn)上運(yùn)行一系列任務(wù)。具體而言,作業(yè)的各個(gè)任務(wù)在工作節(jié)點(diǎn)(worker node)上的工作進(jìn)程(worker process)中運(yùn)行。圖1.1展示了Ray集群的基本結(jié)構(gòu)。注意,我們目前不關(guān)注節(jié)點(diǎn)之間的通信,圖1.1僅展示了Ray集群的結(jié)構(gòu)。

有趣的是,Ray集群也可以是本地集群,即僅由自己的計(jì)算機(jī)組成的集群。在這種情況下,只有一個(gè)節(jié)點(diǎn),即主節(jié)點(diǎn),包含驅(qū)動(dòng)程序進(jìn)程和一些工作進(jìn)程。默認(rèn)的工作進(jìn)程數(shù)量是計(jì)算機(jī)上可用的CPU數(shù)量。

圖1.1:Ray集群的基本結(jié)構(gòu)

有了這些知識(shí),就可以動(dòng)手實(shí)現(xiàn)第一個(gè)本地Ray集群了。在各種主流系統(tǒng)中,都可以使用pip輕松安裝Ray,命令如下:

通過pip install ray命令,只能安裝Ray的基礎(chǔ)部分。由于后文還想探索一些高級(jí)功能,因此需要安裝其他庫,即rllib、serve和tune,稍后我們將對(duì)其進(jìn)行討論[8]。根據(jù)系統(tǒng)的具體配置,安裝命令可能無須使用引號(hào)。

接下來,啟動(dòng)Python會(huì)話。例如,可以使用ipython解釋器,它非常適合簡單的示例。在Python會(huì)話中,導(dǎo)入并初始化Ray:

如果你不想親自輸入命令,可以打開本章的Jupyter notebook(https://oreil.ly/j9ccz),并在代碼notebook中運(yùn)行代碼。讀者可以選擇任意方式,但是一定要使用Python 3.7或更高版本[9]。

通過這兩行代碼,就可以在本地計(jì)算機(jī)啟動(dòng)Ray集群了。該集群可以利用計(jì)算機(jī)上所有可用的CPU內(nèi)核作為工作節(jié)點(diǎn)。目前,Ray集群沒有做太多工作,但很快就要處理任務(wù)。

用于啟動(dòng)集群的init函數(shù)是第2章深入探討的6個(gè)基本API方法之一??傮w而言,Ray Core API非常易于訪問和使用。但由于它是相對(duì)底層的接口,因此使用它構(gòu)建示例需要一定時(shí)間。第2章通過一個(gè)通用示例幫助讀者熟悉Ray Core API,第3章將創(chuàng)建更復(fù)雜的強(qiáng)化學(xué)習(xí)示例。

在上述代碼中,我們沒有向ray.init(...)函數(shù)提供任何參數(shù)。如果你想在實(shí)際集群上運(yùn)行Ray,則需要向init傳遞更多的參數(shù)。init調(diào)用方法通常被稱為Ray客戶端,用于與現(xiàn)有的Ray集群進(jìn)行交互[10]。關(guān)于使用Ray客戶端連接生產(chǎn)集群的更多內(nèi)容,可參考Ray文檔(https://oreil.ly/nNhMt)。

當(dāng)然,如果你使用過計(jì)算集群,就會(huì)知道使用集群涉及許多陷阱和難點(diǎn)。例如,你可以在由云服務(wù)提供商[如Amazon Web Services(AWS)、Google Cloud Platform(GCP)或Microsoft Azure]托管的集群上部署Ray應(yīng)用程序,每個(gè)云計(jì)算平臺(tái)都需要好用的部署和運(yùn)維工具。你也可以在自己的硬件設(shè)備上啟動(dòng)集群,或者使用諸如Kubernetes的工具部署Ray集群。在介紹了具體的Ray應(yīng)用之后,第9章將再次介紹使用Ray Cluster擴(kuò)展計(jì)算任務(wù)。

在介紹Ray的高級(jí)庫之前,我們簡要總結(jié)一下Ray作為分布式計(jì)算框架的兩個(gè)基礎(chǔ)組件:

Ray Cluster

該組件負(fù)責(zé)分配資源、創(chuàng)建節(jié)點(diǎn),并確保節(jié)點(diǎn)正常運(yùn)行??焖偃腴TRay Cluster的好方法是參考為其精心準(zhǔn)備的入門指南(https://oreil.ly/rBUil)。

Ray Core

一旦集群運(yùn)行起來,你就可以使用Ray Core API進(jìn)行編程??梢宰裱璕ay Core的官方教程(https://oreil.ly/7r0Lv)學(xué)習(xí)該組件。

主站蜘蛛池模板: 五莲县| 鸡泽县| 德格县| 虎林市| 古浪县| 沂水县| 梅州市| 藁城市| 宜州市| 和硕县| 通许县| 京山县| 镇康县| 普安县| 岚皋县| 察哈| 榆林市| 元氏县| 伊宁县| 卓尼县| 满城县| 南郑县| 玛沁县| 吉首市| 沙洋县| 大名县| 郧西县| 仙游县| 海口市| 晋中市| 乌恰县| 南乐县| 华亭县| 罗源县| 清远市| 通州市| 衡阳县| 阿勒泰市| 新密市| 垦利县| 灌南县|