Tensorflow: Impossible de créer le descripteur de cudnn: CUDNN_STATUS_INTERNAL_ERROR

Créé le 21 déc. 2018  ·  181Commentaires  ·  Source: tensorflow/tensorflow

Veuillez vous assurer qu'il s'agit d'un bogue. tag: modèle_bogue

Informations système

  • Ai-je écrit du code personnalisé (par opposition à l'utilisation d'un exemple de script fourni dans TensorFlow): Oui et Non (décrit ci-dessous)
  • Plateforme et distribution du système d'exploitation (par exemple, Linux Ubuntu 16.04): Manjaro
  • Appareil mobile (par exemple, iPhone 8, Pixel 2, Samsung Galaxy) si le problème se produit sur l'appareil mobile:
  • TensorFlow installé depuis (source ou binaire): tf-nightly-gpu (19 décembre, r1.13)
  • Version de TensorFlow (utilisez la commande ci-dessous): 1.13.0-dev20181219
  • Version Python: 3.7.1
  • Version Bazel (si compilation à partir des sources):
  • Version GCC / Compiler (si compilation à partir des sources):
  • Version CUDA / cuDNN: CUDA 10 avec cuDNN 7.4.1
  • Modèle GPU et mémoire: RTX 2070 8 Go

Décrivez le comportement actuel
J'utilise le modèle CNN sur MNIST. Lorsque je cours avec le GPU, je rencontre
2018-12-20 20:09:13.644176: E tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

J'ai creusé et réalisé que c'était un problème de mémoire (ce qui ne devrait pas être le cas car j'ai 32 Go de RAM et 64 Go de swap. J'ai exécuté htop lors de l'exécution du modèle et j'ai 20 + Go d'espace libre, ce qui est plus que assez pour s'adapter aux mappages vRAM de 8 Go.

L'utilisation de gpu_options.allow_growth = True permet au modèle de fonctionner correctement, et la configuration de os.environ['CUDA_VISIBLE_DEVICES'] = '-1' fonctionne également. Cela signifie que je suis confronté à un problème de mémoire, mais je ne vois pas comment.

De plus, l'utilisation de gpu_options.allow_growth = True ne résout pas le même problème lorsque vous essayez d'exécuter tensorflow / models / official / mnist / model, qui devrait avoir un comportement similaire avec mon code.

Code pour reproduire le problème

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import math
import time
# Killing optional CPU driver warnings
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
tf.logging.set_verbosity(tf.logging.ERROR)


class Model:

    def __init__(self, image, label):
        """
        A Model class contains a computational graph that classifies images
        to predictions. Each of its methods builds part of the graph
        on Model initialization. Do not modify the constructor, as doing so
        would break the autograder. You may, however, add class variables
        to use in your graph-building. e.g. learning rate, 

        image: the input image to the computational graph as a tensor
        label: the correct label of an image as a tensor
        prediction: the output prediction of the computational graph,
                    produced by self.forward_pass()
        optimize: the model's optimizing tensor produced by self.optimizer()
        loss: the model's loss produced by computing self.loss_function()
        accuracy: the model's prediction accuracy
        """
        self.image = image
        self.label = label

        # TO-DO: Add any class variables you want to use.

        self.prediction = self.forward_pass()
        self.loss = self.loss_function()
        self.optimize = self.optimizer()
        self.accuracy = self.accuracy_function()

    def forward_pass(self):
        """
        Predicts a label given an image using convolution layers

        :return: the prediction as a tensor
        """
        filter_1 = tf.Variable(tf.truncated_normal([3, 3, 1, 8], stddev=0.1))
        conv_1 = tf.nn.conv2d(self.image, filter_1, [1, 1, 1, 1], "SAME")

        reshaped = tf.reshape(conv_1, shape=[50, -1])

        L1 = reshaped.shape[1].value
        L2 = 500
        W1 = tf.Variable(tf.random_normal([L1, L2], mean=0, stddev=0.01))
        b1 = tf.Variable(tf.random_normal([L2], mean=0, stddev=0.01))
        relu_1 = tf.nn.relu(tf.matmul(reshaped, W1) + b1)

        W2 = tf.Variable(tf.random_normal([L2, 10], mean=0, stddev=0.01))
        b2 = tf.Variable(tf.random_normal([10], mean=0, stddev=0.01))
        logits = tf.nn.relu(tf.matmul(relu_1, W2) + b2)
        return logits

    def loss_function(self):
        """
        Calculates the model cross-entropy loss

        :return: the loss of the model as a tensor
        """
        loss = tf.losses.softmax_cross_entropy(onehot_labels=self.label, logits=self.prediction)
        return loss

    def optimizer(self):
        """
        Optimizes the model loss using an Adam Optimizer

        :return: the optimizer as a tensor
        """
        learning_rate = 0.1
        sgd = tf.train.GradientDescentOptimizer(learning_rate)
        train = sgd.minimize(self.loss)
        return train

    def accuracy_function(self):
        """
        Calculates the model's prediction accuracy by comparing
        predictions to correct labels – no need to modify this

        :return: the accuracy of the model as a tensor
        """
        correct_prediction = tf.equal(tf.argmax(self.prediction, 1),
                                      tf.argmax(self.label, 1))
        return tf.reduce_mean(tf.cast(correct_prediction, tf.float32))


def main():
    t_start = time.time()

    mnist = input_data.read_data_sets("data/mnist/", one_hot=True)
    batch_sz = 50
    batch = 2000

    inputs = tf.placeholder(shape=[batch_sz, 28, 28, 1], dtype=tf.float32)
    labels = tf.placeholder(shape=[batch_sz, 10], dtype=tf.float32)

    model = Model(inputs, labels)

    session_config = tf.ConfigProto(gpu_options=tf.GPUOptions(allow_growth=True))
    sess = tf.Session(config=session_config)

    # sess = tf.Session()

    sess.run(tf.global_variables_initializer())
    for i in range(batch):
        next_image, next_label = mnist.train.next_batch(batch_sz)
        next_image = next_image.reshape((batch_sz, 28, 28, 1))
        sess.run(model.optimize, feed_dict={inputs: next_image, labels: next_label})

    acc, test_images, test_labels = 0, mnist.test.images, mnist.test.labels
    test_batch = math.ceil(len(test_images) / batch_sz)
    for i in range(test_batch):
        batch_images = test_images[i * batch_sz: (i + 1) * batch_sz]
        batch_images = batch_images.reshape((batch_sz, 28, 28, 1))
        batch_labes = test_labels[i * batch_sz: (i + 1) * batch_sz]
        acc += sess.run(model.accuracy, feed_dict={inputs: batch_images, labels: batch_labes})
    acc /= test_batch
    print(acc)

    print(time.time() - t_start, 'seconds')

    return


if __name__ == '__main__':
    main()
TF 2.0 gpu bug

Commentaire le plus utile

J'ai essayé de compiler à partir des sources, mais j'ai rencontré le même problème. J'ai finalement pu résoudre mon problème en définissant config.gpu_options.allow_growth = True .

Tous les 181 commentaires

J'ai rencontré le même problème avec le même GPU: "CUDNN_STATUS_INTERNAL_ERROR".

GPU RTX 2070
CUDA 10
cuDNN 7.4.2
Ubuntu 18.04
tf-nightly-gpu (r1.13, 13 janv.)
Python 3.6.7

2019-01-15 05:01:03.503415: I tensorflow/stream_executor/platform/default/dso_loader.cc:154] successfully opened CUDA li
brary libcublas.so.10.0 locally
2019-01-15 05:01:03.752563: I tensorflow/stream_executor/platform/default/dso_loader.cc:154] successfully opened CUDA li
brary libcudnn.so.7 locally
2019-01-15 05:01:04.905618: E tensorflow/stream_executor/cuda/cuda_dnn.cc:493] Could not create cudnn handle: CUDNN_STAT
US_INTERNAL_ERROR
2019-01-15 05:01:04.908147: E tensorflow/stream_executor/cuda/cuda_dnn.cc:493] Could not create cudnn handle: CUDNN_STAT
US_INTERNAL_ERROR
2019-01-15 05:01:04.908191: W tensorflow/core/framework/op_kernel.cc:1412] OP_REQUIRES failed at conv_ops_fused.cc:801 :
 Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to se
e if a warning log message was printed above.

J'ai le même problème en cours d'exécution

GPU RTX2080
CUDA 10
cudnn 7.4.2

J'ai essayé les versions tf suivantes tf-nightly-gpu et une version auto-compilée de master (060b6e32ad).
J'ai découvert qu'il était possible de définir les variables d'ENVIRONNEMENT suivantes pour obtenir des informations de débogage supplémentaires.

CUDNN_LOGINFO_DBG = 1;
CUDNN_LOGDEST_DBG = sortie standard

Ensuite, j'obtiens l'erreur suivante:

I0117 14: 11: 24.441819 140433563125568 basic_session_run_hooks.py:594] Enregistrement des points de contrôle pour 0 dans /tmp/mnist/model.ckpt.
2019-01-17 14: 11: 25.916269: I tensorflow / stream_executor / platform / default / dso_loader.cc: 154] a ouvert avec succès la bibliothèque CUDA libcublas.so.10.0 localement

JE! Fonction CuDNN (v7402) cudnnCreate () appelée:
je! Heure: 2019-01-17T14: 11: 26.079184 (0j + 0h + 0m + 0s depuis le début)
je! Processus = 29255; Filetage = 29356; GPU = NULL; Handle = NULL; StreamId = NULL.

2019-01-17 14: 11: 26.079151: I tensorflow / stream_executor / platform / default / dso_loader.cc: 154] a ouvert avec succès la bibliothèque CUDA libcudnn.so.7 localement

JE! Fonction CuDNN (v7402) cudnnCreate () appelée:
je! Heure: 2019-01-17T14: 11: 26.571897 (0j + 0h + 0m + 0s depuis le début)
je! Processus = 29255; Filetage = 29356; GPU = NULL; Handle = NULL; StreamId = NULL.

2019-01-17 14: 11: 26.571858: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Impossible de créer un handle cudnn: CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14: 11: 26.579375: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Impossible de créer un handle cudnn: CUDNN_STATUS_INTERNAL_ERROR

JE! Fonction CuDNN (v7402) cudnnCreate () appelée:
je! Heure: 2019-01-17T14: 11: 26.579803 (0j + 0h + 0m + 0s depuis le début)
je! Processus = 29255; Filetage = 29356; GPU = NULL; Handle = NULL; StreamId = NULL.

2019-01-17 14: 11: 26.585818: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Impossible de créer un handle cudnn: CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14: 11: 26.585850: W ./tensorflow/stream_executor/stream.h:2109] tentative d'effectuer une opération DNN à l'aide de StreamExecutor sans prise en charge DNN
Traceback (dernier appel le plus récent):
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", ligne 1335, dans _do_call
retourne fn (* args)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", ligne 1320, dans _run_fn
options, feed_dict, fetch_list, target_list, run_metadata)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", ligne 1408, dans _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.UnknownError: Impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un message d'avertissement du journal a été imprimé ci-dessus.
[[{{node Discriminator_1 / Conv / Conv2D}}]]
[[train / discriminator_train / train_op / control_dependency / _569]]

Lors de la gestion de l'exception ci-dessus, une autre exception s'est produite:

Traceback (dernier appel le plus récent):
Fichier "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py", ligne 151, dans
tf.app.run ()
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py", ligne 125, en cours d'exécution
_sys.exit (main (argv))
Fichier "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py", ligne 147, en main
get_hooks_fn = tfgan.get_joint_train_hooks ())
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py", ligne 1200, dans gan_train
config = config)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/training/python/training/training.py", ligne 546, en train
loss = session.run (train_op, run_metadata = run_metadata)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", ligne 693, en cours d'exécution
run_metadata = run_metadata)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", ligne 1188, en cours d'exécution
run_metadata = run_metadata)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", ligne 1287, en cours d'exécution
lever six.reraise ( original_exc_info)Fichier "/usr/local/lib/python3.6/dist-packages/six.py", ligne 693, en relanceaugmenter la valeurFichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", ligne 1272, en cours d'exécutionretourne self._sess.run ( args, ** kwargs)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", ligne 1336, en cours d'exécution
feed_dict, options)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", ligne 1362, dans _call_hook_before_run
request = hook.before_run (run_context)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py", ligne 1061, dans before_run
run_context.session.run (self._train_ops)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", ligne 930, en cours d'exécution
run_metadata_ptr)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", ligne 1153, dans _run
feed_dict_tensor, options, run_metadata)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", ligne 1329, dans _do_run
run_metadata)
Fichier "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", ligne 1349, dans _do_call
lever le type (e) (node_def, op, message)
tensorflow.python.framework.errors_impl.UnknownError: Impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un message d'avertissement du journal a été imprimé ci-dessus.
[[node Discriminator_1 / Conv / Conv2D (défini à la maison / dj / projects / gan / tf_models / research / gan / mnist / networks.py: 152)]]
[[train / discriminator_train / train_op / control_dependency / _569]]

Les erreurs peuvent provenir d'une opération d'entrée.
Opérations de source d'entrée connectées au nœud Discriminator_1 / Conv / Conv2D:
inputs / batch / n (défini à home / dj / projects / gan / tf_models / research / gan / mnist / data_provider.py: 67)

Trace de pile d'origine pour 'Discriminator_1 / Conv / Conv2D':
Fichier "home / dj / projects / gan / tf_models / research / gan / mnist / train.py", ligne 151, dans
tf.app.run ()
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / platform / app.py", ligne 125, en cours d'exécution
_sys.exit (main (argv))
Fichier "home / dj / projects / gan / tf_models / research / gan / mnist / train.py", ligne 87, dans main
[FLAGS.batch_size, FLAGS.noise_dims]))
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / gan / python / train.py", ligne 118, dans gan_model
discriminator_real_outputs = discriminator_fn (real_data, Generer_inputs)
Fichier "home / dj / projects / gan / tf_models / research / gan / mnist / networks.py", ligne 176, dans unconditional_discriminator
net = _discriminator_helper (img, False, None, weight_decay)
Fichier "home / dj / projects / gan / tf_models / research / gan / mnist / networks.py", ligne 152, dans _discriminator_helper
net = couches.conv2d (img, 64, [4, 4], foulée = 2)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / framework / python / ops / arg_scope.py", ligne 182, dans func_with_args
retourne func ( args, * current_args)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / couches / python / couches / layers.py", ligne 1155, dans convolution2d
conv_dims = 2)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / framework / python / ops / arg_scope.py", ligne 182, dans func_with_args
retourne func ( args, * current_args)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / couches / python / couches / layers.py", ligne 1058, en convolution
sorties = layer.apply (entrées)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / engine / base_layer.py", ligne 1228, dans apply
return self .__ call __ (entrées, args, * kwargs)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / couches / base.py", ligne 531, dans __call__
sorties = super (Layer, self) .__ call __ (inputs, args, * kwargs)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / engine / base_layer.py", ligne 564, dans __call__
sorties = self.call (entrées, args, * kwargs)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / couches / convolutional.py", ligne 196, en cours d'appel
sorties = self._convolution_op (entrées, self.kernel)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", ligne 966, dans __call__
retourne self.conv_op (inp, filtre)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", ligne 591, dans __call__
retourne self.call (inp, filtre)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", ligne 208, dans __call__
name = self.name)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", ligne 1578, dans conv2d
nom = nom)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / gen_nn_ops.py", ligne 1040, dans conv2d
data_format = data_format, dilations = dilations, nom = nom)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / op_def_library.py", ligne 788, dans _apply_op_helper
op_def = op_def)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / util / deprecation.py", ligne 501, dans new_func
retourne func ( args, * kwargs)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / ops.py", ligne 3300, dans create_op
op_def = op_def)
Fichier "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / ops.py", ligne 1801, dans __init__
self._traceback = tf_stack.extract_stack ()

Des idées quelqu'un? Je suis juste avant de réinstaller mon environnement complet :-(

Essayez de compiler r1.13 à partir des sources. Cela prendrait beaucoup de temps, mais cela devrait résoudre votre problème. Au moins, il a réparé le mien.

J'ai essayé de compiler à partir des sources, mais j'ai rencontré le même problème. J'ai finalement pu résoudre mon problème en définissant config.gpu_options.allow_growth = True .

J'ai eu le même problème (sur un RTX 2060, Ubuntu 18.04, Python 3.6.7, CUDA 10.0.130, cuDNN 7.4.2, Tensorflow 1.13.0-rc0 à partir de la source). Grâce à la suggestion de @ va-andrew, je l'ai fait fonctionner avec l'ensemble d'options allow_growth .

