# 分布式并行训练总览 [![查看源文件](https://gitee.com/mindspore/docs/raw/r1.3/resource/_static/logo_source.png)](https://gitee.com/mindspore/docs/blob/r1.3/docs/mindspore/programming_guide/source_zh_cn/distributed_training.md) 在深度学习中,当数据集和参数量的规模越来越大,训练所需的时间和硬件资源会随之增加,最后会变成制约训练的瓶颈。分布式并行训练,可以降低对内存、计算性能等硬件的需求,是进行训练的重要优化手段。根据并行的原理及模式不同,业界主流的并行类型有以下几种: - 数据并行(Data Parallel):对数据进行切分的并行模式,一般按照batch维度切分,将数据分配到各个计算单元(worker)中,进行模型计算。 - 模型并行(Model Parallel):对模型进行切分的并行模式。MindSpore中支持层内模型并行模式,即对参数切分后分配到各个计算单元中进行训练。 - 混合并行(Hybrid Parallel):指涵盖数据并行和模型并行的并行模式。 当前MindSpore也提供分布式并行训练的功能。它支持了多种模式包括: - `DATA_PARALLEL`:数据并行模式。 - `SEMI_AUTO_PARALLEL`:半自动并行模式。用户对算子手动配置切分策略实现并行,它融合了数据并行、模型并行及混合并行。 - `AUTO_PARALLEL`:自动并行模式,该模式为实验特性,当前只在部分网络验证。自动并行可以自动建立代价模型,找到训练时间较短的并行策略,为用户选择1种并行模式。MindSpore提供了如下的两种不同的策略搜索算法: - `dynamic_programming` :动态规划策略搜索算法。能够搜索出代价模型刻画的最优策略,但在搜索巨大网络模型的并行策略时耗时较长。其代价模型是围绕Ascend 910芯片基于内存的计算开销和通信开销对训练时间建模。 - `recursive_programming` :双递归策略搜索算法。对于巨大网络以及大规模多卡切分能够保证瞬间生成最优策略。其基于符号运算的代价模型可以自由适配不同的加速器集群。 - `HYBRID_PARALLEL`:在MindSpore中特指用户通过手动切分模型并基于通信原语实现混合并行的场景。