源码属性

授权 开源
大小 1.51MB
语言 Python

源码简介

Horovod是针对TensorFlow,Keras,PyTorch和Apache MXNet的分布式深度学习培训框架。Horovod的目标是使分布式深度学习快速且易于使用。

Horovod由LF AI和数据基金会(LF AI&Data)托管。如果您是一家致力于在人工智能,机器和深度学习中使用开源技术的公司,并希望在这些领域中支持开源项目的社区,请考虑加入LF AI和数据基金会。有关谁参与以及Horovod如何扮演角色的详细信息,请阅读Linux Foundation公告。

安装

要安装Horovod:
1、安装CMake
2、如果您已从PyPI安装TensorFlow ,请确保已安装g++-4.8.5或g++-4.9或更高版本。
如果您已从PyPI安装了PyTorch ,请确保已安装g++-4.9或更高版本。
如果您已经从Conda安装了任何一个软件包,请确保gxx_linux-64已安装Conda软件包。
3、安装horovodpip包。
要在CPU上运行:

$ pip install horovod

要在具有NCCL的GPU上运行:
$ HOROVOD_GPU_OPERATIONS = NCCL点安装horovod

$ HOROVOD_GPU_OPERATIONS=NCCL pip install horovod

用法

要使用Horovod,请在程序中添加以下内容:
1、运行hvd.init()以初始化Horovod。
2、将每个GPU固定到一个进程,以避免资源争用。
通常每个进程设置一个GPU,将其设置为local rank。服务器上的第一个进程将被分配第一个GPU,第二个进程将被分配第二个GPU,依此类推。
3、通过工人人数来衡量学习率。
同步分布式培训中的有效批处理规模是根据工人人数来衡量的。学习率的提高弥补了批量大小的增加。
4、将优化器包装在中hvd.DistributedOptimizer。
分布式优化器将梯度计算委托给原始优化器,使用allreduce或allgather对梯度求平均,然后应用这些平均梯度。
5、将等级0的初始变量状态广播到所有其他进程。
当使用随机权重开始训练或从检查点恢复训练时,这是确保所有工人进行一致初始化的必要步骤。
6、修改您的代码以仅在工作程序0上保存检查点,以防止其他工作程序破坏它们。

使用TensorFlow v1的示例(有关完整的培训示例,请参阅示例目录):

import tensorflow as tf
import horovod.tensorflow as hvd


# Initialize Horovod
hvd.init()

# Pin GPU to be used to process local rank (one GPU per process)
config = tf.ConfigProto()
config.gpu_options.visible_device_list = str(hvd.local_rank())

# Build model...
loss = ...
opt = tf.train.AdagradOptimizer(0.01 * hvd.size())

# Add Horovod Distributed Optimizer
opt = hvd.DistributedOptimizer(opt)

# Add hook to broadcast variables from rank 0 to all other processes during
# initialization.
hooks = [hvd.BroadcastGlobalVariablesHook(0)]

# Make training operation
train_op = opt.minimize(loss)

# Save checkpoints only on worker 0 to prevent other workers from corrupting them.
checkpoint_dir = \'/tmp/train_logs\' if hvd.rank() == 0 else None

# The MonitoredTrainingSession takes care of session initialization,
# restoring from a checkpoint, saving to a checkpoint, and closing when done
# or an error occurs.
with tf.train.MonitoredTrainingSession(checkpoint_dir=checkpoint_dir,
                                       config=config,
                                       hooks=hooks) as mon_sess:
  while not mon_sess.should_stop():
    # Perform synchronous training.
    mon_sess.run(train_op)

运行Horovod

下面的示例命令显示了如何运行分布式训练。有关更多详细信息,请参见Run Horovod,包括RoCE / InfiniBand调整和处理挂起的技巧。
1、要在具有4个GPU的计算机上运行:

$ horovodrun -np 4 -H localhost:4 python train.py

2、要在具有4个GPU的4台计算机上运行:

$ horovodrun -np 16 -H server1:4,server2:4,server3:4,server4:4 python train.py

3、要在不使用horovodrun包装的情况下使用Open MPI运行,请参阅使用Open MPI运行Horovod。
4、要在Docker中运行,请参阅Docker中的Horovod。
5、要在Kubernetes中运行,MPI运算符,Helm Chart,FfDL和Polyaxon。
6、要在Spark上运行。
7、要在Ray上运行。
8、在Singularity运行
9、要在LSF HPC集群(例如Summit)中运行

下载声明:
  • 本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压;
  • 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。
  • 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版!
  • 版权声明:
  • 下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。
  • 免责声明:
  • 您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!