FWIW, au cours de la recherche de solutions à cela, il semble que ce problème soit un problème commun avec la série RTX (bien qu'il puisse s'agir d'un problème général avec CUDA 10.0, car les nouvelles cartes ne prennent pas en charge les anciennes versions). Ce serait formidable si les valeurs par défaut pouvaient être mises à jour dans la version 1.13 afin que des options spéciales n'aient pas besoin d'être définies pour ces cartes.

En disant que j'ai également vécu cela sous la configuration suivante:

Les conteneurs Tensorflow Docker GPU avec des versions stables de tout ne fonctionnent pas non plus (ils montent directement par défaut au lieu de signaler CUDNN_STATUS_INTERNAL_ERROR).

Curieusement, les choses fonctionnent bien sur Windows 10 avec Tensorflow v1.12!

Et d'autres l'ont signalé, la configuration de allow_growth permet aux choses de fonctionner correctement.

Même problème ici.

  • RTX 2070
  • Ubuntu 18.04
  • CudNN 7.4.2 (mais j'ai essayé de compiler avec d'autres versions plus anciennes sans succès)
  • Tensorflow 1.13.0-dev20190125 (a également essayé Tensorflow 1.12 compilé avec Cuda 10)

Et comme d'autres l'ont signalé, la définition de allow_growth = TRUE permet aux choses de fonctionner.

Clôture de ce problème depuis sa résolution. Merci!

@ymodak Pouvez-vous s'il vous plaît faire référence au PR qui a corrigé ce bogue?

J'ai un problème similaire avec tf-nightly-gpu-2.0-preview sur le RTX 2080

Même problème avec un RTX2080, j'ai passé deux jours à recompiler et à rechercher des bogues jusqu'à ce que je trouve ce correctif.
(la chose allow_growth = true l'a corrigé)

Tu as fait ma journée

Comment définissez-vous réellement allow_growth = true? J'ai tf-nightly-gpu-2.0-preview et j'ai essayé:

importer tensorflow en tant que tf
config = tf.ConfigProto ()
config.gpu_options.allow_growth = Vrai
session = tf.Session (config = config, ...)

mais obtenez cette erreur:

AttributeError Traceback (dernier appel en dernier)
dans()
1 import tensorflow comme tf
----> 2 config = tf.ConfigProto ()

AttributeError: le module 'tensorflow' n'a pas d'attribut 'ConfigProto'

Comment puis-je définir allow_growth dans tensorflow 2.0?

ok, je l'ai fait fonctionner dans tf-nightly-gpu-2.0-preview et ipython notebook en ajoutant ceci à mon code:

depuis tensorflow.compat.v1 import ConfigProto
depuis tensorflow.compat.v1 import InteractiveSession

config = ConfigProto ()
config.gpu_options.allow_growth = Vrai
session = InteractiveSession (config = config)

même problème, avec gpu_options.allow_growth = True, le problème est résolu.

@newhouseb comment / où avez-vous défini cela pour tous les benchmarks? Était-ce un changement facile?

La couverture de croissance est-elle une solution?

Il est désactivé par défaut pour une raison voir
https://www.tensorflow.org/guide/using_gpu#allowing_gpu_memory_growth

Dans mon programme, la gestion de la mémoire est importante

Je voudrais limiter la quantité de GPU utilisée par TF car dans mon application graphique, la mémoire du GPU sera utilisée pour d'autres choses et la placer dans un espace limité est important pour éviter les erreurs de mémoire insuffisante

Je travaille en C ++ sous Windows

L'ajout de l'option Autoriser la croissance entraîne une erreur MOO.

Sans cette ligne de code, le modèle fonctionne bien sur la même machine avec la même carte.

Avec erreur MOO

options.config.mutable_gpu_options()->set_allow_growth(true);
options.config.mutable_gpu_options()->set_per_process_gpu_memory_fraction(fraction);

Sans erreur MOO

//options.config.mutable_gpu_options()->set_allow_growth(true);
options.config.mutable_gpu_options()->set_per_process_gpu_memory_fraction(fraction);

Donc, pour résoudre ce problème avec set allow, la croissance entraîne un segfault.

@ymodak Ce bogue n'est pas corrigé. On peut soutenir que l'utilisation de toute sorte de convnet devrait fonctionner dans la configuration par défaut. Soit allow_growth devrait être true par défaut, il devrait être corrigé pour que cela fonctionne, ou il devrait y avoir une meilleure erreur que CUDNN_STATUS_INTERNAL_ERROR .

@ymodak Il semble que ce problème ait été

@samhodge ne pouvez-vous pas empêcher MOO en utilisant config.gpu_options.per_process_gpu_memory_fraction = 0.4 comme suggéré sur la page de documentation tensorflow que vous avez vous-même publiée?

Je suis confus par ce hack booléen pour activer tensorflow-gpu sur mon RTX 2080: ce allow_growth = True sera-t-il un problème si j'utilise mon GPU uniquement pour un script tensorflow / notebook jupyter à la fois? (en plus de l'utilisation standard du GPU pour l'écran, etc.)

J'ai l'intention de mettre en place une pile ML statique sur un ordinateur et j'aimerais savoir si cela se terminera par un désordre à un moment donné (grande recherche de grille, modèles avec beaucoup de paramètres, etc.). Je n'ai pas encore compris si je devais vraiment construire à partir des sources pour essayer d'éviter cette erreur interne ou simplement changer ce booléen.

Ok, je pense avoir trouvé la source de mes problèmes avant de créer ma session, je mesure la RAM du GPU libre donc si je suis sur une carte 8 Go et que 6 Go sont gratuits, j'utilise une fraction de 0,75 et parfois cela se termine par un MOO mais récemment j'ai expérimenté avec 0,95 * 0,75 et je n'ai pas encore de MOO. Donc, si vous poussez l'espace d'allocation de Tensorflow à la limite, il se heurte parfois. Évidemment, si vos entrées et sorties vers un Op individuel ne correspondent pas, il sera MOO, mais je mesure par rapport à cela et utilisera GPU ou CPU en fonction de ce qui convient.

@samhodge super, donc à la fin, le hack booléen allow_growth fournit une solution si aucune opération GPU majeure n'est lancée en parallèle et si ce qui est traité _à un moment_ par tensorflow (la taille du lot serait critique) ne le fait pas déborder de la mémoire fournie par le GPU ...?

Tout utilise le GPU même votre navigateur

Rencontrer le même problème sur une GTX 1050 utilisant tensorflow-gpu 1.13.1 de pip avec CUDA 10.0 / cuDNN 7.4.2.24/Nvidia driver 410 / Ubuntu 16.04.

J'ai toujours le même problème ici mais "config.gpu_options.allow_growth = True" ne résout pas le problème. Se produit à la fois sur TF-gpu 1.14.1 et TF-gpu 2.0. RTX1070, CUDA 10.0, Ubuntu 18.04, pilote Nvidia 430.09.

Les descriptions des problèmes que vous voyez me font croire que (version particulière de) cuDNN essaie d'allouer de la mémoire GPU lors de la création du handle. Si TensorFlow a déjà pris toute la mémoire (soit parce que config.gpu_options.allow_growth = false, soit par_process_gpu_memory_fraction proche de 1.0), il n'y a plus de mémoire à allouer pour cuDNN.

Vous pouvez le confirmer en exécutant TensorFlow via nvprof et en générant une trace d'API pour inspecter l'appel cuMemAlloc en échec.

Le numéro 6698 semble aborder le même problème. Certaines personnes ont remarqué qu'elles avaient accidentellement utilisé une version cuDNN qui ne correspond pas à leur version CUDA. Pourriez-vous s'il vous plaît vérifier que vous utilisez cuDNN pour CUDA 10 lorsque vous utilisez CUDA 10?

Il s'avère que cuDNN n'a pas été installé correctement car je suis un grand imbécile. Je l'ai, réinstallé TF2 tous les soirs, ajouté les lignes pour permettre la croissance, et tout va bien.

Comment supprimer cudatoolkit et cudnn de Conda?

Étant donné que le cudnn inclus (ou intégré) d'Anaconda a l'erreur suivante, je souhaite supprimer le cudatoolkit et le cudnn installés par conda, et installer CUDA et cudnn indépendants à partir du site Web de Nvidia.

Erreur: impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un message d'avertissement du journal a été imprimé ci-dessus.

Cependant, alors que j'utilise les commandes comme suit mais que je ne peux pas les supprimer, je ne peux pas les supprimer.
conda remove --name cuda --all
conda remove --name cudnn --all

Je vois que deux documents, y compris cudatoolkit-10.0.130-0 et cudnn-7.3.1-cuda10.0.0_0 dans le chemin comme
suit.

/home/anaconda3/pkgs/cudatoolkit-10.0.130-0
/home/anaconda3/pkgs/cudnn-7.3.1-cuda10.0.0_0

Comment puis-je supprimer (ou supprimer) les cuda et cudnn inclus (ou intégrés) dans Anaconda.

Merci d'avance,

Mike

@ mikechen66 Quelle est la sortie de conda? Cela peut être dû au fait que d'autres packages dépendent de cuda et cudnn. Pourquoi voudriez-vous les supprimer en premier lieu? Si vous souhaitez obtenir un environnement personnalisé, utilisez miniconda plutôt que anaconda. Miniconda n'est fourni qu'avec conda et vous devez installer tous les packages dont vous avez besoin manuellement.

Salut tydlwav:

Merci pour vos commentaires. Après avoir vérifié la compatibilité des versions et la date de publication des bibliothèques principales, j'ai installé les environnements de développement associés, exécuté le code de test MNIST simple et obtenu les résultats comme suit.

Je pense qu'Anaconda3 ne peut même pas supporter les bibliothèques de base de cudnn et TensorFlow. C'est donc un gros problème d'Anaconda3. Je veux donc supprimer les bibliothèques cudnn légères d'Anaconda et utiliser les bibliothèques indépendantes et puissantes Nvidia cuda et cudnn pour exécuter le code de test. Veuillez aider à donner quelques suggestions.

  1. Environnements d'installation

Nvidia GeForce RTX 2060
Pilote graphique: NVIDIA-Linux-x86_64-415.27 (15 janvier 2019)
1ère version prenant en charge RTX 2060
Anaconda3: Anaconda3-2019.03-Linux-x86_64.sh (04/04/2019)
- cudatoolkit-10.0.130-0
- cudnn-7.3.1-cuda10.0.0_0
- TensorFlow 13.1
- Juputer Notebook et ipykernel
--par défaut par Ananconda3

  1. Code de test MNIST:

importer des keras
depuis keras.datasets import mnist
à partir de keras.models importation séquentielle
depuis keras.layers import Dense, Dropout
de keras.layers import Flatten, MaxPooling2D, Conv2D
depuis keras.callbacks importer TensorBoard

(X_train, y_train), (X_test, y_test) = mnist.load_data ()

X_train = X_train.reshape (60000,28,28,1) .astype ('float32')
X_test = X_test.reshape (10000,28,28,1) .astype ('float32')

X_train / = 255
X_test / = 255

n_classes = 10
y_train = keras.utils.to_categorical (y_train, n_classes)
y_test = keras.utils.to_categorical (y_test, n_classes)

model = séquentiel ()
model.add (Conv2D (32, kernel_size = (3,3), activation = 'relu', input_shape = (28,28,1)))
model.add (Conv2D (64, kernel_size = (3,3), activation = 'relu'))
model.add (MaxPooling2D (pool_size = (2,2)))
model.add (abandon (0,25))
model.add (Aplatir ())
model.add (Dense (128, activation = 'relu'))
model.add (abandon (0,5))
model.add (Dense (n_classes, activation = 'softmax'))

model.compile (loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['precision'])

tensor_board = TensorBoard ('./ logs / LeNet-MNIST-1')

model.fit (X_train, y_train, batch_size = 128, epochs = 15, verbose = 1,
validation_data = (X_test, y_test), callbacks = [tensor_board])

  1. Les sorties:

Utilisation du backend TensorFlow.

AVERTISSEMENT: tensorflow : De /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (de tensorflow.python.framework.ops ) est obsolète et sera supprimé dans une version ultérieure.
Instructions pour la mise à jour:
Colocations gérées automatiquement par placer.
AVERTISSEMENT: tensorflow : De /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:3445: appel de décrochage (de tensorflow.python.ops.nn_ops) with keep_prob est obsolète et sera supprimé dans une prochaine version.
Instructions pour la mise à jour:
Veuillez utiliser rate au lieu de keep_prob . Le tarif doit être fixé à rate = 1 - keep_prob .
AVERTISSEMENT: tensorflow : De /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (de tensorflow.python.ops.math_ops ) est obsolète et sera supprimé dans une version ultérieure.
Instructions pour la mise à jour:
Utilisez plutôt tf.cast.
Former sur 60000 échantillons, valider sur 10000 échantillons
Époque 1/15

UnknownError Traceback (dernier appel le plus récent)
dans
34
35 model.fit (X_train, y_train, batch_size = 128, epochs = 15, verbose = 1,
---> 36 validation_data = (X_test, y_test), callbacks = [tensor_board])

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / engine / training.py in fit (self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, ** kwargs)
1037 initial_epoch = initial_epoch,
1038 étapes_per_epoch = étapes_per_epoch,
-> 1039 validation_steps = validation_steps)
1040
1041 def évaluer (soi, x = aucun, y = aucun,

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / engine / training_arrays.py dans fit_loop (model, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)
197 ins_batch [i] = ins_batch [i] .toarray ()
198
-> 199 sorties = f (ins_batch)
200 sorties = to_list (outs)
201 pour l, o dans zip (out_labels, outs):

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / backend / tensorflow_backend.py dans __call __ (self, entrées)
2713 retourne self._legacy_call (entrées)
2714
-> 2715 retourne self._call (entrées)
2716 sinon:
2717 si py_any (is_tensor (x) pour x en entrées):

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / backend / tensorflow_backend.py dans _call (self, entrées)
2673 récupéré = self._callable_fn ( array_vals, run_metadata = self.run_metadata)2674 sinon:-> 2675 récupéré = self._callable_fn ( array_vals)
2676 retour extrait [: len (self.outputs)]
2677

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / tensorflow / python / client / session.py dans __call __ (self, args, * kwargs)
1437 ret = tf_session.TF_SessionRunCallable (
1438 self._session.session, self._handle, args, status,
-> 1439 run_metadata_ptr)
1440 si run_metadata:
1441 proto_data = tf_session.TF_GetBuffer (run_metadata_ptr)

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / tensorflow / python / framework / errors_impl.py in __exit __ (self, type_arg, value_arg, traceback_arg)
526 Aucun, Aucun,
527 compat.as_text (c_api.TF_Message (self.status.status)),
-> 528 c_api.TF_GetCode (self.status.status))
529 # Supprimer l'objet de statut sous-jacent de la mémoire sinon il reste en vie
530 # car il y a une référence à l'état à partir de la traceback due à

UnknownError: Impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un message d'avertissement du journal a été imprimé ci-dessus.
[[{{node conv2d_1 / convolution}}]]
[[{{node metrics / acc / Mean}}]]

Salut tydlwav:

J'utilise la commande suivante pour désinstaller à la fois cuda et cudnn. Cependant, les deux bibliothèques sont toujours situées dans Anaconda3 même si elles ne fonctionnent pas pour le moment. Je suppose qu'Anaconda3 a l'intention de protéger les bibliothèques de base pour ne pas être supprimées. Cela pourrait être la capacité principale de Continuum même si elle a des bogues. Je vais essayer d'utiliser soit Independent Nvdia cuda (à l'exclusion de nvcc) et cudnn ou trouver le nouveau cuda ou cudnn avec conda à installer.

Commande de désinstallation:

conda désinstaller cudatoolkit

Collecte des métadonnées du package: terminé
Environnement de résolution: terminé

Plan de forfait

emplacement de l'environnement: / home / mike / anaconda3 / envs / tf-gpu

spécifications supprimées:
- cudatoolkit

Les packages suivants seront SUPPRIMÉS:

cudatoolkit-10.0.130-0
cudnn-7.3.1-cuda10.0_0
cupti-10.0.130-0
keras-2.2.4-0
tensorflow-1.13.1-gpu_py37hc158e3b_0
tensorflow-base-1.13.1-gpu_py37h8d69cac_0
tensorflow-gpu-1.13.1-h0d30ee6_0

Continuer ([y] / n)? y

Préparation de la transaction: terminé
Vérification de la transaction: terminée
Exécution de la transaction: terminé

Remarques:

Après les avoir désinstallés tous les deux, Jupyter Notebook a affiché "Aucun mudule nommé" tensorflow ". Cela signifie que la désinstallation est réussie. Cependant, cudatoolkit et cudnn se trouvent toujours dans Anaconda3. Je pense que Continuum ne les supprime pas par défaut, bien que les deux eux ne fonctionne pas.

/home/anaconda3/pkgs/cudatoolkit-10.0.130-0
/home/anaconda3/pkgs/cudnn-7.3.1-cuda10.0.0_0

Vous les avez déjà supprimés. Les fichiers dans pkgs sont destinés à l'installation. Il s'agit du cache téléchargé pour l'installation. De plus, ce n'est pas le lieu pour discuter des problèmes d'environnement conda. Ce n'est pas pertinent pour ce problème. Vous voudrez peut-être essayer le débordement de pile.

Je suis un peu confus par l'état de ce problème. J'utilise un RTX 2080, cuda 10.1, cudnn v7.5.1.10 et tensorflow 1.14.

L'utilisation de la fonction Permettre la croissance fonctionne, mais j'ai peut-être une incompatibilité de version différente?

Y aura-t-il un correctif pour cela dans tensorflow 1.14?

Je vous remercie

Merci. Je vois le problème de compatibilité entre les séries RTX 20XX Turing, TensorFlow et Anaconda. Il est évident que la série RTX 20XX prend en charge cudnn 7.5.0, TensorFlow ne prend en charge que cudnn 7.4, mais Anaconda inclut un 7.3.1 rationalisé, il s'agit d'une inadéquation totale entre les trois fournisseurs. De plus, la série RTX 20XX a un gros problème de compatibilité avec Ubuntu 16.04 LTS. Parfois, Ubuntu 16.04 s'est écrasé. J'ai dû apporter deux clés USB amorçables pour réinstaller le système d'exploitation. Par conséquent, j'ai mis à niveau deux PC vers Ubuntu 18.04 LTS et installé Miniconda. Ensuite, je vais essayer une version supérieure de Tensorflow.

Remarques:

Nvidia a son propre Ubuntu 18.04 LTS personnalisé pour sa plate-forme GPU Jetson TX1 / TX2 et Jetson Nano Mobile. Nvidia semble déterminer ses nouveaux produits tels que la série RTX 20XX en compatibilité avec Ubuntu 18.04 LTS plutôt que la version inférieure Ubuntu 16.04. Cependant, je ne sais pas si Continuum a son plan de mise à niveau pour la série Nvidia RTX 20XX Turing.

Les séries RTX sont bien prises en charge dès maintenant. J'ai utilisé tf avec RTX 2070 via un environnement conda sur une distribution non-ubuntu. Cela devrait être le pire des cas, et cela fonctionne toujours bien. Cuda et cudnn sont rétrocompatibles, et cela ne devrait pas être un problème si vous utilisez les versions plus récentes. Vous devez simplement créer un nouvel environnement Python 3.6 avec conda create -n tf python==3.6.8 et exécuter conda install tensorflow-gpu .

C'est génial, j'ai compilé à partir des sources et j'ai fait travailler des clients avec Tensorflow 1.12.0 CUDA 10.0 et CUDNN 7.4.2.24 sur la plupart du matériel, mais j'ai eu des problèmes avec une poignée de clients avec des cartes RTX avec un CNN avec cudnn sur le GPU. J'ai peut-être accidentellement emballé le mauvais CUDNN pour CUDA 9.0, les fichiers portent le même nom.

Quelqu'un peut-il confirmer que ces versions fonctionnent sur RTX2080 et d'autres cartes basées sur Turing?

Salut tydlwav:

J'ai installé Miniconda et l'environnement python et tensorflow associé selon votre suggestion. Il a toujours l'erreur: Impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser .......
Veuillez aider à trouver une solution.

Veuillez consulter les étapes que j'ai opérées.

  1. Installez python 3.6.8 selon vos directives.
    conda create -n tf python == 3.6.8

  2. activer tf
    conda activer tf

  3. installez tensorflow-gpu dans l'environnement tf selon vos instructions.
    conda installer tensorflow-gpu

Le package installé comprend cudatoolkit et cudnn comme suit.
.................................................. ..................................................
cudatoolkit pkgs / main / linux-64 :: cudatoolkit-10.0.130-0
cudnn pkgs / main / linux-64 :: cudnn-7.3.1-cuda10.0_0
.................................................. ..................................................

  1. installez jupyter notebook, ipykernel et l'environnement associé sur la page Web.

1). installer le notebook jupyter
conda installer le notebook jupyter

2). installer ipykernel basé sur le notebook jupyter
conda installer ipykernel jupyter

3). créer TensorFlow-GPU dans la page Web du notebook jupyter
python -m ipykernel install --user --name tf-gpu --display-name "TensorFlow-GPU"

  1. Ouvrir le notebook Jupyter
    1). commande dans la page Web du notebook jupyter
    cahier Jupyter

2). Cliquez sur TensorFlow-GPU
En cliquant dans le menu "nouveau" et en sélectionnant "TensorFlow-GPU" dans la page Web, la cellule s'affiche dans la page Web de jupyter notebook. La page Web est répertoriée comme suit.
http: // localhost : 8888 / notebooks / Untitled3.ipynb? kernel_name = tf-gpu

  1. Coller Exécutez le code de test MNIST simple

importer des keras
depuis keras.datasets import mnist
à partir de keras.models importation séquentielle
depuis keras.layers import Dense, Dropout
de keras.layers import Flatten, MaxPooling2D, Conv2D
depuis keras.callbacks importer TensorBoard

(X_train, y_train), (X_test, y_test) = mnist.load_data ()

X_train = X_train.reshape (60000,28,28,1) .astype ('float32')
X_test = X_test.reshape (10000,28,28,1) .astype ('float32')

X_train / = 255
X_test / = 255

n_classes = 10
y_train = keras.utils.to_categorical (y_train, n_classes)
y_test = keras.utils.to_categorical (y_test, n_classes)

model = séquentiel ()
model.add (Conv2D (32, kernel_size = (3,3), activation = 'relu', input_shape = (28,28,1)))
model.add (Conv2D (64, kernel_size = (3,3), activation = 'relu'))
model.add (MaxPooling2D (pool_size = (2,2)))
model.add (abandon (0,25))
model.add (Aplatir ())
model.add (Dense (128, activation = 'relu'))
model.add (abandon (0,5))
model.add (Dense (n_classes, activation = 'softmax'))

model.compile (loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['precision'])

tensor_board = TensorBoard ('./ logs / LeNet-MNIST-1')

model.fit (X_train, y_train, batch_size = 128, epochs = 15, verbose = 1,
validation_data = (X_test, y_test), callbacks = [tensor_board])

  1. Erreurs identiques au dernier message mentionné:

UnknownError: Impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un message d'avertissement du journal a été imprimé ci-dessus.
[[{{node conv2d_1 / convolution}}]]
[[{{node metrics / acc / Mean}}]]

Merci,

Mike

HI tydlwav:

Au fait, j'ai également installé keras avec la commande suivante.
conda installer keras-gpu

Depuis que chaque installation est correcte, j'ai l'erreur. Je suppose donc que c'est le problème de compatibilité de version entre les séries Miniconda et RTX20XX Turing. L'erreur est la même que celle d'Anaconda. J'apprends que les versions cudnn et cuda de Miniconda et Anaconda sont identiques.

C'est assez intéressant. J'ai eu cuda 10 et cudnn7.3 travaillant avec conda il y a environ un mois et demi. Je n'ai plus utilisé tensorflow depuis lors. Si cela ne fonctionne pas pour vous, vous pouvez créer à partir des sources. Cela fonctionne toujours pour moi. Si vous ne faites que commencer, je vous recommande d'utiliser pytorch. Vous auriez beaucoup plus de facilité à installer et à faire fonctionner les choses.

Salut tydlwav:

J'essaierai l'autre méthode comme le pytorch. Maintenant que Google publie tensorflow-gpu 1.14, puis-je utiliser la Miniconda pour installer tensorflow-gpu 1.14 indépendant sur le site Web de Google Tensorflow comme suit.

Google tensorflow: https://www.tensorflow.org/install/source

Remarques:

Conda n'a que tensorflow-gpu construit de 1.0.1 à 1.13.1 comme suit. Les builds sont si anciens que les builds n'ont pas pu rattraper le Google TensorFlow officiel et la série officielle Truing Nvidia GeForce RTX 20XX (2060 ~ 2080).

Commander:
recherche conda tensorflow-gpu

Chargement des chaînes: terminé

