在tensorflow
问题描述:
我知道训练DNN当使用多个GPU的一个数据集在一次而不是分裂的数据集,用通常的方式多GPU是拆分数据集,每个分割数据集分配给每个GPU。在tensorflow
然而,有没有使用多GPU为不可分割的,整个数据集的计算速度更快的方式?我的意思是当GPU用于训练网络时,矩阵乘法在单GPU内并行化。我可以通过一次使用多个GPU来更快地实现矩阵乘法?
例如,我只有一张数据集图片。由于我没有多张图片用于分割并分发到多个GPU,因此我希望利用所有GPU来为此一个图片计算做出贡献。
在Tensorflow中可能吗?我在互联网上搜索,但没有发现,因为这是非常罕见的情况。
答
你试图做类似model parallelism。在tensorflow中做这件事有点难。
使用两个GPU卡并行化matmul的一种方法。 A X B = C
,A,B,C
是形状为(m,k)
,(k,n)
,(m,n)
的矩阵。 您可以:
分裂
A
到A1
和A2
与(m/2, k), (m/2, k)
形状。在GPU1上放置
A1
并在GPU2
上放置A2
。重复
B
到两个GPU。同时计算
A1 X B = C1
和A2 X B = C2
。连接
C1
和C2
得到C
。
Tensorflow这类运营商split,concanate,由于乙方应在两个GPU进行复制,可以将B上的parameter server。