首页 > 其他分享 >Horovod架构

Horovod架构

时间:2024-02-25 09:22:36浏览次数:28  
标签:架构 Horovod driver worker 通信 进程 RendezvousServer

架构

Horovod主要由数据通信层、通信控制层、深度学习框架接口层、启动层四部分组成。其中启动层通过horovodrun或mpirun启动训练进程,之后每个训练进程通过调用TensorFLow、PyTorch、MXNet等框架(python train.py)进行单个结点的数据输入、参数更新,在每个进程完成一个或多个batch计算后,得到的Tensor(参数)通过MPI或GLoo控制进行ring-allreduce,ring-allreduce 的通信可以基于MPI、NCLL、DDL、MLSL或GLoo。PS: Horovod 本身会在每一个worker 上启动一个进程(运行工作组件),然后内部 执行 python train.py 启动tf 框架进程,与框架融合的代码会负责 将tf 框架的 操作指令发给 Horovod 进程 干活。这就有点类似于 k8s 中的CNI 插件,CNI 插件一般分为两部分,一部分按照k8s的规范 提供执行接口(cni binary),另一部分独立运行在容器内 作为service,cni binary 会把 k8s 的指令 转给 service   common        // 主要是c的部分   data   keras   mxnet         // 与mxnet融合   runner        // horovodrun 实现   tensorflow    // 与tensorflow 融合,比如将allreduce 算子注册tf上,挂到Optimizer的 _compute_gradients 逻辑中
与tf 融合 Horovod 不依托于某个框架,自己通过MPI建立了一套分布式系统,完成了allreduce, allgather等collective operations通信工作。PS:类似于上图 driver 组成的部分 Horovod 定义的这套HVD OP是跟具体深度学习框架无关的,比如使用 TensorFlow时候,是无法直接insert到TF Graph中执行的,所以还需要注册TF的OP。针对 TensorFlow 模型分布式训练,Horovod 开发了 TensorFlow ops 来实现 Tensorflow tensor 的 AllReduce。而且这些 op 可以融入 TensorFlow 的计算图中,利用 TensorFlow graph 的 runtime 实现计算与通信的 overlapping,从而提高通信效率。以 TensorFlow 模型的 AllReduce 分布式训练为例,Horovod 开发了 allreduce ops 嵌入 TensorFlow 的反向计算图中,从而获取 TensorFlow 反向计算的梯度并进行梯度汇合。allreduce ops 可以通过调用 gloo 提供的 allreduce API 来实现梯度汇合的。
horovodrun 做了什么

建立 RendezvousServer,这个会被底层 Gloo C++ 环境使用到; - Horovod 在进行容错 AllReduce 训练时,除了启动 worker 进程外,还会启动一个 driver 进程。这个 driver 进程用于帮助 worker 调用 gloo 构造 AllReduce 通信环。 - Driver 进程需要给 Gloo 创建一个带有 KVStore 的 RendezvousServer,其中 KVStore 用于存储通信域内每个节点的 host 和 其在逻辑通信环分配的序号 rank 等信息。 - 这个 RendezvousServer 运行在 Horovod 的 driver 进程里。driver 进程拿到所有 worker 进程节点的地址和 GPU 卡数信息后,会将其写入RendezvousServer 的 KVStore 中,然后 worker 就可以调用 gloo 来访问 RendezvousServer 构造通信环。 host_alloc_plan = get_host_assignments 来根据host进行分配slot,就是horovod的哪个rank应该在哪个host上的哪个slot之上运行; get_run_command 获取到可执行命令; slot_info_to_command_fn 来得到在slot之上可执行的 slot command; 依据 slot_info_to_command_fn 构建 args_list,这个 list 之中,每一个arg就是一个 slot command; 多线程执行,在每一个 exec_command 之上执行每一个 arg(slot command);   worker 负责训练和模型迭代。 - 每个 worker 节点会向 RendezvousServer 发起请求来得到自己的邻居节点信息,从而构造通信环。 - 在这个通信环之中,每个 worker 节点有一个左邻居和一个右邻居,在通信过程中,每个 worker 只会向它的右邻居发送数据,只会从左邻居接受数据。   Horovod 在进行容错 AllReduce 训练时,除了启动 worker 进程外,还会启动一个 driver 进程。这个 driver 进程用于帮助 worker 调用 gloo 构造 AllReduce 通信环。 driver 进程中会创建一个带有 KVStore 的 RendezvousServer,driver 会将参与通信的 worker 的 ip 等信息存入 KVstore 中。 然后 worker 就可以调用 gloo 来访问 RendezvousServer 构造通信环了。