Nom Version Build Channel
tensorflow-gpu 1.0.1 py27_4 paquets / gratuit
tensorflow-gpu 1.0.1 py35_4 paquets / gratuit
tensorflow-gpu 1.0.1 py36_4 paquets / gratuit
tensorflow-gpu 1.1.0 np111py27_0 paquets / gratuit
tensorflow-gpu 1.1.0 np111py35_0 paquets / gratuit
tensorflow-gpu 1.1.0 np111py36_0 paquets / gratuit
tensorflow-gpu 1.1.0 np112py27_0 paquets / gratuit
tensorflow-gpu 1.1.0 np112py35_0 paquets / gratuit
tensorflow-gpu 1.1.0 np112py36_0 paquets / gratuit
tensorflow-gpu 1.2.1 py27cuda7.5cudnn5.1_0 paquets / gratuit
tensorflow-gpu 1.2.1 py27cuda7.5cudnn6.0_0 paquets / gratuit
tensorflow-gpu 1.2.1 py27cuda8.0cudnn5.1_0 paquets / gratuit
tensorflow-gpu 1.2.1 py27cuda8.0cudnn6.0_0 pkgs / gratuit
tensorflow-gpu 1.2.1 py35cuda7.5cudnn5.1_0 paquets / gratuit
tensorflow-gpu 1.2.1 py35cuda7.5cudnn6.0_0 paquets / gratuit
tensorflow-gpu 1.2.1 py35cuda8.0cudnn5.1_0 paquets / gratuit
tensorflow-gpu 1.2.1 py35cuda8.0cudnn6.0_0 paquets / gratuit
tensorflow-gpu 1.2.1 py36cuda7.5cudnn5.1_0 paquets / gratuit
tensorflow-gpu 1.2.1 py36cuda7.5cudnn6.0_0 paquets / gratuit
tensorflow-gpu 1.2.1 py36cuda8.0cudnn5.1_0 paquets / gratuit
tensorflow-gpu 1.2.1 py36cuda8.0cudnn6.0_0 paquets / gratuit
tensorflow-gpu 1.3.0 0 paquets / gratuit
tensorflow-gpu 1.4.1 0 paquets / main
tensorflow-gpu 1.5.0 0 paquets / main
tensorflow-gpu 1.6.0 0 paquets / main
tensorflow-gpu 1.7.0 0 paquets / main
tensorflow-gpu 1.8.0 h7b35bdc_0 paquets / main
tensorflow-gpu 1.9.0 hf154084_0 paquets / main
tensorflow-gpu 1.10.0 hf154084_0 paquets / main
tensorflow-gpu 1.11.0 h0d30ee6_0 paquets / main
tensorflow-gpu 1.12.0 h0d30ee6_0 paquets / main
tensorflow-gpu 1.13.1 h0d30ee6_0 paquets / main

Ils ne sont pas vieux, car j'ai utilisé la version conda de tf 1.12 avec RTX 2070. Le nouveau matériel est généralement rétrocompatible, et RTX n'est pas différent. Il est fort probable qu'un problème d'environnement étrange soit en jeu. Je n'ai pas accès à une machine RTX avant juillet, donc je ne peux pas aider avec les tests pour le moment. Construire à partir de la source devrait résoudre votre problème. Je n'ai jamais manqué d'exécuter des convnets à partir de tf construits à partir des sources (en supposant que vous ayez les bonnes configurations lors de la construction).

Encore une fois, ce n'est pas le bon endroit pour discuter du problème de distribution du tensorflow. Vous pouvez créer un message sur le débordement de pile ou reddit et le lier ici. Plus de personnes pourront le voir et vous aider de cette façon.

Votre problème n'est pas un bogue, et ce n'est certainement pas ce dont il est question.

@chsigg vous diagnostiquez qu'il s'agit d'un problème avec CUDNN qui tente d'allouer des ressources de mémoire GPU que tensorflow a déjà allouées me semble correct. Le simple fait de définir per_process_gpu_memory_fraction=0.9 au lieu de 0.95 était suffisant pour résoudre mes problèmes.

J'étais également confronté à ce problème. Correction du problème en mettant à jour cuDNN vers la version 7.6.

tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above

Tensorflow-gpu: 1.13.1
Cuda: 10,0
CuDNN: 7.3.1

En outre, tensorflow et CuDNN ont été installés par Conda.
conda list cudnn

cudnn                     7.3.1                cuda10.0_0    anaconda

Ce que j'ai fait:

  1. Conda tensorflow désinstallé.
    conda remove tensorflow
  2. Désinstaller conda cuDNN
    conda remove cudnn
  3. Installer tensorflow avec pip
    pip install tensorflow
  4. Téléchargez le fichier deb d'exécution cuDNN 7.6 correspondant à partir de https://developer.nvidia.com/cudnn
  5. Installez-le avec sudo dpkg -i libcudnn_xxxxx_amd64.deb

@nluehr des commentaires? Pouvons-nous rendre MinSystemMemory () cuda / cudnn version consciente?

C'est une erreur de mémoire légitime, si vous utilisez tf.keras, procédez comme suit en haut de votre fichier
config = tf.ConfigProto ()
config.gpu_options.allow_growth = Vrai
tf.keras.backend.set_session (tf.Session (config = config))

J'ai également rencontré ce problème et j'ai pu le résoudre en utilisant la solution de @ va-andrew, et plus précisément, j'ai utilisé l' implémentation de

EDIT: Je regardais juste la documentation tensorflow (https://www.tensorflow.org/guide/using_gpu), et vous pouvez également lui dire d'autoriser la croissance de la mémoire en définissant la variable d'environnement TF_FORCE_GPU_ALLOW_GROWTH sur true. Il dit également que cette configuration est spécifique à la plate-forme, donc YMMV (fonctionne pour moi avec Ubuntu 18.04).

Pour référence, je cours:
Ubuntu 18.04.2 LTS, Gigabyte GeForce RTX 2080 Turbo, pilote NVIDIA 430.26, CUDA 10.0.130, cuDNN 7.4.2.24, tensorflow-gpu 1.13.1, python 3.6. Je lance tensorflow depuis un environnement virtuel, en utilisant spyder 3.3.4.

J'ai un deuxième ordinateur avec exactement le même matériel, et je l'ai configuré en suivant le même ensemble d'instructions, j'ai utilisé les mêmes fichiers pour faire l'installation et j'ai également eu ce problème sur cette machine. Pas de surprise là-bas.

J'ai un 3ème ordinateur avec exactement le même matériel, sauf qu'il a un 2080 Ti au lieu du 2080, et je l'ai configuré en suivant le même ensemble d'instructions, et à nouveau utilisé les mêmes fichiers pour faire l'installation. Mais cette fois, il n'y a pas eu de problème.

Donc, je suis amené à croire que ce n'est pas lié à un conflit entre CUDA, cuDNN et la version du pilote; ce n'est pas une installation incorrecte, etc. C'est plutôt lié au modèle de la carte vidéo; Je n'ai vu parler de ce problème qu'avec RTX 2060, 2070 et 2080.

Heureusement, ce n'est pas un gros inconvénient d'utiliser la solution de contournement.

J'étais également confronté à ce problème. Correction du problème en mettant à jour cuDNN vers la version 7.6.

tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above

Tensorflow: 1.13.1
Cuda: 10,0
CuDNN: 7.3.1

En outre, tensorflow et CuDNN ont été installés par Conda.
conda list cudnn

cudnn                     7.3.1                cuda10.0_0    anaconda

Ce que j'ai fait:

1. Uninstalled conda tensorflow.
   `conda remove tensorflow`

2. Uninstall conda cuDNN
   `conda remove cudnn`

3. Install tensorflow with pip
   `pip install tensorflow`

4. Download corresponding cuDNN 7.6 runtime deb file from https://developer.nvidia.com/cudnn

5. Install it with `sudo dpkg -i libcudnn7_-1+cuda9.0_amd64.deb`

@ alexforever86 Après avoir effectué votre mise à jour, êtes-vous sûr que vous utilisez votre GPU, et non le CPU? Il semble que vous utilisez le GPU avant de faire votre mise à jour (en raison du message d'erreur faisant référence à cuDNN), mais je me demande après. Vous utilisez "pip install tensorflow", mais cela devrait être "pip install tensorflow-gpu", non? De plus, vous avez dit que vous utilisiez CUDA 10, mais que le fichier deb cuDNN que vous avez répertorié est pour cuda9.0, donc cela ne devrait pas fonctionner.

Donc, je pense qu'il se peut que vous n'utilisiez pas réellement le GPU, et ne prouve donc pas que la mise à jour vers cuDNN 7.6 résout le problème.

@ synapse8 Vous avez absolument raison à propos de la version tensorflow-gpu et cuDNN. Je suis également très confus par mon commentaire maintenant et je ne me souviens plus des détails. Quoi qu'il en soit, ci-dessous sont les versions actuelles de mon système.

pip show tensorflow-gpu
Nom: tensorflow-gpu
La dernière version: 1.13.1

nvidia-smi
Version du pilote NVIDIA-SMI 430.26: 430.26 Version CUDA: 10.2

sudo apt search cudnn | grep installed
libcudnn7 / maintenant 7.6.0.64-1 + cuda10.0 amd64

@ alexforever86 avec la configuration que vous avez mentionnée maintenant voyez-vous toujours ce problème? (Je suppose que cela fonctionne pour vous). J'ai récemment installé un système avec cuda10, pilote 410, 7.6 cudnn et TF-gpu 1.14 (installation pip) et je n'ai pas vu le problème.

@ robzor92 J'utilise tensorflow-gpu 1.13, et par curiosité, je viens d'installer 1.14 pour tester si cela a résolu le problème (pour moi). J'obtiens toujours l'erreur, et je dois toujours faire la solution de contournement «autoriser la croissance» (encore une fois, pas si grave).

Quelle carte vidéo utilisez-vous?

@ synapse8 Je l'ai essayé avec une GTX 1070.

@ synapse8 J'ai également essayé l'exemple de code fourni par ce créateur de thread tout à l'heure, cela a fonctionné sans problème. Je ne dirais cependant pas que ce n'est qu'un problème de la ligne RTX car j'ai vu le même problème sur une GTX 1050Ti avec TF 1.13.1. En utilisant la même combinaison pilote / cuda / cudnn que j'ai postée auparavant.

@ robzor92 Je doute que le problème du 1050Ti soit lié à la petite taille de VRAM. Les cartes RTX rencontreraient cela sur les modèles CNN MNIST de base. Je doute que le réglage de l'allocation VRAM par NVIDIA sur les cartes RTX ait en quelque sorte gâché les choses.

J'ai la même erreur sur tensorflow 1.14.0 et RTX2080. Mais dans mon cas, cette erreur ne se produit que lorsque j'utilise la couche de convolution.

2019-07-14 21:48:13.041683: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-07-14 21:48:13.064262: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 3600000000 Hz
2019-07-14 21:48:13.064955: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55abe99bcd30 executing computations on platform Host. Devices:
2019-07-14 21:48:13.064967: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): <undefined>, <undefined>
2019-07-14 21:48:13.066219: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcuda.so.1
2019-07-14 21:48:13.153748: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-07-14 21:48:13.154195: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55abebb44f00 executing computations on platform CUDA. Devices:
2019-07-14 21:48:13.154207: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): GeForce RTX 2080, Compute Capability 7.5
2019-07-14 21:48:13.154317: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-07-14 21:48:13.154707: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties: 
name: GeForce RTX 2080 major: 7 minor: 5 memoryClockRate(GHz): 1.71
pciBusID: 0000:01:00.0
2019-07-14 21:48:13.154845: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.0
2019-07-14 21:48:13.155504: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10.0
2019-07-14 21:48:13.156112: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcufft.so.10.0
2019-07-14 21:48:13.156265: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcurand.so.10.0
2019-07-14 21:48:13.157040: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcusolver.so.10.0
2019-07-14 21:48:13.157646: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcusparse.so.10.0
2019-07-14 21:48:13.159661: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudnn.so.7
2019-07-14 21:48:13.159730: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-07-14 21:48:13.160165: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-07-14 21:48:13.160542: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0
2019-07-14 21:48:13.160559: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.0
2019-07-14 21:48:13.161120: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-07-14 21:48:13.161129: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1187]      0 
2019-07-14 21:48:13.161133: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1200] 0:   N 
2019-07-14 21:48:13.161331: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-07-14 21:48:13.161730: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-07-14 21:48:13.162120: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6794 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080, pci bus id: 0000:01:00.0, compute capability: 7.5)
2019-07-14 21:48:13.497639: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudnn.so.7
2019-07-14 21:48:14.077729: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2019-07-14 21:48:14.080055: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
Traceback (most recent call last):
  File "test.py", line 16, in <module>
    print(model.predict(test_inputs))
  File "/home/yudai/.local/share/virtualenvs/pipenv_practice-DKmRVcs4/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", line 1078, in predict
    callbacks=callbacks)
  File "/home/yudai/.local/share/virtualenvs/pipenv_practice-DKmRVcs4/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 363, in model_iteration
    batch_outs = f(ins_batch)
  File "/home/yudai/.local/share/virtualenvs/pipenv_practice-DKmRVcs4/lib/python3.7/site-packages/tensorflow/python/keras/backend.py", line 3292, in __call__
    run_metadata=self.run_metadata)
  File "/home/yudai/.local/share/virtualenvs/pipenv_practice-DKmRVcs4/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1458, in __call__
    run_metadata_ptr)
tensorflow.python.framework.errors_impl.UnknownError: 2 root error(s) found.
  (0) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
     [[{{node conv2d/Conv2D}}]]
  (1) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
     [[{{node conv2d/Conv2D}}]]
     [[flatten/Reshape/_7]]
0 successful operations.
0 derived errors ignored.

J'ai essayé config.gpu_options.allow_growth = True , mais cela ne résout pas cette erreur.

Je veux que quelqu'un m'aide.

Je vous remercie.

Même problème avec RTX 2070

J'ai fait une observation intéressante à ce sujet, qui pourrait aider à localiser cette erreur ou à trouver une solution viable:
J'obtiens également l'erreur Failed to get convolution algorithm en référence à Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR .
Système: ordinateur portable avec Nvidia Quadro P2000, Ubuntu 18.04, tf 1.13.1, cuda10, cudnn 7.4.2
Comme mentionné, je peux exécuter le programme en douceur en utilisant allow_growth , alors merci pour cela, assez bien pour moi.

Intéressant: je reçois cette erreur uniquement lorsque j'utilise tf.layers.conv... mais le passage à tf.keras.layers.... permet au programme de s'exécuter sans allow_growth , donc quelque chose dans le code keras semble fonctionner mieux que dans le code tf. Peut-être que quelqu'un peut utiliser ces informations pour trouver une solution à partir de keras.
Je m'en tiens aux tf.layers pour le moment, car ils offrent un partage de poids facile via des portées variables, qui ne sont malheureusement pas prises en charge par keras.

@ DavidS3141 C'est intéressant. Dans mon cas, la seule couche de convolution ne fonctionne pas à la fois dans tf.layers et tf.keras.layers ...

Quand j'utilise pytorch, torch.cuda.is_available est True et peut utiliser la couche de convolution sans aucun problème, donc je pense que la cause est le tensorflow, mais je ne sais pas ce qui ne va pas.

Je suis d'accord avec @ Hayashi-Yudai: il en va de même pour MXNet. Une configuration identique fonctionne correctement lorsque Tensorflow échoue.

