【深度学习-基础知识】单机多卡和多机多卡训练

1. 单机多卡训练(Single Machine, Multi-GPU)

概念

  • 在同一台服务器上,有多块 GPU。
  • 一个训练任务利用所有 GPU 并行加速训练。
  • 数据集存放在本地硬盘或共享存储上。

核心原理

  1. 数据并行(Data Parallelism)

    • 将一个 batch 划分成多个 mini-batch,每块 GPU 处理一个 mini-batch。
    • 每个 GPU 都有完整的模型副本。
    • 前向计算在各自 GPU 独立进行。
    • 反向传播结束后,通过 梯度同步 (All-Reduce)聚合梯度,再更新模型参数。
      • All-Reduce: 梯度求和取平均 + 同步更新,这样保证梯度是基于全局 batch 的估计
  2. 梯度同步方式

    • PyTorch 的 DistributedDataParallel(DDP) 或 TensorFlow 的 MirroredStrategy 都使用 NCCL(NVIDIA Collective Communication Library)在 GPU 间高速同步。
      • 多GPU训练中,不同GPU需要频繁交换数据(如梯度)。如果直接用通用通信方式(比如通过CPU或普通网络库),效率极低。
      • NCCL(NVIDIA Collective Communications Library, NVIDIA 集合通信库)多GPU和多节点环境优化的通信库。
    • 由于在同一台机器,带宽高、延迟低,通信成本较低。

优缺点

  • 优点

    • 实现简单,通信效率高。
    • 训练速度明显提升。
  • 缺点

    • 受限于单机 GPU 数量和显存大小。
    • 数据量非常大时无法容纳。

实现要点

  • 使用 torch.nn.DataParallel(老方法)或 torch.nn.parallel.DistributedDataParallel(推荐)。
  • Batch size 可以拆分到每张 GPU。
  • 注意随机种子和数据划分,保证每个 GPU 数据不同。

2. 多机多卡训练(Multi-Machine, Multi-GPU)

概念

  • 训练任务跨多台服务器,每台服务器有多块 GPU。
  • 每台机器称为 Node ,每块 GPU 称为 Rank
  • 适合大规模数据集或模型,单机无法容纳。

核心原理

  1. 分布式数据并行(Distributed Data Parallel, DDP)

    • 每个 GPU 依然保留完整模型副本。
    • 每个 GPU 处理自己分配的 mini-batch。
    • 梯度通过 All-Reduce 在所有 GPU 间同步,包括跨机通信。
      • AllReduce 的设计就是 每个 GPU 都计算自己负责的部分,然后通过网络传递累加,最终所有 GPU 得到相同结果。
  2. 通信机制

    • 跨机通信通常通过高速网络(InfiniBand 或 10/25/100GbE)进行。
    • 需要指定 Master Node IP 和端口,其他节点通过 NCCL 或 Gloo 与 Master 节点通信。
    • 训练框架(如 PyTorch DDP、Horovod)负责梯度同步。
  3. 梯度同步策略

    • 每次反向传播完成后,将梯度在所有 GPU 汇总并平均,然后更新模型。
    • 可使用 梯度压缩 / 分层同步 优化跨机通信开销。

优缺点

  • 优点

    • 可以训练超大模型或超大数据集。
    • 扩展性好,GPU 数量理论上无限。
  • 缺点

    • 实现复杂,需要网络配置和多机同步。
    • 跨机通信延迟高,成为训练瓶颈。
    • 出错排查困难(网络、节点故障、不同版本依赖)。

实现要点

  • 确定每个 GPU 的 global rank(全局编号)。
  • 配置 MASTER_ADDRMASTER_PORT
  • 使用 torch.distributed.launchtorchrun 启动训练。
  • 注意 Batch size 调整(全局 batch = 每 GPU batch × GPU 数 × 节点数)。
  • 数据集划分需要确保不同节点不重复读取。

3. 核心区别总结

维度 单机多卡 多机多卡
训练范围 一台机器 多台机器
GPU 通信 同机高速互连(PCIe/NVLink) 网络跨机(Ethernet/InfiniBand)
实现复杂度 高,需要网络配置
扩展性 受限于单机 GPU 数量 高,可扩展到上百 GPU
通信开销 高,可能成为瓶颈
框架示例 PyTorch DDP、MirroredStrategy PyTorch DDP、Horovod
相关推荐
aneasystone本尊3 分钟前
再学 Coze Studio 的智能体执行逻辑
人工智能
xuanwuziyou6 分钟前
LangChain 多任务应用开发
人工智能·langchain
新智元26 分钟前
一句话,性能暴涨 49%!马里兰 MIT 等力作:Prompt 才是大模型终极武器
人工智能·openai
猫头虎33 分钟前
猫头虎AI分享|一款Coze、Dify类开源AI应用超级智能体Agent快速构建工具:FastbuildAI
人工智能·开源·github·aigc·ai编程·ai写作·ai-native
新智元1 小时前
AI 版华尔街之狼!o3-mini 靠「神之押注」狂赚 9 倍,DeepSeek R1 最特立独行
人工智能·openai
天下弈星~1 小时前
GANs生成对抗网络生成手写数字的Pytorch实现
人工智能·pytorch·深度学习·神经网络·生成对抗网络·gans
重启的码农1 小时前
ggml介绍 (8) 图分配器 (ggml_gallocr)
c++·人工智能·神经网络
重启的码农1 小时前
ggml介绍 (9) 后端调度器 (ggml_backend_sched)
c++·人工智能·神经网络
aneasystone本尊1 小时前
学习 Coze Studio 的智能体执行逻辑
人工智能
盏灯1 小时前
Trae SOLO 游戏 —— 🐾🐱🐾猫咪追蝌蚪🐸
人工智能·trae