Tensorflow的单机模式是指client、master、worker全部在一台机器的同一个进程中。
而分布式版本则允许client、master、worker在不同机器的不同进程中,同时由集群调度系统统一管理各项任务。
tensorflow中每个work可以管理多个设备,每个设备的name包含硬件类别、编号、任务号(单机版没有)
比如,单机模式
/job:localhost/device:cpu:0
分布式模式
/job:worker/task:17/device:gpu:3
Tensorflow支持的设备包括x86架构CPU、ARM CPU、GPU、TPU(Tensor Processing Unit)
在只有一个硬件设备时,计算图会按照依赖关系被顺序执行。当依赖数为0时,该节点会被加入ready queue等待执行。
从单机单设备的版本改造为单机多设备版本非常容易,比如,从一块GPU训练改为多块GPU训练
for i in range(8):
for d in range(4):
with tf.device("/gpu:%d" % d):
input=x[i] if d is 0 else m[d-1]
m[d],c[d]=LSTMCell(input,mprev[d],cprev[d])
mprev[d]=m[d]
cprev[d]=c[d]