Environnement:
RTX2080
Ubuntu 18.10
Pilote 430.26
CUDA 10.0 (également 10.1, qui n'est pas encore pris en charge par TF)
cuDNN 7.6.1
mxnet-cu100 1.4.1
tensorflow-gpu 1.14.0

Hé les gars, j'utilise les poids du modèle pré-entraîné avec le backbone ResNet50 sur l'ensemble de données COCO pour m'entraîner sur mon ensemble de données CSV. J'obtiens cette erreur: Inconnu: Impossible d'obtenir l'algorithme de convolution.
- taille du lot 7 - étapes 9 - épingles 4
--snapshot-path snapshots --tensorboard-dir tensorboard
csv dataset / train.csv dataset / classes.csv J'ai essayé de résoudre le problème par le script suivant en ligne de commande dans l'environnement virtuel:
python

importer tensorflow

depuis tensorflow.compat.v1 import ConfigProto
depuis tensorflow.compat.v1 import InteractiveSession
config = ConfigProto ()
config.gpu_options.allow_growth = Vrai
session = InteractiveSession (config = config)

aussi bien que
importer tensorflow en tant que tf
config = tf.ConfigProto ()
config.gpu_options.allow_growth = Vrai
session = tf.Session (config = config) mais cela n'a pas résolu mon erreur .:

J'utilise : -
Ubuntu 16.0
Cuda: 10,0
Tensorflow 1.14.0

Erreur:
tensorflow.python.framework.errors_impl.UnknownError: 2 erreur (s) racine trouvée (s). │ | Aucun processus en cours d'exécution trouvé |
(0) Inconnu: échec de l'obtention de l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un avertissement │ + ------------------------------- ---------------------------------------------- +
le message du journal a été imprimé ci-dessus. │
[[{{node conv1 / convolution}}]] │
[[perte / ajout / _2377]] │
(1) Inconnu: échec de l'obtention de l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas réussi à s'initialiser, alors essayez de voir si un avertissement
le message du journal a été imprimé ci-dessus. │
[[{{node conv1 / convolution}}]] │
0 opérations réussies. │
0 erreurs dérivées ignorées. │
terminer appelé sans exception active │
Abandonné (core dumpé)
Toute aide serait appréciée.

Même problème ici. La solution de contournement Allow_growth fonctionne. Sinon, j'obtiens cette erreur sur l'ensemble de données tensorflow MNIST le plus basique.

RTX2060 mobile ici.

Un problème se produit avec le tensorflow compilé à partir de la branche r2.0 ainsi que TF 1.4 installé via conda avec conda (tensorflow-gpu).

@ Hayashi-Yudai

J'ai essayé config.gpu_options.allow_growth = True, mais cela ne résout pas cette erreur.

Quelles sont les commandes exactes que vous avez ajoutées à votre code? Essayez plutôt ce qui suit si c'est différent ...

config = tf.ConfigProto ()
config.gpu_options.allow_growth = Vrai
tf.keras.backend.set_session (tf.Session (config = config))

@ synapse8 Merci pour votre commentaire. J'ai essayé mais le résultat était le même.

Au fait, j'ai essayé nvidia-docker et je me suis bien passé sauf que la version python est 3.5.
https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/running.html#running

Une information supplémentaire, si cela ne vous dérange pas d'utiliser python 3.6.8 et tensorflow-gpu 1.12.0, vous pouvez utiliser anaconda.

conda create -n <virtual env name> python=3.6.8
conda install tensorflow-gpu==1.12.0
conda install cudnn==7.3.1    # By default, cudnn7.6 is installed but it causes the error

J'ai testé la construction de tf-2.0.0-beta1 à partir de sources avec CUDA-10.1 et CUDNN-7.6.2.4 et l'erreur ne se manifeste pas.

Vous pouvez trouver des images docker pour créer un package tf-gpu et un package tf-base ici:
https://github.com/edowson/docker-tensorflow

Le canal anaconda n'a pas de cudnn==7.6.2 au moment de la rédaction de ce commentaire.

Windows 7, m'a cogné la tête contre le mur sur Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR pendant un certain temps en essayant de créer une nouvelle machine.

Les réinstallations, beaucoup d'autres choses dans ce thread et d'autres ne l'ont pas corrigé.

En testant que ne pas avoir cudnn64_7.dll provoquerait une erreur différente de celle de CUDNN_STATUS_INTERNAL_ERROR j'ai renommé la dll. Confirmant que l'erreur était plutôt une erreur de type CUDNN NOT INSTALLED , j'ai annulé le changement de nom de fichier.

Comme par magie, tout a commencé à fonctionner.

Je ne sais pas pourquoi ni comment, mais c'est le cas. Espérons que cela aide quelqu'un d'autre. Sinon, cela ne prend que quelques secondes pour essayer.

J'ai trouvé que ce problème était dû au fait que j'avais fait deux appels à tf par erreur.

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

# several lines of code later...

sess = tf.Session(config=config)

Probablement pas la cause fondamentale pour la plupart des gens, mais cela vaut peut-être la peine d'être recherché.

Le simple fait de partager "allow_growth = True" résout le problème de mon système ci-dessous
rtx 2080ti, ubuntu18.04, cuda9.0, cudnn7, tf1.9

config = tf.ConfigProto ()
config.gpu_options.allow_growth = Vrai
session = tf.Session (config = config)

Cela a à voir avec la fraction de mémoire disponible pour charger les ressources GPU afin de créer un handle cudnn, également connu sous le nom de per_process_gpu_memory_fraction .
Réduire vous-même cette fraction de mémoire résoudra l'erreur.

> sess_config = tf.ConfigProto(gpu_options =
> tf.GPUOptions(per_process_gpu_memory_fraction=0.7),
> allow_soft_placement = True)
> 
> with tf.Session(config=sess_config) as sess:
>      sess.run([whatever])

Utilisez la plus petite fraction possible dans votre mémoire. (Dans le code, j'utilise 0.7, vous pouvez commencer avec 0.3 ou même plus petit, puis augmenter jusqu'à ce que vous obteniez la même erreur, c'est votre limite.)
Passez-le à votre tf.Session() ou tf.train.MonitoredTrainingSession() ou au superviseur sv.managed_session() comme configuration.

Cela devrait permettre à votre GPU de créer un handle cudnn pour votre code TensorFlow.

Comme expliqué ici , la nouvelle approche de TF 2.0 pour définir config.gpu_options.allow_growth = True est:

gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
  # Currently, memory growth needs to be the same across GPUs
  try:
    for gpu in gpus:
      tf.config.experimental.set_memory_growth(gpu, True)
  except RuntimeError as e:
    print(e)

Avec cet extrait de code et TF 2.0 RC1, l'erreur n'apparaît plus.
Cependant, en raison du nombre de personnes disposant d'un GPU Nvidia 20XX, je pense que ce serait une bonne idée de résoudre ce problème de manière native avant la sortie de la version finale de TF 2.0.

J'ai eu le même problème avec 1080Ti et TitanX sur TF1.4 et les suggestions de @ va-andrew et @oscarlinux ont sauvé la mise! Ce qui me rappelle en premier lieu pourquoi je suis passé au pytorch et ne suis jamais revenu. Malheureusement, il y a encore des personnes utilisant TF .... donc je dois encore traverser cette douleur chaque fois que j'utilise leur base de code ... peut-être qu'il est temps de jouer un peu avec ONNX.

Pour quiconque trouve cela après la mise à niveau vers tensorflow 2.0, l'API et le code sont légèrement différents.

Ubuntu 18
Tensorflow 2.0
Tensorflow-gpu 2.0
GeForce RTX 2070

Code mis à jour pour ce système.

import tensorflow as tf
config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.compat.v1.Session(config=config)

Cette solution a fonctionné pour moi. (TF-GPU 2.0, Windows 10, GeForce RTX 2070)

physical_devices = tf.config.experimental.list_physical_devices('GPU')
assert len(physical_devices) > 0, "Not enough GPU hardware devices available"
tf.config.experimental.set_memory_growth(physical_devices[0], True)

Ajoutez un point de données supplémentaire:
rtx 2080ti, ubuntu18.04, cuda10.0, cudnn7
Dans mon cas, cela ne fonctionne pas avec tf1.14 et 1.15rc3

@ w4nderlust , pour 1.14 et 1.15, vous voudrez continuer à définir l'option de configuration de session config.gpu_options.allow_growth = True . Est-ce que ce que vous signalez ne fonctionne pas, ou simplement le mécanisme tf.config.experimental ?

@ w4nderlust , pour 1.14 et 1.15, vous voudrez continuer à définir l'option de configuration de session config.gpu_options.allow_growth = True . Est-ce que ce que vous signalez ne fonctionne pas, ou simplement le mécanisme tf.config.experimental ?

Désolé aurait dû être plus précis, je signale que sans config.gpu_options.allow_growth = True cela ne fonctionne toujours pas dans ma configuration avec 1.14 et 1.15rc3.

Je pense avoir trouvé une meilleure solution de contournement que le config.gpu_options.allow_growth = True .

Pour ma configuration (_RTX 2070_, image docker _tensorflow: 1.15.0-gpu-py3_), la configuration de la configuration comme indiqué ci-dessous évite le _CUDNN_STATUS_INTERNAL_ERROR_ tout en allouant toute la mémoire du GPU .
Ceci est très utile pour les gros modèles qui ne rentrent pas dans la mémoire en mode allow_growth mais s'adaptent juste lorsque toute la mémoire est allouée.

Pour allouer toute la mémoire sur RTX:
config.gpu_options.per_process_gpu_memory_fraction = 1.0

Pour allouer toute la mémoire sur RTX:
config.gpu_options.per_process_gpu_memory_fraction = 1.0

@PoloShock
J'ai essayé cela avec TF 2.0 et cela ne semble pas fonctionner.
Ubuntu18.04, RTX 2080, CUDA10, cudnn 7.6.

Pour TF 2.0, l'API de limitation de l'utilisation de la mémoire GPU a changé.

gpus = tf.config.experimental.list_physical_devices('GPU')

tf.config.experimental.set_virtual_device_configuration(gpus[0], [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024)]

@nluehr comprenez -vous pourquoi ce problème n'apparaît que sur RTX? Serait-ce parce que d'autres applications l'utilisent comme GPU d'affichage en même temps que TensorFlow?

Il m'est difficile de déboguer cela directement car je n'ai pas accès à un GPU RTX.

@sanjoy J'exécute l'affichage sur le GPU intégré. Aucune autre application sur mon seul GPU RTX lors de l'exécution de TensorFlow.

J'ai essayé de l'utiliser pour tensorflow 2.0:

    config = tf.compat.v1.ConfigProto()
    config.gpu_options.allow_growth = True
    session = tf.compat.v1.Session(config=config)

Il corrige une erreur cudnn sur mon rtx2080, mais la formation est aussi rapide que mon 1050Ti sur mon ordinateur portable!
Lors de la formation d'un CNN:

Tue Nov 12 19:22:35 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.26       Driver Version: 440.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 2080    Off  | 00000000:2D:00.0 Off |                  N/A |
|  0%   37C    P2    75W / 265W |   2904MiB /  7979MiB |     27%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1026      G   /usr/lib/Xorg                                200MiB |
|    0      6420      G   cinnamon                                      43MiB |
|    0     21073      C   /home/clementpoiret/anaconda3/bin/python    2647MiB |
+-----------------------------------------------------------------------------+

Ajouter

gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_virtual_device_configuration(gpus[0], [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=7000)]

N'a pas résolu le problème, sans allow_growth, j'obtiens l'erreur cudnn, et de toute façon mon RTX n'utilise que quelque chose comme 3 Go ou de la mémoire.

Une idée ?

j'ai essayé

    gpus = tf.config.experimental.list_physical_devices('GPU')
    tf.config.experimental.set_memory_growth(gpus[0], True)
    tf.config.experimental.set_virtual_device_configuration(
        gpus[0],
        [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=7900)])

mais cudnn lance toujours une erreur

Cette erreur fonctionne également dans l'image Docker tensorflow 1.15.0-py3-gpu (Ubuntu 18.04) avec deux GPU Titan V (@sanjoy) - pas RTX. Cependant, cette erreur ne semble se produire que pour moi sur mon GPU0 qui a Xorg et gnome-shell utilisant la mémoire GPU0 tandis que GPU1 n'a que python utilisant GPU mem et ne lance pas cette erreur. L'erreur est également malheureusement intermittente - parfois, je pourrai supprimer le conteneur du docker, le recréer avec les mêmes paramètres et le même code, puis l'erreur disparaîtra. Ou pas.

J'ai pu le réparer en utilisant l'interface backend Keras avec:

import tensorflow as tf

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
allow_growth_session = tf.Session(config=config)
tf.keras.backend.set_session(allow_growth_session)

Voici mon nvidia-smi sur les deux GPU

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.26       Driver Version: 440.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  TITAN V             Off  | 00000000:01:00.0  On |                  N/A |
| 46%   63C    P2    51W / 250W |   7936MiB / 12065MiB |     31%      Default |
+-------------------------------+----------------------+----------------------+
|   1  TITAN V             Off  | 00000000:02:00.0 Off |                  N/A |
| 52%   70C    P2   131W / 250W |  12014MiB / 12066MiB |     60%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1564      G   /usr/lib/xorg/Xorg                            56MiB |
|    0      1607      G   /usr/bin/gnome-shell                          58MiB |
|    0      2428      G   /usr/lib/xorg/Xorg                           442MiB |
|    0      2574      G   /usr/bin/gnome-shell                         289MiB |
|    0      3292      G   ...p/pycharm-professional/167/jbr/bin/java    12MiB |
|    0      6794      G   anki                                          60MiB |
|    0     10336      G   /usr/lib/firefox/firefox                       6MiB |
|    0     16986      C   python                                      6981MiB |
|    1      4057      C   python                                     12001MiB |
+-----------------------------------------------------------------------------+

J'ai le même problème que @clementpoiret avec TF 2.0 installé via conda. En utilisant le drapeau allow_growth , le problème disparaît mais cela rend aussi l'entraînement très très lent, plus lent que ce que j'avais sur TF 1.x ... Envie d'abord, euh?

@clementpoiret et @EKami , cela accélère-t-il votre entraînement si vous remplacez config.gpu_options.allow_growth = True par config.gpu_options.per_process_gpu_memory_fraction = 0.8 ? Vous pouvez expérimenter pour voir quelle fraction utilise le plus votre GPU.

@ synapse8 Je ne vois rien d'équivalent dans la documentation de tensorflow 2.0, comment le faire avec tf.config.experimental?

Edit: Je vais essayer de définir la mémoire de cette façon, pour voir si cela résout le problème:

import subprocess
import tensorflow as tf


def get_gpus_memory():
    """Get the max gpu memory.

    Returns
    -------
    usage: list
        Returns a list of total memory for each gpus.
    """
    result = subprocess.check_output([
        "nvidia-smi", "--query-gpu=memory.total",
        "--format=csv,nounits,noheader"
    ]).decode("utf-8")

    gpus_memory = [int(x) for x in result.strip().split("\n")]
    return gpus_memory


def setup_gpus(allow_growth=True, memory_fraction=.9):
    """Setup GPUs.

    Parameters:
    allow_growth (Boolean)
    memory_fraction (Float): Set maximum memory usage, with 1 using
        maximum memory
    """
    gpus = tf.config.experimental.list_physical_devices("GPU")
    if gpus:
        try:
            # Currently, memory growth needs to be the same across GPUs
            for i, gpu in enumerate(gpus):
                memory = get_gpus_memory()[i]

                tf.config.experimental.set_memory_growth(gpu, allow_growth)

                # Setting memory limit to max*fraction
                tf.config.experimental.set_virtual_device_configuration(
                    gpu, [
                        tf.config.experimental.VirtualDeviceConfiguration(
                            memory_limit=memory * memory_fraction)
                    ])

                logical_gpus = tf.config.experimental.list_logical_devices(
                    "GPU")
                print(len(gpus), "Physical GPUs,", len(logical_gpus),
                      "Logical GPUs")
        except RuntimeError as e:
            # Memory growth must be set before GPUs have been initialized
            print(e)

De cette façon, nous pouvons simplement appeler setup_gpus(True, .9)

@clementpoiret : Veuillez noter que l'appel tf.config.experimental.set_memory_growth est inutile puisque tf.config.experimental.set_virtual_device_configuration remplace cet indicateur car il coupe la mémoire du GPU et pré-alloue la mémoire allouée.

Ce problème ne se limite pas au RTX. Ou TF 2.0.

Ajouter:
_from tensorflow.compat.v1 importer ConfigProto
depuis tensorflow.compat.v1 import InteractiveSession
config = ConfigProto ()
config.gpu_options.allow_growth = Vrai
session = InteractiveSession (config = config) _

Résout le problème «Impossible de créer le descripteur cudnn: CUDNN_STATUS_INTERNAL_ERROR» avec l'environnement comme suit:

nvidia-smi | NVIDIA-SMI 430.50 Driver Version: 430.50 CUDA Version: 10.1 | | 0 GeForce GT 1030 | 49% 67C P0 N/A / 30W | 1957MiB / 2000MiB | 94%

python -c 'import tensorflow as tf; print(tf.__version__)' 1.14.0
Cela pourrait-il être un problème d'allocation de bloc contigu maximal avec les pilotes NVIDIA? Où est-il possible d'allouer la même quantité totale de mémoire mais dans des blocs plus petits?

Salut,

Je ne peux pas reproduire ceci sur ma machine donc j'ai besoin d'aide pour causer ceci. Avons-nous quelqu'un ici qui peut reproduire le problème et qui est prêt à effectuer un débogage pratique?

Comme point de départ, j'aimerais comprendre pourquoi MinSystemMemory ne conserve pas assez de mémoire pour cuDNN. Si quelqu'un avec une configuration qui reproduit ce problème peut ajouter une journalisation (en tant que correctif local) pour découvrir la quantité de mémoire retournée par MinSystemMemory ce serait formidable. Et est-ce que l'augmentation du nombre magique 0.05 en MinSystemMemory aide la situation?

@sanjoy J'ai une version qui présente ce problème. Comment pourrais-je accéder à MinSystemMemory ou "définir le nombre magique 0.05"? Je suis revenu à l'utilisation de cuda 9.1 pour la plupart, mais cela ne me dérange pas d'essayer quelques choses.

@odinsbane, vous devrez créer TensorFlow à partir de la source pour faire ce que je suggère ci-dessous.

La première étape consiste à ajouter des lignes LOG(INFO) ou std::cerr à MinSystemMemory pour imprimer available_memory et la valeur de retour de MinSystemMemory . Est-ce que available_memory accord avec ce que nvidia-smi imprime? Combien de mémoire laissons-nous au système?

Deuxièmement, est-ce que l'augmentation du nombre magique 0.05 à, disons, 0.07 aide du tout?

Celui-ci fonctionne! Merci les gars!

from keras.backend.tensorflow_backend import set_session
$ import tensorflow as tf
$ config = tf.ConfigProto()
$ config.gpu_options.allow_growth = True
$ config.log_device_placement = True
$ sess = tf.Session(config=config)
$ set_session(sess)

nous sommes confrontés à un problème similaire sur notre RTX 2070 (Ubuntu 18.04, TF2) Nous avons essayé différentes combinaisons de versions CUDA 10.0 et libcudnn7.xxx, mais l'erreur continue de se reproduire.
Sur une autre machine, nous avons une GTX 1080ti et celle-ci fonctionne sans problème.
Le pilote nvidia est 430,50 dans les deux cas.

Il n'est pas causé par tf.keras.utils.plot_model , je le supprime et cette erreur apparaît toujours, mais moins fréquemment.
Mise à jour: je trouve que cela n'arrive que lorsque j'utilise tf.keras.utils.plot_model . Je vais continuer à essayer.

============

J'ai un problème similaire avec RTX 2080 Ti sur Ubuntu 18.04.3 LTS, tf 1.15, cuda 10.0.

Ce qui est étrange dans mon cas, c'est que cela ne se produit que très occasionnellement, et une fois que cela se produit, cela durera des minutes à des heures, puis disparaîtra tout seul .

J'ai essayé toutes les solutions ci-dessus et aucune ne peut le réparer immédiatement. J'ai essayé de ne rien faire et d'attendre, ça va enfin disparaître.

Ce que j'ai également essayé et n'est pas mentionné ci-dessus:

  1. Supprimer le répertoire ~/.nv
  2. Redémarrez simplement

FYI, journaux d'erreurs

2019-12-21 14:47:30.785233: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10.0
2019-12-21 14:47:30.959825: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2019-12-21 14:47:31.722238: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2019-12-21 14:47:31.749524: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
Traceback (most recent call last):
  File "train_cifar.py", line 204, in <module>
    main()
  File "train_cifar.py", line 133, in main
    validation_data=(x_test, output_test), callbacks=callbacks, verbose=0)
  File "/home/xxx/anaconda3/envs/tf-1-gpu/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 727, in fit
    use_multiprocessing=use_multiprocessing)
  File "/home/xxx/anaconda3/envs/tf-1-gpu/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_generator.py", line 603, in fit
    steps_name='steps_per_epoch')
  File "/home/xxx/anaconda3/envs/tf-1-gpu/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_generator.py", line 265, in model_iteration
    batch_outs = batch_function(*batch_data)
  File "/home/xxx/anaconda3/envs/tf-1-gpu/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 1017, in train_on_batch
    outputs = self.train_function(ins)  # pylint: disable=not-callable
  File "/home/xxx/anaconda3/envs/tf-1-gpu/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py", line 3476, in __call__
    run_metadata=self.run_metadata)
  File "/home/xxx/anaconda3/envs/tf-1-gpu/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1472, in __call__
    run_metadata_ptr)
tensorflow.python.framework.errors_impl.UnknownError: 2 root error(s) found.
  (0) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
     [[{{node stem_layer/conv2d/Conv2D}}]]
     [[metrics/classifier_acc/Identity/_1749]]
  (1) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
     [[{{node stem_layer/conv2d/Conv2D}}]]
0 successful operations.
0 derived errors ignored.

Nous sommes confrontés à des problèmes pertinents

Spécifications du système

  • Ubuntu 18.04.3 LTS
  • RTX 2070
  • python 3.7.1
  • tf-gpu 2.0.0
  • V10.0.130 CUDA
  • libcudnn7 7.6.2

L'erreur est déclenchée lorsque j'essaie d'utiliser LSTM, GRU, RNN, etc.

Erreur réelle

2019-12-23 16:09:00.912238: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7 2019-12-23 16:09:01.408990: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR 2019-12-23 16:09:01.409043: W tensorflow/core/framework/op_kernel.cc:1622] OP_REQUIRES failed at cudnn_rnn_ops.cc:1491 : Unknown: Fail to find the dnn implementation.

File "/home/alex/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/keras/layers/recurrent_v2.py", line 961, in call **cudnn_lstm_kwargs) File "/home/alex/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/keras/layers/recurrent_v2.py", line 1174, in cudnn_lstm rnn_mode='lstm') File "/home/alex/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/ops/gen_cudnn_rnn_ops.py", line 109, in cudnn_rnn ctx=_ctx) File "/home/alex/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/ops/gen_cudnn_rnn_ops.py", line 198, in cudnn_rnn_eager_fallback attrs=_attrs, ctx=_ctx, name=name) File "/home/alex/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/eager/execute.py", line 67, in quick_execute six.raise_from(core._status_to_exception(e.code, message), None) File "<string>", line 3, in raise_from tensorflow.python.framework.errors_impl.UnknownError: Fail to find the dnn implementation. [Op:CudnnRNN]

Problème apparent

Comme il semble que toute ma mémoire est rongée assez rapidement. Les problèmes semblent survenir uniquement en mode gpu, le même code fonctionne bien avec le cpu

Essais

  • permettre la croissance de la mémoire
  • créer un appareil virtuel avec une mémoire limitée

Les deux essais produisent la même erreur.

Des idées?

Je ne peux pas progresser sur ce problème car je ne peux pas le reproduire. Si vous êtes en mesure de reproduire cela de manière fiable sur votre machine, vous pouvez aider; voici comment: https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -560963770, https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750

Je ne peux pas progresser sur ce problème car je ne peux pas le reproduire. Si vous êtes en mesure de reproduire cela de manière fiable sur votre machine, vous pouvez aider; voici comment: # 24496 (commentaire) , # 24496 (commentaire)

Salut @sanjoy , je suis très disposé à aider, mais malheureusement, je ne peux pas construire tf à partir des sources car j'utilise les propriétés de mon université pour faire mes expériences et mon ordinateur portable personnel n'est pas équipé d'un GPU. Existe-t-il d'autres moyens d'obtenir le journal dont nous avons besoin?

J'ai trouvé le code suivant sur le débordement de pile , cela pourrait-il aider?

from tensorflow.contrib.memory_stats.python.ops.memory_stats_ops import BytesInUse
with tf.device('/device:GPU:0'):  # Replace with device you are interested in
  bytes_in_use = BytesInUse()
with tf.Session() as sess:
  print(sess.run(bytes_in_use))

Existe-t-il d'autres moyens d'obtenir le journal dont nous avons besoin?

Je vais enregistrer un relevé VLOG pour obtenir ces informations. Une fois que cela est fait, pourrez-vous installer et reproduire cela avec tf-nightly (avec quelques indicateurs supplémentaires, je vous ferai savoir exactement lesquels)?

Je peux sûrement installer un package sur cet ordinateur s'il est disponible sur pip ou conda et j'utilise un environnement virtuel. Je vais essayer de reproduire l'erreur.

Je peux sûrement installer un package sur cet ordinateur s'il est disponible sur pip ou conda et j'utilise un environnement virtuel. Je vais essayer de reproduire l'erreur.

Pouvez-vous s'il vous plaît installer tf-nightly (pour qu'il récupère le commit qui ajoute la journalisation) et l'exécuter avec la variable d'environnement TF_CPP_VMODULE définie sur gpu_device=5 ? Cela devrait imprimer deux lignes comme

2019-12-26 12:07:37.196206: I tensorflow/core/common_runtime/gpu/gpu_device.cc:837] available_memory = 12319588352                                             
2019-12-26 12:07:37.196221: I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] min_system_memory = 615979417                                              

Pouvez-vous s'il vous plaît rapporter ces chiffres ici?

Désolé, mon code actuel n'est pas compatible avec tf 2.0 (j'utilise 1.15), j'essaye de le mettre à jour. Laisse-moi un peu de temps s'il te plait.

Ce problème semble lié à mon RTX2080, j'ai un bureau GTX1080, tout semble correct, puis j'utilise conda clone l'environnement conda sur mon ordinateur portable RTX2080, j'utilise tensorflow2.0.0-gpu. une fois que le code d'application utilise Conv2d, LSTM, GRU, ce problème survient.
avant d'utiliser les codes suivants pour résoudre ce problème:
gpus = tf.config.experimental.list_physical_devices ('GPU')
si gpus:
essayer:

Actuellement, la croissance de la mémoire doit être la même sur tous les GPU

    for gpu in gpus:
        tf.config.experimental.set_memory_growth(gpu, True)
        logical_gpus = tf.config.experimental.list_logical_devices('GPU')
        print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:

La croissance de la mémoire doit être définie avant l'initialisation des GPU

    print(e)

mais depuis plusieurs jours, la méthode ci-dessus ne fonctionne plus

J'ai le même problème avec la gtx 960m

Salut @sanjoy , je viens de

