TensorFlow中的显式CPU布局
我发现官方模型示例中有一段代码让我感到困惑TensorFlow中的显式CPU布局,tensorflow,nlp,gpu,cpu,word-embedding,Tensorflow,Nlp,Gpu,Cpu,Word Embedding,我发现官方模型示例中有一段代码让我感到困惑 with tf.device("/cpu:0"): embedding = tf.get_variable( "embedding", [vocab_size, size], dtype=data_type()) inputs = tf.nn.embedding_lookup(embedding, input_.input_data) 为什么在这里使用tf.device(“/cpu:0”)?除了GPU内存泄漏的情况外,还有其他情况
with tf.device("/cpu:0"):
embedding = tf.get_variable(
"embedding", [vocab_size, size], dtype=data_type())
inputs = tf.nn.embedding_lookup(embedding, input_.input_data)
为什么在这里使用
tf.device(“/cpu:0”)
?除了GPU内存泄漏的情况外,还有其他情况需要明确指定CPU操作吗?将嵌入矩阵放置在CPU上的原因是tf.nn。在GPU上嵌入\u查找
:
因此,考虑到基本word2vec示例绑定到CPU(#514),我们可以
请参阅tf.nn.embedded\u lookup
在GPU上不起作用。因此,老年退休金计划
在内部使用embedded\u lookup
也不支持GPU(例如
例如,nce\u损失
)
这意味着将
嵌入变量的GPU位置只会导致不必要的数据从主内存传输到GPU内存,反之亦然。因此,将变量显式地放置在CPU上会更有效。是否还有其他情况需要tf.device(“/CPU:0”)?是的,例如,如果希望通过将计算拆分到多个GPU来进行图形复制:这就是为什么参数服务器(p)通常位于TensorFlow中的CPU上,使用CPU是因为内存通常比GPU内存大,对吗?听起来很合理,是的。单词嵌入矩阵通常很大,而查找操作非常便宜,所以CPU位置是一个不错的选择。看吧!谢谢,马克西姆。