分布式日志是指在分布式系统中,多个节点(如多台机器或多个 GPU)协同工作时,对系统运行状态、错误信息、性能指标等进行记录的过程。在 多 GPU/分布式训练 环境下,多个进程会同时运行,普通的 print()
或 logging
可能会在所有 GPU 上重复输出,导致日志混乱。PyTorch Lightning 提供了一些 分布式日志控制工具,确保日志仅在 rank 0 进程打印,防止重复输出。
lightning_utilities.core.rank_zero
是 PyTorch Lightning 提供的 多 GPU 分布式日志控制工具。它主要用于 控制日志打印行为,确保 仅 rank 0 进程 记录日志,避免重复输出。
1. 为什么需要多 GPU 分布式日志控制?
在 DDP (Distributed Data Parallel) 训练模式下,每个 GPU 运行自己的进程,例如:
CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py
这样会启动 4 个进程(rank 0, 1, 2, 3),如果你使用:
print("Training started!")
你会在 每个 GPU 终端 看到 4 次重复输出