tensorflow使用horovod进行多gpu训练(代码片段)

ywheunji ywheunji     2023-04-19     188

关键词:

tensorflow使用horovod多gpu训练

要使用Horovod,在程序中添加以下内容。此示例使用TensorFlow。

  1. 运行hvd.init()

 

  1. 使用固定服务器GPU,以供此过程使用config.gpu_options.visible_device_list

    通过每个进程一个GPU的典型设置,您可以将其设置为local rank在这种情况下,服务器上的第一个进程将被分配第一GPU,第二个进程将被分配第二GPU,依此类推。

 

  1. 通过工人人数来衡量学习率

    同步分布式培训中的有效批处理规模是根据工人人数来衡量的。学习率的提高弥补了批量大小的增加。

 

  1. 将优化器包装在中hvd.DistributedOptimizer

    分布式优化器将梯度计算委派给原始优化器,使用allreduceallgather对梯度平均,然后应用这些平均梯度。

 

  1. 添加hvd.BroadcastGlobalVariablesHook(0)到播放初始变量状态从0级到所有其他进程

    当使用随机权重开始训练或从检查点恢复训练时,这是确保所有工人进行一致初始化的必要步骤。另外,如果您不使用MonitoredTrainingSession,则可以hvd.broadcast_global_variables在初始化全局变量之后执行op。

 

  1. 修改您的代码以仅在工作程序0上保存检查点,以防止其他工作程序破坏它们

    通过传递checkpoint_dir=Nonetf.train.MonitoredTrainingSessionif 完成此操作hvd.rank() != 0

简单示例代码

 1 import tensorflow as tf
 2 import horovod.tensorflow as hvd
 3 
 4 
 5 # Initialize Horovod
 6 hvd.init()
 7 
 8 # Pin GPU to be used to process local rank (one GPU per process)
 9 config = tf.ConfigProto()
10 config.gpu_options.visible_device_list = str(hvd.local_rank())
11 
12 # Build model...
13 loss = ...
14 opt = tf.train.AdagradOptimizer(0.01 * hvd.size())
15 
16 # Add Horovod Distributed Optimizer
17 opt = hvd.DistributedOptimizer(opt)
18 
19 # Add hook to broadcast variables from rank 0 to all other processes during
20 # initialization.
21 hooks = [hvd.BroadcastGlobalVariablesHook(0)]
22 
23 # Make training operation
24 train_op = opt.minimize(loss)
25 
26 # Save checkpoints only on worker 0 to prevent other workers from corrupting them.
27 checkpoint_dir = /tmp/train_logs if hvd.rank() == 0 else None
28 
29 # The MonitoredTrainingSession takes care of session initialization,
30 # restoring from a checkpoint, saving to a checkpoint, and closing when done
31 # or an error occurs.
32 with tf.train.MonitoredTrainingSession(checkpoint_dir=checkpoint_dir,
33                                        config=config,
34                                        hooks=hooks) as mon_sess:
35   while not mon_sess.should_stop():
36     # Perform synchronous training.
37     mon_sess.run(train_op)

 

具有推理功能的 TensorFlow + Keras 多 GPU 模型

】具有推理功能的TensorFlow+Keras多GPU模型【英文标题】:TensorFlow+Kerasmultigpumodelwithinference【发布时间】:2019-10-1201:16:46【问题描述】:我正在尝试使用以code为模型的Keras的Xception模型进行图像分类。但是我想使用多个GPU来使用这个... 查看详情

Tensorflow镜像策略和Horovod分布策略

】Tensorflow镜像策略和Horovod分布策略【英文标题】:TensorflowMirrorStrategyandHorovodDistributionStrategy【发布时间】:2019-07-2705:44:54【问题描述】:我正在尝试了解Tensorflow镜像策略和Horovod分布策略之间的基本区别。从文档和源代码调查... 查看详情

Tensorflow 如何使用多个 GPU 进行单独训练?

】Tensorflow如何使用多个GPU进行单独训练?【英文标题】:HowtousemultipleGPUsforseparatetrainingwithTensorflow?【发布时间】:2021-04-2412:09:40【问题描述】:我浏览了许多关于在TensorFlow中使用多个GPU的文章和帖子。它在“如何使用并行GPU训... 查看详情

tensorflow在使用模型的时候,怎么利用多gpu来提高运算速度

参考技术A基本使用使用TensorFlow,你必须明白TensorFlow:使用图(graph)来表示计算任务.在被称之为会话(Session)的上下文(context)中执行图本回答被提问者采纳 查看详情

深度学习tensorflow如何使用多gpu并行模式?

TensorFlow可以用单个GPU,加速深度学习模型的训练过程,但要利用更多的GPU或者机器,需要了解如何并行化地训练深度学习模型。常用的并行化深度学习模型训练方式有两种:同步模式和异步模式。下面将介绍这两种模式的工作... 查看详情

Tensorflow - 多 GPU 不适用于模型(输入),也不适用于计算梯度