2019-12-30 17:38:23.824323: I tensorflow/core/common_runtime/gpu/gpu_device.cc:837] available_memory = 10840309760
2019-12-30 17:38:23.824328: I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] min_system_memory = 542015488

Salut @sanjoy , je viens de

2019-12-30 17:38:23.824323: I tensorflow/core/common_runtime/gpu/gpu_device.cc:837] available_memory = 10840309760
2019-12-30 17:38:23.824328: I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] min_system_memory = 542015488

Merci!

Malheureusement, cela n'a pas aidé autant que je le pensais. Si je serre MinSystemMemory sur une construction locale à 542015488 (c'est- min_system_memory = std::min(min_system_memory, 542015488ll) dire

@sanjoy Je suis capable de reproduire le problème (généralement de manière cohérente) de mon côté.

Messages pertinents du dernier soir:

Avec la croissance de la mémoire explicitement autorisée

2019-12-30 22:51:06.846774: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
WARNING:tensorflow:Falling back to tensorflow client, its recommended to install the cloud tpu client directly with pip install cloud-tpu-client .
2019-12-30 22:51:08.851660: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2019-12-30 22:51:08.877811: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1558] Found device 0 with properties: 
pciBusID: 0000:08:00.0 name: GeForce GTX 1070 computeCapability: 6.1
coreClock: 1.7715GHz coreCount: 15 deviceMemorySize: 8.00GiB deviceMemoryBandwidth: 238.66GiB/s
2019-12-30 22:51:08.887672: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2019-12-30 22:51:08.895277: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2019-12-30 22:51:08.906016: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2019-12-30 22:51:08.913767: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2019-12-30 22:51:08.921329: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2019-12-30 22:51:08.930208: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2019-12-30 22:51:08.941818: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2019-12-30 22:51:08.945713: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1700] Adding visible gpu devices: 0
TF GPU device: PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')



CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
Tensorflow Version: 2.1.0-dev20191230
Tensorflow_addons Version: 0.7.0-dev



Preparing data
Loading dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 80/80 [00:03<00:00, 21.61it/s] 
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 68/68 [00:00<00:00, 447.32it/s] 
Performing NLP
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 80/80 [00:00<00:00, 13332.71it/s] 
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 68/68 [00:00<?, ?it/s] 
Transforming dataset
Generating primitives and constructing vocabulary
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 80/80 [00:00<00:00, 139.11it/s] 
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 68/68 [00:00<00:00, 4249.86it/s] 
Encoding primitives
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16654/16654 [00:00<00:00, 33640.74it/s]
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 805/805 [00:00<00:00, 33538.43it/s] 
2019-12-30 22:51:22.970554: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2019-12-30 22:51:22.977228: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1558] Found device 0 with properties: 
pciBusID: 0000:08:00.0 name: GeForce GTX 1070 computeCapability: 6.1
coreClock: 1.7715GHz coreCount: 15 deviceMemorySize: 8.00GiB deviceMemoryBandwidth: 238.66GiB/s
2019-12-30 22:51:22.983571: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2019-12-30 22:51:22.986832: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2019-12-30 22:51:22.990667: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2019-12-30 22:51:22.993801: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2019-12-30 22:51:22.996967: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2019-12-30 22:51:23.002629: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2019-12-30 22:51:23.006072: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2019-12-30 22:51:23.010482: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1700] Adding visible gpu devices: 0
2019-12-30 22:51:23.557556: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1087] TensorFlow compiled with CUDA 10.1 and cuDNN 7.6.5
2019-12-30 22:51:23.560870: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1099] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-12-30 22:51:23.564144: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1105]      0 
2019-12-30 22:51:23.569159: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1118] 0:   N
2019-12-30 22:51:23.571310: I tensorflow/core/common_runtime/gpu/gpu_device.cc:837] available_memory = 7038160076
2019-12-30 22:51:23.573861: I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] min_system_memory = 351908003
2019-12-30 22:51:23.576728: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1370] GPUDevice PlatformGpuId 0 TfGpuId 0 on bus 1 numa: 0 pci: 0000:08:00.0 DeviceLocality: bus_id: 1
links {
}

2019-12-30 22:51:23.583814: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1244] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6376 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1070, pci bus id: 0000:08:00.0, compute capability: 6.1)
2019-12-30 22:51:23.590034: I tensorflow/core/common_runtime/gpu/gpu_device.cc:249] Created stream[0] = 000002093BAB9860
2019-12-30 22:51:23.594885: I tensorflow/core/common_runtime/gpu/gpu_device.cc:268] Created host_to_device_stream[0] = 000002093BAB9360
2019-12-30 22:51:23.597951: I tensorflow/core/common_runtime/gpu/gpu_device.cc:273] Created device_to_host_stream[0] = 000002093BABA960
2019-12-30 22:51:23.600920: I tensorflow/core/common_runtime/gpu/gpu_device.cc:289] Created device_to_device_stream[0] = 000002093BAB8EE0

Sans aucune modification de la configuration du périphérique GPU

2019-12-30 22:54:47.762913: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
WARNING:tensorflow:Falling back to tensorflow client, its recommended to install the cloud tpu client directly with pip install cloud-tpu-client .
2019-12-30 22:54:50.073199: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2019-12-30 22:54:50.100339: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1558] Found device 0 with properties:
pciBusID: 0000:08:00.0 name: GeForce GTX 1070 computeCapability: 6.1
coreClock: 1.7715GHz coreCount: 15 deviceMemorySize: 8.00GiB deviceMemoryBandwidth: 238.66GiB/s
2019-12-30 22:54:50.105836: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2019-12-30 22:54:50.115940: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2019-12-30 22:54:50.127341: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2019-12-30 22:54:50.131871: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2019-12-30 22:54:50.139786: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2019-12-30 22:54:50.144940: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2019-12-30 22:54:50.159197: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2019-12-30 22:54:50.162685: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1700] Adding visible gpu devices: 0
TF GPU device: PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')



CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
Tensorflow Version: 2.1.0-dev20191230
Tensorflow_addons Version: 0.7.0-dev



Preparing data
Loading dataset
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 80/80 [00:03<00:00, 21.71it/s] 
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 68/68 [00:00<00:00, 433.07it/s] 
Performing NLP
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 80/80 [00:00<00:00, 13332.18it/s] 
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 68/68 [00:00<?, ?it/s] 
Transforming dataset
Generating primitives and constructing vocabulary
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 80/80 [00:00<00:00, 140.34it/s] 
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 68/68 [00:00<00:00, 4249.55it/s] 
Encoding primitives
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16654/16654 [00:00<00:00, 33039.93it/s] 
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 805/805 [00:00<00:00, 33537.43it/s] 
2019-12-30 22:55:04.084880: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2019-12-30 22:55:04.088867: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1558] Found device 0 with properties:
pciBusID: 0000:08:00.0 name: GeForce GTX 1070 computeCapability: 6.1
coreClock: 1.7715GHz coreCount: 15 deviceMemorySize: 8.00GiB deviceMemoryBandwidth: 238.66GiB/s
2019-12-30 22:55:04.094516: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2019-12-30 22:55:04.097049: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2019-12-30 22:55:04.099754: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2019-12-30 22:55:04.102329: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2019-12-30 22:55:04.105131: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2019-12-30 22:55:04.108029: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2019-12-30 22:55:04.110629: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2019-12-30 22:55:04.114339: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1700] Adding visible gpu devices: 0
2019-12-30 22:55:04.655119: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1087] TensorFlow compiled with CUDA 10.1 and cuDNN 7.6.5
2019-12-30 22:55:04.658124: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1099] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-12-30 22:55:04.660826: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1105]      0
2019-12-30 22:55:04.662403: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1118] 0:   N
2019-12-30 22:55:04.664213: I tensorflow/core/common_runtime/gpu/gpu_device.cc:837] available_memory = 7038160076
2019-12-30 22:55:04.666185: I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] min_system_memory = 351908003
2019-12-30 22:55:04.668490: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1370] GPUDevice PlatformGpuId 0 TfGpuId 0 on bus 1 numa: 0 pci: 0000:08:00.0 DeviceLocality: bus_id: 1
links {
}

2019-12-30 22:55:04.672820: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1244] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6376 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1070, pci bus id: 0000:08:00.0, compute capability: 6.1)
2019-12-30 22:55:04.677690: I tensorflow/core/common_runtime/gpu/gpu_device.cc:249] Created stream[0] = 0000021EC0CF5840
2019-12-30 22:55:04.679747: I tensorflow/core/common_runtime/gpu/gpu_device.cc:268] Created host_to_device_stream[0] = 0000021EC0CF58C0
2019-12-30 22:55:04.682343: I tensorflow/core/common_runtime/gpu/gpu_device.cc:273] Created device_to_host_stream[0] = 0000021EC0CF5940
2019-12-30 22:55:04.685266: I tensorflow/core/common_runtime/gpu/gpu_device.cc:289] Created device_to_device_stream[0] = 0000021EC0CF59C0

MODIFIER: informations sur le modèle, si cela vous aide.

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to
==================================================================================================
Feature_1 (InputLayer)          [(None, 150)]        0
__________________________________________________________________________________________________
Feature_2 (InputLayer)          [(None, 150)]        0
__________________________________________________________________________________________________
embedding (Embedding)           (None, 150, 64)      5632        Feature_1[0][0]
__________________________________________________________________________________________________
embedding_1 (Embedding)         (None, 150, 64)      2944        Feature_2[0][0]
__________________________________________________________________________________________________
bidirectional (Bidirectional)   (None, 150, 128)     66048       embedding[0][0]
__________________________________________________________________________________________________
bidirectional_1 (Bidirectional) (None, 150, 128)     66048       embedding_1[0][0]
__________________________________________________________________________________________________
concatenate (Concatenate)       (None, 150, 256)     0           bidirectional[0][0]
                                                                 bidirectional_1[0][0]
__________________________________________________________________________________________________
bidirectional_2 (Bidirectional) (None, 64)           73984       concatenate[0][0]
__________________________________________________________________________________________________
dense (Dense)                   (None, 32)           2080        bidirectional_2[0][0]
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 1)            33          dense[0][0]
==================================================================================================
Total params: 216,769
Trainable params: 216,769
Non-trainable params: 0

Un exemple minimal utilisant TF 1.15, et j'obtiens cette erreur. Sur RTX 2070 et NVIDIA 440.44 et CUDA version 10.2.

import tensorflow as tf
import tensorflow.keras.applications as applications
import tensorflow.keras.utils as utils
import numpy as np

num_samples = 1000
height = 224
width = 224
num_classes = 1000

model = applications.ResNet50(weights=None, input_shape=(height, width, 3), classes=num_classes)

parallel_model = utils.multi_gpu_model(model, gpus=2, cpu_relocation=True)
parallel_model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

x = np.random.random((num_samples, height, width, 3))
y = np.random.random((num_samples, num_classes))

parallel_model.fit(x, y, epochs=20, batch_size=256)

print('all done')
Train on 1000 samples
Epoch 1/20
2020-02-06 15:06:40.524918: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-02-06 15:06:41.291528: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-02-06 15:06:41.329183: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 822083584 exceeds 10% of system memory.
2020-02-06 15:06:42.082319: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 851705856 exceeds 10% of system memory.
2020-02-06 15:06:42.293092: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 822083584 exceeds 10% of system memory.
2020-02-06 15:06:43.173764: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 822083584 exceeds 10% of system memory.
2020-02-06 15:06:43.820074: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-02-06 15:06:44.390897: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 822083584 exceeds 10% of system memory.
2020-02-06 15:06:45.839525: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-02-06 15:06:45.856793: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-02-06 15:06:45.883423: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
Traceback (most recent call last):
  File "./test_tf.py", line 19, in <module>
    parallel_model.fit(x, y, epochs=20, batch_size=256)
  File "/nix/store/520352w3m8lyj2zgv647qfqrws5q798n-python3.7-tensorflow-gpu-1.15.0/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 727, in fit
    use_multiprocessing=use_multiprocessing)
  File "/nix/store/520352w3m8lyj2zgv647qfqrws5q798n-python3.7-tensorflow-gpu-1.15.0/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_arrays.py", line 675, in fit
    steps_name='steps_per_epoch')
  File "/nix/store/520352w3m8lyj2zgv647qfqrws5q798n-python3.7-tensorflow-gpu-1.15.0/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_arrays.py", line 394, in model_iteration
    batch_outs = f(ins_batch)
  File "/nix/store/520352w3m8lyj2zgv647qfqrws5q798n-python3.7-tensorflow-gpu-1.15.0/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py", line 3476, in __call__
    run_metadata=self.run_metadata)
  File "/nix/store/520352w3m8lyj2zgv647qfqrws5q798n-python3.7-tensorflow-gpu-1.15.0/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1472, in __call__
    run_metadata_ptr)
tensorflow.python.framework.errors_impl.UnknownError: 2 root error(s) found.
  (0) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
    [[{{node replica_1/resnet50/conv1_conv/Conv2D}}]]
  (1) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
    [[{{node replica_1/resnet50/conv1_conv/Conv2D}}]]
    [[training/RMSprop/gradients/gradients/Switch_482/_3893]]
0 successful operations.
1 derived errors ignored.

Je tiens à souligner dans un numéro séparé https://github.com/tensorflow/tensorflow/issues/36501 que tout en utilisant ces options permet au code de s'exécuter, l'observation de l'utilisation réelle de la mémoire des GPU montre que ce n'est même pas vraiment faire une utilisation incrémentielle de la mémoire. Donc, l'option ci-dessus corrige l'erreur, mais elle ne fait pas réellement ce qu'elle prétend faire. J'avais l'habitude d'utiliser le même modèle dans les anciennes versions de TF comme 1.2 ... etc et ceux-ci faisaient une allocation de mémoire incrémentielle réelle.

J'ai les mêmes problèmes que tout le monde ici! Après avoir installé tf 2.1, je ne pouvais pas exécuter un exemple simple de MNIST sans ajouter de la croissance de la mémoire au GPU. J'utilise un 2080 ti .

Le problème majeur auquel je suis confronté est que je ne peux pas exécuter tensorflow-probabilité avec tf 2.1 sans obtenir l'erreur interne maudite CUDNN, même avec la croissance de la mémoire ajoutée au code. J'ai essayé d'installer tf 2.0, CUDA 10.0 et CUDA 10.1, différentes versions de CUDNN. J'ai réussi à corriger l'exemple simple de MNIST pour qu'il fonctionne sans la croissance après avoir complètement réinstallé mon ubuntu, mais pas l'exemple de probabilité tensorflow. J'ai finalement essayé d'utiliser un docker nocturne officiel tensorflow et j'ai toujours la même erreur lors de l'utilisation de la probabilité tensorflow (tf 2.2 à l'intérieur du conteneur). Tout fonctionne bien sur le processeur. J'ai également essayé d'exécuter le même docker sur une machine avec 1080 ti et cela a fonctionné ... Il y a certainement quelque chose qui ne va pas avec la série RTX que je ressens.

erreur avec l'exemple de docker tf et de probabilité tensorflow et les informations de débogage supplémentaires cudnn:

TF VERSION: 2.2.0-dev20200208
2020-02-11 08:51:05.891560: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-02-11 08:51:05.912465: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency: 3696000000 Hz
2020-02-11 08:51:05.913040: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x57b1fd0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-02-11 08:51:05.913052: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2020-02-11 08:51:05.914414: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1
2020-02-11 08:51:05.975016: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.975364: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x5679220 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
2020-02-11 08:51:05.975376: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): GeForce RTX 2080 Ti, Compute Capability 7.5
2020-02-11 08:51:05.975477: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.975744: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1558] Found device 0 with properties: 
pciBusID: 0000:01:00.0 name: GeForce RTX 2080 Ti computeCapability: 7.5
coreClock: 1.545GHz coreCount: 68 deviceMemorySize: 10.75GiB deviceMemoryBandwidth: 573.69GiB/s
2020-02-11 08:51:05.975865: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-02-11 08:51:05.976745: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-02-11 08:51:05.977582: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-02-11 08:51:05.977722: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-02-11 08:51:05.978636: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-02-11 08:51:05.979165: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-02-11 08:51:05.981150: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-02-11 08:51:05.981216: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.981528: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.981792: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1700] Adding visible gpu devices: 0
2020-02-11 08:51:05.981812: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-02-11 08:51:05.982323: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1099] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-02-11 08:51:05.982331: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1105]      0 
2020-02-11 08:51:05.982335: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1118] 0:   N 
2020-02-11 08:51:05.982395: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.982687: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.982959: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1244] Created TensorFlow device (/device:GPU:0 with 9604 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5)
2020-02-11 08:51:05.983594: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.983864: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1558] Found device 0 with properties: 
pciBusID: 0000:01:00.0 name: GeForce RTX 2080 Ti computeCapability: 7.5
coreClock: 1.545GHz coreCount: 68 deviceMemorySize: 10.75GiB deviceMemoryBandwidth: 573.69GiB/s
2020-02-11 08:51:05.983881: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-02-11 08:51:05.983889: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-02-11 08:51:05.983896: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-02-11 08:51:05.983904: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-02-11 08:51:05.983912: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-02-11 08:51:05.983920: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-02-11 08:51:05.983928: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-02-11 08:51:05.983961: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.984238: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.984497: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1700] Adding visible gpu devices: 0
2020-02-11 08:51:05.984508: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1099] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-02-11 08:51:05.984512: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1105]      0 
2020-02-11 08:51:05.984516: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1118] 0:   N 
2020-02-11 08:51:05.984563: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.984842: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.985099: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1244] Created TensorFlow device (/device:GPU:0 with 9604 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5)
SUCCESS: Found GPU: /device:GPU:0
2020-02-11 08:51:05.989382: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.989649: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1558] Found device 0 with properties: 
pciBusID: 0000:01:00.0 name: GeForce RTX 2080 Ti computeCapability: 7.5
coreClock: 1.545GHz coreCount: 68 deviceMemorySize: 10.75GiB deviceMemoryBandwidth: 573.69GiB/s
2020-02-11 08:51:05.989663: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-02-11 08:51:05.989671: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-02-11 08:51:05.989678: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-02-11 08:51:05.989684: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-02-11 08:51:05.989691: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-02-11 08:51:05.989700: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-02-11 08:51:05.989709: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-02-11 08:51:05.989744: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.990021: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.990347: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1700] Adding visible gpu devices: 0
2020-02-11 08:51:05.990544: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.990807: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1558] Found device 0 with properties: 
pciBusID: 0000:01:00.0 name: GeForce RTX 2080 Ti computeCapability: 7.5
coreClock: 1.545GHz coreCount: 68 deviceMemorySize: 10.75GiB deviceMemoryBandwidth: 573.69GiB/s
2020-02-11 08:51:05.990820: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-02-11 08:51:05.990828: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-02-11 08:51:05.990834: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-02-11 08:51:05.990841: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-02-11 08:51:05.990848: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-02-11 08:51:05.990854: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-02-11 08:51:05.990861: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-02-11 08:51:05.990892: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.991171: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.991426: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1700] Adding visible gpu devices: 0
2020-02-11 08:51:05.991437: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1099] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-02-11 08:51:05.991441: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1105]      0 
2020-02-11 08:51:05.991444: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1118] 0:   N 
2020-02-11 08:51:05.991486: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.991763: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-02-11 08:51:05.992022: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1244] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 9604 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5)
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/ops/linalg/linear_operator_lower_triangular.py:158: calling LinearOperator.__init__ (from tensorflow.python.ops.linalg.linear_operator) with graph_parents is deprecated and will be removed in a future version.
Instructions for updating:
Do not pass `graph_parents`.  They will  no longer be used.
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/ops/linalg/linear_operator_lower_triangular.py:158: calling LinearOperator.__init__ (from tensorflow.python.ops.linalg.linear_operator) with graph_parents is deprecated and will be removed in a future version.
Instructions for updating:
Do not pass `graph_parents`.  They will  no longer be used.
2020-02-11 08:51:06.822991: W tensorflow/python/util/util.cc:319] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
Epoch 1/15
2020-02-11 08:51:07.907445: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-02-11 08:51:09.832694: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7

I! CuDNN (v7604) function cudnnCreate() called:
i! Time: 2020-02-11T08:51:09.832722 (0d+0h+0m+4s since start)
i! Process=205; Thread=269; GPU=NULL; Handle=NULL; StreamId=NULL.

2020-02-11 08:51:10.409902: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

I! CuDNN (v7604) function cudnnCreate() called:
i! Time: 2020-02-11T08:51:10.410012 (0d+0h+0m+5s since start)
i! Process=205; Thread=269; GPU=NULL; Handle=NULL; StreamId=NULL.

