• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PyTorch 分布式训练 (DP/DDP/torchrun/多机多卡) <笔记>

武飞扬头像
xiangyong58
帮助1

1、DataParallel

  1.  
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  2.  
    ### 第一步:构建模型
  3.  
    '''
  4.  
    model 需要分发的模型
  5.  
    device_ids 可分发的gpu,默认分发到所有看见GPU(环境变量设置的)
  6.  
    output_device 结果输出设备 通常设置成逻辑gpu的第一个
  7.  
    '''
  8.  
     
  9.  
    model = nn.DataParallel( model, device_ids=range(args.gpus), output_device=None)
  10.  
     
  11.  
    ### 第二步:数据迁移
  12.  
    inputs=inputs.to(device)
  13.  
    labels=labels.to(device)
  14.  
    #此处的device通常应为模型输出的output_device,否则无法计算loss

2、DistributedDataParallel

  1.  
    #运行方式一:(旧)
  2.  
    python -m torch.distributed.launch \
  3.  
    --nnodes 1 \
  4.  
    --nproc_per_node=4 \
  5.  
    YourScript.py
  6.  
    # nnodes: 表示有多少个节点,可以通俗的理解为有多少台机器
  7.  
    # nproc_per_node 表示每个节点上有多少个进程,每个进程一般独占一块GPU
  8.  
     
  9.  
     
  10.  
    #运行方式二:
  11.  
    torchrun main.py #除了--use_env参数,其他torch.distributed.launch所使用的参数均可使用 #如nnodes、nproc_per_node
  12.  
     
  13.  
    OMP_NUM_THREADS=1 torchrun --nnodes

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgagbie
系列文章
更多 icon
同类精品
更多 icon
继续加载