
# 分布式训练功能介绍
#### 分布式训练
**分布式训练**是指在多个计算节点（如多台服务器或GPU设备）上并行执行深度学习任务，以加快模型训练速度或处理更大规模的数据。通过将训练任务分配到多个节点上，每个节点负责计算模型的一部分，然后通过通信机制将计算结果同步，最终完成整个模型的训练。这种方式可以显著提高训练效率，尤其适用于复杂模型和大规模数据集的场景。
ModelArts提供了对分布式训练的支持，能够自动配置和管理多节点间的通信与资源分配，从而实现高效的并行计算。本文将介绍多机多卡的分布式训练（DistributedDataParallel）的相关功能。
#### 约束限制
- 如果切换了Notebook的规格，那么只能在Notebook进行单机调测，不能进行分布式调测，也不能提交远程训练作业。
- 使用昇腾卡进行预置规格训练，在分布式非8卡场景下，建议使用自协商方式建链。
- 当前仅支持PyTorch和MindSpore AI框架，如果MindSpore要进行多机分布式训练调试，则每台机器上都必须有8张卡。
- 本文档提供的调测代码中涉及到的OBS路径，请用户替换为自己的实际OBS路径。
- 本文档提供的调测代码是以PyTorch为例编写的，不同的AI框架之间，整体流程是完全相同的，只需要修改个别的参数即可。
 
#### 计费影响
在ModelArts进行模型训练时，会产生计算资源和存储资源的累计值计费。计算资源为训练作业运行的费用。存储资源包括数据存储到OBS或SFS的费用。详见[模型训练计费项](https://support.huaweicloud.com/price-modelarts/price-modelarts-0011.html)。
#### DistributedDataParallel进行多机多卡训练的优缺点
- **通信更快**：相比于DP，通信速度更快
- **负载相对均衡**：相比于DP，GPU负载相对更均衡
- **运行速度快**：因为通信时间更短，效率更高，能更快速地完成训练作业
 
#### 快速开始
- [创建多机多卡的分布式训练（DistributedDataParallel）](https://support.huaweicloud.com/usermanual-standard-modelarts/modelarts-distributed-0008.html)：介绍多机多卡数据并行分布式训练原理和代码改造点。
- [示例：创建DDP分布式训练（PyTorch+GPU）](https://support.huaweicloud.com/usermanual-standard-modelarts/modelarts-distributed-0011.html)：提供了分布式训练调测具体的代码适配操作过程和代码示例。
- [示例：创建DDP分布式训练（PyTorch+NPU）](https://support.huaweicloud.com/usermanual-standard-modelarts/modelarts-distributed-0012.html)：针对Resnet18在cifar10数据集上的分类任务，给出了分布式训练改造(DDP)的完整代码示例，供用户学习参考。
- [基于开发环境使用SDK调测训练作业](https://support.huaweicloud.com/sdkreference-modelarts/modelarts_04_0449.html)：介绍如何在ModelArts的开发环境中，使用SDK调测单机和多机分布式训练作业。
 
