我知道在训练DNN时,使用多GPU的常用方法是拆分数据集并将每个划分的数据集分配给每个GPU。
但是,有没有办法使用多个GPU来更快地计算未分割的整个数据集?我的意思是当GPU用于训练网络时,矩阵乘法在单个GPU内并行化。通过一次使用多个GPU,我可以更快地进行矩阵乘法吗?
例如,我只有一张数据集图片。因为我没有用于分割和分发到多个GPU的多个图片,所以我想利用所有GPU来为这一个图片计算做出贡献。
Tensorflow有可能吗?我在互联网上搜索过,但一无所获,因为这是非常罕见的情况。
答案 0 :(得分:0)
您正在尝试执行model parallelism之类的操作。在tensorflow中这样做有点hacky。
将matmul与两张GPU卡并行化的一种方法。 mov bh, 0 ;Display page
,A X B = C
是形状为A,B,C
,(m,k)
,(k,n)
的矩阵。
你可以:
将(m,n)
分割为A
和A1
,形状为A2
。
将(m/2, k), (m/2, k)
放在GPU1上,将A1
放在A2
上。
将GPU2
复制到两个GPU。
同时计算B
和A1 X B = C1
。
连接A2 X B = C2
和C1
以获取C2
。
Tensorflow提供split,concanate之类的运算符,因为B应该在两个gpu上复制,你可以将B放在parameter server上。