Je veux former "standford chatbot" d'ici https://github.com/chiphuyen/stanford-tensorflow-tutorials/tree/master/assignments/chatbot sur GPU, mais il n'utilise pas mon GPU, mais toutes les bibliothèques de besoin (CuNN, CUDA, tensorflow-gpu, etc.) sont installé J'ai essayé:Tensorflow ne veut pas utiliser GPU
def train():
""" Train the bot """
test_buckets, data_buckets, train_buckets_scale = _get_buckets()
# in train mode, we need to create the backward path, so forwrad_only is False
model = ChatBotModel(False, config.BATCH_SIZE)
model.build_graph()
saver = tf.train.Saver(var_list=tf.trainable_variables())
with tf.Session(config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True)) as sess:
print('Start training')
sess.run(tf.global_variables_initializer())
_check_restore_parameters(sess, saver)
iteration = model.global_step.eval()
total_loss = 0
while True:
skip_step = _get_skip_step(iteration)
bucket_id = _get_random_bucket(train_buckets_scale)
encoder_inputs, decoder_inputs, decoder_masks = data.get_batch(data_buckets[bucket_id],
bucket_id,
batch_size=config.BATCH_SIZE)
start = time.time()
_, step_loss, _ = run_step(sess, model, encoder_inputs, decoder_inputs, decoder_masks, bucket_id, False)
total_loss += step_loss
iteration += 1
if iteration % skip_step == 0:
print('Итерация {}: потеря {}, время {}'.format(iteration, total_loss/skip_step, time.time() - start))
start = time.time()
total_loss = 0
saver.save(sess, os.path.join(config.CPT_PATH, 'chatbot'), global_step=model.global_step)
if iteration % (10 * skip_step) == 0:
# Run evals on development set and print their loss
_eval_test_set(sess, model, test_buckets)
start = time.time()
sys.stdout.flush()
Mais il montre toujours:
InvalidArgumentError (see above for traceback): Cannot assign a device to node 'save/Const': Could not satisfy explicit device specification '/device:GPU:0' because no supported kernel for GPU devices is available.
Collocation Debug info: groupe avait les types Collocation et appareils suivants: Const: CPU identité: CPU [[Node: save/Const = Constdtype = DT_STRING, valeur = Tensor, _device = "/ périphérique: GPU: 0"]]
Y at-il un fichier de configuration pour tensorflow où je peux spécifier d'utiliser uniquement GPU ou certains une autre façon (j'ai essayé "avec tf.device ("/gpu: 0 "):" et device_count = { 'GPU': 1}))
Je l'ai fait, mais tensorflow choisit un CPU au lieu du GPU –
Considérant que vous didn didn didn ne montrez pas comment votre modèle ressemble, je ne peux pas aider avec les détails de pourquoi les opérations finissent sur le CPU. Certains ops ne peuvent être que sur le CPU (comme celui qui jette votre erreur), alors que la plupart des calculs ont des implémentations CPU et GPU. À quoi ressemble la sortie si vous activez la journalisation de l'emplacement des périphériques? – GPhilo
Tout ce qui est sur '/ job: localhost/replica: 0/tâche: 0/gpu: 0' est assigné (et exécuté) sur votre GPU. – GPhilo