色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 一鍵部署分布式訓練,微軟“群策 MARO”上新集群管理助手

          一鍵部署分布式訓練,微軟“群策 MARO”上新集群管理助手

          發(fā)布人:MSRAsia 時間:2021-05-19 來源:工程師 發(fā)布文章

          編者按:2020年,微軟亞洲研究院發(fā)布并開源了多智能體資源優(yōu)化平臺“群策 MARO”。為了幫助不同需求的用戶進行更加便捷、高效的集群管理,也希望用戶可以方便快捷地部署分布式訓練任務,微軟亞洲研究院的研究員和工程師們基于“群策MARO”平臺搭建了集群管理界面:MARO CLI。本文將為大家詳細介紹 MARO CLI 的功能和使用方法。

          隨著強化學習的不斷發(fā)展,多種多樣的算法、框架層出不窮,對計算資源的要求也與日俱增。為了推動更大規(guī)模的訓練,也為了獲得更高的訓練效率,如今對分布式集群的需求也在不斷增加。因此,微軟亞洲研究院的研究員和工程師們在此前打造的通用資源優(yōu)化平臺群策(Multi-Agent Resource Optimization Platform,MARO)上,構建了一套輕量級的集群管理界面:MARO Command Line Interface(MARO CLI)。

          除了提供高效靈活的環(huán)境組件、當前主流和前沿的強化學習算法,MARO 平臺希望通過 MARO CLI 幫助不同需求的用戶進行更加便捷高效的集群管理,也希望用戶可以方便快捷地部署分布式訓練任務?;?MARO 平臺,作為構建和管理訓練用集群的命令行接口,MARO CLI 提供的主要特性包括:

          • 多種方式的集群構建,既可以創(chuàng)建基于 Azure 云服務器或者 AKS 服務的遠端集群, 也可以將已有的計算資源整合成本地集群,從而提高計算資源的利用效率。

          • 部署任意的訓練任務到指定集群中,并根據(jù)每個任務的資源需求和當前集群的空閑資源進行任務分配,從而更合理地利用集群資源。

          • 所有任務均部署在容器中運行,任務之間更加獨立,也更方便支持新的強化學習框架和算法,具有更好的擴展性。

          • 提供了配套的可視化界面,包括對硬件、任務、日志的監(jiān)控。

          下面我們將詳細介紹一下 MARO CLI 的架構和功能,希望能幫助大家更好地利用 MARO CLI 來進行分布式集群的訓練。

          MARO Process

          為了讓開發(fā)者能夠平緩地從單機模式過渡到分布式集群模式、降低調(diào)試成本和開發(fā)成本,MARO CLI 提供了 Process mode,如圖1所示,這是 MARO CLI 中一種比較簡單的本地單機管理模式。在這種模式下,MARO CLI 并不會創(chuàng)建真正的分布式集群,而是在本機中通過使用多進程來啟動訓練任務,模擬真實分布式集群操作。

          1.png

          圖1:MARO Process mode 示意圖

          通過在單機中模擬分布式場景主要有兩個優(yōu)點:易于調(diào)試和開發(fā)成本低。與單機環(huán)境不同的是,要使任務能順利地在分步式集群中運行,需要對代碼進行一系列修改。使用 MARO Process mode 來測試修改好的代碼可以更直接地發(fā)現(xiàn)錯誤,而且不需要真正的分布式集群,這樣可以節(jié)省一大筆開發(fā)成本。麻雀雖小,五臟俱全,在 MARO Process mode 下,使用 Redis 和 MARO 服務也可以做到任務管理和監(jiān)控。

          MARO Grass

          Grass mode 是 MARO CLI 中最重要的一部分,如圖2所示。在這種模式下,MARO CLI 支持三種集群的創(chuàng)建模式:本地單機(grass/local), 本地集群(grass/on-premises) 和 Azure 云集群(grass/azure)。除了 Grass Local 模式外,其他 Grass 模式都會創(chuàng)建并管理真正的分布式集群,正如圖2所示,在 Grass mode 下,MARO CLI 會通過一系列組件來實現(xiàn)分布式集群管理。

          2.jpg

          圖2:MARO Grass mode 示意圖

          與單機模式不同的是,我們將 MARO Grass 集群分為 master 節(jié)點和 node 節(jié)點。在 master 節(jié)點上,我們使用 Redis 作為一個中心化的數(shù)據(jù)庫來儲存運行時產(chǎn)生的數(shù)據(jù),使用 samba-server 進行整個集群的文件共享,并通過 fluentd 進行整個集群的日志收集。與此同時,MARO CLI 也會啟動 master-agent 服務來進行任務分配和集群狀態(tài)監(jiān)控,以及一個 RESTFul server: master-api-server 執(zhí)行外部的命令,例如任務創(chuàng)建或者集群狀態(tài)監(jiān)控。在 node 節(jié)點上,則會啟動 node-agent 服務不斷記錄自身節(jié)點的狀態(tài)和任務容器的狀態(tài)并上傳到 master 上的 Redis,也會運行 samber-client 和 RESTFul server: node-api-server 來與 master 節(jié)點進行交互。

          在 MARO Grass mode 下,與集群的交互都通過 master 節(jié)點來進行:可以通過 ssh 進行文件和數(shù)據(jù)的傳輸,也可以通過 Web Client 進行集群任務管理和狀態(tài)監(jiān)控。出于安全考慮,對于每次 Web Client 的訪問我們都會使用 RSA+AES 混合加密,而集群內(nèi)部的通訊則是不加密的。master 節(jié)點收到加密指令后,將執(zhí)行具體的操作、與 node 節(jié)點進行交互、將任務部署到具體某個容器中(可能被分配到不同的 node 節(jié)點上)。下面介紹一下三種集群創(chuàng)建模式的特點:

          本地單機(grass/local)

          MARO Grass Local 與 MARO Process 類似,都是本地單機的集群模擬,但與之不同的是 MARO Grass Local 會將任務部署在容器內(nèi),也允許客戶自定義模擬集群或任務的資源大小,更加貼合真實的分布式集群操作。

          本地集群(grass/on-premises)

          MARO Grass On-Premises 可以利用手邊現(xiàn)有的計算資源來快速創(chuàng)建集群,并進行高效便捷的管理。用戶可以將在同一局域網(wǎng)內(nèi)的資源自由加入到創(chuàng)建的 Grass 集群中,并通過 MARO CLI 進行任務分配和集群管理。

          Azure云集群(grass/azure)

          MARO Grass Azure 是一種分布式集群管理,主要用于基于 Azure 云的遠程集群。基于 Azure CLI 的部分接口,MARO CLI 可以實現(xiàn) Azure 云集群的自定義創(chuàng)建、節(jié)點的增減和集群狀態(tài)監(jiān)控。

          MARO K8S

          MARO CLI 同樣支持使用 Kubernetes (K8S) 來創(chuàng)建集群,如圖3所示。Kubernetes 是一個開源的、用于管理云平臺中多個主機上的容器化的應用,同時也是一個知名度很高,并被廣泛應用的集群管理軟件。

          3.jpg

          圖 3:MARO K8S mode 示意圖

          通過對 Kubernetes 的支持,可以滿足用戶對 Kubernetes 集群的需求,也更方便那些 Kubernetes 集群用戶上手熟悉 MARO CLI。依賴于 Kubernetes 的架構,我們可以輕松地創(chuàng)建擁有數(shù)以百計的節(jié)點的大型集群,這賦予了 MARO CLI 更好的延展性和更高的穩(wěn)定性。在此模式下,我們使用 Azure File Service 在所有 Kubernetes Pods 下進行文件共享,同時所有的任務都會部署在 Kubernetes Pods 中,由 Kubernetes 進行維護。如果需要使用鏡像,我們則會使用 Azure Container Registry 來進行鏡像管理。

          舉個“栗子”:從單機到分布式

          在 MARO 平臺中,我們準備了很多場景和很多算法的示例,對每個示例也分別準備了單機版和分布式版本。通過使用 MARO 平臺中的 RL toolkit 和 Communication toolkit,就可以將單機版的訓練任務改成分布式版本。在這里我們使用示例中針對 Container Inventory Management(CIM)問題的 DQN 算法,來說明如何通過MARO CLI 一步步部署分布式訓練任務。完整示例代碼可參考https://github.com/microsoft/maro/tree/master/examples/cim/dqn,對于每個模式的詳細使用說明,請見文末。

          使用 MARO Process 模式

          在 MARO Process 模式下,首先我們通過 maro process create 命令在本地啟動 MARO Process 模式,之后通過 maro process template 命令來生成 MARO 任務模版,如圖4所示。

          4.png

          圖 4:MARO Process mode 創(chuàng)建集群模版

          在示例中,我們將 DQN 算法拆成了 actor 和 learner,然后將我們需要的數(shù)量和啟動命令寫到模版的對應位置,再通過 maro process job start 啟動任務。我們可以通過 maro process job stop/list/log 命令進行任務管理,也可以在可視化界面查看任務狀態(tài)。

          使用 MARO Grass/Azure 模式

          使用 MARO Grass/Azure 模式需要用戶具有一定的 Azure 使用經(jīng)驗,因為在創(chuàng)建集群時會對 Azure 有一定的權限要求。與 MARO Process 模式一樣的是,我們可以通過 maro grass template 命令來生成集群模版和任務模版,如圖5、圖6所示。

          5.png圖5:MARO Grass mode 創(chuàng)建集群模版

          6.png

          圖 6:MARO Grass mode 創(chuàng)建任務模版

          首先根據(jù)我們的 Azure 賬戶將集群模版補充完整,然后通過 maro grass create 命令啟動所需要的集群,并用 maro grass node scale 來控制集群 node 節(jié)點資源。MARO Grass 下的任務模版與 MARO Process 很不相同,因為會將任務容器化,所以在啟動任務之前,需要通過 maro grass image push 命令將需要的鏡像文件部署到剛剛創(chuàng)建的集群上,再通過 maro grass data push 將需要用到的文件傳送到集群中。

          另外,可以給每種組件(component)分配不同的資源,最優(yōu)化地利用集群資源。在鏡像和文件都部署到集群后,我們就可以通過 maro grass job start 將訓練任務部署到集群之中了。

          一目了然的可視化界面

          MARO CLI 提供了一個簡潔明了且?guī)в袃?nèi)置命令行終端的可視化界面,方便用戶進行集群管理和任務狀態(tài)查詢。在界面中首先顯示的是當前集群的資源信息和使用率,同時也會依訓練任務狀態(tài)來展示集群內(nèi)的任務概覽。

          7.png

          圖 7:集群可視化界面

          8.png

          圖 8. MARO CLI 結構概覽

          與其他集群管理平臺不同,MARO CLI 并不僅僅支持一種集群,它提供了多種模式來滿足用戶對集群的不同需求。對于剛剛接觸分布式訓練的用戶來說,我們建議在熟悉了 MARO RL toolkit 和 Communication toolkit 之后,可以使用 MARO CLI 中的 Process 和 Grass Local 模式在單機中模擬集群操作。而對于手邊有空閑計算資源并對分布式集群有一定了解的用戶,則可以通過 MARO CLI 中的 Grass On-Premises 模式快速搭建集群,并在集群中部署訓練任務。對于有一定 Azure 云使用經(jīng)驗的用戶,可以通過 MARO CLI 中的 Grass Azure 來構建基于 Azure 云的遠端集群。如果還有已經(jīng)使用過 Kubernetes 的用戶,MARO CLI 同樣也支持搭建 Kubernetes 集群。

          MARO CLI 仍是一個正在蓬勃發(fā)展的項目,未來將會不斷改進,變得更加簡單、快速和強大。歡迎大家關注并使用 MARO 平臺,也歡迎大家與我們進行技術交流!

          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



          關鍵詞: 深度學習

          相關推薦

          技術專區(qū)

          關閉