HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

“一键”部署分布式训练,微软“群策 MARO”上新集群管理助手

  • 2021-05-14
  • 本文字数:3990 字

    阅读完需:约 13 分钟

“一键”部署分布式训练,微软“群策MARO”上新集群管理助手

来源 | 微软亚洲研究院


2020 年,微软亚洲研究院发布并开源了多智能体资源优化平台“群策 MARO”。为了帮助不同需求的用户进行更加便捷、高效的集群管理,也希望用户可以方便快捷地部署分布式训练任务,微软亚洲研究院的研究员和工程师们基于“群策 MARO”平台搭建了集群管理界面:MARO CLI。本文将为大家详细介绍 MARO CLI 的功能和使用方法。


随着强化学习的不断发展,多种多样的算法、框架层出不穷,对计算资源的要求也与日俱增。为了推动更大规模的训练,也为了获得更高的训练效率,如今对分布式集群的需求也在不断增加。因此,微软亚洲研究院的研究员和工程师们在此前打造的通用资源优化平台群策(Multi-Agent Resource Optimization Platform,MARO)上,构建了一套轻量级的集群管理界面:MARO Command Line Interface(MARO CLI)。


除了提供高效灵活的环境组件、当前主流和前沿的强化学习算法,MARO 平台希望通过 MARO CLI 帮助不同需求的用户进行更加便捷高效的集群管理,也希望用户可以方便快捷地部署分布式训练任务。基于 MARO 平台,作为构建和管理训练用集群的命令行接口,MARO CLI 提供的主要特性包括:


  • 多种方式的集群构建,既可以创建基于 Azure 云服务器或者 AKS 服务的远端集群, 也可以将已有的计算资源整合成本地集群,从而提高计算资源的利用效率。

  • 部署任意的训练任务到指定集群中,并根据每个任务的资源需求和当前集群的空闲资源进行任务分配,从而更合理地利用集群资源。

  • 所有任务均部署在容器中运行,任务之间更加独立,也更方便支持新的强化学习框架和算法,具有更好的扩展性。

  • 提供了配套的可视化界面,包括对硬件、任务、日志的监控。


下面我们将详细介绍一下 MARO CLI 的架构和功能,希望能帮助大家更好地利用 MARO CLI 来进行分布式集群的训练。

MARO Process


为了让开发者能够平缓地从单机模式过渡到分布式集群模式、降低调试成本和开发成本,MARO CLI 提供了 Process mode,如图 1 所示,这是 MARO CLI 中一种比较简单的本地单机管理模式。在这种模式下,MARO CLI 并不会创建真正的分布式集群,而是在本机中通过使用多进程来启动训练任务,模拟真实分布式集群操作。



图 1. MARO Process mode 示意图


通过在单机中模拟分布式场景主要有两个优点:易于调试和开发成本低。与单机环境不同的是,要使任务能顺利地在分步式集群中运行,需要对代码进行一系列修改。使用 MARO Process mode 来测试修改好的代码可以更直接地发现错误,而且不需要真正的分布式集群,这样可以节省一大笔开发成本。麻雀虽小,五脏俱全,在 MARO Process mode 下,使用 Redis 和 MARO 服务也可以做到任务管理和监控。

MARO Grass


Grass mode 是 MARO CLI 中最重要的一部分,如图 2 所示。在这种模式下,MARO CLI 支持三种集群的创建模式:本地单机(grass/local), 本地集群(grass/on-premises) 和 Azure 云集群(grass/azure)。除了 Grass Local 模式外,其他 Grass 模式都会创建并管理真正的分布式集群,正如图 2 所示,在 Grass mode 下,MARO CLI 会通过一系列组件来实现分布式集群管理。



图 2. MARO Grass mode 示意图


与单机模式不同的是,我们将 MARO Grass 集群分为 master 节点和 node 节点。在 master 节点上,我们使用 Redis 作为一个中心化的数据库来储存运行时产生的数据,使用 samba-server 进行整个集群的文件共享,并通过 fluentd 进行整个集群的日志收集。


与此同时,MARO CLI 也会启动 master-agent 服务来进行任务分配和集群状态监控,以及一个 RESTFul server: master-api-server 执行外部的命令,例如任务创建或者集群状态监控。在 node 节点上,则会启动 node-agent 服务不断记录自身节点的状态和任务容器的状态并上传到 master 上的 Redis,也会运行 samber-client 和 RESTFul server: node-api-server 来与 master 节点进行交互。


