Tensorflow 将Keras/TF/PyTorch层指定给硬件类型
假设我们有以下体系结构:Tensorflow 将Keras/TF/PyTorch层指定给硬件类型,tensorflow,keras,deep-learning,pytorch,Tensorflow,Keras,Deep Learning,Pytorch,假设我们有以下体系结构: 多个CNN层 RNN层 (时间分布)密集分类层 我们现在要训练这个架构。我们奇特的GPU在解决CNN层方面非常快。虽然使用较低的时钟速率,但它可以并行执行许多卷积,从而提高速度。然而,对于(非常长的)结果时间序列,我们奇特的CPU速度更快,因为时间步长不能并行化,并且处理得益于更高的CPU时钟速率。因此(据推测)执行的明智想法如下所示: 多个CNN层(在GPU上运行) RNN层(在CPU上运行) (时间分布)密集分类层(在GPU/CPU上运行) 这就引出了两个重要问题:
如果可能的话,额外内存操作的开销,例如GPU-/CPU-RAM之间的传输,会不会使整个想法变得无用?基本上,在Pytorch中,您可以控制变量/参数所在的设备。另外,您有责任确保每个操作的所有参数都位于同一设备上:即,您不能
conv(x,y)
其中x
位于GPU上而y
位于CPU上
这是通过Pytork的
.to()
方法完成的,该方法将模块/变量.to('cpu')
或.to('cuda:0')
移动到('cuda:0'),正如Shai提到的,您可以在Pytork中自行控制,因此理论上您可以在不同的设备上拥有部分模型。然后,您必须在向前传球的设备之间移动数据
我认为你提到的开销会使性能最差。cuda RNN实现从gpu上运行中获益匪浅:)