一次为一个数据集使用多个GPU,而不是在张量流中分割数据集

时间:2017-04-16 16:34:14

标签: parallel-processing tensorflow deep-learning gpu

我知道在训练DNN时,使用多GPU的常用方法是拆分数据集并将每个划分的数据集分配给每个GPU。

但是,有没有办法使用多个GPU来更快地计算未分割的整个数据集?我的意思是当GPU用于训练网络时,矩阵乘法在单个GPU内并行化。通过一次使用多个GPU,我可以更快地进行矩阵乘法吗?

例如,我只有一张数据集图片。因为我没有用于分割和分发到多个GPU的多个图片,所以我想利用所有GPU来为这一个图片计算做出贡献。

Tensorflow有可能吗?我在互联网上搜索过,但一无所获,因为这是非常罕见的情况。

1 个答案:

答案 0 :(得分:0)

您正在尝试执行model parallelism之类的操作。在tensorflow中这样做有点hacky。

将matmul与两张GPU卡并行化的一种方法。 mov bh, 0 ;Display page A X B = C是形状为A,B,C(m,k)(k,n)的矩阵。 你可以:

  1. (m,n)分割为AA1,形状为A2

  2. (m/2, k), (m/2, k)放在GPU1上,将A1放在A2上。

  3. GPU2复制到两个GPU。

  4. 同时计算BA1 X B = C1

  5. 连接A2 X B = C2C1以获取C2

  6. Tensorflow提供splitconcanate之类的运算符,因为B应该在两个gpu上复制,你可以将B放在parameter server上。