Tensorflow: a utilização da GPU quase sempre está em 0%

Estou usando o tensorflow com GPUs Titan-X e notei que, quando executo o exemplo CIFAR10, oVolatile GPU-utilization é bastante constante em torno de 30%, enquanto que quando treino meu próprio modelo, oVolatile GPU-utilization está longe de ser estável, é quase sempre 0% e aumenta em 80/90% antes de voltar a 0%, repetidamente.

Eu achava que esse comportamento era devido à maneira como eu alimentava os dados na rede (eu estava buscando os dados após cada etapa, o que levava algum tempo). Mas, depois de implementar uma fila para alimentar os dados e evitar essa latência entre as etapas, o problema persistiu (veja abaixo o sistema de filas).

Qualquer ideia?

batch = 128 # size of the batch
x = tf.placeholder("float32", [None, n_steps, n_input])
y = tf.placeholder("float32", [None, n_classes])

# with a capacity of 100 batches, the bottleneck should not be the data feeding
queue = tf.RandomShuffleQueue(capacity=100*batch,
                  min_after_dequeue=80*batch,
                  dtypes=[tf.float32, tf.float32],
                  shapes=[[n_steps, n_input], [n_classes]])
enqueue_op = queue.enqueue_many([x, y])
X_batch, Y_batch = queue.dequeue_many(batch)

sess = tf.Session()

def load_and_enqueue(data):
    while True:
        X, Y = data.get_next_batch(batch)
        sess.run(enqueue_op, feed_dict={x: X, y: Y})

train_thread = threading.Thread(target=load_and_enqueue, args=(data))
train_thread.daemon = True
train_thread.start()

for _ in xrange(max_iter):
    sess.run(train_op)

questionAnswers(1)

yourAnswerToTheQuestion