标签:架构,Horovod,driver,worker,通信,进程,RendezvousServer
From: https://www.cnblogs.com/muzinan110/p/18031938

相关文章

  • Fluid 架构
    Fluid系统架构Fluid是构建在K8s上的系统,对原生K8s具备良好的兼容性,无需修改任意代码。如上图所示,用户需要定义两个CRD,分别是Dataset和Runtime。Dataset是数据集的通用定义,这是我们提供的K8s资源对象,需要写YAML文件来定义数据集从哪儿来,以及想要放到哪儿去;Runtime......
  • ssts-hospital-web-master项目实战记录十三:项目迁移-架构设计(前台管理)
    记录时间:2024-02-24前台管理 CashTradeClean.html CashTradeDetails.html CashTradeSettle.html DeviceTest.html GoodsManage.html login.html Main.html ReceiptReprint.html SystemManage.html翻译搜索复制......
  • ssts-hospital-web-master项目实战记录十三:项目迁移-架构设计(适配器、设备驱动)
    记录时间:2023-02-24适配器adapter.jsadapter/adapter.ts:全部1.属性 2.函数 2.1.标准适配器 2.2.Ajax操作 adapterPOS.jsadapter-pos.ts:全部1.入口2.属性   3.函数  设备驱动devicedriver.jsdevice-driver/index.ts:全部1.以发卡机为例......
  • ssts-hospital-web-master项目实战记录十二:项目迁移-架构库和插件库
    记录时间:2024-02-24架构库和插件库1.架构库(1)common.js (2)web.*.js 2.插件库待建设 一、Html项目js文件目录结构(VS2015)  二、Vue项目ts文件目录结构(VS Code)1.架构库 2.插件库   翻译搜索复制......
  • [笔记]如何在 .NET中实现洁净架构?
    原文地址:https://mp.weixin.qq.com/s/8SMduU_1pAXJY0YO9KQLuA现在让我们看看如何使用洁净架构设计模式实现一个ASP.NETCoreWebAPI项目。我们将检查不同的层次以及需要在每个层次中放什么代码。让我们通过为应用程序创建一个新的解决方案来开始: 首先,我们创建一个名为 To......
  • Mamba详细介绍和RNN、Transformer的架构可视化对比
    Transformer体系结构已经成为大型语言模型(llm)成功的主要组成部分。为了进一步改进llm,人们正在研发可能优于Transformer体系结构的新体系结构。其中一种方法是Mamba(一种状态空间模型)。Mamba:Linear-TimeSequenceModelingwithSelectiveStateSpaces一文中提出了Mamba,我们......
  • 云数据库实现架构与设计的构想
    本文分享自天翼云开发者社区《云数据库实现架构与设计的构想》,作者:不知不觉随着云计算技术的飞速发展,云数据库作为云计算的重要组成部分,其实现架构与设计日益受到开发工程师的关注。本文将从开发工程师的角度出发,探讨云数据库的实现架构,并提出云数据库设计的构想,以期为云数据库的......
  • arm架构 麒麟系统,linux环境安装Oracle Instant Client
    $wgethttps://download.oracle.com/otn_software/linux/instantclient/instantclient-basic-linux-arm64.zip$unzipinstantclient-basic-linux-arm64.zip$wgethttps://download.oracle.com/otn_software/linux/instantclient/instantclient-sqlplus-linux-arm64.zip......
  • 新零售SaaS架构:什么是订单履约系统?
    什么是订单履约系统?订单履约系统用来管理从接到销售订单,到把货品送到客户手中的整个业务过程。它是上游交易(如销售和客户下单环节)和下游仓储配送(如库存管理、物流)之间的桥梁,确保信息流的顺畅和操作的协同,提升整个供应链的效率和响应速度。订单履约的主要流程包括接收订单、占用......
  • X86架构与Arm架构区别
    X86架构和ARM架构是主流的两种CPU架构,X86架构的CPU是PC服务器行业的老大,ARM架构的CPU则是移动端的老大。X86架构和arm架构实际上就是CISC与RISC之间的区别,很多用户不理解它们两个之间到底有哪些区别,实际就是它们的领域不太相同,然后追求也不相同。X86架构和Arm架构区别1、追求......