TensorFlow设备放置算法和图分区

时间:2017-08-31 20:26:33

标签: tensorflow distributed-computing

1)我已经看到,除非另有说明,否则simple_placer.cc中的子图放在任务0上(映射到设备0),但在此之前,它会发生图分区。那么,如果在这个操作之后我们有两个子图,那么它们将被映射到不同的任务/设备?

2)考虑到分布式执行,是否有办法为模型并行性设置自动设备,还是我必须手动设置?从广义上讲,不仅是模型并行性,还有自动任务并行性?

2 个答案:

答案 0 :(得分:2)

关于该领域最新研究的一些好假期阅读:

https://arxiv.org/abs/1706.04972

答案 1 :(得分:0)

(1)是的,如果你在特定设备上明确设置图节点,例如:

with tf.device('/gpu:1'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)

然后{a,b}子图在gpu:1上,{c}子图默认为gpu:0

(2)关于模型并行性,程序员应该自己声明。 自动数据并行性似乎更容易。但我也很好奇如何划分模型以实现模型并行性的好处。