2020-02-11 08:51:10.417952: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
      1/Unknown - 4s 4s/stepTraceback (most recent call last):
  File "VAE_MNIST_tfp.py", line 150, in <module>
    validation_data=eval_dataset)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/training.py", line 718, in fit
    use_multiprocessing=use_multiprocessing)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/training_v2.py", line 341, in fit
    total_epochs=epochs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/training_v2.py", line 128, in run_one_epoch
    batch_outs = execution_function(iterator)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/training_v2_utils.py", line 98, in execution_function
    distributed_function(input_fn))
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/def_function.py", line 576, in __call__
    result = self._call(*args, **kwds)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/def_function.py", line 640, in _call
    return self._stateless_fn(*args, **kwds)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py", line 2414, in __call__
    return graph_function._filtered_call(args, kwargs)  # pylint: disable=protected-access
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py", line 1660, in _filtered_call
    self.captured_inputs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py", line 1741, in _call_flat
    ctx, args, cancellation_manager=cancellation_manager))
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py", line 598, in call
    ctx=ctx)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/execute.py", line 60, in quick_execute
    inputs, attrs, num_outputs)
tensorflow.python.framework.errors_impl.UnknownError:  Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
     [[node model/conv2d/Conv2D (defined at VAE_MNIST_tfp.py:150) ]] [Op:__inference_distributed_function_4291]

Errors may have originated from an input operation.
Input Source operations connected to node model/conv2d/Conv2D:
 model/lambda/sub (defined at VAE_MNIST_tfp.py:98)

Function call stack:
distributed_function

@sanjoy J'ai le même problème avec RTX 2080 et je peux construire à partir des sources si nécessaire.

@odinsbane, vous devrez créer TensorFlow à partir de la source pour faire ce que je suggère ci-dessous.

La première étape consiste à ajouter des lignes LOG(INFO) ou std::cerr à MinSystemMemory pour imprimer available_memory et la valeur de retour de MinSystemMemory . Est-ce que available_memory accord avec ce que nvidia-smi imprime? Combien de mémoire laissons-nous au système?

Deuxièmement, est-ce que l'augmentation du nombre magique 0.05 à, disons, 0.07 aide du tout?

peut confirmer que la construction à partir des sources en changeant le nombre magique 0.05 nombre magique en 0.1 semble résoudre le problème (au moins pour 1.15.2)!

Dans un océan de messages bruyants, le nombre magique minimum de mémoire système semble totalement logique. Merci d'avoir partagé!

@chsigg Des suggestions? Peut-être pouvons-nous essayer d'initialiser cuDNN, cuBLAS et d'autres bibliothèques NVIDIA _avant_ nous réservons toute la mémoire du GPU?

Nous pouvons également essayer d'activer allow_growth par défaut, mais cela prendra du temps.

Ce problème semble lié à mon RTX2080, j'ai un bureau GTX1080, tout semble correct, puis j'utilise conda clone l'environnement conda sur mon ordinateur portable RTX2080, j'utilise tensorflow2.0.0-gpu. une fois que le code d'application utilise Conv2d, LSTM, GRU, ce problème survient.
avant d'utiliser les codes suivants pour résoudre ce problème:
gpus = tf.config.experimental.list_physical_devices ('GPU')
si gpus:
essayer:

Actuellement, la croissance de la mémoire doit être la même sur tous les GPU

    for gpu in gpus:
        tf.config.experimental.set_memory_growth(gpu, True)
        logical_gpus = tf.config.experimental.list_logical_devices('GPU')
        print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:

La croissance de la mémoire doit être définie avant l'initialisation des GPU

    print(e)

mais depuis plusieurs jours, la méthode ci-dessus ne fonctionne plus

J'ai essayé d'exécuter le code de classification d'image de base lambda Tensorflow2-tutorial pendant des jours et d'obtenir la même erreur de gestion de cudnn jusqu'à ce que j'aie essayé votre solution. Il fonctionne enfin maintenant sur RTX 2070 Max Q et utilise une mémoire GPU minimale.

Je rencontre aussi ce problème
anacondacloud installer tensorflow-gpu2.0

rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
Impossible de créer le descripteur de cudnn: CUDNN_STATUS_INTERNAL_ERROR
Impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un message d'avertissement du journal a été imprimé ci-dessus.

Je rencontre aussi ce problème
anacondacloud installer tensorflow-gpu2.0

rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
Impossible de créer le descripteur de cudnn: CUDNN_STATUS_INTERNAL_ERROR
Impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un message d'avertissement du journal a été imprimé ci-dessus.

Avez-vous inséré:

gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
    for gpu in gpus:
        tf.config.experimental.set_memory_growth(gpu, True)
        logical_gpus = tf.config.experimental.list_logical_devices('GPU')
        print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:
    print(e)

en haut de votre code d'entrée?

Après un certain temps, l'expérimentation d'un problème apparemment différent a échoué avec tf.signal.stft
Je suis finalement tombé sur ce fil et j'ai essayé la solution permettant la croissance de la mémoire. Cela a également résolu mon problème.
J'ai installé tensorflow-gpu = 2.1 avec cudatoolkit = 10.1 depuis anaconda, mais j'ai également essayé d'installer
tensorflow-gpu via pip avec exactement le même résultat. Je peux reproduire ceci sous linux-ubuntu 18.04 et debian 9.12 avec les cartes

   GeForce GTX 1050 Ti with Max-Q Design   
   GeForce GTX 1050 Ti
   GeForce RTX 2080 Ti

J'ai également essayé deux autres cartes dans notre laboratoire

  GeForce GTX 1080 Ti
  TITAN Xp COLLECTORS EDITION

où le code fonctionne correctement avec et sans permettre la croissance de la mémoire

Mon problème minimal est ci-dessous. Fait intéressant, le problème n'est pas conv2d. Je peux changer l'ordre de ces trois commandes et c'est toujours la troisième que l'on échoue.

import sys
import tensorflow as tf

gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus and len(sys.argv)> 1 and sys.argv[1].startswith("-a"):
    print("allowing growth")
    growth = True
else:
    print("nogrowth")
    growth = False

try:
    for gpu in gpus:
        tf.config.experimental.set_memory_growth(gpu, growth)
        logical_gpus = tf.config.experimental.list_logical_devices('GPU')
        print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:
    print(e)

tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32),
                                         filters=tf.zeros((2,2,20,20), dtype=tf.float32),
            strides=(1,1,1,1), padding="VALID")
print("done")

J'ai aussi rencontré ce problème
anacondacloud installer tensorflow-gpu2.0
rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
Impossible de créer le descripteur de cudnn: CUDNN_STATUS_INTERNAL_ERROR
Impossible d'obtenir l'algorithme de convolution. Cela peut être dû au fait que cuDNN n'a pas pu s'initialiser, essayez donc de voir si le message du journal d'avertissement est imprimé ci-dessus.

Avez-vous inséré:

gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
    for gpu in gpus:
        tf.config.experimental.set_memory_growth(gpu, True)
        logical_gpus = tf.config.experimental.list_logical_devices('GPU')
        print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:
    print(e)

En haut du code que vous avez entré?

oui, j'ai résolu ce problème de cette façon, merci !!

J'ai eu le même problème et allow_growth = True était la solution. MAIS, pour TensorFlow 2, pour ce faire, vous devez ajouter les lignes suivantes:

gpu_devices = tf.config.experimental.list_physical_devices('GPU') for device in gpu_devices: tf.config.experimental.set_memory_growth(device, True)

Merci à l'utilisateur @opcecco dans ce numéro: https://github.com/tensorflow/tensorflow/issues/25446

Fait intéressant, le problème n'est pas conv2d. Je peux changer l'ordre de ces trois commandes et c'est toujours la troisième que l'on échoue.

@roebel Pouvez-vous s'il vous plaît joindre des journaux pour quelques six permutations différentes?

Et que se passe-t-il si vous changez le programme pour (dire):

tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32),
                                         filters=tf.zeros((2,2,20,20), dtype=tf.float32),
            strides=(1,1,1,1), padding="VALID")

L'échec se produit-il toujours au conv2d ou se produit-il au troisième stft ?

@sanjoy bien sûr ici trois variantes du script ci-dessus modifiant l'ordre des commandes et une quatrième variante qui commence par 4 stft et se termine par conv2d

Les quatre journaux différents utilisent le script de
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -593098386
en remplaçant les quatre dernières lignes.

Bref les résultats en fonction de la commande:

stft-> blas-> conv2d échoue lors de l'exécution de conv2d
conv2d-> stft-> blas échoue lors de l'exécution de stft (donc pas le troisième, mais blas semble déjà chargé pour conv2d
matmul-> conv2d-> stft échoue lors de l'exécution de STFT
stft -> - stft -> - stft-> stft-> matmul-> conv2d échoue lorsque conv2d est exécuté. Veuillez consulter les journaux ci-dessous.

N'hésitez pas à demander d'autres variantes si nécessaire.

conv2d dernier:

tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32),
                                         filters=tf.zeros((2,2,20,20), dtype=tf.float32),
            strides=(1,1,1,1), padding="VALID")
print("done")

log.conv2d.last.txt

matmul dernier

tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32),
                                         filters=tf.zeros((2,2,20,20), dtype=tf.float32),
            strides=(1,1,1,1), padding="VALID")
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
print("done")

log.matmul.last.txt

dernier stft

tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32),
                                         filters=tf.zeros((2,2,20,20), dtype=tf.float32),
            strides=(1,1,1,1), padding="VALID")
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
print("done")

log.stft.last.txt

4 stft premier conv2d dernier:

tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32),
                                         filters=tf.zeros((2,2,20,20), dtype=tf.float32),
            strides=(1,1,1,1), padding="VALID")
print("done")

log.multi_stft.first.txt

Merci beaucoup

J'ai eu le même problème avec la configuration suivante:
TensorFlow installé depuis (source ou binaire): r1.13.1, r.1.13.2, r1.14
Version Python: 3.6.1
Version Bazel (si compilation à partir des sources):
Version GCC / Compiler (si compilation à partir des sources):
Version CUDA / cuDNN: CUDA 10 avec cuDNN 7.4.1
Modèle GPU et mémoire: RTX 2070 8 Go.

J'ai résolu ce problème avec:
TensorFlow installé depuis (source ou binaire): r1.12.0
Version Python: 3.6.9
Version GCC / Compilateur: 4.8
Version CUDA / cuDNN: CUDA 9.0 avec cuDNN 7.1.4
Modèle GPU et mémoire: RTX 2070 8 Go.
J'espère vous être utile

J'ai également rencontré un tel problème, qui a été résolu en ajoutant une variable d'environnement TF_FORCE_GPU_ALLOW_GROWTH = true.

La configuration est la suivante:
Windows 10
Tensorflow compilé à partir de la source r2.0
Bazel: 0,26,1
Compilateur C ++: MSVC 2017
CUDA: 10
cuDNN: 7,6,5

processeur intel4930, nvidia titan XP pascal
Ubuntu 18.04.4, dernière miniconda,
`! liste de conda | grep "cud" donne

    cudatoolkit               10.1.243             h6bb024c_0  
    cudnn                     7.6.5                cuda10.1_0  

`! liste de conda | grep "tenseur" `` donne

tensorboard               2.1.0                     py3_0  
tensorflow                2.1.0           gpu_py37h7a4bb67_0  
tensorflow-base           2.1.0           gpu_py37h6c5654b_0  
tensorflow-estimator      2.1.0              pyhd54b08b_0  
tensorflow-gpu            2.1.0                h0d30ee6_0  

la première cellule du notebook jupyter est:

import tensorflow as tf
gpu_devices = tf.config.experimental.list_physical_devices('GPU')
for device in gpu_devices: tf.config.experimental.set_memory_growth(device, True)

Le modèle est un auto-encodeur variationnel avec le total des paramètres: 112,269
x_train.shape, y_train.shape, x_test.shape, y_test.shape donne
((106496, 32, 32, 1), (106496,), (12288, 32, 32, 1), (12288,))

le code comprend:

batch_size=64
var_auto_encoder.fit(x_train, x_train, verbose=1, 
                 batch_size=batch_size, epochs=100,
                 validation_data=(x_test, x_test))

et ça échoue. console montre

2020-03-18 15:46:03.019451: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-03-18 15:46:03.179472: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-03-18 15:46:03.566267: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-03-18 15:46:03.569842: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-03-18 15:46:03.569907: W tensorflow/core/common_runtime/base_collective_executor.cc:217] BaseCollectiveExecutor::StartAbort Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
     [[{{node conv2d/Conv2D}}]]
2020-03-18 15:46:03.573206: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

I f au lieu de la première cellule comme indiqué ci-dessus, j'utilise

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.2
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

alors j'obtiens cette erreur


2020-03-18 15:55:43.050094: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-03-18 15:55:43.050123: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-03-18 15:55:43.050150: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-03-18 15:55:43.050177: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-03-18 15:55:43.050209: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-03-18 15:55:43.050246: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-03-18 15:55:43.050273: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-03-18 15:55:43.050337: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-03-18 15:55:43.050720: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-03-18 15:55:43.051063: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0
2020-03-18 15:55:43.051097: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1096] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-03-18 15:55:43.051108: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102]      0 
2020-03-18 15:55:43.051116: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] 0:   N 
2020-03-18 15:55:43.051201: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-03-18 15:55:43.051573: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-03-18 15:55:43.051915: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1241] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 16 MB memory) -> physical GPU (device: 0, name: TITAN X (Pascal), pci bus id: 0000:01:00.0, compute capability: 6.1)
2020-03-18 15:56:07.877181: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-03-18 15:56:07.882424: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-03-18 15:56:07.886148: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-03-18 15:56:07.889830: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR


Why am I having the problem if I allow memory growth? Do I need to reboot to reinitialize the gpu?

Fait intéressant, au cours de mes luttes, j'ai reçu un message d'un panneau rouge `` pas d'entrée '' dans ma barre de menus qui disait `` erreur cassée, comptez vous avez une dépendance non satisfaite ''
J'ai exécuté la mise à jour du logiciel et il souhaite supprimer libcudnn7-dev et libcudnn7-doc
ainsi que la mise à niveau de 57 autres bibliothèques liées à linux

EDIT: Après le redémarrage, le modèle semble s'entraîner avec succès en utilisant ceci:

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.2
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

ou ca:

import tensorflow as tf
gpu_devices = tf.config.experimental.list_physical_devices('GPU')
for device in gpu_devices: tf.config.experimental.set_memory_growth(device, True)

l'utilisation de la mémoire sur le GPU est <700 Mo avec une taille de lot 16 et
~ 1 gigaoctet avec une taille de lot de 256 (qui entraîne 3 fois plus vite)

J'ai essayé de compiler à partir des sources, mais j'ai rencontré le même problème. J'ai finalement pu résoudre mon problème en définissant config.gpu_options.allow_growth = True .

Mais si je rencontre ce problème en ligne de commande, comment ajouter ces codes?

Je rencontre aussi ce problème
anacondacloud installer tensorflow-gpu2.0
rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
Impossible de créer le descripteur de cudnn: CUDNN_STATUS_INTERNAL_ERROR
Impossible d'obtenir l'algorithme de convolution. C'est probablement parce que cuDNN n'a pas pu s'initialiser, alors essayez de voir si un message d'avertissement du journal a été imprimé ci-dessus.

Avez-vous inséré:

gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
    for gpu in gpus:
        tf.config.experimental.set_memory_growth(gpu, True)
        logical_gpus = tf.config.experimental.list_logical_devices('GPU')
        print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:
    print(e)

en haut de votre code d'entrée?

J'ai eu exactement le même problème que ci-dessus. Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

La solution de @robosmith résout mon problème complètement!

Mes spécifications:
RTX 2070
Ubuntu 18.04 LTE
Tensorflow 2.1.0
Keras 2.3.0
cudnn 7.6.5
cuda10.1.0
conda 4.8.3
python 3.7.7

Construit via conda install tensorflow-gpu keras

Merci beaucoup! C'est la première fois que je fais fonctionner TF-2! Et TF-1 a complètement cessé de fonctionner, c'est pourquoi j'ai décidé de mettre à niveau et de «voir ce qui se passe»!

Je vous remercie!

config.gpu_options.allow_growth = Vrai

lorsque vous utilisez tensorflow 2.0, vous pouvez utiliser
tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
ce code est après import tensorflow as tf mais avant votre code.

J'ai essayé de compiler à partir des sources, mais j'ai rencontré le même problème. J'ai finalement pu résoudre mon problème en définissant config.gpu_options.allow_growth = True .

Ce code est partagé pour le rendre plus rapidement disponible pour les utilisateurs tensorflow et keras.
source d' ici

# Tensorflow
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)


#And for Keras
from keras.callbacks import ModelCheckpoint
from keras.models import Model, load_model, save_model, Sequential
from keras.layers import Dense, Activation, Dropout, Input, Masking, TimeDistributed, LSTM, Conv1D
from keras.layers import GRU, Bidirectional, BatchNormalization, Reshape
from keras.optimizers import Adam
from keras.backend.tensorflow_backend import set_session
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.allow_growth = True  # dynamically grow the memory used on the GPU
config.log_device_placement = True  # to log device placement (on which device the operation ran)
sess = tf.Session(config=config)
set_session(sess)  # set this TensorFlow session as the default session for Keras

Je voulais juste intervenir et dire que le problème est toujours là;

Mes spécifications:
Ubuntu 20.04
NVIDIA RTX 2070
Nvidia_driver 440.64
Tensorflow-gpu 2.0.1 (installé via conda, qui installe automatiquement Cudatoolkit et CuDNN dans le même environnement)
cudatoolkit 10.1.243
cudnn 7.6.5

Le problème est résolu par tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)

Cependant, cela ressemble plus à une solution de contournement qu'à une solution réelle, et beaucoup de gens ont des cartes 20XX ces jours-ci. Il devrait probablement y avoir une mise à jour dans laquelle ce problème est résolu.

Mise à jour: comme je suis en double démarrage, j'ai également essayé de vérifier les fenêtres. Le problème persiste là-bas.
Windows 10
Pilote Nvidia 445.87
A part ça, tout est similaire

L'installation du dernier pilote (445.87) pour mon RTX 2080 a résolu ce problème pour moi.

@NBouman C'est intéressant mais pour moi sur Ubuntu 18.04 avec GeForce GTX 1050 TI, je viens de mettre à jour le dernier pilote disponible 440.82. Toujours autoriser la croissance de la mémoire est nécessaire pour le faire fonctionner.

L'installation du dernier pilote (445.87) pour mon RTX 2080 a résolu ce problème pour moi.

@NBouman Quel système d'exploitation utilisez-vous? Je suis sur Ubuntu 20.40, et le dernier pilote disponible que j'ai pu trouver est 440.82, et, comme @roebel , le problème persiste.

@roebel @eduardoscsouza Je suis sous Windows 10 avec la machine qui avait auparavant ce problème.

Je voulais juste intervenir et dire que le problème est toujours là;

Mes spécifications:
Ubuntu 20.04
NVIDIA RTX 2070
Nvidia_driver 440.64
Tensorflow-gpu 2.0.1 (installé via conda, qui installe automatiquement Cudatoolkit et CuDNN dans le même environnement)
cudatoolkit 10.1.243
cudnn 7.6.5

Le problème est résolu par tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)

Cependant, cela ressemble plus à une solution de contournement qu'à une solution réelle, et beaucoup de gens ont des cartes 20XX ces jours-ci. Il devrait probablement y avoir une mise à jour dans laquelle ce problème est résolu.

Mise à jour: comme je suis en double démarrage, j'ai également essayé de vérifier les fenêtres. Le problème persiste là-bas.
Windows 10
Pilote Nvidia 445.87
A part ça, tout est similaire

Pour tensorflow 2.0.0 travaillé avec:
tf.config.experimental.set_memory_growth(tf.config.experimental.list_physical_devices('GPU')[0],True)

Je vous remercie!!! des milliers de merci !!!!!!!!!!!!!!!

Système d'exploitation: ubuntu 18.04 lts

Version du pilote: 435.21

CUDA: cudatoolkit 10.1

CUDNN: cudnn-7.6.5-cuda10.1_0

J'ai utilisé anaconda installer tensorflow

conda create -n tf-gpu tensorflow-gpu

le cudatoolkit et le cudnn sont auto-installés par anaconda via la commande précédente.

J'ai la même question, l'erreur:

coreClock: 1.5315GHz coreCount: 3 deviceMemorySize: 1.96GiB deviceMemoryBandwidth: 44.76GiB/s
2020-05-12 17:58:44.119679: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-05-12 17:58:44.119694: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-05-12 17:58:44.119707: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-05-12 17:58:44.119719: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-05-12 17:58:44.119732: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-05-12 17:58:44.119744: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-05-12 17:58:44.119756: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-05-12 17:58:44.119819: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-12 17:58:44.120069: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-12 17:58:44.120277: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0
2020-05-12 17:58:44.120308: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-05-12 17:58:44.174976: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1096] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-05-12 17:58:44.175003: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102]      0 
2020-05-12 17:58:44.175012: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] 0:   N 
2020-05-12 17:58:44.175136: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-12 17:58:44.175392: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-12 17:58:44.175624: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-12 17:58:44.175844: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1241] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1439 MB memory) -> physical GPU (device: 0, name: GeForce MX150, pci bus id: 0000:01:00.0, compute capability: 6.1)
2020-05-12 17:58:44.177113: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55abc3d20b80 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
2020-05-12 17:58:44.177129: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): GeForce MX150, Compute Capability 6.1
2020-05-12 17:58:44.177749: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 376320000 exceeds 10% of system memory.
2020-05-12 17:58:44.787493: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 376320000 exceeds 10% of system memory.
WARNING:tensorflow:Layer my_model is casting an input tensor from dtype float64 to the layer's dtype of float32, which is new behavior in TensorFlow 2.  The layer has dtype float32 because it's dtype defaults to floatx.

