加入收藏 | 设为首页 | 会员中心 | 我要投稿 宿州站长网 (https://www.0557zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在多系统和网络拓扑中构建高性能模型?

发布时间:2018-04-09 01:37:15 所属栏目:大数据 来源:站长网
导读:副标题#e# 这个文档和附带的脚本详细介绍了如何构建针对各种系统和网络拓扑的高性能可拓展模型。这个技术在本文档中用了一些低级的 Tensorflow Python 基元。在未来,这些技术将被并入高级 API。 输入管道 性能指南阐述了如何诊断输入管道可能存在的问题及

然而,我们也可以选择 NCCL(tf.contrib.nccl)。NCCL 是英伟达的一个库,可以跨不同的 GPU 实现数据的高效传输和聚合。它在每个 GPU 上分配一个协作内核,这个内核知道如何最好地利用底层硬件拓扑结构,并使用单个 SM 的 GPU。

通过实验证明,尽管 NCCL 通常会加速数据的聚合,但并不一定会加速训练。我们的假设是:隐式副本基本是不耗时的,因为它们本在 GPU 上复制引擎,只要它的延迟可以被主计算本身隐藏起来,那么。虽然 NCCL 可以更快地传输数据,但是它需要一个 SM,并且给底层的 L2 缓存增加了更多的压力。我们的研究结果表明,在 8 个 GPU 的条件下,NCCL 表现出了更优异的性能;但是如果 GPU 更少的情况下,隐式副本通常会有更好的表现。

分段变量

我们进一步介绍一种分段变量模式,我们使用分段区域来进行变量读取和更新。与输入管道中的软件流水线类似,这可以隐藏数据拷贝的延迟。如果计算所花的时间比复制和聚合的时间更长,那么可以认为复制本身是不耗时的。

这种方法的缺点是所有的权重都来自之前的训练步骤,所以这是一个不同于 SGD 的算法,但是通过调整学习率和其他超参数,还是有可能提高收敛性。

脚本的执行

这一节将列出执行主脚本的核心命令行参数和一些基本示例(tf_cnn_benchmarks.py)

注意:tf_cnn_benchmarks.py 使用的配置文件 force_gpu_compatible 是在 Tensorflow 1.1 版本之后引入的,直到 1.2 版本发布才建议从源头建立。

主要的命令行参数

model:使用的模型有 resnet50、inception3、vgg16 和 alexnet。 num_gpus:这里指所用 GPU 的数量。 data_dir:数据处理的路径,如果没有被设置,那么将会使用合成数据。为了使用 Imagenet 数据,可把这些指示 (https://github.com/tensorflow/tensorflow/blob/master/tensorflow_models/inception#getting-started) 作为起点。 batch_size:每个 GPU 的批量大小。 variable_update:管理变量的方法:parameter_server 、replicated、distributed_replicated、independent。 local_parameter_device:作为参数服务器使用的设备:CPU 或者 GPU。

单个实例

分布式命令行参数

1)ps_hosts:在<host>:port 的格式中(比如 10.0.0.2:50000),逗号分隔的主机列表用做参数服务器。

2)worker_hosts:(比如 10.0.0.2:50001),逗号分隔的主机列表用作工作器,在<host>:port 的格式中。

3)task_index:正在启动的 ps_host 或 worker_hosts 列表中的主机索引。

4)job_name:工作的类别,例如 ps 或者 worker。

分布式实例

(编辑:宿州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读