使用示例:

python -m torch.distributed.launch \
	   --nproc_per_node=8 \
	   --master_port=29501 \
	   --use_env \
	   train_chat_ds.py
torch.distributed.runtorchrun

torch.distributed.run是pytorch用于分布式训练启动和管理的模块,torchrun命令等同于调用python -m torch.distributed.run。可用于单节点分布式训练,其中每个节点可启动一个或多个进程;也可用于多节点分布式训练,每个节点同样可以启动一个或多个进程

  1. 功能概览:
    • 分布式训练启动:自动在单节点或多节点上启动指定数量的worker进程(训练进程),并完成分布式环境的初始化(如通信地址、端口配置等)
    • 容错与故障恢复:当worker进程故障时,可自动重启所有worker,避免单进程故障导致整个训练中断(?)
    • 自动分配分布式标识:自动为每个worker分配RANK(全局序号)、WORLD_SIZE(总worker数)、LOCAL_RANK(节点内序号)等标识
    • 节点弹性伸缩:支持节点数量在--nnodes指定的最小和最大范围内动态变化(如从2节点扩展到4节点),适应资源动态调整场景
    • 自动向训练脚本注入分布式必需的环境变量(如MASTER_ADDRWORLD_SIZE等),简化脚本中分布式初始化逻辑
  2. 功能–参数细览
    • 节点/worker数量相关参数:用于控制分布式规模
      • --nnodes:节点数量范围,格式为“<最小节点数>:<最大节点数>”。如1:4支持1~4节点弹性伸缩;2表示固定两节点。默认值1:1
      • --nproc-per-node:每个节点启动的worker数量,默认值1,支持如下值:
        • --nproc-per-node auto:自动根据GPU数量分配
        • --nproc-per-node cpu/gpu:按CPU/GPU数量分配
        • --nproc-per-node 8:固定数量
    • Rendezvous相关参数(节点协调机制):是多节点间同步身份、确定分布式拓扑的机制。类似于节点握手机制
      • --standalone:表示单节点模式,适合单节点多worker场景(自动分配空闲端口)
      • (下面都是多节点相关的参数了:)
      • --rdzv-backend:指定节点间通信的协议。默认值static(含义待商榷),支持如下值:
        • --rdzv-backend c10d:基于pytorch的c10d库
        • --rdzv-backend etcd-v2:基于etcd分布式存储
      • --endpoint:协调后端的地址(?),格式“<host>:<port>”。
      • --rdzv-id:任务唯一表示(类似job id),多节点需使用相同ID才能加入同一分布式任务
      • --rdzv-conf:协调后端的额外配置(如超时时间)
    • 用户代码启动相关参数(控制训练脚本执行)
      • --max-restarts:允许的最大worker重启次数(容错能力),默认值0
      • --monitor-interval:监控worker状态的间隔时间(秒),默认值0.1
      • --start-method:创建worker的多进程启动方式,可选spawn(跨平台安全)、fork(快但可能不稳定)、forkserver(折中)。默认值spawn
      • --role:worker的角色标识(如“trainer”、“evaluator”),通过ROLE_RANK环境变量传递给脚本
      • -m/--module:将训练脚本作为Python模块执行,如torchrun -m mymodle.train
      • --no-python:直接执行训练脚本,用于非python脚本(如shell)
      • --run-path:在当前解释器中通过runpy.run_path执行脚本(需脚本绝对路径),避免启动新python进程
      • --log-dir:日志文件存储目录,自动创建以rdzv_id为前缀的子目录区分任务
      • -r/--redirects:重定向worker的标准输出/错误到日志文件。如0:1表示本地rank0重定向stdout,rank1重定向stderr
      • -t/--tee:同时将输出写入日志文件和控制台
      • --local-ranks-filter:仅在控制台显示指定本地rank的日志(如0,1只显示rank0和rank1的输出),不影响日志文件
    • 向后兼容参数(兼容旧版torch.distributed.launch):
      • --node-rank:(多节点时)节点的全局序号
      • --master-addr:主节点的IP地址,主节点用于协调多节点的分布式训练过程(原话:Address of the master node (rank 0) that only used for static rendezvous)
      • --master-port:主节点的通信端口(需确保端口未被占用),主节点使用指定端口和其他节点通信(原话:Port on the master node (rank 0) to be used for communication during distributed training. It is only used for static rendezvous)
      • --local-addr:本地节点的地址,默认自动获取本机FQDN
  3. 功能–环境变量细览
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