我一直在我的大学集群上使用Tensorflow 0.9.0的GPU版本。当我提交作业时,它开始运行并输出一条消息,例如:
(说CUDA找到设备的东西......)
I tensorflow / core / common_runtime / gpu / gpu_device.cc:808]创建TensorFlow设备(/ gpu:0) - > (设备:0,名称:GeForce GTX TITAN X,pci总线ID:0000:04:00.0)
然而,在此之后,它并没有开始实际处理任何东西很长一段时间。看起来它只是挂了一段时间...为了记录,我正在使用在https://github.com/tensorflow/models/blob/master/inception/inception/data中格式化的Imagenet数据,并在CPU上创建我的所有队列等,并运行所有变量/操作在GPU上。
我试过没有明确要求CPU / GPU拆分,并允许soft_device_placement做它的事情,但这也导致了同样的挂起。
编辑:还应该提到即使使用原始.JPEG文件(即:不使用上述处理技术),这仍然会发生。所以,我认为这不是一个问题吗?
有没有其他人经历过这种情况,并且无论如何都在那附近?
谢谢。
修改:代码段
AlexNet = ConvNet(G,'AlexNet',k=k,H=H,W=W,D=D)
with tf.device('/gpu:0'):
(assemble AlexNet)
train_step,cross_entropy = AlexNet.getTrainStep(LR)
acc = AlexNet.getAccuracyMetric()
AlexNet.finalizeBuild()
print('file io stuff...')
with tf.device('/cpu:0'):
image_holder = tf.placeholder(tf.float32, shape=[None, H,W,D])
label_holder = tf.placeholder(tf.int32)
if mode == 'local':
label_batch = tf.one_hot(label_holder,k)
elif mode =='sherlock':
label_batch = tf.one_hot(label_holder,k,1,0)
image_batch = tf.mul(image_holder,1)
train_dataset = ImagenetData('train')
val_dataset = ImagenetData('validation')
train_images, train_labels = image_processing.inputs(train_dataset)
val_images, val_labels = image_processing.inputs(val_dataset)
#tf.initialize_all_variables()
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=AlexNet.session,coord=coord)
print('beginning training')
val_accs = []
losses = []
for itt in range(nitt):
print(itt)
...Training routine
答案 0 :(得分:0)
Nvidia驱动程序需要一些时间才能唤醒某些计算机。运行脚本之前,请运行以下命令。
sudo nvidia-persistenced --persistence-mode