• 在分布式训练中进行提前停止时,如果每个进程都有特定的停止条件(例如验证损失),这可能不会在所有进程中同步。
    • 因此,可能在进程 0 中发生中断,而进程 1 则不会
    • ——>这将导致代码无限期挂起,直到发生超时。
  • ——>使用set_breakpoint和check_breakpoint来确保进程正确结束
'''
假设 `should_do_breakpoint` 是一个自定义定义的函数,返回一个条件,
而该条件可能只在进程 1 上为真
'''
if should_do_breakpoint(loss):
    accelerator.set_breakpoint()

# 在训练脚本后期需要检查断点时
if accelerator.check_breakpoint():
    break

这样只有进程1上也early stop之后,才会结束accelerate的分布式训练

  • 判断是否在主进程:if accelerator.is_main_process
本站无任何商业行为
个人在线分享 » accelerate 的一个tip:early stopping 处可能存在的bug
E-->