Skip to content

执行过程

在使用分布式训练系统时,管理进程在 GPU 上的执行方式和时间非常重要。有些进程完成得比其他进程快,有些进程在其他进程未完成之前不应开始。Accelerate 提供了工具来协调进程的执行时间,以确保所有设备之间的同步。

本教程将教你如何仅在一个机器上执行进程,以及如何延迟执行直到所有进程都达到某个特定点。

在一个进程中执行

某些代码只需要在一个给定的机器上运行一次,例如打印日志语句或仅在本地主进程中显示一个进度条。

你也可以指示 Accelerate 在 所有进程 上仅执行一次代码,无论机器数量如何。这在你将最终模型上传到 Hub 时非常有用。

在特定进程上执行

Accelerate 还可以帮助你在特定进程或本地进程索引上执行函数。

延迟执行

当你在同一时间在多个 GPU 上运行脚本时,某些代码可能会比其他代码执行得更快。你可能需要等待所有进程到达某个特定点之后,再执行下一组指令。例如,在确保每个进程都完成训练之前,你不应该保存模型。

为此,可以在代码中添加 [~Accelerator.wait_for_everyone]。这会阻止最先完成的进程继续执行,直到所有剩余进程都到达同一位置(如果你在单个 GPU 或 CPU 上运行,则此操作无效)。

py
accelerator.wait_for_everyone()