If you intended to run this layer in float32, you can safely ignore this warning. If in doubt, this warning is likely only an issue if you are porting a TensorFlow 1.X model to TensorFlow 2.

To change all layers to have dtype float64 by default, call `tf.keras.backend.set_floatx('float64')`. To change just this layer, pass dtype='float64' to the layer constructor. If you are the author of this layer, you can disable autocasting by passing autocast=False to the base Layer constructor.

2020-05-12 17:58:45.311821: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-05-12 17:58:45.467966: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-05-12 17:58:45.904025: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-05-12 17:58:45.913861: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-05-12 17:58:45.913978: W tensorflow/core/common_runtime/base_collective_executor.cc:217] BaseCollectiveExecutor::StartAbort Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
     [[{{node my_model/conv2d/Conv2D}}]]

Nous avons donc ici un problème non résolu (outre une solution de contournement qui va à l'encontre des recommandations officielles de ne pas utiliser la croissance de la mémoire pour une gestion plus efficace de la mémoire). Il n'y a pas eu beaucoup de retours de la part de l'équipe de développement. Je me demande pourquoi?

Ce bogue semble affecter une grande variété de versions de tensorflow (1.13, 2.0, 2.1). Si j'ai bien vu, tous les problèmes se produisent avec cuda 10. Le code fonctionne bien sur de nombreuses cartes mais pas sur d'autres.
Quelqu'un de l'équipe de développement pourrait-il nous dire si cela suggère un problème dans le pilote cuda plus que dans la couche tensorflow? Dans ce cas, il serait certainement utile de transmettre le rapport de bogue aux pages de support NVIDIA. N'est-ce pas?

Quelqu'un de l'équipe de développement tensorflow pourrait-il commenter comment il voit ce bogue? Y a-t-il quelqu'un qui se penche là-dessus?

Les gens ont-ils vérifié s'il y avait deux bibliothèques partagées CuDNN 7 sur le chemin ou le chemin de la bibliothèque LD. Il n'y a pas de numéros mineurs ou de correctifs dans cette bibliothèque, mais des incohérences de version peuvent entraîner ce message d'erreur.

J'ai ouvert un rapport de bogue chez NVIDIA, je vous ferai savoir ce qui en sort.

@samhodge
En effet, il existe de nombreuses versions de libcudnn installées, chaque env anaconda a sa propre version.
Normalement, anaconda s'installe avec rpath correctement configuré, il est donc assez difficile de ne pas obtenir les bonnes bibliothèques.

J'ai fait un strace et j'ai salué les bibliothèques qui sont ouvertes en cas d'échec
Ils proviennent systématiquement du répertoire env anaconda qui héberge le package tensorflow (voir ci-dessous).
Outre la libcuda qui est la version 440.82 et que j'ai compilée avec l'installateur NVIDIA.

Je peux définir LD_LIBRARY_PATH sur l'un des autres répertoires de lib anaconda env avec différents cudatoolkits et différents libcudnn, la trace reste la même.
Notez également que ce n'est pas lbcudnn qui pose le problème. C'est toujours la troisième bibliothèque libcuxyz qui est
utilisé et ceci uniquement sur des GPU spécifiques (j'ai utilisé le même script d'installation sur différentes machines avec différents GPU, certains fonctionnent, d'autres non) et ils fonctionnent tous si la croissance de la mémoire est activée.

(tf2.1) m3088.roebel: (test_sd) 510> grep open trace.log  | grep libcu | grep -v -- -1
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libcuda.so.1", O_RDONLY|O_CLOEXEC) = 4
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcudart.so.10.1", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcublas.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../.././libcublasLt.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcufft.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcurand.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcusolver.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcusparse.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcudnn.so.7", O_RDONLY|O_CLOEXEC) = 11

J'ai eu le même problème sur Ubuntu 20.04 avec une GeForce RTX 2060 SUPER. Un NN avec des couches denses fonctionne bien. Mais avec les couches CNN, je reçois Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
L'ajout de tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) ne change rien à l'erreur.
J'ai suivi l'installation selon https://www.tensorflow.org/install/gpu et nvidia-smi montre:
Driver Version: 440.64.00 CUDA Version: 10.2
Mon conda env a:

cudatoolkit               10.1.243             h6bb024c_0  
cudnn                     7.6.5                cuda10.1_0  
tensorflow-gpu            2.1.0                h0d30ee6_0

Dans un conda env avec tf 1.15, j'obtiens la même erreur. Ce serait formidable si cela pouvait être corrigé.

Mettre à jour

Après avoir utilisé export TF_FORCE_GPU_ALLOW_GROWTH=true , tout fonctionne. J'avais l'impression que le tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) ferait la même chose, mais ce n'est pas le cas. Je pense que cela devrait être clairement indiqué sur la page Web de support du processeur graphique TensorFlow.

@samhodge
En effet, il existe de nombreuses versions de libcudnn installées, chaque env anaconda a sa propre version.
Normalement, anaconda s'installe avec rpath correctement configuré, il est donc assez difficile de ne pas obtenir les bonnes bibliothèques.

J'ai fait un strace et j'ai salué les bibliothèques qui sont ouvertes en cas d'échec
Ils proviennent systématiquement du répertoire env anaconda qui héberge le package tensorflow (voir ci-dessous).
Outre la libcuda qui est la version 440.82 et que j'ai compilée avec l'installateur NVIDIA.

Je peux définir LD_LIBRARY_PATH sur l'un des autres répertoires de lib anaconda env avec différents cudatoolkits et différents libcudnn, la trace reste la même.
Notez également que ce n'est pas lbcudnn qui pose le problème. C'est toujours la troisième bibliothèque libcuxyz qui est
utilisé et ceci uniquement sur des GPU spécifiques (j'ai utilisé le même script d'installation sur différentes machines avec différents GPU, certains fonctionnent, d'autres non) et ils fonctionnent tous si la croissance de la mémoire est activée.

(tf2.1) m3088.roebel: (test_sd) 510> grep open trace.log  | grep libcu | grep -v -- -1
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libcuda.so.1", O_RDONLY|O_CLOEXEC) = 4
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcudart.so.10.1", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcublas.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../.././libcublasLt.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcufft.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcurand.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcusolver.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcusparse.so.10", O_RDONLY|O_CLOEXEC) = 11
openat(AT_FDCWD, "/data/anasynth/anaconda3/envs/tf2.1/lib/python3.7/site-packages/tensorflow_core/python/../../../../libcudnn.so.7", O_RDONLY|O_CLOEXEC) = 11

Donc, vous illustrez en quelque sorte mon point libcudnn.so.7 ne dit pas 7.XXX.YYY en plus de cela 7.XXX.YYY a une dépendance supplémentaire sur CUDA 10.2 10.1 10.0 9.2 9.1 9.0 etc

Je n'ai pas vu l'erreur depuis que j'ai commencé à bien gérer le chemin et à gérer la quantité de mémoire disponible avant d'initialiser un graphique d'une taille connue et de m'assurer que le GPU ciblé n'utilisait que suffisamment de mémoire pour le graphique et suffisamment de mémoire pour interroger la quantité de CUDA la mémoire est disponible.

Je pense que c'est un problème de ressources. Quelle quantité de mémoire est disponible lorsque vous démarrez le processus et combien de mémoire votre graphique utilise-t-il?

@ kognat-docs

Donc, vous illustrez en quelque sorte mon point libcudnn.so.7 ne dit pas 7.XXX.YYY en plus de 7.XXX.YYY a une dépendance supplémentaire sur CUDA 10.2 10.1 10.0 9.2 9.1 9.0 etc.

La question que vous avez posée était "Les gens ont-ils vérifié s'il y a deux bibliothèques partagées CuDNN 7 sur le chemin ou le chemin de la bibliothèque LD". Et ma réponse a été: j'ai vérifié cela, il n'y en a qu'un.
Je vous ai envoyé la trace.

Je n'ai pas vu l'erreur depuis que j'ai commencé à gérer le chemin

Qu'entendez-vous par gérer le chemin?
Je gère toujours mes chemins! J'ai installé un environnement conda dont j'ai vérifié la cohérence! Tout est comme il a été emballé par anaconda, j'ai vérifié cela.

Quoi qu'il en soit, vous pouvez croire que je suis trop stupide pour créer un anaconda. bien
J'ai maintenant téléchargé l'image officielle du docker

tensorflow / t ensorflow: 2.1.0-gpu-py3

et exécutez mon script là-dedans. Il plante si je n'ai pas

export TF_FORCE_GPU_ALLOW_GROWTH = true

Puis-je mieux gérer les chemins?

et gérer la quantité de mémoire disponible avant d'initialiser un graphique d'une taille connue et s'assurer que le GPU ciblé n'utilise que suffisamment de mémoire pour le graphique et suffisamment de mémoire pour interroger la quantité de mémoire CUDA disponible.

Je pense que c'est un problème de ressources. Quelle quantité de mémoire est disponible lorsque vous démarrez le processus et combien de mémoire votre graphique utilise-t-il?

Comme je l'ai écrit plus haut dans mon rapport, il n'y a pas de graphique (ou mieux, il n'y a guère de graphique)! Je viens de lancer ces quatre lignes

import tensorflow as tf
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32), filters=tf.zeros((2,2,20,20), dtype=tf.float32), strides=(1,1,1,1), padding="VALID")

et il plante. Si je change l'ordre des trois lignes il plante toujours après ces trois opérations (j'avais expliqué cela dans mon rapport de bogue).

Juste pour le plaisir, j'ai compté les octets: il y a moins de 83 Ko de mémoire de données nécessaires. Le GPU est vide, je ne l'utilise pas pour les graphiques et il n'y a aucun autre processus en cours d'exécution dessus. Sur les différents systèmes, 4 Go ou 11 Go sont disponibles! En plus, je sais comment exécuter nvidia-smi! Donc la carte est encore vide je ne peux pas exécuter ces 4 lignes qui nécessitent 84ko!

Juste pour votre information, une erreur due à une mémoire épuisée semble très différente, je les ai aussi. Pour mes vrais graphiques, je suis très bien capable de les détecter et de réagir en conséquence.

Merci pour vos efforts quand même.

@roebel Avez-vous vu le commentaire de @sanjoy sur le débogage du cpp https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750?

Je n'ai pas réussi à recompiler tensorflow et à l'essayer. Leurs versions évoluent si vite qu'il me faudrait un peu de temps pour tout configurer et tout compiler. De plus, la version 1.15 a abandonné la prise en charge de la version gcc que j'utilise et la 1.13 ne reçoit aucune mise à jour, il était donc quelque peu inutile pour moi de déboguer cela de toute façon.

@roebel Je ne me souviens pas de ce qui a déclenché le problème pour vous.

voir ceci https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -480549043

C'est pourquoi je pensais que c'était lié à la mémoire, ce problème ne me concernait pas depuis un certain temps, ni les utilisateurs de mon logiciel sur une variété de plates-formes.

@samhodge

Oui, je comprends que s'il y a un bug, il ne semble être déclenché que par une situation assez particulière.

@odinsbane

merci, non je n'avais pas remarqué cela. Je vais voir si réussir à compiler la version la plus récente tf2.2.0.

En fait j'ai essayé le docker avec tensorflow 2.2, il utilise la même version de cuda 10.1 et a le même problème.

Je pensais que c'était un problème uniquement pour Windows, alors j'ai installé un environnement ubuntu à partir de zéro, seulement pour découvrir que c'est ma carte graphique (RTX 2080) qui est le problème. Malheureusement, je pense que je vais sélectionner une plate-forme d'apprentissage automatique différente en raison de ce problème, car cela semble être un problème depuis 2018.

@ kognat-docs

et gérer la quantité de mémoire disponible avant d'initialiser un graphique d'une taille connue et s'assurer que le GPU ciblé n'utilise que suffisamment de mémoire pour le graphique et suffisamment de mémoire pour interroger la quantité de mémoire CUDA disponible.

Je pense que c'est un problème de ressources. Quelle quantité de mémoire est disponible lorsque vous démarrez le processus et combien de mémoire votre graphique utilise-t-il?

Comme je l'ai écrit plus haut dans mon rapport, il n'y a pas de graphique (ou mieux, il n'y a guère de graphique)! Je viens de lancer ces quatre lignes

import tensorflow as tf
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32), filters=tf.zeros((2,2,20,20), dtype=tf.float32), strides=(1,1,1,1), padding="VALID")

et il plante. Si je change l'ordre des trois lignes il plante toujours après ces trois opérations (j'avais expliqué cela dans mon rapport de bogue).

Juste pour le plaisir, j'ai compté les octets: il y a moins de 83 Ko de mémoire de données nécessaires. Le GPU est vide, je ne l'utilise pas pour les graphiques et il n'y a aucun autre processus en cours d'exécution dessus. Sur les différents systèmes, 4 Go ou 11 Go sont disponibles! En plus, je sais comment exécuter nvidia-smi! Donc la carte est encore vide je ne peux pas exécuter ces 4 lignes qui nécessitent 84ko!

Avez-vous observé la quantité de mémoire utilisée en utilisant watch sur nvidia-smi pendant que le processus était en cours d'exécution avec un intervalle de 50 ms?

Voir ce correctif qui a fonctionné pour d'autres personnes

https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -497202806

Ou vous pouvez lire le manuel convivial:
https://www.tensorflow.org/guide/gpu#limiting_gpu_memory_growth

Vous pouvez donc appliquer le correctif sans toucher au code simplement en modifiant votre environnement d'exécution.

Another way to enable this option is to set the environmental variable TF_FORCE_GPU_ALLOW_GROWTH to true. This configuration is platform specific.

@sanjoy @odinsbane

Bonnes nouvelles!
Suivant
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750

J'ai reconstruit la version 2.1 en utilisant la recette anaconda tensorflow à partir d'ici
https://github.com/AnacondaRecipes/tensorflow_recipes

J'ai ajouté deux impressions dans MinSystemMemory montrant available_memory et min_system_memory.
Sur mon système avec GeForce GTX 1050 Ti désactivant le journal standard TF
J'ai ça

TF_CPP_MIN_LOG_LEVEL=2 python run_cuda.py 
=========================================================
MinSystemMemory: available_memory::4163764224
MinSystemMemory: min_system_memory::314572800
=========================================================
1 Physical GPUs, 1 Logical GPUs
2020-05-21 09:44:32.143642: E tensorflow/stream_executor/cuda/cuda_fft.cc:223] failed to make cuFFT batched plan:5
2020-05-21 09:44:32.143671: E tensorflow/stream_executor/cuda/cuda_fft.cc:426] Initialize Params: rank: 1 elem_count: 512 input_embed: 512 input_stride: 1 input_distance: 512 output_embed: 257 output_stride: 1 output_distance: 257 batch_count: 20
2020-05-21 09:44:32.143677: F tensorflow/stream_executor/cuda/cuda_fft.cc:435] failed to initialize batched cufft plan with customized allocator: Failed to make cuFFT batched plan.
Aborted

nvidia-smi rapporte que le GPU a 4040MiB, sur ce système, il y a X en cours d'exécution sur la carte qui a 13MiB, donc les chiffres semblent corrects.

min_system_memory est défini comme ceci

    min_system_memory =                                                                                                                        
        std::max(int64{314572800}, static_cast<int64>(available_memory * 0.05));                                                               

Donc, la quantité maximale de mémoire est choisie de toute façon. Au lieu de cela, j'ai ajouté un mécanisme pour forcer le min_system_memory via la variable d'environnement TF_FORCE_MIN_SYSTEM_MEMORY_MB.
Puis courir

TF_FORCE_MIN_SYSTEM_MEMORY_MB=310 TF_CPP_MIN_LOG_LEVEL=2 python run_cuda.py 
=========================================================
MinSystemMemory: available_memory::4163764224
MinSystemMemory: min_system_memory::314572800
MinSystemMemory: forced min_system_memory::325058560
=========================================================
1 Physical GPUs, 1 Logical GPUs
done

le problème est résolu!

Malheureusement, je n'ai actuellement pas de système avec une carte RTX fonctionnelle et je ne sais pas quand celles-ci seront de nouveau opérationnelles. Si quelqu'un voulait tester cela sur une telle carte, je pourrais fournir le paquet pip et le contenu de l'environnement conda pour ubuntu linux qui doit être installé pour le faire fonctionner.

Gentil @roebel !

Cela pourrait valoir la peine de suggérer cela en tant que pull request et d'ajouter à la documentation.

@samhodge @sanjoy @odinsbane

Cela pourrait valoir la peine de suggérer cela en tant que pull request et d'ajouter à la documentation.

Bien sûr, mais le problème est que la solution ne fonctionnera probablement pas pour les autres cartes.
Pour ma GTX 1050, la mémoire totale est de 4 Go et la mémoire système par défaut est conservée
par tensorflow est max (300 Mo, 4 Go * 0,05). Donc, pour GTX1050, ce sera 300 Mo, ce qui est apparemment trop petit. Comme mentionné ci-dessus, je dois passer à 310 Mo.

Maintenant, pour le RTX2080, la mémoire totale est de 11 Go, ce qui avec un maximum (300 Mo, 11 Go * 0,05)
sélectionnera la mémoire système à 550 Mo, ce qui, selon les résultats du 1050
devrait normalement suffire.

J'aurai à nouveau accès aux GPU RTX2080 d'ici la fin de la semaine et je verrai
ce que j'y arrive.

@samhodge @sanjoy @odinsbane

Enfin, j'ai pu exécuter la bibliothèque corrigée sur les cartes rtx 2080.
Comme prévu, la version corrigée ne passe pas. Ici encore le script

import tensorflow as tf
tf.signal.stft(tf.zeros(3000, dtype=tf.float32), 512, 128)
tf.matmul(tf.zeros((2,2,2)), tf.zeros((2,2,2)))
tf.nn.conv2d(tf.zeros((2,20,20,20), dtype=tf.float32), filters=tf.zeros((2,2,20,20), dtype=tf.float32), strides=(1,1,1,1), padding="VALID")

Et ici la matrice de available memory rapportée depuis gpu_device.cc,
valeur par défaut de Min_system_memory comme sélectionné dans gpu_device.cc et le
min value of the min_system_memory Je dois sélectionner pour que le script n'interrompe pas:

Carte | AvailMem | Def MinSysMem | MinSysMem requis
: ------- |: ----------- |: ---------- |: --------------- --------
1050 TI | 4163764224 | 314572800 | 325058560
1080 TI | 11567431680 | 578371584 | 335544320
2080 TI | 11381964800 | 569098240 | 618659840

Ainsi, alors que 1050 et 1080 exécutent le script avec à peu près la même taille de mémoire
le RTX2080 nécessite presque deux fois plus de mémoire. Cela ne semble pas bon
tome.

Avez-vous des suggestions à essayer pour obtenir une valeur comparable?

@roebel

J'ai eu du mal avec cela dans mon application C ++ pendant un certain nombre d'itérations.

Ce qui est finalement arrivé est le suivant.

N'exécutez des modèles sur le GPU que lorsque suffisamment de mémoire est disponible pour exécuter le modèle.

La quantité de mémoire requise par le modèle est donc quantifiable.

Vous devez donc disposer d'une mémoire GPU en pourcentage qui conviendra à ce modèle.

Ensuite, vous devez également connaître la quantité de mémoire disponible sur la carte exactement avant d'allouer la mémoire, ce qui est soumis à des conditions de concurrence, car vous ne savez pas quoi d'autre utilise la mémoire CUDA en même temps sur le système d'exploitation.

Mais la condition de course à part, vous devez également mesurer la mémoire libre.

Cela se fait en utilisant cudaMemInfo , qui en soi utilise de la mémoire.

Donc, à condition que vous ayez assez de mémoire pour exécuter cudaMemInfo une fois pour mesurer et vous devez vous assurer que suffisamment de mémoire est libre pour s'adapter au modèle et exécuter cudaMemInfo une fois de plus, alors et seulement alors vous pouvez allouer suffisamment de pourcentage de VRAM disponible sur cette carte pour exécuter le modèle.

Quoi qu'il en soit, le résultat de mon babillage aléatoire est que cudaMemInfo est nécessaire pour interroger la quantité de mémoire disponible à allouer qui en elle-même utilise également une partie de cette mémoire disponible.

Peut-être que la quantité de mémoire utilisée par cudaMemInfo est différente sur une carte basée sur Turing par rapport à une carte basée sur Pascal, je peux demander à quelqu'un de NVIDIA de jeter un coup d'œil si vous le souhaitez.

Oui, je ne trouve pas du tout de référence au cudaMemInfo mais cela semble être le genre d'empreinte qui serait le maximum de 300 Mo et 5% de la mémoire de la carte.

jeter un oeil à:

https://github.com/tensorflow/tensorflow/blob/r2.2/tensorflow/core/common_runtime/gpu/gpu_process_state.cc

Il ne semble pas qu'il utilise cela en soi.

