【发布时间】:2020-04-25 22:04:41
【问题描述】:
TensorFlow 中完全定制的层会自动在 GPU 上运行吗?我注意到在本文档 (https://www.tensorflow.org/guide/keras/rnn#rnn_layers_and_rnn_cells) 中似乎 RNN 包装器不会使用 CudNN?这意味着它不会在 GPU 上运行,对吧?
【问题讨论】:
标签: python tensorflow keras
TensorFlow 中完全定制的层会自动在 GPU 上运行吗?我注意到在本文档 (https://www.tensorflow.org/guide/keras/rnn#rnn_layers_and_rnn_cells) 中似乎 RNN 包装器不会使用 CudNN?这意味着它不会在 GPU 上运行,对吧?
【问题讨论】:
标签: python tensorflow keras
您的自定义层仍将使用 GPU,您可以按照answer 中的说明确认这一点。
虽然自定义层不会使用 cuDNN,但您是对的。为什么这有关系?在 NVidia 之后引用:
cuDNN 为标准例程(例如前向和后向卷积、池化、归一化和激活层)提供高度优化的实现
换句话说,使用这些优化的原语将提高训练的性能。 cuDNN: Efficient Primitives for Deep Learning 论文中提供了一些带有详细解释的示例。以 空间卷积 为例。未优化的实现将使用“幼稚”的方法,而 cuDNN 使用各种技巧来减少操作数量并适当地对它们进行批处理。与经典 CPU 相比,GPU 仍然很快,cuDNN 只是让它更快。有关最新的独立基准,请查看例如this article.
不过,如果 Tensorflow 在 GPU 模式下运行,完整的计算图将在 GPU 上执行(据我所知,甚至没有简单的方法可以取出图的一部分,即中间层,然后放到 CPU 上)。
【讨论】:
with tf.device("cpu"): 强制执行此操作
tf.device 运行图的一部分(中间层)?我知道您可以运行单独的任务/作业,但这些 AFAIK 是独立的图表。