『机器学习』MLSys提前看 | 机器学习的分布式优化方法( 二 )
本文插图
图 1. 群集上每个 8-GPU 服务器中分配给 Cloud-X 上 40000 个多 GPU 作业的 GPU 数
此外 , 这些限制还会导致链接使用不足 , 如图 2 所示 。
本文插图
图 2. DGX-1P 中 NCCL 与本文提出的 Blink 在 6-GPUs 上的广播比较
通过将 GPU 之间的链接建模为图 , 前期的研究结果表明 , 包装生成树 (Packing Spanning Trees) 能够生成从有选择的根顶点到有向图中的所有其他顶点的最大流 。 基于此研究 , 作者认为一对多协议(如使用根节点的生成树进行广播)是克服链路利用率不足的一个潜在有效选择 。 当然 , 除了像广播这样只转发数据的操作之外 , 还需要实现像 AllReduce 这样的通信原语 , 即可以被建模为在一个方向上减少并前进(面向根的方向) , 然后在另一个方向广播 。
【Blink 详解】
本文插图
图 3. Blink 工具链工作流
给定拓扑 , Blink 的主要方法是动态地生成适当的集合通信原语 。 通过引入包装生成树来实现高利用率 , 使用能够最大化传输速率的算法 , 同时最小化所使用的树的数量 。 最后 , 通过在双向链路的每个方向上执行多对一和一对多的操作来实现像 AllReduce 这样的多对多算法 。 Blink 工具链完整工作流见图 3 所示 。 具体步骤包括:
(1)给定深度学习任务 , 一旦安排并分配了一组 GPU , Blink 就能够探测机器的拓扑结构 , 并通过分配的 GPU 推断互连拓扑结构 。
(2)给定拓扑 , 将集体通信操作建模为有向图上的流 , 并计算生成树的最大分数填充 。 此步骤表示为图 3 中的 TreeGen , 此步骤输出一组生成树和对应于应通过它们发送多少数据的权重 。
(3)CodeGen 解析生成树并生成 CUDA 代码 。 生成的代码与 NCCL 提供的 API 匹配 , 并打包到共享库 libblink.so 中 。
(4)设置 LD_PRELOAD 标志 , 以便在调用主程序时动态加载 Blink 实现 。 这确保了现有程序可以在没有任何修改的情况下运行
1、包装生成树
将从分配的资源推断出的拓扑建模为一个有向图 , 其中每个 GPU 是顶点 V , 每个链路(NVLink 或 PCIe)标记为有向边缘 E 。 每个有向边缘还具有带宽比例容量 。 通过找到图中的有向生成树或树状图的最大填充可以达到最优速率 。 每个树状图 Ti 从根涡生成 , 沿着有向链接扩展到其它涡点 。 通过确定满足能力限制的最大权重树状图 , 可以解决在广播中确定最佳时间表的问题 。
本文插图
由上式 , 给定一个图 G , 顶点为 V , 边为 E , 根为 r , 生成树为 T1, T2, T3, ... Ti , 希望找到权重 w_i , 使得通过任何边的权重树的总和不超过特定边的容量 。
2、减小生成树的数目(优化算法)
乘法权重更新(multiplicative weight update , MWU)是一种广泛应用于优化、博弈论等各个领域的算法 。 本文使用 MWU 实现分数线性包装问题的近似线性时间逼近 。 使用一个容量和一个权重来初始化每一个边 , 这个权重用来标记已经使用了多少容量 。 运行一个迭代方法 , 每次迭代都会找到给定当前分配的最小权值生成树 。 然后 , 将所选树上的权重增加一个 ε 因子 , 并相应地更新图上的权重 。 给定 T1, T2, T3, ... Tk , 为了最小化生成树的数目 , 构造了一个整数线性规划问题(integer linear program , ILP) , 每个权重被限制为 0 或 1:
推荐阅读
- 小虔科技|华为和小米都曾经学习苹果3D面部识别,为啥现在不用了
- 机器人|深圳机器人产业产值1257亿元
- |《5G技术助力国产机器人完成全球首场骨科实时远程手术》公示材料
- 美军事进行时|五角大楼研制挖隧道的蚯蚓机器人为地面部队提供安全补给
- 砍柴网|讯飞智能学习机 618 新惊喜,多重优惠助力孩子暑假弯道超车
- 新智元|B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)
- cnBetaTB|看机器人如何制作出既有颜值又美味的蛋饼
- 山东伟豪思|袋料全自动拆垛机器人的使用给企业带来了哪些益处
- 无人机这两项机器人发明,就是东京大学进军外卖界的野心!?
- 互联网生活|不一般!世童科技品牌启动暨智能学习桌新品发布会惊艳中山
