模型训练中除了数据和算法外,开发者花了大量时间在模型参数设计上。模型训练的参数直接影响模型的精度以及模型收敛时间,参数的选择极大依赖于开发者的经验,参数选择不当会导致模型精度无法达到预期结果,或者模型训练时间大大增加。
为了降低开发者的专业要求,提升开发者模型训练的开发效率及训练性能,ModelArts提供了可视化作业管理、资源管理、版本管理等功能,基于机器学习算法及强化学习的模型训练自动超参调优,如learning rate、batch size等自动的调参策略;预置和调优常用模型,简化模型开发和全流程训练管理。
当前大多数开发者开发模型时,为了满足精度需求,模型往往达到几十层,甚至上百层,参数规模达到百兆甚至在GB规格以上,导致对计算资源的规格要求极高,主要体现在对硬件资源的算力及内存、ROM的规格的需求上。端侧资源规格限制极为严格,以端侧智能摄像头为例,通常端侧算力在1TFLOPS,内存在2GB规格左右,ROM空间在2GB左右,需要将端侧模型大小控制在百KB级别,推理时延控制在百毫秒级别。
这就需要借助模型精度无损或微损下的压缩技术,如通过剪枝、量化、知识蒸馏等技术,实现模型的自动压缩及调优,进行模型压缩和重新训练的自动迭代,以保证模型的精度损失极小。无需重新训练的低比特量化技术实现模型从高精度浮点向定点运算转换,多种压缩技术和调优技术实现模型计算量满足端、边小硬件资源下的轻量化需求,模型压缩技术在特定领域场景下实现精度损失<1%。
当训练数据量很大时,深度学习模型的训练将会非常耗时。在计算机视觉中,ImageNet-1k(包含 1000 个类别的图像分类数据集,以下简称 ImageNet)是经典、常用的一个数据集,如果我们在该数据集上用一块P100 GPU训练一个ResNet-50模型,则需要耗时将近1周,严重阻碍了深度学习应用的开发进度。因此,深度学习训练加速一直是学术界和工业界所关注的重要问题。
分布式训练加速需要从软硬件两方面协同来考虑,仅单一的调优手段无法达到期望的加速效果。所以分布式加速的调优是一个系统工程,需要从硬件角度(芯片、硬件设计)考虑分布式训练架构,如系统的整体计算规格、网络带宽、高速缓存、功耗、散热等因素,充分考虑计算和通信的吞吐量关系,以实现计算和通信时延的隐藏。
软件设计需要结合高性能硬件特性,充分利用硬件高速网络实现高带宽分布式通信,实现高效的数据集本地数据缓存技术,通过训练调优算法,如混合并行,梯度压缩、卷积加速等技术,实现分布式训练系统软硬件端到端的高效协同优化,实现多机多卡分布式环境下训练加速。ModelArts 在千级别资源规格多机多卡分布式环境下,典型模型 ResNet50 在 ImageNet 数据集上实现加速比>0.8,是行业领先水平。
衡量分布式深度学习的加速性能时,主要有如下2个重要指标:
吞吐量,即单位时间内处理的数据量。
收敛时间,即达到一定的收敛精度所需的时间。
吞吐量一般取决于服务器硬件(如更多、更大FLOPS处理能力的AI加速芯片,更大的通信带宽等)、数据读取和缓存、数据预处理、模型计算(如卷积算法选择等)、通信拓扑等方面的优化。除了低bit计算和梯度(或参数)压缩等,大部分技术在提升吞吐量的同时,不会造成对模型精度的影响。为了达到最短的收敛时间,需要在优化吞吐量的同时,对调参方面也做调优。调参不到位会导致吞吐量难以优化,当batch size超参不足够大时,模型训练的并行度就会相对较差,吞吐量难以通过增加计算节点个数而提升。
对用户而言,最终关心的指标是收敛时间,因此ModelArts的MoXing实现了全栈优化,极大缩短了训练收敛时间。在数据读取和预处理方面,MoXing通过利用多级并发输入流水线使得数据 IO 不会成为瓶颈;在模型计算方面,MoXing对上层模型提供半精度和单精度组成的混合精度计算,通过自适应的尺度缩放减小由于精度计算带来的损失;在超参调优方面,采用动态超参策略(如 momentum、batch size等)使得模型收敛所需epoch个数降到最低;在底层优化方面,MoXing与底层华为服务器和通信计算库相结合,使得分布式加速进一步提升。
ModelArts高性能分布式训练优化点
自动混合精度训练(充分发挥硬件计算能力)
动态超参调整技术(动态 batch size、image size、momentum 等)
模型梯度的自动融合、拆分
基于BP bubble自适应的计算,通信算子调度优化
分布式高性能通信库(nstack、HCCL)
分布式数据-模型混合并行
训练数据压缩、多级缓存