当前位置: 首页 > article >正文

Pytorch分布式训练杂记1

  1. dist.broadcast_object_list

    • 功能:这个函数用于在分布式训练中,将某个进程上的对象列表广播给所有其他进程。它可以确保所有进程在训练开始前或训练过程中共享相同的数据,尤其是在多进程场景中每个进程都需要访问相同的对象时。
    • 用法
      import torch.distributed as dist
      # 假设我们有一个对象列表 obj_list
      obj_list = [some_object]
      # 从 rank 0 广播对象列表给所有其他进程
      dist.broadcast_object_list(obj_list, src=0)
      
      • obj_list:要广播的对象列表。
      • src:源进程的 rank(一般是 0),该进程上的对象会广播给其他进程。
  2. dist.barrier()

    • 功能:这个函数是一个同步机制。它会让所有进程在调用此函数后,必须等待其他进程也到达这个屏障点才能继续执行。通常用于确保所有进程都完成了某些步骤(比如数据加载)后再继续训练,避免进程之间的不同步问题。
    • 用法
      import torch.distributed as dist
      # 阻塞所有进程,直到每个进程都到达这个屏障
      dist.barrier()
      
  3. dist.get_rank()

    • 功能:这个函数返回当前进程的 rank,即进程在分布式训练中的编号。每个进程在初始化时都会被分配一个唯一的 rank,rank 为 0 的进程通常被称为主进程(主节点),负责某些全局操作,比如保存模型。
    • 用法
      import torch.distributed as dist
      # 获取当前进程的 rank
      rank = dist.get_rank()
      print(f"Current rank: {rank}")
      
  4. ddp = int(os.environ.get("RANK", -1)) != -1

    • 功能:这一行代码通过检查环境变量 RANK 来判断当前是否处于分布式环境中。RANK 环境变量在分布式训练中通常由框架自动设置,表示进程的编号。如果 RANK 存在且不是 -1,则表明当前进程正在参与分布式训练。
    • 解释
      import os
      ddp = int(os.environ.get("RANK", -1)) != -1
      if ddp:
          print("We are in a distributed environment.")
      else:
          print("Not in a distributed environment.")
      

    这段代码通过检查 RANK 是否存在(并且不是 -1)来判断是否处于分布式训练模式下,ddp 变量的值为 True 表示是分布式环境,False 表示不是。


http://www.kler.cn/a/354624.html

相关文章:

  • 超完整Docker学习记录,Docker常用命令详解
  • 微信小程序map组件所有markers展示在视野范围内
  • ArrayList和HashMap区别
  • 如何用 ESP32-CAM 做一个实时视频流服务器
  • 生成模型:变分自编码器-VAE
  • esp32开发笔记之一:esp32开发环境搭建vscode+ubuntu
  • DS链式二叉树的基本操作和OJ题(12)
  • mysql数据同步ES方案---DTS
  • 鸿蒙开发 四十四 ArkTs BuilderParam传递UI(二)
  • 开发一个微信小程序要多少钱?
  • Selenium 中定位元素操作集合
  • 面试经典150题刷题记录
  • 代码随想录算法训练营Day28
  • electron-vite_6js-cookie失效
  • react+video:限制快进、倍速、画中画
  • el-table中实现可选表格区域的鼠标事件检测
  • 程序员35+出路何在?
  • 三格电子-Profibus-DP转光纤点对点式【MS-F155-P】
  • springboot+react实现移动端相册(上传图片到oss/ 批量删除/ 查看图片详情等功能)
  • Facebook上的隐私保护:如何加强个人数据的安全性?
  • redis高级数据类型之Geospatial
  • RDK X5/X3 yolov5目标检测从环境搭建到设备集成
  • 深度学习的程序实例
  • MT1331-MT1340 码题集 (c 语言详解)
  • MATLAB垃圾定位和检测识别系统
  • JavaWeb合集-SpringBoot项目配套知识