1)我已经看到,除非另有说明,否则simple_placer.cc中的子图放在任务0上(映射到设备0),但在此之前,它会发生图分区。那么,如果在这个操作之后我们有两个子图,那么它们将被映射到不同的任务/设备?
2)考虑到分布式执行,是否有办法为模型并行性设置自动设备,还是我必须手动设置?从广义上讲,不仅是模型并行性,还有自动任务并行性?
答案 0 :(得分:2)
关于该领域最新研究的一些好假期阅读:
答案 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)关于模型并行性,程序员应该自己声明。 自动数据并行性似乎更容易。但我也很好奇如何划分模型以实现模型并行性的好处。