avatar
文章
480
标签
104
分类
109
首页
文章
  • 归档
  • 分类
  • 标签
生活
  • 相册
  • 视频
关于
Hongwei Zhao's BlogReferences 返回首页
首页
文章
  • 归档
  • 分类
  • 标签
生活
  • 相册
  • 视频
关于

References

发表于2025-11-16|更新于2026-03-01|AIPyTorch并行计算
|浏览量:

参考资料:

  1. Pytorch 并行训练(DP, DDP)的原理和应用
  2. Pytorch 中单机多卡分布式训练
  3. Training Neural Nets on Larger Batches: Practical Tips for 1-GPU, Multi-GPU & Distributed setups
  4. DISTRIBUTEDDATAPARALLEL
  5. Pytorch 分布式训练(DP/DDP)
  6. DISTRIBUTED COMMUNICATION PACKAGE - TORCH.DISTRIBUTED
  7. pytorch 多 gpu 并行训练
  8. PyTorch 源码解读之 DP & DDP:模型并行和分布式训练解析
文章作者: Hongwei Zhao
文章链接: https://geeks-z.github.io/Blog/2025/11/16/AI/30.PyTorch/06.%E5%B9%B6%E8%A1%8C%E8%AE%A1%E7%AE%97/999.References/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hongwei Zhao's Blog!
AIPyTorch并行计算
cover of previous post
上一篇
可视化网络结构
可视化网络结构随着深度神经网络做的的发展,网络的结构越来越复杂,我们也很难确定每一层的输入结构,输出结构以及参数等信息,这样导致我们很难在短时间内完成 debug。因此掌握一个可以用来可视化网络结构的工具是十分有必要的。类似的功能在另一个深度学习库 Keras 中可以调用一个叫做model.summary()的 API 来很方便地实现,调用后就会显示我们的模型参数,输入大小,输出大小,模型的整体参数等,但是在 PyTorch 中没有这样一种便利的工具帮助我们可视化我们的模型结构。 为了解决这个问题,人们开发了 torchinfo 工具包 ( torchinfo 是由 torchsumma...
cover of next post
下一篇
分布式evaluation
分布式 evaluation all_reduce, barrier 等 API 是 distributed 中更为基础和底层的 API。这些 API 可以帮助我们控制进程之间的交互,控制 GPU 数据的传输。在自定义 GPU 协作逻辑,汇总 GPU 间少量的统计信息时,大有用处。熟练掌握这些 API 也可以帮助我们自己设计、优化分布式训练、测试流程。 到目前为止,Distributed Sampler 能够帮助我们分发数据,DistributedDataParallel、hvd.broadcast_parameters 能够帮助我们分发模型,并在框架的支持下解决梯度汇总和参数更新的问...
相关推荐
cover
2025-11-16
DDP启动
下面将对 torchrun 的使用做一个较为详细的介绍,包括命令行参数如何指定,以及在脚本里如何获取分布式相关信息并进行初始化。 torch.distributed.launch 启动器对于单机多卡的情况: 12CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 main.py# nproc_per_node: 这个参数是指你使用这台服务器上面的几张显卡 torchruntorchrun 的基本用法PyTorch 从 1.10 版本开始推荐使用 torchrun 来启动分...
cover
2025-11-16
DP 与 DDP 的优缺点
DP 与 DDP 的优缺点DP 的优势nn.DataParallel没有改变模型的输入输出,因此其他部分的代码不需要做任何更改,非常方便,一行代码即可搞定。 DP 的缺点DP进行分布式多卡训练的方式容易造成负载不均衡,第一块 GPU 显存占用更多,因为输出默认都会被 gather 到第一块 GPU 上,也就是后续的 loss 计算只会在cuda:0上进行,没法并行。 除此之外DP只能在单机上使用,且DP是单进程多线程的实现方式,比DDP多进程多线程的方式会效率低一些。 DDP 的优势1. 每个进程对应一个独立的训练过程,且只对梯度等少量数据进行信息交换。 DDP 在每次迭代中,每个进程具...
cover
2025-11-16
DDP
Distributed Data Parallel,DDP使用 不过通过 DP 进行分布式多卡训练的方式容易造成负载不均衡,有可能第一块 GPU 显存占用更多,因为输出默认都会被 gather 到第一块 GPU 上。为此 Pytorch 也提供了torch.nn.parallel.DistributedDataParallel(DDP)方法来解决这个问题。 针对每个 GPU,启动一个进程,然后这些进程在最开始的时候会保持一致(模型的初始化参数也一致,每个进程拥有自己的优化器),同时在更新模型的时候,梯度传播也是完全一致的,这样就可以保证任何一个 GPU 上面的模型参数就是完全一致的,所...
cover
2025-11-16
并行计算简介
Network partitioning网络结构分布到不同的设备中(Network partitioning),在刚开始做模型并行的时候,这个方案使用的比较多。其中主要的思路是,将一个模型的各个部分拆分,然后将不同的部分放入到 GPU 来做不同任务的计算。其架构如下: 这里遇到的问题就是,不同模型组件在不同的 GPU 上时,GPU 之间的传输就很重要,对于 GPU 之间的通信是一个考验。但是 GPU 的通信在这种密集任务中很难办到,所以这个方式慢慢淡出了视野。 Layer-wise partitioning同一层的任务分布到不同数据中(Layer-wise partitioning)...
cover
2025-11-16
Horovod
Horovod 的优雅实现 Horovod 是 Uber 开源的深度学习工具,它的发展吸取了 Facebook “Training ImageNet In 1 Hour” 与百度 “Ring Allreduce” 的优点,可以无痛与 PyTorch/Tensorflow 等深度学习框架结合,实现并行训练。 在 API 层面,Horovod 和 torch.distributed 十分相似。在 mpirun 的基础上,Horovod 提供了自己封装的 horovodrun 作为启动器。 与 torch.distributed.launch 相似,我们只需要编写一份代码,horo...
cover
2025-11-16
Apex
使用 Apex 再加速 Apex 是 NVIDIA 开源的用于混合精度训练和分布式训练库。Apex 对混合精度训练的过程进行了封装,改两三行配置就可以进行混合精度的训练,从而大幅度降低显存占用,节约运算时间。此外,Apex 也提供了对分布式训练的封装,针对 NVIDIA 的 NCCL 通信库进行了优化。 在混合精度训练上,Apex 的封装十分优雅。直接使用 amp.initialize 包装模型和优化器,apex 就会自动帮助我们管理模型参数和优化器的精度了,根据精度需求不同可以传入其他配置参数。 123from apex import ampmodel, optimizer = am...
avatar
Hongwei Zhao
AI Researcher & Developer
文章
480
标签
104
分类
109
Follow Me
公告
欢迎来到我的博客!这里分享 AI、机器学习和数学。
目录
  1. 1. 参考资料:
最新文章
智能体
智能体2025-11-16
Scaling Law
Scaling Law2025-11-16
temp
temp2025-11-16
ProximalGradientMethod
ProximalGradientMethod2025-11-16
ES6语法
ES6语法2025-11-16
© 2024 - 2026 By Hongwei Zhao