在 MARO Grass mode 下,与集群的交互都通过 master 节点来进行:可以通过 ssh 进行文件和数据的传输,也可以通过 Web Client 进行集群任务管理和状态监控。出于安全考虑,对于每次 Web Client 的访问我们都会使用 RSA+AES 混合加密,而集群内部的通讯则是不加密的。master 节点收到加密指令后,将执行具体的操作、与 node 节点进行交互、将任务部署到具体某个容器中(可能被分配到不同的 node 节点上)。


下面介绍一下三种集群创建模式的特点:


  • 本地单机(grass/local)


MARO Grass Local 与 MARO Process 类似,都是本地单机的集群模拟,但与之不同的是 MARO Grass Local 会将任务部署在容器内,也允许客户自定义模拟集群或任务的资源大小,更加贴合真实的分布式集群操作。


  • 本地集群(grass/on-premises)


MARO Grass On-Premises 可以利用手边现有的计算资源来快速创建集群,并进行高效便捷的管理。用户可以将在同一局域网内的资源自由加入到创建的 Grass 集群中,并通过 MARO CLI 进行任务分配和集群管理。


  • Azure 云集群(grass/azure)


MARO Grass Azure 是一种分布式集群管理,主要用于基于 Azure 云的远程集群。基于 Azure CLI 的部分接口,MARO CLI 可以实现 Azure 云集群的自定义创建、节点的增减和集群状态监控。

MARO K8S


MARO CLI 同样支持使用 Kubernetes (K8S) 来创建集群,如图 3 所示。Kubernetes 是一个开源的、用于管理云平台中多个主机上的容器化的应用,同时也是一个知名度很高,并被广泛应用的集群管理软件。



图 3. MARO K8S mode 示意图


通过对 Kubernetes 的支持,可以满足用户对 Kubernetes 集群的需求,也更方便那些 Kubernetes 集群用户上手熟悉 MARO CLI。依赖于 Kubernetes 的架构,我们可以轻松地创建拥有数以百计的节点的大型集群,这赋予了 MARO CLI 更好的延展性和更高的稳定性。


在此模式下,我们使用 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. MARO Process mode 创建集群模版


在示例中,我们将 DQN 算法拆成了 actor 和 learner,然后将我们需要的数量和启动命令写到模版的对应位置,再通过 maro process job start 启动任务。我们可以通过 maro process job stop/list/log 命令进行任务管理,也可以在可视化界面查看任务状态。

使用 MARO Grass/Azure 模式


使用 MARO Grass/Azure 模式需要用户具有一定的 Azure 使用经验,因为在创建集群时会对 Azure 有一定的权限要求。与 MARO Process 模式一样的是,我们可以通过 maro grass template 命令来生成集群模版和任务模版,如图 5、图 6 所示。



图 5. MARO Grass mode 创建集群模版



图 6. MARO Grass mode 创建任务模版


首先根据我们的 Azure 账户将集群模版补充完整,然后通过 maro grass create 命令启动所需要的集群,并用 maro grass node scale 来控制集群 node 节点资源。


MARO Grass 下的任务模版与 MARO Process 很不相同,因为会将任务容器化,所以在启动任务之前,需要通过 maro grass image push 命令将需要的镜像文件部署到刚刚创建的集群上,再通过 maro grass data push 将需要用到的文件传送到集群中。


另外,可以给每种组件(component)分配不同的资源,最优化地利用集群资源。在镜像和文件都部署到集群后,我们就可以通过 maro grass job start 将训练任务部署到集群之中了。

一目了然的可视化界面


MARO CLI 提供了一个简洁明了且带有内置命令行终端的可视化界面,方便用户进行集群管理和任务状态查询。在界面中首先显示的是当前集群的资源信息和使用率,同时也会依训练任务状态来展示集群内的任务概览。



图 7. 集群可视化界面



图 8. MARO CLI 结构概览


与其他集群管理平台不同,MARO CLI 并不仅仅支持一种集群,它提供了多种模式来满足用户对集群的不同需求。对于刚刚接触分布式训练的用户来说,我们建议在熟悉了 MARO RL toolkit 和 Communication toolkit 之后,可以使用 MARO CLI 中的 Process 和 Grass Local 模式在单机中模拟集群操作。


而对于手边有空闲计算资源并对分布式集群有一定了解的用户,则可以通过 MARO CLI 中的 Grass On-Premises 模式快速搭建集群,并在集群中部署训练任务。


对于有一定 Azure 云使用经验的用户,可以通过 MARO CLI 中的 Grass Azure 来构建基于 Azure 云的远端集群。如果还有已经使用过 Kubernetes 的用户,MARO CLI 同样也支持搭建 Kubernetes 集群。


MARO CLI 仍是一个正在蓬勃发展的项目,未来将会不断改进,变得更加简单、快速和强大。欢迎大家关注并使用 MARO 平台,也欢迎大家与我们进行技术交流!


