若要使用horovod,需要对源程序做些许改动:

  • 运行hvd.init()

  • 通过config.gpu_options.visible_device_list查看进程使用的服务器GPU,通常每个进程都有一个GPU,它被设置为local rank。服务端的第一个进程被划分到第一个GPU,而第二个进程划分到第二个GPU。

  • 通过worker数量扩展learning rate

  • 将optimizier包装到hvd.DistributedOptimizer

  • hvd.BroadcastGlobalVariablesHook(0) 保证所有worker初始化一致

  • 修改代码将checkpoints值保存到worker0,防止其他worker毁坏它

results matching ""

    No results matching ""