torch-distributed-training

  1. 需求
  2. tensorboard
  3. uv
  4. 分布式训练
    1. NCCL 与 GLOO
  5. torchrun 分布式训练
  6. 实验总结与感悟

需求

很好奇如何实现多机单卡实现分布式训练

刚好在Azure上申请了两台Tesla T4 VM来做个分布式训练的实验

  • 项目的源码在:

Akabane71/torch_ds_train: this is a learn project for leaning ds training

tensorboard

  1. 使用 tensorboard 来 可视化训练结果
tensorboard --logdir=./runs --reload_interval=5

参数说明:

–logdir=./runs:你训练脚本中设置的日志保存目录(可以修改成其他路径)
–reload_interval=5:每 5 秒自动刷新一次日志文件

uv

  1. uv 下载包
uv pip sync requirements.txt

分布式训练

  1. 启动分布式训练脚本 【传统】
    分布式训练的模式:

    # master 节点
    $env:MASTER_ADDR="10.0.0.6"
    $env:MASTER_PORT="29505"
    $env:RANK="1"
    $env:WORLD_SIZE="2"
    python train_dis.py
    
    # worker 节点
    $env:MASTER_ADDR="10.0.0.5"
    $env:MASTER_PORT="29500"
    $env:RANK="1"
    $env:WORLD_SIZE="2"
    python train_dis.py
    

使用场景为 多台机器,每台单张gpu

NCCL 与 GLOO

NCCL:
由 NVIDIA 开发,专为 GPU 间高效通信设计。
只支持 Linux 和 NVIDIA GPU。
性能高,适合大规模多卡/多机训练。
支持 AllReduce、Broadcast 等操作。

GLOO:
由 Facebook 开发,支持 CPU 和部分 GPU。
支持 Linux、Windows、macOS。
性能较 NCCL 低,适合 CPU 或小规模训练。
更通用,兼容性好。

torchrun 分布式训练

  1. torchrun 分布式训练的模式 【torchrun】
    torchrun 只能在Linux机器上使用
  • master

image-20250717210305024

  • node 1

image-20250717210318057

  • nvtop

image-20250717210529862

batchsize没微调,但速度很顶

实验总结与感悟

  1. 手动配置两台服务器很累,用脚本自动化解决会更简单

  2. 这只是简单的多机单卡模式,要是切换成多机多卡,要怎么维持?

github