MARO CLI 文档


https://maro.readthedocs.io/en/latest/key_components/orchestration.html


MARO CLI 相关模式使用说明:


https://maro.readthedocs.io/en/latest/installation/multi_processes_localhost_provisioning.html


https://maro.readthedocs.io/en/latest/installation/grass_azure_cluster_provisioning.html


https://maro.readthedocs.io/en/latest/installation/grass_on_premises_cluster_provisioning.html


https://maro.readthedocs.io/en/latest/installation/k8s_cluster_provisioning_on_azure.html


MARO GitHub 页面


https://github.com/microsoft/maro


MARO 0.2 版本具体更新历史


https://github.com/microsoft/maro/pull/239


https://github.com/microsoft/maro/pull/297

2021-05-14 10:121292
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 533.2 次阅读, 收获喜欢 1976 次。

关注

评论

发布
暂无评论
发现更多内容

mac多媒体影音库:Emby for Mac 中文版下载

你的猪会飞吗

mac软件下载 mac破解软件下载

autodeskautocad2024序列号【mac/win】

理理

Autodesk AutoCAD 2024 cad2024序列号 AutoCAD2024破解版

蓝易云 - Ubuntu18.04版本下配置ORB-SLAM3和数据集测试方法

百度搜索:蓝易云

云计算 Linux ubuntu 运维 raid

基于Java+SpringBoot+Vue汽车服务管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue美发门店管理系统设计和实现

hunter_coder

后端开发

id2024下载 Adobe InDesign 2024最新破解版【mac/win】

理理

InDesign 排版设计

基于Java+SpringBoot+Vue前后端分离癌症患者交流平台设计和实现

hunter_coder

后端开发

实战攻略:如何用 TDengine 轻松搞定时序数据建模

TDengine

4K Video Downloader Plus Pro for Mac(4K视频下载器)v1.8.0激活版

理理

蓝易云 - IP和MAC的作用区别

百度搜索:蓝易云

云计算 运维 Mac IP 云服务器

基于Java+SpringBoot+Vue前后端分离毕业论文管理系统设计和实现

hunter_coder

后端开发

阿里云 EMR Serverless StarRocks OLAP 数据分析场景解析

阿里云大数据AI技术

大数据 数据分析 OLAP EMR

法律服务机构启用电子签章网上签署法律文书,省时省力提效率

Geek_2a38d5

基于Java+SpringBoot+Vue前后端分离毕业就业信息管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue旅游管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+vue前后端分离保信息学科平台系统设计实现

hunter_coder

后端开发

Navicat Premium软件下载 Navicat Premium中文版 跨平台数据库软件

理理

XR实时云渲染-加速虚拟仿真云教学呈现!

3DCAT实时渲染

云渲染 虚拟仿真 实时云渲染 虚拟仿真云教学

蓝易云 - CentOS7编译ZooKeeper C客户端

百度搜索:蓝易云

云计算 zookeeper centos 服务器 云服务器

蓝易云 - lvm+raid(逻辑磁盘+阵列)创建删除恢复for linux

百度搜索:蓝易云

云计算 Linux raid lvm 硬盘

蓝易云 - tomcat的缓存机制

百度搜索:蓝易云

云计算 tomcat Servlet 云服务器

PDF密码清除软件 Cisdem PDF Password Remover for mac v5.0.0激活版

理理

PDF pdf文件密码打不开 pdf密码清除

Avid Sibelius Ultimate(西贝柳斯乐谱软件) v2023.8激活版 西贝柳斯终极解锁版下载安装

理理

Maplesoft Maple 2024 for mac/Win:专业的数学计算软件

理理

macs fan control pro中文破解版下载(macs fan control pro序列号)

理理

AI 大模型微调训练营毕业总结

gigifrog

极限科技荣耀入选《中国数据库产业图谱(2024年)》,引领搜索与分析型数据库新篇章

极限实验室

信通院 极限科技 搜索型数据库 中国数据库产业图谱

Microsoft Remote Desktop v10.9.5中文直装版 微软远程工具

理理

AI视界周刊第 1 期:最具性价比 GPT-4o mini 发布、大模型集体失智、语言模型安全漏洞

战场小包

人工智能 行业资讯

基于Java+SpringBoot+Vue来访管理系统设计和实现

hunter_coder

后端开发

强大的BT下载工具 uTorrent for Mac 体积小,安装速度超快

理理

BT下载工具 uTorrent

“一键”部署分布式训练,微软“群策MARO”上新集群管理助手_服务革新_李开琪_InfoQ精选文章