文档
注册
评分
提单
论坛
小AI

概述

简介

在深度学习中,当数据集和参数量的规模越来越大,训练所需的时间和硬件资源会随之增加,最后会变成制约训练的瓶颈。分布式并行训练,可以降低对内存、计算性能等硬件的需求,是进行训练的重要优化手段。

分布式训练通过将计算任务按照一定的方法拆分到不同的昇腾AI处理器上来加速模型的训练速度,拆分的计算任务之间通过集合通信来完成信息的汇总和交换,完成整个训练任务的并行处理,从而实现加快计算任务的目的。

根据并行的原理及模式不同,业界主流的并行类型有以下几种:

  • 数据并行(Data Parallel):对数据进行切分的并行模式,一般按照batch维度切分,将数据分配到各个计算单元(worker)中,进行模型计算。数据并行方法将数据分配到不同的节点之上,而模型则被复制到每一个节点,每次迭代中,每个昇腾AI处理器用自己的那一份数据进行计算。在数据并行中,模型参数的同步是非常重要的一步,目前支持Allreduce架构ParameterServer架构两种同步模式。
  • 模型并行(Model Parallel):对模型进行切分的并行模式。包括层内模型并行模式,即对参数切分后分配到各个计算单元中进行训练。
  • 混合并行(Hybrid Parallel):指数据并行、模型并行等多种方式混合使用。
图1 分布式场景下的训练业务执行流程

Server单机

Server单机场景,即由1台训练服务器(Server)完成训练,每台Server包含8块昇腾AI处理器。其中参与集合通信的处理器数目只能为1/2/4/8,且0-3卡和4-7卡各为一个组网,使用2张卡或4张卡训练时,不支持跨组网创建设备集群。

图2 单机训练

Server集群

Server集群场景,即由集群管理主节点+一组训练服务器(Server)组成训练服务器集群,Server当前支持的上限是512台。每台Server上包含8块昇腾AI处理器,Server集群场景下,参与集合通信的的昇腾AI处理器数目为8*n(其中n为参与训练的Server个数,最大支持512)。且n为2的指数倍情况下,集群性能最好,建议用户优先采用此种方式进行集群组网。

每个Server通过8个直出网口实现Server间的集合通信。如果用户需要指定参与集合通信的昇腾AI处理器数目为1*n/2*n/4*n(其中n为参与训练的Server个数),则可以通过集合通信接口create_group创建自定义group,指定参与集合通信的设备。

图3 集群训练

集群管理主节点支持集群及集群内设备的管理能力,同时支持整个集群内的分布式作业管理。

集群训练场景下,一个分布式训练执行流程如下:

图4 分布式训练执行流程

训练作业经过集群管理主节点下发到训练服务器,由服务器上的作业Agent根据App指定的设备数量,启动相应个数的TensorFlow进程执行训练,一个TensorFlow进程和一个昇腾AI处理器对应。

Atlas 300T 训练卡(型号 9000)

当前训练卡场景支持单机单卡训练,以及多机多卡分布式训练场景。一张训练卡内含一片昇腾AI处理器

多机分布式训练可以使用训练卡自出的100G网口进行Server间的传输,采用Ring + Halving-doubling算法完成集合通信功能。

图5 组网图

使用注意事项:

  1. 不同Server的训练卡数量需要保持一致;且训练标卡的双网口中,仅网口1可用。
  2. 整个组网中各训练卡的网卡IP配置在同一网段。
  3. 当前仅支持-allreduce/allgather/broadcast/reduce_scatter。
  4. 训练之前,需要通过环境变量HCCL_INTRA_PCIE_ENABLEHCCL_INTRA_ROCE_ENABLE设置多卡间通信方式,默认使用PCIe环路,推荐使用RoCE环路。
  5. 昇腾AI处理器资源配置文件(ranktable文件)中配置的参与训练的昇腾AI处理器数目不大于服务器上实际的昇腾AI处理器数目,详细说明请参考准备ranktable资源配置文件

    针对昇腾910 AI处理器,必须使用模板一配置。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词