1.概述
TensorFlow分布式是基于GRPC库实现的高性能集群训练框架,能有效的利用多机多卡资源,将大型的模型或者代码拆分到各个节点分别完成,从而实现高速的模型训练。
如下图所示,tensorflow的分布式集群中存在的节点主要有两种:ps节点和worker节点,ps节点是用于保存和计算训练参数的节点;worker节点是用于训练的节点。由于ps和worker节点都有可能存在多个,因此ps和worker会各存在一个master节点来统筹计算结果。
TensorFlow的分布式场景主要分成单机多卡和多机多卡两种场景,在这两种场景下,使用的方法和代码模型的结构是完全不同的,后续会详细说明。
TensorFlow的分布式是一种并行训练的训练结构,目前有两种并行方式:
1)图并行
图并行是指将一个大型的模型拆分成若干独立的小结构分别部署到不同的节点上,这样的优点是可以在不同的节点同时运行一张图中不同的部分,效率较高。但是其缺点也是非常明显的:如果两个部分存在复杂的逻辑先后关系,则在部署集群时是必须要考虑节点间的逻辑关系,从而对于部署集群造成了很大的技术困难,如果图较为简单,这种方式并不推荐。
2)数据并行<