如何为torchrun多节点训练的每个进程单独重定向输出与错误日志?
为torchrun多节点训练的每个进程单独配置stdout/stderr文件
torchrun在启动每个训练进程时,会自动为其注入RANK环境变量,这个变量对应进程的全局排名(从0开始递增)。你可以利用这个变量来为每个进程生成单独的输出文件,具体操作如下:
直接修改torchrun启动命令
将你的训练脚本启动逻辑包裹在bash命令中,通过重定向操作把stdout和stderr写入以RANK命名的文件:
torchrun --nnodes=2 --nproc-per-node=8 ... --logdir=/path bash -c 'python your_train_script.py > ${RANK}.out 2> ${RANK}.err'
如果希望把日志文件统一放到指定的--logdir目录下,只需修改重定向的路径:
torchrun --nnodes=2 --nproc-per-node=8 ... --logdir=/path bash -c 'python your_train_script.py > /path/${RANK}.out 2> /path/${RANK}.err'
关键说明
> ${RANK}.out:将当前进程的标准输出(stdout)写入到以全局rank命名的.out文件中2> ${RANK}.err:将当前进程的标准错误(stderr)写入到以全局rank命名的.err文件中- 多节点场景下,如果使用共享存储,直接写入指定目录即可;如果是本地存储,需确保每个节点的
/path目录存在且有写入权限,避免日志生成失败。
内容的提问来源于stack exchange,提问作者greenberet123
相关产品推荐
相关产品推荐

