accelerate 的一个tip:early stopping 处可能存在的bug

  • 在分布式训练中进行提前停止时,如果每个进程都有特定的停止条件(例如验证损失),这可能不会在所有进程中同步。
    • 因此,可能在进程 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值