分布式TensorFlow
如果一台计算机上有很多GPU,那么通过GPU并行运算的方式可以得到很好的加速效果。但是一台计算机可携带的GPU毕竟有限,要想进一步提升速度,可以将TensorFlow分布地运行在多台机器上。2016年4月14日,Google发布了分布式TensorFlow。
分布式TensorFlow有一些基本概念,下面对其进行介绍。
(1)task:一个task一般会关联到某个单一的TensorFlow服务端的处理过程,属于一个特定的Job,并且在该Job的任务列表中有唯一的索引,可以将其理解为每台机器上的一个进程。
(2)Job:Job分为ps、worker两种,一个Job包含一系列致力于某个相同目标的task。例如,一个叫ps的Job会处理存储与更新变量相关的工作,而一个叫worker的Job会承载那些用于计算密集型任务的无状态节点。一般来说,一个Job中的task会运行在不同的机器中。
(3)Cluster(集群):一个TensorFlow集群包含一个或者多个TensorFlow服务端,集群被切分为一系列Job,而每个Job又会负责一系列的task。一个集群会专注于一个相对高层的目标,如用多台机器并行地训练一个神经网络。
使用分布式TensorFlow训练深度学习模型有两种方式。第一种是计算图内分布式(In-graph模式),在该模式中,所有的计算任务使用同一个计算图中的变量。第二种是计算图间分布式(Between-graph模式),在该模式下,数据并行,每台机器使用完全相同的计算图,每个计算图都是独立的,但数据同步比较困难。