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

分布式训练下的多进程环境

核心就是创建一个包含多个进程的进程组,进程之间可以相互通信

使用torch.distributed 在单机多进程环境中启动多个进程,实现分布式训练。
首先,在单个机器节点上生成两个进程,每个进程通过相同的主机IP地址和端口号进行通信。
然后,设置分布式环境,初始化进程组,旨在允许进程通过共享位置来相互通信。

  1. 导入需要的模块
import os
import torch
import torch.distributed as dist
import torch.multiprocessing as mp
  • os:设置环境变量。
  • torch.distributed:用于分布式通信。
  • torch.multiprocessing:用于多进程启动,与 Python 原生的 multiprocessing 类似,但兼容 CUDA。
  1. 启动多个进程
if __name__ == "__main__":size = 2  # 总进程数(即 world size)processes = []mp.set_start_method("spawn")  # 设置启动方法,推荐使用 "spawn" 以兼容性更好for rank in range(size):p = mp.Process(target=init_process, args=(rank, size, run))  # 为每个 rank 创建一个进程p.start()processes.append(p)for p in processes:p.join()  # 等待所有子进程完成
  • 启动两个子进程(size = 2),每个进程都会执行 init_process
  • 每个进程分配一个唯一的 rank,从 0size-1
  • 设置 spawn 模式更安全,尤其是多平台/多 GPU 情况下。
  1. 初始化进程组
def init_process(rank, size, fn, backend="gloo"):os.environ['MASTER_ADDR'] = "127.0.0.1"      # 主节点 IPos.environ['MASTER_PORT'] = '29500'          # 主节点端口dist.init_process_group(backend, rank=rank, world_size=size)  # 初始化分布式进程组fn(rank, size)  # 执行实际的任务函数
  • 设置通信的主节点地址和端口(因为我们在单机上跑,IP 就用本地地址)。
  • 使用 dist.init_process_group 创建一个通信上下文,这样不同进程之间可以互相通信。
  • 初始化后执行传入的 fn 函数(即 run 函数)。
  1. 定义任务逻辑
def run(rank, size):"""具体要执行的分布式函数"""pass
  • 每个进程在初始化好分布式环境后会执行这里的逻辑。
  • 你可以在这里写 all_reducebroadcastsend/recv 等具体的分布式通信逻辑。
  • rank 是当前进程的编号,size 是总进程数。

简单总结一下:
几点:
创建进程,设置主机地址和端口号,然后初始化进程组

来源于PyTorch文档:https://docs.pytorch.org/tutorials/intermediate/dist_tuto.html#collective-communication

相关文章:

  • 无人机光纤FC接口模块技术分析
  • winform下DevExpress中datagridview中数据批量保存不上
  • 【AI News | 20250604】每日AI进展
  • 【Qt开发】文件
  • VBA中类的解读及应用第二十四讲:把源数据赋给类利用类完成查找
  • 慢SQL调优(二):大表查询
  • Python有哪些经典的常用库?(第一期)
  • 【MySQL】 约束
  • linux系统--iptables实战案例
  • 主流Agent开发平台学习笔记:扣子罗盘coze loop 功能拆解
  • 【LLMs篇】13:LLaDA—大型语言扩散模型
  • Java异步编程难题拆解技术
  • 计算机系统结构-第五章-目录式协议
  • 修复与升级suse linux
  • 1950-2009年咸海测深特征数据
  • leetcode 二叉搜索树中第k小的元素 java
  • 小白初学SpringBoot记录
  • Inno Setup 脚本中常用术语释义
  • 一站式直播工具:助力内容创作者高效开启直播新时代
  • SQL语法
  • 一个网站绑定两个域名/优化提升
  • 黑龙江网站建设公司/我是新手如何做电商
  • 网站开发行业代码/seo是什么意思的缩写
  • 80后陈某做盗版视频网站/搜索推广开户
  • 给别人做网站别人违法经营/百度公司招聘条件
  • 如何搭建一个公司网站/福州搜索引擎优化公司