Je ne pense pas que nous devrions jouer au chat et à la souris avec la quantité de mémoire que nous devons réserver pour les bibliothèques système - comme vous l'avez observé, il n'y a pas de moyen systématique de faire les choses correctement.

Au lieu de cela, OMI, nous devrions essayer d'initialiser les bibliothèques système avant que l'allocateur BFC n'ait eu la possibilité d'allouer le reste de la mémoire du GPU.

CC @chsigg

On ne devrait probablement le faire que si l'option Autoriser la croissance de la mémoire est désactivée. Sinon, vous aurez toujours besoin d'environ 580 Mo pour le 2080 même si vous n'avez pas besoin de tous les opérateurs.

J'ai fait quelques tests supplémentaires concernant les exigences minimales de mémoire système pour exécuter des combinaisons des trois opérations de mon cas de test. Je ne compare que les cartes 1080 et 2080. Vous ne trouvez pas conv2d seul car il initialise blas dans tous les cas. Out vient

GPU | MatMul | STFT | Conv2D + MatMUL | MatMul + STFT | MATMUL + STFT + Conv2D |
: --- |: --- |: --- |: --- |: --- |: ---
1080 | 140MB | 130MB | 290MB | 170MB | 320 Mo
2080 | 190MB | 190MB | 520MB | 250 Mo | 580 Mo

On peut voir que sur le 2080 cuda nécessite une surcharge pour chaque opération, et que cette surcharge augmente lors de l'utilisation de plus de bibliothèques. Dans la plupart des cas, la surcharge est <100MB mais elle devient >220MB une fois que Conv2D est impliqué.

Si @samhodge a un contact avec NVIDIA, je trouverais personnellement intéressant de savoir si cela est prévu.

Bonjour à tous!
J'ai résolu un problème similaire avec la limitation de la croissance de la mémoire et vous pouvez essayer.

Vous pouvez trouver du code dans la section Limiter la croissance de la mémoire

(Ceci est mon premier commentaire dans GitHub)

J'ai eu un problème similaire avant. limiter manuellement la mémoire GPU. https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167

J'ai eu le même problème sur Ubuntu 20.04 avec une GeForce RTX 2060 SUPER. Un NN avec des couches denses fonctionne bien. Mais avec les couches CNN, je reçois Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
L'ajout de tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) ne change rien à l'erreur.
J'ai suivi l'installation selon https://www.tensorflow.org/install/gpu et nvidia-smi montre:
Driver Version: 440.64.00 CUDA Version: 10.2
Mon conda env a:

cudatoolkit               10.1.243             h6bb024c_0  
cudnn                     7.6.5                cuda10.1_0  
tensorflow-gpu            2.1.0                h0d30ee6_0

Dans un conda env avec tf 1.15, j'obtiens la même erreur. Ce serait formidable si cela pouvait être corrigé.

Mettre à jour

Après avoir utilisé export TF_FORCE_GPU_ALLOW_GROWTH=true , tout fonctionne. J'avais l'impression que le tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) ferait la même chose, mais ce n'est pas le cas. Je pense que cela devrait être clairement indiqué sur la page Web de support du processeur graphique TensorFlow.

Mec, ta solution me sauve la vie.

Nvidia vient de publier les pilotes d'affichage Linux 440.100 et 450.51 (bêta).
J'ai essayé le 440.100 et cela n'a pas résolu le problème. Quelqu'un a-t-il essayé la bêta 450.51?

@eduardoscsouza

Nvidia vient de publier les pilotes d'affichage Linux 440.100 et 450.51 (bêta).
J'ai essayé le 440.100 et cela n'a pas résolu le problème. Quelqu'un a-t-il essayé la bêta 450.51?

J'ai essayé 450.36.06. Vérifiez https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167.

le code qui a fonctionné pour moi:

importer tensorflow en tant que tf
config = tf.compat.v1.ConfigProto ()
config.gpu_options.allow_growth = Vrai
session = tf.compat.v1.InteractiveSession (config = config)

_Veuillez vous assurer qu'il s'agit d'un bogue. Conformément à notre politique GitHub , nous balise: bug_template_

Informations système

  • Ai-je écrit du code personnalisé (par opposition à l'utilisation d'un exemple de script fourni dans TensorFlow): Oui et Non (décrit ci-dessous)
  • Plateforme et distribution du système d'exploitation (par exemple, Linux Ubuntu 16.04): Manjaro
  • Appareil mobile (par exemple, iPhone 8, Pixel 2, Samsung Galaxy) si le problème se produit sur l'appareil mobile:
  • TensorFlow installé depuis (source ou binaire): tf-nightly-gpu (19 décembre, r1.13)
  • Version de TensorFlow (utilisez la commande ci-dessous): 1.13.0-dev20181219
  • Version Python: 3.7.1
  • Version Bazel (si compilation à partir des sources):
  • Version GCC / Compiler (si compilation à partir des sources):
  • Version CUDA / cuDNN: CUDA 10 avec cuDNN 7.4.1
  • Modèle GPU et mémoire: RTX 2070 8 Go

Décrivez le comportement actuel
J'utilise le modèle CNN sur MNIST. Lorsque je cours avec le GPU, je rencontre
2018-12-20 20:09:13.644176: E tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

J'ai creusé et réalisé que c'était un problème de mémoire (ce qui ne devrait pas être le cas car j'ai 32 Go de RAM et 64 Go de swap. J'ai exécuté htop lors de l'exécution du modèle et j'ai 20 + Go d'espace libre, ce qui est plus que assez pour s'adapter aux mappages vRAM de 8 Go.

L'utilisation de gpu_options.allow_growth = True permet au modèle de fonctionner correctement, et la configuration de os.environ['CUDA_VISIBLE_DEVICES'] = '-1' fonctionne également. Cela signifie que je suis confronté à un problème de mémoire, mais je ne vois pas comment.

De plus, l'utilisation de gpu_options.allow_growth = True ne résout pas le même problème lorsque vous essayez d'exécuter tensorflow / models / official / mnist / model, qui devrait avoir un comportement similaire avec mon code.

Code pour reproduire le problème

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import math
import time
# Killing optional CPU driver warnings
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
tf.logging.set_verbosity(tf.logging.ERROR)


class Model:

    def __init__(self, image, label):
        """
        A Model class contains a computational graph that classifies images
        to predictions. Each of its methods builds part of the graph
        on Model initialization. Do not modify the constructor, as doing so
        would break the autograder. You may, however, add class variables
        to use in your graph-building. e.g. learning rate, 

        image: the input image to the computational graph as a tensor
        label: the correct label of an image as a tensor
        prediction: the output prediction of the computational graph,
                    produced by self.forward_pass()
        optimize: the model's optimizing tensor produced by self.optimizer()
        loss: the model's loss produced by computing self.loss_function()
        accuracy: the model's prediction accuracy
        """
        self.image = image
        self.label = label

        # TO-DO: Add any class variables you want to use.

        self.prediction = self.forward_pass()
        self.loss = self.loss_function()
        self.optimize = self.optimizer()
        self.accuracy = self.accuracy_function()

    def forward_pass(self):
        """
        Predicts a label given an image using convolution layers

        :return: the prediction as a tensor
        """
        filter_1 = tf.Variable(tf.truncated_normal([3, 3, 1, 8], stddev=0.1))
        conv_1 = tf.nn.conv2d(self.image, filter_1, [1, 1, 1, 1], "SAME")

        reshaped = tf.reshape(conv_1, shape=[50, -1])

        L1 = reshaped.shape[1].value
        L2 = 500
        W1 = tf.Variable(tf.random_normal([L1, L2], mean=0, stddev=0.01))
        b1 = tf.Variable(tf.random_normal([L2], mean=0, stddev=0.01))
        relu_1 = tf.nn.relu(tf.matmul(reshaped, W1) + b1)

        W2 = tf.Variable(tf.random_normal([L2, 10], mean=0, stddev=0.01))
        b2 = tf.Variable(tf.random_normal([10], mean=0, stddev=0.01))
        logits = tf.nn.relu(tf.matmul(relu_1, W2) + b2)
        return logits

    def loss_function(self):
        """
        Calculates the model cross-entropy loss

        :return: the loss of the model as a tensor
        """
        loss = tf.losses.softmax_cross_entropy(onehot_labels=self.label, logits=self.prediction)
        return loss

    def optimizer(self):
        """
        Optimizes the model loss using an Adam Optimizer

        :return: the optimizer as a tensor
        """
        learning_rate = 0.1
        sgd = tf.train.GradientDescentOptimizer(learning_rate)
        train = sgd.minimize(self.loss)
        return train

    def accuracy_function(self):
        """
        Calculates the model's prediction accuracy by comparing
        predictions to correct labels – no need to modify this

        :return: the accuracy of the model as a tensor
        """
        correct_prediction = tf.equal(tf.argmax(self.prediction, 1),
                                      tf.argmax(self.label, 1))
        return tf.reduce_mean(tf.cast(correct_prediction, tf.float32))


def main():
    t_start = time.time()

    mnist = input_data.read_data_sets("data/mnist/", one_hot=True)
    batch_sz = 50
    batch = 2000

    inputs = tf.placeholder(shape=[batch_sz, 28, 28, 1], dtype=tf.float32)
    labels = tf.placeholder(shape=[batch_sz, 10], dtype=tf.float32)

    model = Model(inputs, labels)

    session_config = tf.ConfigProto(gpu_options=tf.GPUOptions(allow_growth=True))
    sess = tf.Session(config=session_config)

    # sess = tf.Session()

    sess.run(tf.global_variables_initializer())
    for i in range(batch):
        next_image, next_label = mnist.train.next_batch(batch_sz)
        next_image = next_image.reshape((batch_sz, 28, 28, 1))
        sess.run(model.optimize, feed_dict={inputs: next_image, labels: next_label})

    acc, test_images, test_labels = 0, mnist.test.images, mnist.test.labels
    test_batch = math.ceil(len(test_images) / batch_sz)
    for i in range(test_batch):
        batch_images = test_images[i * batch_sz: (i + 1) * batch_sz]
        batch_images = batch_images.reshape((batch_sz, 28, 28, 1))
        batch_labes = test_labels[i * batch_sz: (i + 1) * batch_sz]
        acc += sess.run(model.accuracy, feed_dict={inputs: batch_images, labels: batch_labes})
    acc /= test_batch
    print(acc)

    print(time.time() - t_start, 'seconds')

    return


if __name__ == '__main__':
    main()

Cela a fonctionné pour moi.RTX 2060ubuntu 18.04python 3.6

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
sess = InteractiveSession(config=config)
with sess.as_default():
       process ...

Bonjour @ bm777

suite à mon enquête d'il y a quelques mois je résume ma compréhension du problème

Modèle GPU et mémoire: RTX 2070 8 Go
... ce qui ne devrait pas être le cas car j'ai 32 Go de RAM et 64 Go de

Le problème n'est pas la mémoire système, le problème est la mémoire GPU!

os.environ ['CUDA_VISIBLE_DEVICES'] = '-1'

fonctionne car il n'utilise pas le GPU!

Quelques explications:

TF a deux modes de fonctionnement:

  1. allow memory growth = false : Dans ce cas, TF préalloue de la mémoire pour les bibliothèques système en utilisant une estimation approximative de
    combien de mémoire est nécessaire. Comme vous pouvez le lire ici https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -633953715 TF utilise la formule max(300MB, GPU-MEM * fac) pour cette supposition. Pour TF2.1 fac = 0.05 pour TF2.2 et si je
    rappelez-vous que c'est fac=0.07 . Vous avez donc maintenant 8 Go, ce qui donne 400 Mo de mémoire pré-allouée au GPU sous TF2.1
    et 560 Mo sous TF2.2.

    J'ai évalué expérimentalement la mémoire pré-allouée nécessaire pour quelques GPU et TF21 ici: https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -637715002 et ici https://github.com/tensorflow/tensorflow / issues / 24496 # issuecomment -637715002

    Il s'avère que pour les opérations Conv2D, j'avais besoin de 520 Mo là-bas, vous en auriez moins que sous TF21 mais plus sous TF22. Malheureusement, vous ne mentionnez pas votre version TF mais je suppose que vous utilisez TF2.1. Si vous utilisez TF2.2 et que cela échoue toujours, cela peut être dû au fait que vous utilisez un GPU différent. Quoi qu'il en soit, le fait est qu'il échoue. Voir ci-dessous

2) allow memory growth = true : TF n'utilise aucune mémoire pré-allouée et charge les bibliothèques au fur et à mesure qu'elles viennent. Dans la documentation TF, cela est déclaré problématique en raison de la fragmentation potentielle de la mémoire et est donc off par défaut.

Ma prise:

Compte tenu de la grande plage de mémoire requise pour les bibliothèques qui dépend des opérations que vous effectuez également sur le GPU que vous avez, il semble très difficile d'obtenir le mode allow memory growth = false right (voir https://github.com/tensorflow/ tensorflow / issues / 24496 # issuecomment-637950411). La solution actuelle: augmenter la taille de la mémoire pré-allouée, ce qui a été fait pour TF2.2, est problématique si votre GPU est plutôt petit. Cela bloque l'utilisation de la mémoire en supposant que vous aurez besoin de toutes les bibliothèques disponibles (blas, Conv, FFT et je ne sais pas s'il y en a d'autres). Dans le cas où vous n'utilisez pas tous ces éléments, cela entraînera un gaspillage de mémoire pré-allouée, réduisant à son tour la taille du modèle que vous pouvez charger pour votre application. D'un autre côté, je crois que le problème de fragmentation de la mémoire peut être évité lorsque vous créez des modèles tôt en forçant les bibliothèques système à se charger avant de commencer la formation. Cela semble de toute façon ce qui se passe dans la plupart des cas et cela semble donc bénéfique, surtout pour les GPU avec peu de mémoire et surtout pour entraîner un seul modèle, de ne pas pré-allouer mais d'utiliser allow memory growth = true .

Personnellement, j'utilise des GPU avec une mémoire allant de 4 Go à 11 Go et en suivant l'argument ci-dessus, j'ai défini TF_FORCE_GPU_ALLOW_GROWTH = true pour tous. Pour le moment, je n'ai eu aucun problème avec ça.

Bonjour @roebel

Moi aussi, je réfléchissais aux problèmes d'erreur d'allocation de mémoire. C'est clairement pour moi maintenant.
Maintenant, la mémoire GPU est bonne

Dans le passé, j'ai testé de nombreuses options pour préallouer de la mémoire 😢:

gpus = tf.config.experimental.list_physical_devices('GPU')
try:
    tf.config.experimental.set_virtual_device_configuration(gpus[0], 
                 tf.config.experimental.VirtualDeviceConfiguration(memory_limit=5044)])
    """process...."""
except Exception as e:
    raise e

Personnellement, j'utilise un GPU avec 6 Go de mémoire.
Et merci @roebel , pour cette nouvelle flèche TF_FORCE_GPU_ALLOW_GROWTH=true pour forcer mon GPU à l'allocation 😊.

J'ai eu ce même problème. Je peux dire avec certitude que le problème ne se produit que sur mon 2070 RTX, et PAS sur un Titan RTX, exécutant exactement le même code.

https://github.com/DeepLabCut/DeepLabCut/issues/837

Passez simplement à Tensorflow 2.3 avec CUDA 11 et cudnn 8.0. Cela a résolu tous mes problèmes par magie et je n'ai même pas besoin de la solution de contournement avec config.gpu_options.allow_growth = True maintenant.

malheureusement, je dois exécuter du code qui ne prend en charge que tensorflow 1.X

Passez simplement à Tensorflow 2.3 avec CUDA 11 et cudnn 8.0. Cela a résolu tous mes problèmes par magie et je n'ai même pas besoin de la solution de contournement avec config.gpu_options.allow_growth = True maintenant.

La mise à niveau de la version 2.2 à la version 2.3 même avec TF_FORCE_GPU_ALLOW_GROWTH=false résolu ce problème pour moi (au moins pour le moment, je suis capable d'exécuter du code de démonstration delf ; je n'ai testé rien d'autre).

Je suis toujours sur CUDA 10.1, Cudnn 7.6.5.

Existe-t-il un correctif pour ce problème avec tensorflow 2 et python3 ???

J'ai un:
RTX 2080

Je reçois ce message:


2020-08-20 12:38:27.172496: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-08-20 12:38:27.177708: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
Traceback (most recent call last):
  File "/home/anantha/Desktop/RaspiCar/car.py", line 85, in <module>
    tnet.train(x, y)
  File "/home/anantha/Desktop/RaspiCar/car.py", line 65, in train
    self.model.fit(x, y, epochs=epochs)
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 66, in _method_wrapper
    return method(self, *args, **kwargs)
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 848, in fit
    tmp_logs = train_function(iterator)
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 580, in __call__
    result = self._call(*args, **kwds)
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 644, in _call
    return self._stateless_fn(*args, **kwds)
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 2420, in __call__
    return graph_function._filtered_call(args, kwargs)  # pylint: disable=protected-access
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 1661, in _filtered_call
    return self._call_flat(
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 1745, in _call_flat
    return self._build_call_outputs(self._inference_function.call(
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 593, in call
    outputs = execute.execute(
  File "/home/anantha/.local/lib/python3.8/site-packages/tensorflow/python/eager/execute.py", line 59, in quick_execute
    tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.UnknownError:  Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
     [[node sequential/conv2d/Conv2D (defined at /Desktop/RaspiCar/car.py:65) ]] [Op:__inference_train_function_951]

Function call stack:
train_function

Dans le cas où votre problème a la même origine que les problèmes traités dans le présent numéro (que je ne peux pas connaître à partir de votre rapport), il existe quelques solutions que vous pouvez facilement trouver en lisant les 10 à 20 derniers articles de ce fil.

Je l'ai corrigé avec ceci:

config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.compat.v1.Session(config=config)
sess.as_default()

J'ai eu ce même problème avec RTX 2080. Ensuite, le code suivant a fonctionné pour moi.

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

Merci tout le monde

Je pense que nous pouvons arrêter de publier le correctif allow_growth maintenant :)

RTX 2070 ici. Obtenait cette erreur, mais en cours d'exécution avec TF_FORCE_GPU_ALLOW_GROWTH=true (comme d'autres commentateurs l'ont souligné, le corrige pour eux) change le message d'erreur en une erreur de mémoire insuffisante (même si j'ai beaucoup de mémoire):

2020-10-17 16:35:11.717658: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 3.87G (4159818752 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory

Mais mon GPU a 8 Go et seulement environ 250 Mo étaient utilisés avant de commencer le processus. Donc je ne comprends pas, pourquoi ne peut-il pas allouer 3,87 Go? (la réduction de la taille du lot n'a eu aucun effet; le fichier de poids hdf5 est inférieur à 200 Mo)

TF_FORCE_GPU_ALLOW_GROWTH = true a fonctionné pour moi.
tf.config.experimental.set_memory_growth (gpu, True) fonctionnait également.

Voici ma configuration:
GPU GTX 1650
cuda-10-1 10.1.243-1
libcudnn7 7.6.5.32-1 + cuda10.1
Ubuntu 18.04.5 LTS

Quiconque ne peut pas définir la variable d'environnement peut essayer ceci comme suggéré dans https://www.tensorflow.org/guide/gpu :
gpus = tf.config.experimental.list_physical_devices ('GPU')
si gpus:
essayer:
# Actuellement, la croissance de la mémoire doit être la même sur tous les GPU
pour gpu dans gpus:
tf.config.experimental.set_memory_growth (gpu, Vrai)
logique_gpus = tf.config.experimental.list_logical_devices ('GPU')
print (len (gpus), «GPU physiques», len (logique_gpus), «GPU logiques»)
sauf RuntimeError comme e:
# La croissance de la mémoire doit être définie avant l'initialisation des GPU
imprimer (e)

Taper la commande mentionnée sur le terminal a fonctionné pour moi.

https://github.com/tensorflow/tfjs/issues/671#issuecomment -494832790

Passez simplement à Tensorflow 2.3 avec CUDA 11 et cudnn 8.0. Cela a résolu tous mes problèmes par magie et je n'ai même pas besoin de la solution de contournement avec config.gpu_options.allow_growth = True maintenant.

Il semble que le problème soit remarqué et résolu dans tensorflow 2.3.0.

  • CUDA 10.1
  • GPU: Quadro RTX 6000
  • Tensorflow 2.2.0
  • cudnn 7.6.5

Même problème:
tensorflow/stream_executor/cuda/cuda_dnn.cc:328] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

Et la solution allow_growth = True contournement

Après avoir mis à niveau tensorflow vers 2.3.0, le problème a disparu, même sans ajouter la ligne allow_growth = True .

ok, je l'ai fait fonctionner dans tf-nightly-gpu-2.0-preview et ipython notebook en ajoutant ceci à mon code:

depuis tensorflow.compat.v1 import ConfigProto
depuis tensorflow.compat.v1 import InteractiveSession

config = ConfigProto ()
config.gpu_options.allow_growth = Vrai
session = InteractiveSession (config = config)

ça marche dans mon cas

Cette page vous a été utile?
0 / 5 - 0 notes