torch.distributed.launch介绍
可用于单节点分布式训练,其中每个节点可启动一个或多个进程;也可用于多节点分布式训练,每个节点同样可以启动一个或多个进程。是pytorch用于分布式训练启动和管理的模块,
·
使用示例:
python -m torch.distributed.launch \
--nproc_per_node=8 \
--master_port=29501 \
--use_env \
train_chat_ds.py
torch.distributed.run和torchrun
torch.distributed.run是pytorch用于分布式训练启动和管理的模块,torchrun命令等同于调用python -m torch.distributed.run。可用于单节点分布式训练,其中每个节点可启动一个或多个进程;也可用于多节点分布式训练,每个节点同样可以启动一个或多个进程
- 功能概览:
- 分布式训练启动:自动在单节点或多节点上启动指定数量的worker进程(训练进程),并完成分布式环境的初始化(如通信地址、端口配置等)
- 容错与故障恢复:当worker进程故障时,可自动重启所有worker,避免单进程故障导致整个训练中断(?)
- 自动分配分布式标识:自动为每个worker分配
RANK(全局序号)、WORLD_SIZE(总worker数)、LOCAL_RANK(节点内序号)等标识 - 节点弹性伸缩:支持节点数量在
--nnodes指定的最小和最大范围内动态变化(如从2节点扩展到4节点),适应资源动态调整场景 - 自动向训练脚本注入分布式必需的环境变量(如
MASTER_ADDR、WORLD_SIZE等),简化脚本中分布式初始化逻辑
- 功能–参数细览
- 节点/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
- 节点/worker数量相关参数:用于控制分布式规模
- 功能–环境变量细览
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)