】Tensorflow-多GPU不适用于模型(输入),也不适用于计算梯度【英文标题】:Tensorflow-Multi-GPUdoesn’tworkformodel(inputs)norwhencomputingthegradients【发布时间】:2021-09-1720:25:55【问题描述】:当使用多个GPU对模型执行推理(例如调用方法... 查看详情

tensorflow分布式部署单机多卡(代码片段)

让TensorFlow飞一会儿面对大型的深度神经网络训练工程,训练的时间非常重要。训练的时间长短依赖于计算处理器也就是GPU,然而单个GPU的计算能力有限,利用多个GPU进行分布式部署,同时完成一个训练任务是一个很好的办法。... 查看详情

分布式tensorflow

分布式TensorflowTensorflow的一个特色就是分布式计算。分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(googleremoteprocedurecall),是一个高性能、跨平台的RPC框架。RPC协议,即远程过程调用协议,是指... 查看详情

TensorFlow 多 GPU InvalidArgumentError:cifar10_multi_gpu.py

】TensorFlow多GPUInvalidArgumentError:cifar10_multi_gpu.py【英文标题】:TensorFlowmulti-GPUInvalidArgumentError:cifar10_multi_gpu.py【发布时间】:2018-01-2017:54:10【问题描述】:我尝试使用多GPU训练我的模型。所以我运行cifar10_multi_gpu.py(https://github.com/... 查看详情

/horovod/tensorflow/mpilib.so:error:symbollookuperror:undefinedsymbol

 执行ldd`find/usr/local/lib/python2.7/dist-packages/|grephorovod/tensorflow/mpi_lib.so`显示#ldd`find/usr/local/lib/python2.7/dist-packages/|grephorovod/tensorflow/mpi_lib.so`linux-vdso.so.1=>(0x00 查看详情

在 LSTM 网络的输入上使用 Masking 时,Keras(TensorFlow 后端)多 GPU 模型(4gpus)失败

】在LSTM网络的输入上使用Masking时,Keras(TensorFlow后端)多GPU模型(4gpus)失败【英文标题】:Keras(TensorFlowbackend)multi-gpumodel(4gpus)isfailingwhenusingMaskingoninputofLSTMnetwork【发布时间】:2020-01-0318:02:31【问题描述】:在LSTM中屏蔽输入层... 查看详情

如何让 TensorFlow 使用 100% 的 GPU?

】如何让TensorFlow使用100%的GPU?【英文标题】:HowtomakeTensorFlowuse100%ofGPU?【发布时间】:2020-02-2817:53:46【问题描述】:我有一台配备RTX2060GPU的笔记本电脑,我正在使用Keras和TF2在其上训练LSTM。我还在监控nvidia-smi的gpu使用情况,我... 查看详情

如何在 Tensorflow 2.0 + Keras 中进行并行 GPU 推理?

】如何在Tensorflow2.0+Keras中进行并行GPU推理?【英文标题】:HowtodoparallelGPUinferencinginTensorflow2.0+Keras?【发布时间】:2020-03-1523:49:56【问题描述】:让我们从我刚开始接触TensorFlow和一般深度学习的前提开始。我有使用tf.Model.train()、... 查看详情

如何使用 TensorFlow GPU?

】如何使用TensorFlowGPU?【英文标题】:HowdoIuseTensorFlowGPU?【发布时间】:2018-12-2018:10:04【问题描述】:如何在Python3.6x64中使用TensorFlowGPU版本而不是CPU版本?importtensorflowastfPython正在使用我的CPU进行计算。我可以注意到它,因为我... 查看详情

如何使用 tensorflow 在 keras 中禁用 GPU?

】如何使用tensorflow在keras中禁用GPU?【英文标题】:HowtodisableGPUinkeraswithtensorflow?【发布时间】:2017-08-2114:05:05【问题描述】:我想比较使用和不使用gpu的代码的处理时间。我的keras后端是Tensorflow。所以它会自动使用GPU。我使用ke... 查看详情

tensorflow-gpu环境配置之四——配置和编译tensorflow

首先,使用configure进行配置配置完成后,使用bazel编译retrain命令,编译命令中加入--config=cuda即为启用GPU编译进行中。。。编译完成编译完成后,调用retrain命令训练时,会显示显卡信息 查看详情

使用腾讯云gpu学习深度学习系列之二:tensorflow简明原理

...腾讯云GPU学习深度学习》系列文章的第二篇,主要介绍了Tensorflow的原理,以及如何用最简单的Python代码进行功能实现。本系列文章主要介绍如何使用 腾讯云GPU服务器 进行深度学习运算 查看详情

windows10下nvidiageforcemx150tensorflow-gpu配置(代码片段)

引言越来越多的的人入坑机器学习,深度学习,tensorflow作为目前十分流行又强大的一个框架,自然会有越来越多的新人(我也刚入门)准备使用,一般装的都是CPU版的tensorflow,然而使用GPU跑tensorflow,速度可以快上好几倍。正好... 查看详情