若要使用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毁坏它