Bitte stellen Sie sicher, dass dies ein Fehler ist. tag: bug_template
System Information
Beschreiben Sie das aktuelle Verhalten
Ich verwende das CNN-Modell auf MNIST. Wenn ich mit der GPU laufe, stoße ich auf
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
Ich habe ein bisschen gegraben und festgestellt, dass es sich um ein Speicherproblem handelt (was nicht der Fall sein sollte, da ich 32 GB RAM und 64 GB Swap habe. Ich habe htop ausgeführt, als ich das Modell ausgeführt habe, und ich habe 20 + GB frei, was mehr als ist genug für die 8 GB vRAM-Zuordnungen.
Wenn Sie gpu_options.allow_growth = True
verwenden, funktioniert das Modell ordnungsgemäß, und das Festlegen von os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
funktioniert ebenfalls. Dies bedeutet, dass ich mit einem Speicherproblem konfrontiert bin, aber ich sehe nicht wie.
Die Verwendung von gpu_options.allow_growth = True
behebt nicht das gleiche Problem, wenn versucht wird, Tensorflow / Models / Official / Mnist / Model auszuführen, das sich mit meinem Code ähnlich verhalten sollte.
Code zur Reproduktion des Problems
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()
Ich bin auf dasselbe Problem mit derselben GPU gestoßen: "CUDNN_STATUS_INTERNAL_ERROR".
RTX 2070 GPU
CUDA 10
cuDNN 7.4.2
Ubuntu 18.04
tf-nightly-gpu (r1.13, 13. Januar)
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.
Ich habe das gleiche Problem
RTX2080 GPU
CUDA 10
cudnn 7.4.2
Ich habe die folgenden tf-Versionen tf-nightly-gpu und eine selbst kompilierte Version von master (060b6e32ad) ausprobiert.
Ich fand heraus, dass es möglich ist, die folgenden ENVIRONMENT-Variablen festzulegen, um weitere Debug-Informationen zu erhalten.
CUDNN_LOGINFO_DBG = 1;
CUDNN_LOGDEST_DBG = stdout
Dann bekomme ich folgenden Fehler:
I0117 14: 11: 24.441819 140433563125568 basic_session_run_hooks.py:594] Speichern von Prüfpunkten für 0 in /tmp/mnist/model.ckpt.
2019-01-17 14: 11: 25.916269: I tensorflow / stream_executor / platform / default / dso_loader.cc: 154] hat die CUDA-Bibliothek libcublas.so.10.0 erfolgreich lokal geöffnet
ICH! Die CuDNN (v7402) -Funktion cudnnCreate () heißt:
ich! Zeit: 2019-01-17T14: 11: 26.079184 (0d + 0h + 0m + 0s seit dem Start)
ich! Prozess = 29255; Thread = 29356; GPU = NULL; Handle = NULL; StreamId = NULL.
2019-01-17 14: 11: 26.079151: I tensorflow / stream_executor / platform / default / dso_loader.cc: 154] hat die CUDA-Bibliothek libcudnn.so.7 erfolgreich lokal geöffnet
ICH! Die CuDNN (v7402) -Funktion cudnnCreate () heißt:
ich! Zeit: 2019-01-17T14: 11: 26.571897 (0d + 0h + 0m + 0s seit dem Start)
ich! Prozess = 29255; Thread = 29356; GPU = NULL; Handle = NULL; StreamId = NULL.
2019-01-17 14: 11: 26.571858: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Cudnn-Handle konnte nicht erstellt werden: CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14: 11: 26.579375: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Cudnn-Handle konnte nicht erstellt werden: CUDNN_STATUS_INTERNAL_ERROR
ICH! Die CuDNN (v7402) -Funktion cudnnCreate () heißt:
ich! Zeit: 2019-01-17T14: 11: 26.579803 (0d + 0h + 0m + 0s seit dem Start)
ich! Prozess = 29255; Thread = 29356; GPU = NULL; Handle = NULL; StreamId = NULL.
2019-01-17 14: 11: 26.585818: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Cudnn-Handle konnte nicht erstellt werden: CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14: 11: 26.585850: W ./tensorflow/stream_executor/stream.h:2109] Versuch, einen DNN-Vorgang mit StreamExecutor ohne DNN-Unterstützung auszuführen
Traceback (letzter Anruf zuletzt):
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", Zeile 1335, in _do_call
return fn (* args)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", Zeile 1320, in _run_fn
Optionen, feed_dict, fetch_list, target_list, run_metadata)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", Zeile 1408, in _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.UnknownError: Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnprotokollmeldung gedruckt wurde.
[[{{node Discriminator_1 / Conv / Conv2D}}]]
[[train / diskriminator_train / train_op / control_dependency / _569]]
Während der Behandlung der obigen Ausnahme ist eine weitere Ausnahme aufgetreten:
Traceback (letzter Anruf zuletzt):
Datei "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py", Zeile 151, in
tf.app.run ()
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py", Zeile 125, wird ausgeführt
_sys.exit (main (argv))
Datei "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py", Zeile 147, in main
get_hooks_fn = tfgan.get_joint_train_hooks ())
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py", Zeile 1200, in gan_train
config = config)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/training/python/training/training.py", Zeile 546, im Zug
loss = session.run (train_op, run_metadata = run_metadata)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", Zeile 693, wird ausgeführt
run_metadata = run_metadata)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", Zeile 1188, wird ausgeführt
run_metadata = run_metadata)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", Zeile 1287, wird ausgeführt
erhöhen Sie six.reraise ( original_exc_info)Datei "/usr/local/lib/python3.6/dist-packages/six.py", Zeile 693, in reraiseWert steigernDatei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", Zeile 1272, wird ausgeführtreturn self._sess.run ( args, ** kwargs)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", Zeile 1336, wird ausgeführt
feed_dict, Optionen)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", Zeile 1362, in _call_hook_before_run
request = hook.before_run (run_context)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py", Zeile 1061, in before_run
run_context.session.run (self._train_ops)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", Zeile 930, wird ausgeführt
run_metadata_ptr)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", Zeile 1153, in _run
feed_dict_tensor, options, run_metadata)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", Zeile 1329, in _do_run
run_metadata)
Datei "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", Zeile 1349, in _do_call
Erhöhen Sie den Typ (e) (node_def, op, message)
tensorflow.python.framework.errors_impl.UnknownError: Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnprotokollmeldung gedruckt wurde.
[[Knoten Discriminator_1 / Conv / Conv2D (definiert zu Hause / dj / projects / gan / tf_models / research / gan / mnist / networks.py: 152)]]
[[train / diskriminator_train / train_op / control_dependency / _569]]
Fehler können von einer Eingabeoperation herrühren.
Eingangsquellenoperationen, die mit dem Knoten Discriminator_1 / Conv / Conv2D verbunden sind:
Eingaben / batch / n (zu Hause definiert / dj / projects / gan / tf_models / research / gan / mnist / data_provider.py: 67)
Original-Stack-Trace für 'Discriminator_1 / Conv / Conv2D':
Datei "home / dj / projects / gan / tf_models / research / gan / mnist / train.py", Zeile 151, in
tf.app.run ()
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / platform / app.py", Zeile 125, in Ausführung
_sys.exit (main (argv))
Datei "home / dj / projects / gan / tf_models / research / gan / mnist / train.py", Zeile 87, hauptsächlich
[FLAGS.batch_size, FLAGS.noise_dims]))
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / gan / python / train.py", Zeile 118, in gan_model
Diskriminator_real_outputs = Diskriminator_fn (real_data, generator_inputs)
Datei "home / dj / projects / gan / tf_models / research / gan / mnist / networks.py", Zeile 176, in unconditional_discriminator
net = _discriminator_helper (img, False, None, weight_decay)
Datei "home / dj / projects / gan / tf_models / research / gan / mnist / networks.py", Zeile 152, in _discriminator_helper
net = layer.conv2d (img, 64, [4, 4], stride = 2)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / Contrib / Framework / Python / ops / arg_scope.py", Zeile 182, in func_with_args
return func ( args, * current_args)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / Contrib / Layer / Python / Layer / Layer.py", Zeile 1155, in convolution2d
conv_dims = 2)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / Contrib / Framework / Python / ops / arg_scope.py", Zeile 182, in func_with_args
return func ( args, * current_args)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / Contrib / Layer / Python / Layer / Layer.py", Zeile 1058, in Faltung
Ausgaben = layer.apply (Eingaben)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / engine / base_layer.py", Zeile 1228, in Apply
return self .__ call __ (Eingaben, Argumente, * kwargs)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / layer / base.py", Zeile 531, in __call__
output = super (Layer, self) .__ call __ (Eingaben, args, * kwargs)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / engine / base_layer.py", Zeile 564, in __call__
output = self.call (Eingaben, Argumente, * kwargs)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / layer / convolutional.py", Zeile 196, im Aufruf
output = self._convolution_op (input, self.kernel)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", Zeile 966, in __call__
return self.conv_op (inp, filter)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", Zeile 591, in __call__
return self.call (inp, filter)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", Zeile 208, in __call__
name = self.name)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", Zeile 1578, in conv2d
Name = Name)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / gen_nn_ops.py", Zeile 1040, in conv2d
Datenformat = Datenformat, Dilatationen = Dilatationen, Name = Name)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / op_def_library.py", Zeile 788, in _apply_op_helper
op_def = op_def)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / util / deprecation.py", Zeile 501, in new_func
return func ( args, * kwargs)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / ops.py", Zeile 3300, in create_op
op_def = op_def)
Datei "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / ops.py", Zeile 1801, in __init__
self._traceback = tf_stack.extract_stack ()
Irgendwelche Ideen jemand? Ich bin kurz vor der Neuinstallation meiner gesamten Umgebung :-(
Versuchen Sie, r1.13 aus dem Quellcode zu kompilieren. Es würde lange dauern, aber es sollte Ihr Problem beheben. Zumindest hat es mein Problem behoben.
Ich habe versucht, aus dem Quellcode zu kompilieren, bin aber auf dasselbe Problem gestoßen. Ich konnte endlich mein Problem beheben, indem ich config.gpu_options.allow_growth = True
.
Ich hatte das gleiche Problem (auf einem RTX 2060, Ubuntu 18.04, Python 3.6.7, CUDA 10.0.130, cuDNN 7.4.2, Tensorflow 1.13.0-rc0 aus dem Quellcode). Dank des Vorschlags von @ va-andrew funktioniert es mit dem Optionssatz allow_growth
.
FWIW, bei der Suche nach Lösungen für dieses Problem scheint dieses Problem ein häufiges Problem bei der RTX-Serie zu sein (obwohl es bei CUDA 10.0 möglicherweise ein allgemeines Problem darstellt, da die neuen Karten die älteren Versionen nicht unterstützen). Es wäre großartig, wenn die Standardeinstellungen in Version 1.13 aktualisiert werden könnten, sodass für diese Karten keine speziellen Optionen festgelegt werden müssen.
Ich habe gesagt, dass ich dies auch unter der folgenden Konfiguration erlebt habe:
Tensorflow Docker-GPU-Container mit stabilen Releases von allem funktionieren ebenfalls nicht (sie führen direkt zu Segfault, anstatt CUDNN_STATUS_INTERNAL_ERROR zu melden).
Seltsamerweise funktionieren die Dinge unter Windows 10 mit Tensorflow v1.12 einwandfrei!
Und haben andere berichtet, dass durch das Setzen von allow_growth die Dinge ordnungsgemäß ausgeführt werden können.
Selbes Problem hier.
Und wie andere berichtet haben, können mit der Einstellung allow_growth = TRUE Dinge ausgeführt werden.
Schließen dieses Problems, seit es behoben ist. Vielen Dank!
@ymodak Kannst du bitte auf die PR verweisen, die diesen Fehler behoben hat?
Ich habe ein ähnliches Problem mit tf-nightly-gpu-2.0-preview
auf dem RTX 2080
Das gleiche Problem mit einem RTX2080, das zwei Tage lang neu kompiliert und nach Fehlern gesucht wurde, bis ich dieses Update gefunden habe.
(das allow_growth = true Ding hat es behoben)
Du hast meinen Tag gerettet
Wie setzt man allow_growth = true? Ich habe tf-nightly-gpu-2.0-Vorschau und versucht:
Tensorflow als tf importieren
config = tf.ConfigProto ()
config.gpu_options.allow_growth = True
session = tf.Session (config = config, ...)
AttributeError Traceback (letzter Aufruf zuletzt)
1 Tensorflow als tf importieren
----> 2 config = tf.ConfigProto ()
AttributeError: Das Modul 'tensorflow' hat kein Attribut 'ConfigProto'.
Wie kann ich allow_growth in Tensorflow 2.0 festlegen?
ok, hat es in tf-nightly-gpu-2.0-preview und ipython notebook funktionieren lassen und dies meinem Code hinzugefügt:
aus tensorflow.compat.v1 ConfigProto importieren
aus tensorflow.compat.v1 InteractiveSession importieren
config = ConfigProto ()
config.gpu_options.allow_growth = True
session = InteractiveSession (config = config)
Gleiches Problem, mit gpu_options.allow_growth = True, das Problem wurde behoben.
@newhouseb wie / wo hast du das für alle Benchmarks gesetzt? War es eine einfache Änderung?
Ist Decke Wachstum erlauben eine Lösung?
Es ist aus einem bestimmten Grund standardmäßig deaktiviert
https://www.tensorflow.org/guide/using_gpu#allowing_gpu_memory_growth
In meinem Programm ist die Speicherverwaltung wichtig
Ich möchte die Menge der von TF verwendeten GPU begrenzen, da in meiner Grafikanwendung der GPU-Speicher für andere Zwecke verwendet wird und es wichtig ist, ihn auf engstem Raum zu platzieren, um Speicherfehler zu vermeiden
Ich arbeite in C ++ unter Windows
Das Hinzufügen der Option Wachstum zulassen führt zu einem OOM-Fehler.
Ohne diese Codezeile läuft das Modell auf demselben Computer mit derselben Karte einwandfrei.
Mit OOM-Fehler
options.config.mutable_gpu_options()->set_allow_growth(true);
options.config.mutable_gpu_options()->set_per_process_gpu_memory_fraction(fraction);
Ohne OOM-Fehler
//options.config.mutable_gpu_options()->set_allow_growth(true);
options.config.mutable_gpu_options()->set_per_process_gpu_memory_fraction(fraction);
Um dieses Problem mit set zu lösen, kann das Wachstum zu einem Segfault führen.
@ymodak Dieser Fehler wurde nicht behoben. Die Verwendung einer beliebigen Art von Convnet sollte in der Standardkonfiguration funktionieren. Entweder sollte allow_growth standardmäßig true sein, es sollte behoben sein, damit dies funktioniert, oder es sollte ein besserer Fehler als CUDNN_STATUS_INTERNAL_ERROR
vorliegen.
@ymodak Es sieht so aus, als ob dieses Problem vorzeitig geschlossen wurde. Während es eine Problemumgehung für dieses Problem gibt, müssen Sie den Anwendungscode ändern. Infolgedessen funktioniert der Beispielcode auf RTX-Karten nicht sofort, und die meisten Online-Rezepte müssen ebenfalls geändert werden.
@samhodge Kannst du config.gpu_options.per_process_gpu_memory_fraction = 0.4
wie auf der Tensorflow- Dokumentationsseite vorgeschlagen, die du selbst gepostet hast?
Ich bin verwirrt von diesem booleschen Hack, um Tensorflow-GPU auf meinem RTX 2080 zu aktivieren: Wird dies allow_growth = True
ein Problem sein, wenn ich meine GPU jeweils nur für ein Tensorflow-Skript / Jupiter-Notebook verwende? (zusätzlich zur Standard-GPU-Nutzung für den Bildschirm usw.)
Ich beabsichtige, einen statischen ML-Stack auf einem Computer einzurichten und möchte wissen, ob dies irgendwann zu einem Durcheinander führen wird (große Gittersuche, Modelle mit vielen Parametern usw.). Ich habe noch nicht herausgefunden, ob ich definitiv aus Quellen bauen muss, um diesen internen Fehler zu vermeiden oder einfach diesen Booleschen Wert zu ändern.
Ok, ich glaube, ich habe die Ursache meiner Probleme gefunden, bevor ich meine Sitzung erstelle. Ich messe den GPU-RAM frei. Wenn ich also auf einer 8-Gbit-Karte bin und 6 Gbit frei sind, verwende ich einen Bruchteil von 0,75 und gelegentlich endet das in einem OOM, aber kürzlich habe ich habe mit 0,95 * 0,75 experimentiert und ich habe noch keinen OOM. Wenn Sie also den Platz für die Zuweisung von Tensorflow auf das Limit verschieben, kommt es manchmal zu Konflikten. Natürlich, wenn Sie Ein- und Ausgänge zu einem einzelnen Op nicht passen, wird es OOM, aber ich messe daran und verwendet GPU oder CPU, je nachdem, welche passt.
@samhodge großartig, also bietet der boolesche Hack allow_growth
am Ende eine Lösung, wenn keine größere GPU-Operation parallel gestartet wird und wenn das, was zu einem bestimmten Zeitpunkt durch Tensorflow verarbeitet wird (Stapelgröße wäre kritisch), dies nicht tut Überlauf des von der GPU bereitgestellten Speichers ...?
Alles nutzt die GPU auch Ihren Browser
Das gleiche Problem tritt auf einer GTX 1050 mit Tensorflow-GPU 1.13.1 von Pip mit CUDA 10.0 / cuDNN 7.4.2.24/Nvidia-Treiber 410 / Ubuntu 16.04 auf.
Immer noch das gleiche Problem hier, aber "config.gpu_options.allow_growth = True" behebt das Problem nicht. Passiert sowohl auf TF-gpu 1.14.1 als auch auf TF-gpu 2.0. RTX1070, CUDA 10.0, Ubuntu 18.04, Nvidia-Treiber 430.09.
Die Beschreibungen der Probleme, die Sie sehen, lassen mich glauben, dass (bestimmte Version von) cuDNN versucht, GPU-Speicher beim Erstellen des Handles zuzuweisen. Wenn TensorFlow bereits den gesamten Speicher belegt hat (entweder weil config.gpu_options.allow_growth = false oder per_process_gpu_memory_fraction nahe 1.0), ist kein Speicher mehr für cuDNN zuzuweisen.
Sie können dies bestätigen, indem Sie TensorFlow über nvprof ausführen und eine API-Ablaufverfolgung generieren, um den fehlgeschlagenen cuMemAlloc-Aufruf zu überprüfen.
Problem Nr. 6698 scheint das gleiche Problem zu diskutieren. Einige Leute bemerkten, dass sie versehentlich eine cuDNN-Version verwendet hatten, die nicht zu ihrer CUDA-Version passt. Könnten Sie bitte überprüfen, ob Sie cuDNN für CUDA 10 verwenden, wenn Sie mit CUDA 10 arbeiten?
Es stellte sich heraus, dass ich cuDNN nicht richtig installiert hatte, weil ich ein großer Dummkopf bin. Habe es bekommen, TF2-nightly neu installiert, die Zeilen hinzugefügt, um das Wachstum zu ermöglichen, und alles ist gut.
Wie lösche ich Cudatoolkit und Cudnn aus Conda?
Da in Anaconda enthaltenes (oder eingebettetes) cudnn den folgenden Fehler aufweist, möchte ich das von conda installierte cudatoolkit und cudnn entfernen und unabhängige CUDA und cudnn von der Nvidia-Website installieren.
Fehler: Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnprotokollmeldung gedruckt wurde.
Obwohl ich die Befehle wie folgt verwende, sie aber nicht entfernen kann, kann ich sie nicht entfernen.
conda entfernen --name cuda --all
conda remove --name cudnn --all
Ich sehe, dass zwei Dokumente einschließlich cudatoolkit-10.0.130-0 und cudnn-7.3.1-cuda10.0.0_0 im Pfad als
folgt.
/home/anaconda3/pkgs/cudatoolkit-10.0.130-0
/home/anaconda3/pkgs/cudnn-7.3.1-cuda10.0.0_0
Wie kann ich Cuda und Cudnn löschen (oder entfernen), die in Anaconda enthalten (oder eingebettet) sind?
Danke im Voraus,
Mike
@ mikechen66 Was ist die Ausgabe von conda? Dies kann daran liegen, dass andere Pakete von cuda und cudnn abhängen. Warum sollten Sie sie überhaupt löschen wollen? Wenn Sie eine benutzerdefinierte Umgebung erhalten möchten, verwenden Sie Miniconda anstelle von Anaconda. Miniconda wird nur mit Conda geliefert, und Sie müssen alle benötigten Pakete manuell installieren.
Hallo tydlwav:
Vielen Dank für Ihr Feedback. Nachdem ich die Versionskompatibilität und das Veröffentlichungsdatum der Kernbibliotheken überprüft hatte, installierte ich die zugehörigen Entwicklungsumgebungen, führte den einfachen MNIST-Testcode aus und erhielt die folgenden Ausgaben.
Ich denke, dass Anaconda3 nicht einmal die Kernbibliotheken von cudnn und TensorFlow unterstützen kann. Es ist also ein großes Problem von Anaconda3. Daher möchte ich die leichtgewichtigen Cudnn-Bibliotheken aus Anaconda löschen und die unabhängigen und leistungsstarken Nvidia Cuda- und Cudnn-Bibliotheken verwenden, um den Testcode auszuführen. Bitte helfen Sie mit einigen Vorschlägen.
Nvidia GeForce RTX 2060
Grafiktreiber: NVIDIA-Linux-x86_64-415.27 (15. Januar 2019)
1. Version, die RTX 2060 unterstützt
Anaconda3: Anaconda3-2019.03-Linux-x86_64.sh (2019.04-04)
- cudatoolkit-10.0.130-0
- cudnn-7.3.1-cuda10.0.0_0
- TensorFlow 13.1
- Juputer Notebook und ipykernel
- Standardmäßig von Ananconda3
Keras importieren
aus keras.datasets import mnist
aus keras.models importieren Sequential
aus keras.layers importieren Dense, Dropout
aus keras.layers importieren Sie Flatten, MaxPooling2D, Conv2D
aus keras.callbacks importiere 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 = Sequential ()
model.add (Conv2D (32, kernel_size = (3,3), Aktivierung = 'relu', input_shape = (28,28,1)))
model.add (Conv2D (64, kernel_size = (3,3), Aktivierung = 'relu'))
model.add (MaxPooling2D (pool_size = (2,2)))
model.add (Dropout (0,25))
model.add (Flatten ())
model.add (dicht (128, Aktivierung = 'relu'))
model.add (Dropout (0.5))
model.add (Dicht (n_classes, Aktivierung = 'softmax'))
model.compile (loss = 'kategoriale_kreuzentropie', optimierer = 'adam', metriken = ['genauigkeit'])
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])
Verwenden des TensorFlow-Backends
WARNUNG: tensorflow : Von /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (von tensorflow.python.framework.ops) ) ist veraltet und wird in einer zukünftigen Version entfernt.
Anweisungen zum Aktualisieren:
Kolokationen werden automatisch vom Placer behandelt.
WARNUNG: Tensorflow : Von /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:3445: Dropout aufrufen (von tensorflow.python.ops.nn_ops) mit keep_prob ist veraltet und wird in einer zukünftigen Version entfernt.
Anweisungen zum Aktualisieren:
Bitte verwenden Sie rate
anstelle von keep_prob
. Die Rate sollte auf rate = 1 - keep_prob
.
WARNUNG: tensorflow : Von /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (von tensorflow.python.ops.math_ops) ) ist veraltet und wird in einer zukünftigen Version entfernt.
Anweisungen zum Aktualisieren:
Verwenden Sie stattdessen tf.cast.
Trainieren Sie mit 60000 Proben, validieren Sie mit 10000 Proben
Epoche 1/15
UnknownError Traceback (letzter Anruf zuletzt)
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, Klassengewicht, Beispielgewicht, Anfangsbuchstabe, Schritte pro Schritt, Validierungsschritte, ** kwargs)
1037 initial_epoch = initial_epoch,
1038 Schritte_per_epoch = Schritte_per_epoch,
-> 1039 Validierungsschritte = Validierungsschritte)
1040
1041 def evaluieren (Selbst, x = Keine, y = Keine,
~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / engine / training_arrays.py in fit_loop (Modell, f, ins, out_labels, batch_size, Epochen, ausführlich, Rückrufe, val_f, val_ins, shuffle, callback_metrics, initial_epoch, schritte_per_epoch, validierungsschritte)
197 ins_batch [i] = ins_batch [i] .toarray ()
198
-> 199 outs = f (ins_batch)
200 outs = to_list (outs)
201 für l, o in zip (out_labels, outs):
~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / backend / tensorflow_backend.py in __call __ (self, input)
2713 return self._legacy_call (Eingaben)
2714
-> 2715 return self._call (Eingänge)
2716 sonst:
2717 if py_any (is_tensor (x) für x in Eingaben):
~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / backend / tensorflow_backend.py in _call (self, input)
2673 fetched = self._callable_fn ( array_vals, run_metadata = self.run_metadata)2674 sonst:-> 2675 abgerufen = self._callable_fn ( array_vals)
2676 return abgerufen [: len (self.outputs)]
2677
~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / tensorflow / python / client / session.py in __call __ (self, args, * kwargs)
1437 ret = tf_session.TF_SessionRunCallable (
1438 self._session._session, self._handle, args, status,
-> 1439 run_metadata_ptr)
1440 wenn 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 Keine, Keine,
527 compatible.as_text (c_api.TF_Message (self.status.status)),
-> 528 c_api.TF_GetCode (self.status.status))
529 # Löschen Sie das zugrunde liegende Statusobjekt aus dem Speicher, da es sonst am Leben bleibt
530 #, da es einen Verweis auf den Status aus dem Traceback aufgrund von gibt
Unbekannter Fehler: Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnprotokollmeldung gedruckt wurde.
[[{{node conv2d_1 / convolution}}]]
[[{{Knotenmetriken / acc / Mittelwert}}]]
Hallo tydlwav:
Ich benutze den folgenden Befehl, um sowohl cuda als auch cudnn zu deinstallieren. Beide Bibliotheken befinden sich jedoch immer noch in Anaconda3, obwohl sie derzeit nicht funktionieren. Ich denke, dass Anaconda3 beabsichtigt, die Kernbibliotheken zu schützen, die nicht entfernt werden sollen. Es könnte die Kernfunktion von Continuum sein, obwohl es Fehler enthält. Ich werde versuchen, entweder Independent Nvdia cuda (ohne nvcc) und cudnn zu verwenden oder den neuen cuda oder cudnn mit conda zu finden, der installiert werden soll.
Befehl deinstallieren:
conda deinstallieren cudatoolkit
Paketmetadaten sammeln: fertig
Umgebung lösen: fertig
Umgebungsort: / home / mike / anaconda3 / envs / tf-gpu
entfernte Spezifikationen:
- Cudatoolkit
Die folgenden Pakete werden ENTFERNT:
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
Weiter ([j] / n)? y
Transaktion vorbereiten: erledigt
Transaktion überprüfen: erledigt
Transaktion ausführen: erledigt
Anmerkungen:
Nachdem ich beide deinstalliert hatte, zeigte Jupyter Notebook "Kein Mudule mit dem Namen" Tensorflow ". Das bedeutet, dass die Uninstallation erfolgreich ist. Allerdings sind sowohl Cudatoolkit als auch Cudnn immer noch in Anaconda3 enthalten sie funktioniert nicht.
/home/anaconda3/pkgs/cudatoolkit-10.0.130-0
/home/anaconda3/pkgs/cudnn-7.3.1-cuda10.0.0_0
Sie haben sie bereits entfernt. Die Dateien in pkgs
dienen zur Installation. Diese werden für die Installation im Cache heruntergeladen. Dies ist auch nicht der richtige Ort, um Probleme mit der Conda-Umgebung zu diskutieren. Es ist für dieses Problem nicht relevant. Möglicherweise möchten Sie einen Stapelüberlauf versuchen.
Ich bin ein wenig verwirrt über den Stand dieses Problems. Ich verwende einen RTX 2080, cuda 10.1, cudnn v7.5.1.10 und tensorflow 1.14.
Die Verwendung der Funktion "Wachstum zulassen" funktioniert, aber möglicherweise habe ich eine andere Versionsfehlanpassung?
Wird es in Tensorflow 1.14 eine Lösung dafür geben?
Vielen Dank
Vielen Dank. Ich sehe das Kompatibilitätsproblem zwischen den RTX 20XX Turing-Serien, TensorFlow und Anaconda. Es ist offensichtlich, dass die RTX 20XX-Serie Cudnn 7.5.0 unterstützt. TensorFlow unterstützt nur Cudnn 7.4. Anaconda enthält jedoch eine optimierte Version 7.3.1. Dies ist eine völlige Nichtübereinstimmung zwischen den drei Anbietern. Darüber hinaus weist die RTX 20XX-Serie ein großes Kompatibilitätsproblem mit Ubuntu 16.04 LTS auf. Manchmal stürzte das Ubuntu 16.04 ab. Ich musste zwei bootfähige USB-Sticks mitbringen, um das Betriebssystem neu zu installieren. Daher habe ich zwei PCs auf Ubuntu 18.04 LTS aktualisiert und Miniconda installiert. Dann werde ich eine höhere Version von Tensorflow ausprobieren.
Anmerkungen:
Nvidia verfügt über ein eigenes Ubuntu 18.04 LTS für die GPU-Plattformen Jetson TX1 / TX2 und Jetson Nano Mobile. Nvidia scheint seine neuen Produkte wie die RTX 20XX-Serie eher mit Ubuntu 18.04 LTS als mit der niedrigeren Version Ubuntu 16.04 zu kompatibel zu machen. Ich weiß jedoch nicht, ob Continuum seinen Upgrade-Plan für die Nvidia RTX 20XX Turing-Serie hat.
RTX-Serien werden ab sofort gut unterstützt. Ich habe tf mit RTX 2070 über eine Conda-Umgebung auf Nicht-Ubuntu-Distribution verwendet. Dies sollte der schlimmste Fall sein, und es funktioniert immer noch gut. Cuda und cudnn sind abwärtskompatibel und es sollte kein Problem sein, wenn Sie die neueren Versionen verwenden. Sie sollten einfach eine neue Python 3.6-Umgebung mit conda create -n tf python==3.6.8
erstellen und conda install tensorflow-gpu
ausführen.
Das ist großartig. Ich habe aus dem Quellcode kompiliert und Clients mit Tensorflow 1.12.0 CUDA 10.0 und CUDNN 7.4.2.24 auf der meisten Hardware arbeiten lassen, aber ich hatte Probleme mit einer Handvoll Clients mit RTX-Karten mit einem CNN mit cudnn auf der GPU. Möglicherweise habe ich versehentlich die falsche CUDNN für CUDA 9.0 gepackt. Die Dateien haben den gleichen Namen.
Kann jemand bestätigen, dass diese Versionen auf RTX2080 und anderen Turing-basierten Karten funktionieren?
Hallo tydlwav:
Ich habe Miniconda und die zugehörige Python- und Tensorflow-Umgebung gemäß Ihrem Vorschlag installiert. Es hat immer noch den Fehler: Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte .......
Bitte helfen Sie bei der Suche nach einer Lösung.
Bitte beachten Sie die Schritte, die ich ausgeführt habe.
Installieren Sie Python 3.6.8 gemäß Ihrer Richtlinie.
conda create -n tf python == 3.6.8
aktiviere tf
conda aktivieren tf
Installieren Sie Tensorflow-GPU in der TF-Umgebung gemäß Ihrer Richtlinie.
conda install tensorflow-gpu
Das installierte Paket enthält cudatoolkit und cudnn wie folgt.
.................................................. ..................................................
cudatoolkit pkgs / main / linux-64 :: cudatoolkit-10.0.130-0
cudnn pkgs / main / linux-64 :: cudnn-7.3.1-cuda10.0_0
.................................................. ..................................................
1). Installieren Sie das Jupiter-Notebook
conda install jupyter notebook
2). Installieren Sie ipykernel basierend auf dem Jupiter-Notebook
conda ipykernel jupyter installieren
3). Erstellen Sie eine TensorFlow-GPU auf der Webseite des Jupyter-Notebooks
python -m ipykernel install --user --name tf-gpu --display-name "TensorFlow-GPU"
2). Klicken Sie auf TensorFlow-GPU
Während Sie im Menü "Neu" auf "TensorFlow-GPU" klicken und auf der Webseite "TensorFlow-GPU" auswählen, wird die Zelle auf der Webseite des Jupyter-Notebooks angezeigt. Die Webseite ist wie folgt aufgeführt.
http: // localhost : 8888 / notebooks / Untitled3.ipynb? kernel_name = tf-gpu
Keras importieren
aus keras.datasets import mnist
aus keras.models importieren Sequential
aus keras.layers importieren Dense, Dropout
aus keras.layers importieren Sie Flatten, MaxPooling2D, Conv2D
aus keras.callbacks importiere 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 = Sequential ()
model.add (Conv2D (32, kernel_size = (3,3), Aktivierung = 'relu', input_shape = (28,28,1)))
model.add (Conv2D (64, kernel_size = (3,3), Aktivierung = 'relu'))
model.add (MaxPooling2D (pool_size = (2,2)))
model.add (Dropout (0,25))
model.add (Flatten ())
model.add (dicht (128, Aktivierung = 'relu'))
model.add (Dropout (0.5))
model.add (Dicht (n_classes, Aktivierung = 'softmax'))
model.compile (loss = 'kategoriale_kreuzentropie', optimierer = 'adam', metriken = ['genauigkeit'])
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])
Unbekannter Fehler: Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnprotokollmeldung gedruckt wurde.
[[{{node conv2d_1 / convolution}}]]
[[{{Knotenmetriken / acc / Mittelwert}}]]
Vielen Dank,
Mike
HI tydlwav:
Übrigens habe ich auch Keras mit dem folgenden Befehl installiert.
conda install keras-gpu
Da die Installation immer korrekt ist, habe ich den Fehler erhalten. Ich gehe also davon aus, dass es sich um das Versionskompatibilitätsproblem zwischen Miniconda und RTX20XX Turing handelt. Der Fehler ist der gleiche wie bei Anaconda. Ich erfahre, dass die Cudnn- und Cuda-Version in Miniconda und Anaconda gleich sind.
Das ist ziemlich interessant. Ich habe cuda 10 und cudnn7.3 vor ungefähr anderthalb Monaten mit conda arbeiten lassen. Ich habe seitdem keinen Tensorflow mehr verwendet. Wenn es bei Ihnen nicht funktioniert, können Sie aus dem Quellcode erstellen. Das funktioniert bei mir immer. Wenn Sie gerade erst anfangen, würde ich die Verwendung von Pytorch empfehlen. Es wäre viel einfacher, Dinge zu installieren und zum Laufen zu bringen.
Hallo tydlwav:
Ich werde die andere Methode wie Pytorch versuchen. Nachdem Google Tensorflow-GPU 1.14 veröffentlicht hat, kann ich mit der Miniconda die unabhängige Tensorflow-GPU 1.14 auf der Google Tensorflow-Website wie folgt installieren.
Google Tensorflow: https://www.tensorflow.org/install/source
Anmerkungen:
Conda hat nur Tensorflow-GPU-Builds von 1.0.1 bis 1.13.1 wie folgt. Die Builds sind so alt, dass die Builds die offizielle Google TensorFlow- und die offizielle Nvidia GeForce RTX 20XX (2060 ~ 2080) Truing-Serie nicht einholen konnten.
Befehl:
conda search tensorflow-gpu
Kanäle laden: fertig
Name Version Build Channel
tensorflow-gpu 1.0.1 py27_4 pkgs / free
tensorflow-gpu 1.0.1 py35_4 pkgs / frei
tensorflow-gpu 1.0.1 py36_4 pkgs / frei
tensorflow-gpu 1.1.0 np111py27_0 pkgs / free
tensorflow-gpu 1.1.0 np111py35_0 pkgs / free
tensorflow-gpu 1.1.0 np111py36_0 pkgs / free
tensorflow-gpu 1.1.0 np112py27_0 pkgs / free
tensorflow-gpu 1.1.0 np112py35_0 pkgs / free
tensorflow-gpu 1.1.0 np112py36_0 pkgs / free
tensorflow-gpu 1.2.1 py27cuda7.5cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py27cuda7.5cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py27cuda8.0cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py27cuda8.0cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py35cuda7.5cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py35cuda7.5cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py35cuda8.0cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py35cuda8.0cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py36cuda7.5cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py36cuda7.5cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py36cuda8.0cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py36cuda8.0cudnn6.0_0 pkgs / free
tensorflow-gpu 1.3.0 0 pkgs / frei
tensorflow-gpu 1.4.1 0 pkgs / main
tensorflow-gpu 1.5.0 0 pkgs / main
tensorflow-gpu 1.6.0 0 pkgs / main
tensorflow-gpu 1.7.0 0 pkgs / main
tensorflow-gpu 1.8.0 h7b35bdc_0 pkgs / main
tensorflow-gpu 1.9.0 hf154084_0 pkgs / main
tensorflow-gpu 1.10.0 hf154084_0 pkgs / main
tensorflow-gpu 1.11.0 h0d30ee6_0 pkgs / main
tensorflow-gpu 1.12.0 h0d30ee6_0 pkgs / main
tensorflow-gpu 1.13.1 h0d30ee6_0 pkgs / main
Sie sind nicht alt, da ich Condas Version von tf 1.12 mit RTX 2070 verwendet habe. Neue Hardware ist normalerweise abwärtskompatibel, und RTX ist nicht anders. Es ist sehr wahrscheinlich, dass ein seltsames Umgebungsproblem im Spiel ist. Ich habe erst im Juli Zugriff auf eine RTX-Maschine, daher kann ich momentan nicht beim Testen helfen. Das Bauen aus der Quelle sollte Ihr Problem lösen. Ich habe es nie versäumt, Convnets von tf aus dem Quellcode auszuführen (vorausgesetzt, Sie haben während des Builds die richtigen Konfigurationen).
Auch hier ist dies nicht der richtige Ort, um das Verteilungsproblem des Tensorflusses zu diskutieren. Sie können einen Beitrag zum Stapelüberlauf erstellen oder reddit und ihn hier verlinken. Mehr Menschen werden es sehen und Ihnen auf diese Weise helfen können.
Ihr Problem ist kein Fehler, und es ist definitiv nicht das, worüber dieses Problem spricht.
@chsigg Sie diagnostizieren, dass dies ein Problem ist, bei dem CUDNN versucht, GPU-Speicherressourcen zuzuweisen, die Tensorflow bereits zugewiesen hat. Das einfache Setzen von per_process_gpu_memory_fraction=0.9
anstelle von 0.95
reichte aus, um meine Probleme zu lösen.
Ich war auch mit diesem Problem konfrontiert. Es wurde behoben, indem cuDNN auf die Version 7.6 aktualisiert wurde.
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
Auch Tensorflow und CuDNN wurden von Conda installiert.
conda list cudnn
cudnn 7.3.1 cuda10.0_0 anaconda
Dinge, die ich getan habe:
conda remove tensorflow
conda remove cudnn
pip install tensorflow
sudo dpkg -i libcudnn_xxxxx_amd64.deb
@nluehr irgendwelche Kommentare? Können wir die cuda / cudnn-Version von
Es ist ein legitimer Speicherfehler, wenn Sie tf.keras verwenden, gehen Sie wie folgt oben in Ihrer Datei vor
config = tf.ConfigProto ()
config.gpu_options.allow_growth = True
tf.keras.backend.set_session (tf.Session (config = config))
Ich lief in dieser Frage als auch, und war in der Lage , es zu lösen , indem Sie @ va-andrew ‚s Lösung, und zwar habe ich @colinsteidtmann‘ s Implementierung, da ich einige der tensorflow.keras Funktionen in meinem Code verwenden. Ich habe lange versucht, dieses Problem zu beheben. Vielen Dank für Ihre Beiträge.
BEARBEITEN: Ich habe mir gerade die Tensorflow-Dokumentation angesehen (https://www.tensorflow.org/guide/using_gpu), und Sie können auch festlegen, dass Speicherwachstum zulässig ist, indem Sie die Umgebungsvariable TF_FORCE_GPU_ALLOW_GROWTH auf true setzen. Es heißt auch, dass diese Konfiguration plattformspezifisch ist, also YMMV (funktioniert bei mir mit Ubuntu 18.04).
Als Referenz laufe ich:
Ubuntu 18.04.2 LTS, Gigabyte GeForce RTX 2080 Turbo, NVIDIA-Treiber 430.26, CUDA 10.0.130, cuDNN 7.4.2.24, Tensorflow-GPU 1.13.1, Python 3.6. Ich führe Tensorflow in einer virtuellen Umgebung mit spyder 3.3.4 aus.
Ich habe einen zweiten Computer mit genau der gleichen Hardware und habe ihn nach den gleichen Anweisungen eingerichtet, die gleichen Dateien für die Installation verwendet und dieses Problem auch auf diesem Computer gehabt. Kein Wunder dort.
Ich habe einen dritten Computer mit genau der gleichen Hardware, außer dass er einen 2080 Ti anstelle des 2080 hat, und ich habe ihn gemäß den gleichen Anweisungen eingerichtet und erneut die gleichen Dateien für die Installation verwendet. Aber diesmal gab es kein Problem.
Daher muss ich glauben, dass dies nicht mit einem Konflikt zwischen CUDA, cuDNN und Treiberversion zusammenhängt. Es handelt sich nicht um eine falsch durchgeführte Installation usw. Sie bezieht sich vielmehr auf das Modell der Grafikkarte. Ich habe dieses Problem nur bei RTX 2060, 2070 und 2080 erwähnt.
Glücklicherweise ist es keine große Unannehmlichkeit, die Problemumgehung zu verwenden.
Ich war auch mit diesem Problem konfrontiert. Es wurde behoben, indem cuDNN auf die Version 7.6 aktualisiert wurde.
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.1Auch Tensorflow und CuDNN wurden von Conda installiert.
conda list cudnn
cudnn 7.3.1 cuda10.0_0 anaconda
Dinge, die ich getan habe:
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 Sind Sie nach dem Update sicher, dass Sie auf Ihrer GPU und nicht auf der CPU ausgeführt werden? Es scheint, dass Sie die GPU verwenden, bevor Sie Ihr Update durchgeführt haben (aufgrund der Fehlermeldung, die auf cuDNN verweist), aber ich frage mich danach. Sie verwenden "pip install tensorflow", aber es sollte "pip install tensorflow-gpu" sein, nein? Sie sagten auch, dass Sie CUDA 10 verwenden, aber die von Ihnen aufgelistete cuDNN-Deb-Datei ist für cuda9.0, sodass dies nicht funktionieren sollte.
Ich denke also, dass es der Fall sein könnte, dass Sie die GPU nicht tatsächlich verwenden, und daher kein Beweis dafür ist, dass das Problem durch ein Update auf cuDNN 7.6 behoben wird.
@ synapse8 Sie haben absolut Recht mit Tensorflow-GPU und CuDNN-Version. Ich bin jetzt auch sehr verwirrt von meinem Kommentar und erinnere mich nicht mehr an die Details. Wie auch immer, unten sind die aktuellen Versionen in meinem System angegeben.
pip show tensorflow-gpu
Name: Tensorflow-GPU
Version: 1.13.1
nvidia-smi
NVIDIA-SMI 430.26 Treiberversion: 430.26 CUDA-Version: 10.2
sudo apt search cudnn | grep installed
libcudnn7 / now 7.6.0.64-1 + cuda10.0 amd64
@ alexforever86 mit der jetzt erwähnten Konfiguration sehen Sie dieses Problem immer noch? (Ich nehme an, es funktioniert für Sie). Ich habe kürzlich ein System mit cuda10, 410 Treiber, 7.6 cudnn und TF-gpu 1.14 (pip install) installiert und das Problem nicht gesehen.
@ robzor92 Ich habe Tensorflow-GPU 1.13 verwendet und aus Neugier habe ich gerade 1.14 installiert, um zu testen, ob das Problem dadurch behoben wurde (für mich). Ich erhalte immer noch den Fehler und muss immer noch die Problemumgehung "Wachstum zulassen" durchführen (wieder keine so große Sache).
Welche Grafikkarte verwenden Sie?
@ synapse8 Versuchte es mit einer GTX 1070.
@ synapse8 Ich habe gerade auch den Beispielcode ausprobiert, der von diesem Thread-Ersteller bereitgestellt wurde. Er hat problemlos funktioniert. Ich würde jedoch nicht behaupten, dass es sich nur um ein Problem der RTX-Linie handelt, da ich das gleiche Problem bei einer GTX 1050Ti mit TF 1.13.1 gesehen habe. Verwenden der gleichen Treiber / Cuda / Cudnn-Kombination, die ich zuvor gepostet habe.
@ robzor92 Ich bezweifle, dass das Problem des 1050Ti in der kleinen VRAM-Größe liegt. Die RTX-Karten würden dies bei den grundlegenden CNN MNIST-Modellen feststellen. Ich bezweifle, dass NVIDIAs Optimierung der VRAM-Zuweisung auf RTX-Karten die Dinge irgendwie durcheinander gebracht hat.
Ich habe den gleichen Fehler bei Tensorflow 1.14.0 und RTX2080. In meinem Fall tritt dieser Fehler jedoch nur auf, wenn ich die Faltungsschicht verwende.
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.
Ich habe config.gpu_options.allow_growth = True
ausprobiert, aber dieser Fehler wird dadurch nicht behoben.
Ich möchte, dass mir jemand hilft.
Vielen Dank.
Gleiches Problem mit RTX 2070
Ich habe diesbezüglich eine interessante Beobachtung gemacht, die helfen könnte, diesen Fehler aufzuspüren oder eine praktikable Lösung zu finden:
Ich erhalte auch den Fehler Failed to get convolution algorithm
mit Bezug auf Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
.
System: Laptop-Maschine mit dem Nvidia Quadro P2000, Ubuntu 18.04, tf 1.13.1, cuda10, cudnn 7.4.2
Wie bereits erwähnt, kann ich das Programm mit allow_growth
reibungslos ausführen. Vielen Dank dafür, gut genug für mich.
Interessant: Ich erhalte diesen Fehler nur, wenn ich tf.layers.conv...
aber wenn ich zu tf.keras.layers....
wechsle, kann das Programm ohne allow_growth
, sodass etwas im Keras-Code besser zu funktionieren scheint als im tf Code. Vielleicht kann jemand diese Informationen verwenden, um eine Lösung von Keras zu finden.
Ich halte mich vorerst an die tf.layers, da sie eine einfache Gewichtsverteilung durch variable Bereiche ermöglichen, die von Keras leider nicht unterstützt werden.
@ DavidS3141 Es ist interessant. In meinem Fall funktioniert die einzige Faltungsschicht nicht sowohl in tf.layers als auch in tf.keras.layers ...
Wenn ich Pytorch verwende, ist torch.cuda.is_available
True und kann die Faltungsschicht problemlos verwenden. Ich glaube, die Ursache ist der Tensorflow, aber ich weiß nicht, was falsch ist.
Ich stimme @ Hayashi-Yudai zu: Gleiches gilt für MXNet. Die identische Konfiguration funktioniert einwandfrei, wenn der Tensorflow fehlschlägt.
Umgebung:
RTX2080
Ubuntu 18.10
Treiber 430.26
CUDA 10.0 (auch 10.1, das von TF noch nicht unterstützt wird)
cuDNN 7.6.1
mxnet-cu100 1.4.1
Tensorflow-GPU 1.14.0
Hey Leute, ich verwende die Gewichte des vorab trainierten Modells mit ResNet50-Backbone im COCO-Datensatz, um meinen CSV-Datensatz zu trainieren. Ich erhalte folgende Fehlermeldung: Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnmeldung angezeigt wurde. Ich führe den folgenden Befehl in einer virtuellen Umgebung unter Ubuntu 16.0 aus, um zu trainieren: keras-retinanet / keras_retinanet / bin / train.py --weights resnet50_coco_best_v2.1.0.h5
- Chargengröße 7 - Schritte 9 - Epochen 4
--snapshot-path snapshots --tensorboard-dir tensorboard
csv dataset / train.csv dataset / classes.csvIch habe versucht, das Problem mithilfe des folgenden Skripts in der Befehlszeile in der virtuellen Umgebung zu beheben:
Python
Tensorflow importieren
aus tensorflow.compat.v1 ConfigProto importieren
aus tensorflow.compat.v1 InteractiveSession importieren
config = ConfigProto ()
config.gpu_options.allow_growth = True
session = InteractiveSession (config = config)
ebenso gut wie
Tensorflow als tf importieren
config = tf.ConfigProto ()
config.gpu_options.allow_growth = True
session = tf.Session (config = config), aber mein Fehler wurde nicht behoben:
Ich benutze: -
Ubuntu 16.0
Cuda: 10,0
Tensorflow 1.14.0
Error:
tensorflow.python.framework.errors_impl.UnknownError: 2 Root-Fehler gefunden. │ | Keine laufenden Prozesse gefunden |
(0) Unbekannt: Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Suchen Sie daher nach einer Warnung │ + ------------------------------- ---------------------------------------------- +
Die Protokollnachricht wurde oben gedruckt. │
[[{{node conv1 / convolution}}]] │
[[loss / add / _2377]] │
(1) Unbekannt: Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Suchen Sie daher nach einer Warnung │
Die Protokollnachricht wurde oben gedruckt. │
[[{{node conv1 / convolution}}]] │
0 erfolgreiche Operationen. │
0 abgeleitete Fehler werden ignoriert. │
Beenden ohne aktive Ausnahme beendet │
Abgebrochen (Core Dumped)
Jede Hilfe wäre dankbar.
Selbes Problem hier. Die Problemumgehung von Allow_growth funktioniert. Andernfalls wird dieser Fehler im grundlegendsten MNIST-Tensorflow-Datensatz angezeigt.
RTX2060 mobil hier.
Das Problem tritt beim kompilierten Tensorflow aus dem r2.0-Zweig sowie bei TF 1.4 auf, das über conda mit conda (tensorflow-gpu) installiert wurde.
@ Hayashi-Yudai
Ich habe versucht, config.gpu_options.allow_growth = True, aber es löst diesen Fehler nicht.
Was waren die genauen Befehle, die Sie Ihrem Code hinzugefügt haben? Versuchen Sie stattdessen Folgendes, wenn es anders ist ...
config = tf.ConfigProto ()
config.gpu_options.allow_growth = True
tf.keras.backend.set_session (tf.Session (config = config))
@ synapse8 Vielen Dank für Ihren Kommentar. Ich habe es versucht, aber das Ergebnis war das gleiche.
Übrigens habe ich nvidia-docker ausprobiert und bin gut gelaufen, bis auf die Python-Version 3.5.
https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/running.html#running
Eine zusätzliche Information: Wenn es Ihnen nichts ausmacht, Python 3.6.8 und Tensorflow-GPU 1.12.0 zu verwenden, können Sie Anaconda verwenden.
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
Ich habe das Erstellen von tf-2.0.0-beta1 aus Quellen mit CUDA-10.1 und CUDNN-7.6.2.4 getestet und der Fehler tritt nicht auf.
Sie können Docker Bilder für finden den Aufbau eines tf-gpu - Paket und eine tf-Basis - Paket hier:
https://github.com/edowson/docker-tensorflow
Der Anaconda-Kanal verfügt zum Zeitpunkt des Schreibens dieses Kommentars nicht über cudnn==7.6.2
.
Windows 7 schlug meinen Kopf eine ganze Weile über Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
gegen die Wand und versuchte, eine neue Maschine in Betrieb zu nehmen.
Neuinstallationen, viele andere Dinge in diesem und anderen Threads haben das Problem nicht behoben.
Beim Testen, dass das Fehlen von cudnn64_7.dll
einen anderen Fehler verursachen würde als das CUDNN_STATUS_INTERNAL_ERROR
ich die DLL umbenannt. Die Bestätigung, dass der Fehler stattdessen ein Fehler vom Typ CUDNN NOT INSTALLED
, hat die Änderung des Dateinamens rückgängig gemacht.
Magischerweise fing alles an zu funktionieren.
Keine Ahnung warum oder wie, aber es tut. Hoffentlich hilft das jemand anderem. Wenn nicht, dauert der Versuch nur einige Sekunden.
Ich habe festgestellt, dass dieses Problem dadurch verursacht wurde, dass ich fälschlicherweise zwei Anrufe bei tf.Session getätigt habe
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# several lines of code later...
sess = tf.Session(config=config)
Wahrscheinlich nicht die Hauptursache für die meisten Leute, aber es könnte sich lohnen, darauf zu achten.
Nur "allow_growth = True" zu teilen, löst das Problem für mein System unten
RTX 2080TI, Ubuntu18.04, Cuda9.0, Cudnn7, Tf1.9
config = tf.ConfigProto ()
config.gpu_options.allow_growth = True
session = tf.Session (config = config)
Dies hängt mit dem verfügbaren Speicheranteil zusammen, der zum Laden von GPU-Ressourcen zum Erstellen eines Cudnn-Handles verfügbar ist, das auch als per_process_gpu_memory_fraction
.
Wenn Sie diesen Speicheranteil selbst reduzieren, wird der Fehler behoben.
> 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])
Verwenden Sie so wenig Bruch, wie in Ihr Gedächtnis passt. (Im Code, den ich mit 0,7 verwende, können Sie mit 0,3 oder noch kleiner beginnen und dann erhöhen, bis Sie den gleichen Fehler erhalten, das ist Ihre Grenze.)
Übergeben Sie es als Konfiguration an Ihre tf.Session()
oder tf.train.MonitoredTrainingSession()
oder die sv.managed_session()
Supervisors.
Dies sollte es Ihrer GPU ermöglichen, ein Cudnn-Handle für Ihren TensorFlow-Code zu erstellen.
Wie hier erläutert, lautet der neue Ansatz in TF 2.0 zum Festlegen von config.gpu_options.allow_growth = True
:
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)
Mit diesem Code-Snippet und TF 2.0 RC1 wird der Fehler nicht mehr angezeigt.
Aufgrund der Anzahl der Benutzer einer 20XX Nvidia-GPU halte ich es jedoch für eine gute Idee, dieses Problem nativ zu beheben, bevor die endgültige Version von TF 2.0 veröffentlicht wird.
Ich hatte das gleiche Problem mit 1080Ti & TitanX auf TF1.4 und die Vorschläge von @ va-andrew und @oscarlinux haben den Tag gerettet! Das erinnert mich in erster Linie daran, warum ich zu Pytorch gewechselt bin und nie zurückgekommen bin. Leider gibt es immer noch Leute, die TF verwenden ... also muss ich diesen Schmerz immer noch durchstehen, wenn ich ihre Codebasis benutze ... vielleicht ist es Zeit, ein bisschen mit ONNX zu spielen.
Für alle anderen, die dies nach dem Upgrade auf Tensorflow 2.0 feststellen, unterscheiden sich die API und der Code geringfügig.
Ubuntu 18
Tensorflow 2.0
Tensorflow-GPU 2.0
GeForce RTX 2070
Code für dieses System aktualisiert.
import tensorflow as tf
config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.compat.v1.Session(config=config)
Diese Lösung hat bei mir funktioniert. (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)
Fügen Sie einen zusätzlichen Datenpunkt hinzu:
RTX 2080ti, Ubuntu18.04, Cuda10.0, Cudnn7
In meinem Fall funktioniert es weder mit tf1.14 noch mit 1.15rc3
@ w4nderlust , für 1.14 und 1.15 möchten Sie weiterhin die Sitzungskonfigurationsoption config.gpu_options.allow_growth = True
festlegen. Funktioniert das, was Sie melden, nicht oder nur der tf.config.experimental
-Mechanismus?
@ w4nderlust , für 1.14 und 1.15 möchten Sie weiterhin die Sitzungskonfigurationsoption
config.gpu_options.allow_growth = True
festlegen. Funktioniert das, was Sie melden, nicht oder nur dertf.config.experimental
-Mechanismus?
Entschuldigung, hätte präziser sein sollen. Ich berichte, dass es ohne config.gpu_options.allow_growth = True
in meiner Konfiguration mit 1.14 und 1.15rc3 immer noch nicht funktioniert.
Ich glaube, ich habe eine bessere Problemumgehung gefunden als die config.gpu_options.allow_growth = True
.
Bei meinem Setup (_RTX 2070_, Docker-Image _tensorflow: 1.15.0-gpu-py3_) wird durch die Einstellung der Konfiguration wie unten gezeigt _CUDNN_STATUS_INTERNAL_ERROR_ vermieden, während weiterhin der gesamte GPU-Speicher zugewiesen wird.
Dies ist sehr nützlich für große Modelle, die im allow_growth
-Modus nicht in den Speicher passen, sondern nur passen, wenn der gesamte Speicher zugewiesen ist.
So weisen Sie den gesamten Speicher auf RTX zu:
config.gpu_options.per_process_gpu_memory_fraction = 1.0
So weisen Sie den gesamten Speicher auf RTX zu:
config.gpu_options.per_process_gpu_memory_fraction = 1.0
@PoloShock
Ich habe dies mit TF 2.0 versucht und es scheint nicht zu funktionieren.
Ubuntu18.04, RTX 2080, CUDA10, cudnn 7.6.
Für TF 2.0 hat sich die API zur Begrenzung der GPU-Speichernutzung geändert.
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 Verstehst du, warum dieses Problem nur bei RTX
Es ist schwierig für mich, dies direkt zu debuggen, da ich keinen Zugriff auf eine RTX-GPU habe.
@sanjoy Ich
Ich habe versucht, das für Tensorflow 2.0 zu verwenden:
config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.compat.v1.Session(config=config)
Es behebt Cudnn-Fehler auf meinem RTX2080, aber das Training ist so schnell wie mein 1050Ti auf meinem Laptop!
Während des Trainings eines 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 |
+-----------------------------------------------------------------------------+
Hinzufügen
gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_virtual_device_configuration(gpus[0], [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=7000)]
Das Problem wurde nicht gelöst, ohne allow_growth erhalte ich den cudnn-Fehler, und mein RTX verwendet sowieso nur 3 GB oder Speicher.
Irgendeine Idee ?
Ich habe es versucht
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)])
aber cudnn wirft immer noch einen Fehler
Dieser Fehler funktioniert auch im Tensorflow 1.15.0-py3-gpu Docker-Image (Ubuntu 18.04) mit zwei Titan V-GPUs (@sanjoy) - nicht mit RTXs. Dieser Fehler scheint jedoch nur bei meiner GPU0 aufzutreten, bei der Xorg und Gnome-Shell GPU0-Speicher verwenden, während GPU1 nur Python mit GPU-Mem verwendet und diesen Fehler nicht auslöst. Der Fehler tritt leider auch zeitweise auf - manchmal kann ich den Docker-Container entfernen, ihn mit denselben Einstellungen und demselben Code neu erstellen, dann verschwindet der Fehler. Oder nicht.
Ich konnte es über die Keras-Backend-Oberfläche beheben mit:
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)
Es folgt mein NVIDIA-SMI auf beiden GPUs
+-----------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------+
Ich habe das gleiche Problem wie @clementpoiret mit TF 2.0 über conda installiert. Durch die Verwendung des Flags allow_growth
verschwindet das Problem, aber das macht das Training auch sehr, sehr langsam, langsamer als das, was ich auf TF 1.x hatte ... Eifrig zuerst, oder?
@clementpoiret und @EKami , beschleunigt es Ihr Training, wenn Sie config.gpu_options.allow_growth = True
durch config.gpu_options.per_process_gpu_memory_fraction = 0.8
ersetzen? Sie können experimentieren, um herauszufinden, welche Fraktion Ihre GPU am meisten nutzt.
@ synapse8 Ich sehe in der Dokumentation von Tensorflow 2.0 kein Äquivalent. Wie kann ich das mit tf.config.experimental tun?
Bearbeiten: Ich werde versuchen, den Speicher auf diese Weise einzustellen, um zu sehen, ob das Problem dadurch behoben wird:
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)
Auf diese Weise können wir bequem setup_gpus(True, .9)
anrufen
@clementpoiret : Bitte beachten Sie, dass der Aufruf von tf.config.experimental.set_memory_growth
nicht erforderlich ist, da tf.config.experimental.set_virtual_device_configuration
dieses Flag überschreibt, da es den GPU-Speicher aufteilt und den zugewiesenen Speicher vorab zuweist.
Dieses Problem ist nicht auf RTX beschränkt. Oder TF 2.0.
Hinzufügen:
_von Tensorflow.compat.v1 importieren Sie ConfigProto
aus tensorflow.compat.v1 InteractiveSession importieren
config = ConfigProto ()
config.gpu_options.allow_growth = True
session = InteractiveSession (config = config) _
Behebt das Problem "Cudnn-Handle konnte nicht erstellt werden: CUDNN_STATUS_INTERNAL_ERROR" mit der Umgebung wie folgt:
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
Könnte dies ein maximal zusammenhängendes Blockzuweisungsproblem mit den NVIDIA-Treibern sein? Wo ist es in Ordnung, die gleiche Gesamtspeichermenge zuzuweisen, jedoch in kleineren Blöcken?
Hallo,
Ich kann dies nicht auf meinem Computer reproduzieren, daher benötige ich Hilfe, die dies verursacht. Haben wir hier jemanden, der das Problem reproduzieren kann und bereit ist, ein praktisches Debugging durchzuführen?
Als Ausgangspunkt möchte ich verstehen, warum MinSystemMemory
nicht genügend Speicher für cuDNN speichert. Wenn jemand mit einem Setup, das dieses Problem reproduziert, eine Protokollierung (als lokaler Patch) hinzufügen kann, um die von MinSystemMemory
Speichermenge zu ermitteln, wäre dies großartig. Und hilft die Erhöhung der magischen 0.05
Zahl in MinSystemMemory
der Situation?
@sanjoy Ich habe eine Version, die dieses Problem aufweist. Wie würde ich vorgehen, um auf MinSystemMemory zuzugreifen oder "die magische 0,05-Zahl einzustellen"? Ich habe größtenteils wieder Cuda 9.1 verwendet, aber es macht mir nichts aus, ein paar Dinge auszuprobieren.
@odinsbane Sie müssen TensorFlow aus dem Quellcode
Der erste Schritt besteht darin, LOG(INFO)
oder std::cerr
Zeilen zu MinSystemMemory
hinzuzufügen, um available_memory
und den Rückgabewert von MinSystemMemory
auszudrucken. Stimmt available_memory
mit dem überein, was nvidia-smi
druckt? Wie viel Speicher hinterlassen wir für das System?
Zweitens hilft es überhaupt, die magische Zahl von 0.07
erhöhen?
Dieser funktioniert! Danke Jungs!
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)
Wir haben ein ähnliches Problem mit unserem RTX 2070 (Ubuntu 18.04, TF2). Wir haben verschiedene Kombinationen von CUDA 10.0- und libcudnn7.xxx-Versionen ausprobiert, aber der Fehler wird immer wieder angezeigt.
Auf einem anderen Computer haben wir eine GTX 1080ti und dieser läuft ohne Probleme.
Der NVIDIA-Treiber ist in beiden Fällen 430,50.
Es wird nicht durch tf.keras.utils.plot_model
, ich entferne es und dieser Fehler erscheint immer noch, aber weniger häufig.
Update: Ich finde, dass dies nur passiert, wenn ich tf.keras.utils.plot_model
.Ich werde es weiter versuchen.
============
Ich habe ein ähnliches Problem mit RTX 2080 Ti unter Ubuntu 18.04.3 LTS, tf 1.15, cuda 10.0.
Was in meinem Fall seltsam ist, ist, dass dies nur sehr gelegentlich vorkommt und wenn es einmal vorkommt, dauert es Minuten bis Stunden und verschwindet dann einfach von selbst .
Ich habe alle oben genannten Lösungen ausprobiert und keine kann es sofort beheben. Ich habe versucht nichts zu tun und warte nur, es wird endlich verschwinden.
Was ich auch versucht habe und oben nicht erwähnt wird:
~/.nv
Zu Ihrer Information, Fehlerprotokolle
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.
Wir stehen vor relevanten Problemen
Der Fehler wird ausgelöst, wenn ich versuche, LSTM, GRU, RNN usw. zu verwenden.
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]
Wie es scheint, ist mein ganzes Gedächtnis ziemlich schnell aufgebraucht. Die Probleme scheinen nur im GPU-Modus aufzutreten, der gleiche Code funktioniert gut mit CPU
Beide Versuche erzeugen den gleichen Fehler.
Irgendwelche Ideen?
Ich kann in diesem Bereich keine Fortschritte erzielen, da ich es nicht reproduzieren kann. Wenn Sie dies zuverlässig auf Ihrem Computer reproduzieren können, können Sie helfen. So geht's: https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -560963770, https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750
Ich kann in diesem Bereich keine Fortschritte erzielen, da ich es nicht reproduzieren kann. Wenn Sie dies zuverlässig auf Ihrem Computer reproduzieren können, können Sie helfen. So geht's: # 24496 (Kommentar) , # 24496 (Kommentar)
Hallo @sanjoy , ich bin sehr
Ich habe den folgenden Code beim Stapelüberlauf gefunden. Könnte er helfen?
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))
Gibt es andere Möglichkeiten, um das benötigte Protokoll zu erhalten?
Ich werde eine VLOG
-Anweisung einchecken, um diese Informationen zu erhalten. Wenn dies erledigt ist, können Sie dies mit tf-nightly installieren und reproduzieren (mit einigen zusätzlichen Flags werde ich Sie genau wissen lassen, welche)?
Sicherlich kann ich ein Paket auf diesem Computer installieren, wenn es auf pip
oder conda
verfügbar ist und ich eine virtuelle Umgebung verwende. Ich werde versuchen, den Fehler zu reproduzieren.
Sicherlich kann ich ein Paket auf diesem Computer installieren, wenn es auf
pip
oderconda
verfügbar ist und ich eine virtuelle Umgebung verwende. Ich werde versuchen, den Fehler zu reproduzieren.
Können Sie bitte tf-nightly installieren (damit es das Commit aufnimmt, das TF_CPP_VMODULE
ausführen, die auf gpu_device=5
? Das sollte zwei Zeilen wie ausdrucken
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
Können Sie diese Zahlen bitte hier angeben?
Leider ist mein aktueller Code nicht mit tf 2.0 kompatibel (ich verwende 1.15). Ich versuche ihn zu aktualisieren. Bitte gib mir etwas Zeit.
Dieses Problem scheint mit meiner RTX2080 zu tun zu haben. Ich habe eine Desktop-GTX1080. Alles scheint in Ordnung zu sein. Dann verwende ich Conda-Klon. Die Conda-Umgebung wird auf mein RTX2080-Notebook übertragen. Ich verwende Tensorflow2.0.0-GPU. Sobald der Anwendungscode Conv2d, LSTM, GRU verwendet, tritt dieses Problem auf.
bevor ich die folgenden Codes verwende, um dieses Problem zu lösen:
gpus = tf.config.experimental.list_physical_devices ('GPU')
wenn gpus:
Versuchen:
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)
aber seit einigen Tagen funktioniert die obige Methode nicht mehr
Ich habe das gleiche Problem mit GTX 960m
Hallo @sanjoy , ich habe gerade diese Ausgabe erhalten:
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
Hallo @sanjoy , ich habe gerade diese Ausgabe erhalten:
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
Vielen Dank!
Leider hat das nicht so viel geholfen, wie ich dachte. Wenn ich MinSystemMemory
an einem lokalen Build auf 542015488
(dh min_system_memory = std::min(min_system_memory, 542015488ll)
) klemme, scheint resnet (zum Beispiel) gut zu funktionieren, und ich bekomme keine Fehler von cuDNN .
@sanjoy Ich bin in der Lage, das Problem (größtenteils konsistent) auf meiner Seite zu reproduzieren.
Relevante Nachrichten vom letzten Abend:
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
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
EDIT: Modellinformationen, wenn es hilft.
__________________________________________________________________________________________________
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
Ein minimales Beispiel mit TF 1.15, und ich erhalte diesen Fehler. Unter RTX 2070 und NVIDIA 440.44 und 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.
Ich möchte in einem separaten Problem https://github.com/tensorflow/tensorflow/issues/36501 darauf hinweisen, dass bei Verwendung dieser Optionen die Ausführung des Codes ermöglicht wird. Die Beobachtung der tatsächlichen Speichernutzung der GPUs zeigt, dass dies nicht einmal wirklich der Fall ist inkrementelle Speichernutzung. Die obige Option behebt also den Fehler, macht aber nicht das, was sie behauptet zu tun. Ich habe das gleiche Modell in älteren TF-Versionen wie 1.2 ... usw. verwendet, und diese haben die tatsächliche inkrementelle Speicherzuweisung durchgeführt.
Ich habe die gleichen Probleme wie alle hier! Nach der Installation von tf 2.1 konnte ich kein einfaches MNIST-Beispiel ausführen, ohne der GPU Speicherwachstum hinzuzufügen. Ich benutze einen 2080 ti .
Das Hauptproblem, mit dem ich konfrontiert bin, ist, dass ich die Tensorflow-Wahrscheinlichkeit nicht zusammen mit tf 2.1 ausführen kann, ohne den verfluchten internen CUDNN-Fehler zu erhalten, selbst wenn dem Code Speicherwachstum hinzugefügt wird. Ich habe versucht, tf 2.0, CUDA 10.0 und CUDA 10.1, verschiedene CUDNN-Versionen, zu installieren. Ich habe es geschafft, das einfache MNIST-Beispiel so zu reparieren, dass es ohne Wachstum funktioniert, nachdem ich mein Ubuntu vollständig neu installiert habe, aber nicht das Beispiel für die Tensorflow-Wahrscheinlichkeit. Ich habe schließlich versucht, einen offiziellen Tensorflow-Nachtdock zu verwenden, und habe immer noch den gleichen Fehler bei der Verwendung der Tensorflow-Wahrscheinlichkeit erhalten (tf 2.2 im Container). Alles läuft gut auf der CPU. Ich habe auch versucht, den gleichen Docker auf einem Computer mit 1080 ti auszuführen, und das hat funktioniert ... Mit der RTX-Serie, die ich fühle, stimmt definitiv etwas nicht.
Fehler mit tf Docker und Tensorflow-Wahrscheinlichkeitsbeispiel und zusätzlichen Cudnn-Debug-Informationen:
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 Ich habe das gleiche Problem mit RTX 2080 und kann bei Bedarf aus dem Quellcode erstellen.
@odinsbane Sie müssen TensorFlow aus dem Quellcode
Der erste Schritt besteht darin,
LOG(INFO)
oderstd::cerr
Zeilen zuMinSystemMemory
hinzuzufügen, umavailable_memory
und den Rückgabewert vonMinSystemMemory
auszudrucken. Stimmtavailable_memory
mit dem überein, wasnvidia-smi
druckt? Wie viel Speicher hinterlassen wir für das System?Zweitens hilft es überhaupt, die magische Zahl von
0.07
erhöhen?
kann bestätigen, dass das Erstellen aus der Quelle durch Ändern der magischen Zahl 0.05
magische Zahl in 0.1
das Problem zu beheben scheint (zumindest für 1.15.2)!
In einem Ozean von lauten Posts scheint die minimale magische Anzahl von Systemspeichern völlig logisch. Danke für das Teilen!
@chsigg Irgendwelche Vorschläge? Vielleicht können wir versuchen, cuDNN, cuBLAS und andere NVIDIA-Bibliotheken zu initialisieren, bevor wir den gesamten GPU-Speicher reservieren?
Wir können auch versuchen, allow_growth
standardmäßig zu aktivieren, aber das wird einige Zeit dauern.
Dieses Problem scheint mit meiner RTX2080 zu tun zu haben. Ich habe eine Desktop-GTX1080. Alles scheint in Ordnung zu sein. Dann verwende ich Conda-Klon. Die Conda-Umgebung wird auf mein RTX2080-Notebook übertragen. Ich verwende Tensorflow2.0.0-GPU. Sobald der Anwendungscode Conv2d, LSTM, GRU verwendet, tritt dieses Problem auf.
bevor ich die folgenden Codes verwende, um dieses Problem zu lösen:
gpus = tf.config.experimental.list_physical_devices ('GPU')
wenn gpus:
Versuchen:Derzeit muss das Speicherwachstum für alle GPUs gleich sein
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:
Das Speicherwachstum muss eingestellt werden, bevor GPUs initialisiert wurden
print(e)
aber seit einigen Tagen funktioniert die obige Methode nicht mehr
Ich habe seit Tagen versucht, den Lambda Tensorflow2-Tutorial- Code für die
Ich treffe auch dieses Problem
anacondacloud install tensorflow-gpu2.0
RTX2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
Cudnn-Handle konnte nicht erstellt werden: CUDNN_STATUS_INTERNAL_ERROR
Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnprotokollmeldung gedruckt wurde.
Ich treffe auch dieses Problem
anacondacloud install tensorflow-gpu2.0RTX2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
Cudnn-Handle konnte nicht erstellt werden: CUDNN_STATUS_INTERNAL_ERROR
Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnprotokollmeldung gedruckt wurde.
Haben Sie eingefügt:
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)
oben in Ihrem Zugangscode?
Nach einiger Zeit experimentieren wir mit einem anscheinend anderen Problem, das mit tf.signal.stft fehlschlägt
Endlich bin ich auf diesen Thread gestoßen und habe die Lösung ausprobiert, die das Speicherwachstum ermöglicht. Es hat auch mein Problem gelöst.
Ich habe tensorflow-gpu = 2.1 mit cudatoolkit = 10.1 von anaconda installiert, aber auch versucht, es zu installieren
Tensorflow-GPU über Pip mit genau dem gleichen Ergebnis. Ich kann dies unter Linux-Ubuntu 18.04 und Debian 9.12 mit den Karten reproduzieren
GeForce GTX 1050 Ti with Max-Q Design
GeForce GTX 1050 Ti
GeForce RTX 2080 Ti
Ich habe auch zwei andere Karten in unserem Labor ausprobiert
GeForce GTX 1080 Ti
TITAN Xp COLLECTORS EDITION
wo der Code mit und ohne Speicherwachstum gut läuft
Mein minimales Problem ist unten. Interessanterweise ist das Problem nicht conv2d. Ich kann die Reihenfolge dieser drei Befehle ändern und es ist immer der dritte, bei dem einer fehlschlägt.
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")
Ich bin auch auf dieses Problem gestoßen
anacondacloud installiere tensorflow-gpu2.0
RTX2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
Cudnn-Handle konnte nicht erstellt werden: CUDNN_STATUS_INTERNAL_ERROR
Faltungsalgorithmus kann nicht abgerufen werden. Dies kann daran liegen, dass cuDNN nicht initialisiert werden konnte. Versuchen Sie daher zu prüfen, ob oben Warnprotokollmeldungen angezeigt werden.Haben Sie eingefügt:
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)
Oben in dem Code, den Sie eingegeben haben?
Ja, ich habe dieses Problem auf diese Weise gelöst. Danke !!
Ich hatte das gleiche Problem und allow_growth = True
war die Lösung. ABER für TensorFlow 2 müssen Sie dazu die folgenden Zeilen hinzufügen:
gpu_devices = tf.config.experimental.list_physical_devices('GPU')
for device in gpu_devices:
tf.config.experimental.set_memory_growth(device, True)
Vielen Dank an Benutzer @opcecco in dieser Ausgabe: https://github.com/tensorflow/tensorflow/issues/25446
Interessanterweise ist das Problem nicht conv2d. Ich kann die Reihenfolge dieser drei Befehle ändern und es ist immer der dritte, bei dem einer fehlschlägt.
@roebel Kannst du bitte Protokolle für ein paar verschiedene sechs Permutationen anhängen?
Und was passiert, wenn Sie das Programm auf (sagen wir) ändern:
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")
Tritt der Fehler immer noch beim conv2d
oder tritt er beim dritten stft
?
@sanjoy sicher hier drei Variationen des obigen Skripts, die die Reihenfolge der Befehle ändern, und eine vierte Variante, die mit 4 stft beginnt und mit conv2d endet
Die vier verschiedenen Protokolle verwenden das Skript von
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -593098386
Ersetzen der letzten vier Zeilen.
Kurz gesagt, die Ergebnisse hängen von der Reihenfolge ab:
stft-> blas-> conv2d schlägt beim Ausführen von conv2d fehl
conv2d-> stft-> blas schlägt beim Ausführen von stft fehl (also nicht das dritte, aber blas scheint bereits für conv2d geladen zu sein
matmul-> conv2d-> stft schlägt beim Ausführen von STFT fehl
stft -> - stft -> - stft-> stft-> matmul-> conv2d schlägt fehl, wenn conv2d ausgeführt wird. Bitte beachten Sie die Protokolle unten.
Es macht nichts aus, bei Bedarf nach anderen Varianten zu fragen.
conv2d last:
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")
matmul zuletzt
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")
stft zuletzt
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")
4 stft first conv2d last:
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")
Danke vielmals
Ich habe das gleiche Problem mit der folgenden Konfiguration:
TensorFlow installiert von (Quelle oder Binärdatei): r1.13.1, r.1.13.2, r1.14
Python-Version: 3.6.1
Bazel-Version (wenn aus der Quelle kompiliert):
GCC / Compiler-Version (beim Kompilieren aus dem Quellcode):
CUDA / cuDNN-Version: CUDA 10 mit cuDNN 7.4.1
GPU-Modell und Speicher: RTX 2070 8 GB.
Ich habe dieses Problem gelöst mit:
TensorFlow installiert von (Quelle oder Binärdatei): r1.12.0
Python-Version: 3.6.9
GCC / Compiler-Version: 4.8
CUDA / cuDNN-Version: CUDA 9.0 mit cuDNN 7.1.4
GPU-Modell und Speicher: RTX 2070 8 GB.
Hoffe hilfreich für Sie
Ich war auch mit einem solchen Problem konfrontiert, das durch Hinzufügen einer Umgebungsvariablen TF_FORCE_GPU_ALLOW_GROWTH = true gelöst wurde.
Die Konfiguration ist wie folgt:
Windows 10
Tensorflow aus Quelle r2.0 kompiliert
Bazel: 0,26,1
C ++ - Compiler: MSVC 2017
CUDA: 10
cuDNN: 7.6.5
Intel4930 CPU, NVIDIA Titan XP Pascal
Ubuntu 18.04.4, Miniconda spätestens,
`! conda list | grep "cud" gibt
cudatoolkit 10.1.243 h6bb024c_0
cudnn 7.6.5 cuda10.1_0
`! conda list | grep "tensor" `` gibt
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
Die erste Zelle im Jupiter-Notizbuch ist:
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)
Modell ist ein Variations-Autoencoder mit Gesamtparametern: 112.269
x_train.shape, y_train.shape, x_test.shape, y_test.shape gibt
((106496, 32, 32, 1), (106496,), (12288, 32, 32, 1), (12288,))
Code enthält:
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))
und es schlägt fehl. Konsole zeigt
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 anstelle der ersten Zelle, wie oben angegeben, verwende ich
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)
dann bekomme ich diesen Fehler
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?
Interessanterweise erhielt ich während meiner Kämpfe eine Nachricht von einem roten "No Entry" -Schild in meiner Menüleiste mit der Aufschrift "Fehler gebrochen Anzahl, Sie haben unerfüllte Abhängigkeit"
Ich habe ein Software-Update ausgeführt und es möchte libcudnn7-dev und libcudnn7-doc entfernen
sowie ein Upgrade von 57 anderen Bibliotheken, die mit Linux zu tun haben
BEARBEITEN: Nach dem Neustart scheint das Modell erfolgreich zu trainieren.
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)
oder dieses:
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)
Die Speicherauslastung auf der GPU beträgt <700 MB bei Stapelgröße 16 und
~ 1 Gigabyte mit einer Stapelgröße von 256 (die 3x schneller trainiert)
Ich habe versucht, aus dem Quellcode zu kompilieren, bin aber auf dasselbe Problem gestoßen. Ich konnte endlich mein Problem beheben, indem ich
config.gpu_options.allow_growth = True
.
Aber wenn ich dieses Problem in der Befehlszeile festgestellt habe, wie füge ich diese Codes hinzu?
Ich treffe auch dieses Problem
anacondacloud install tensorflow-gpu2.0
RTX2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
Cudnn-Handle konnte nicht erstellt werden: CUDNN_STATUS_INTERNAL_ERROR
Faltungsalgorithmus konnte nicht abgerufen werden. Dies liegt wahrscheinlich daran, dass cuDNN nicht initialisiert werden konnte. Überprüfen Sie daher, ob oben eine Warnprotokollmeldung gedruckt wurde.Haben Sie eingefügt:
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)
oben in Ihrem Zugangscode?
Ich hatte genau das gleiche Problem wie oben. Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
Die Lösung von @robosmith behebt mein Problem vollständig!
Meine Angaben:
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
Gebaut über conda install tensorflow-gpu keras
Ich danke dir sehr! Dies ist das erste Mal, dass TF-2 überhaupt funktioniert! Und TF-1 hat ganz aufgehört zu arbeiten, weshalb ich mich entschlossen habe, ein Upgrade durchzuführen und zu sehen, was passiert!
Vielen Dank!
config.gpu_options.allow_growth = True
Wenn Sie Tensorflow 2.0 verwenden, können Sie verwenden
tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
Dieser Code steht nach import tensorflow as tf
aber vor Ihrem Code.
Ich habe versucht, aus dem Quellcode zu kompilieren, bin aber auf dasselbe Problem gestoßen. Ich konnte endlich mein Problem beheben, indem ich
config.gpu_options.allow_growth = True
.
Dieser Code wird gemeinsam genutzt, um ihn sowohl für Tensorflow- als auch für Keras-Benutzer schneller verfügbar zu machen.
Quelle von hier
# 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
Ich wollte mich nur einschalten und sagen, dass das Problem immer noch da ist.
Meine Angaben:
Ubuntu 20.04
NVIDIA RTX 2070
Nvidia_driver 440.64
Tensorflow-gpu 2.0.1 (Wird über conda installiert, wodurch Cudatoolkit und CuDNN automatisch in derselben Umgebung installiert werden.)
cudatoolkit 10.1.243
cudnn 7.6.5
Das Problem wird durch tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
gelöst
Dies scheint jedoch eher eine Umgehung als eine tatsächliche Lösung zu sein, und viele Leute haben heutzutage 20XX-Karten. Wahrscheinlich sollte es ein Update geben, in dem dieses Problem behoben wird.
Update: Da ich doppelt boote, habe ich auch versucht, nach Windows zu suchen. Das Problem bleibt dort bestehen.
Windows 10
Nvidia-Treiber 445.87
Ansonsten ist alles ähnlich
Die Installation des neuesten Treibers (445.87) für meinen RTX 2080 hat dieses Problem für mich behoben.
@NBouman Das ist interessant, aber für mich unter Ubuntu 18.04 mit GeForce GTX 1050 TI habe ich gerade auf den letzten verfügbaren Treiber 440.82 aktualisiert. Es ist weiterhin erforderlich, Speicherwachstum zuzulassen, damit es funktioniert.
Die Installation des neuesten Treibers (445.87) für meinen RTX 2080 hat dieses Problem für mich behoben.
@NBouman Welches Betriebssystem verwenden Sie? Ich bin auf Ubuntu 20.40 und der neueste verfügbare Treiber, den ich finden konnte, ist 440.82, und wie bei @roebel bleibt das Problem bestehen.
@roebel @eduardoscsouza Ich bin unter Windows 10 mit dem Computer, auf dem dieses Problem früher
Ich wollte mich nur einschalten und sagen, dass das Problem immer noch da ist.
Meine Angaben:
Ubuntu 20.04
NVIDIA RTX 2070
Nvidia_driver 440.64
Tensorflow-gpu 2.0.1 (Wird über conda installiert, wodurch Cudatoolkit und CuDNN automatisch in derselben Umgebung installiert werden.)
cudatoolkit 10.1.243
cudnn 7.6.5Das Problem wird durch
tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
gelöstDies scheint jedoch eher eine Umgehung als eine tatsächliche Lösung zu sein, und viele Leute haben heutzutage 20XX-Karten. Wahrscheinlich sollte es ein Update geben, in dem dieses Problem behoben wird.
Update: Da ich doppelt boote, habe ich auch versucht, nach Windows zu suchen. Das Problem bleibt dort bestehen.
Windows 10
Nvidia-Treiber 445.87
Ansonsten ist alles ähnlich
Für Tensorflow 2.0.0 gearbeitet mit:
tf.config.experimental.set_memory_growth(tf.config.experimental.list_physical_devices('GPU')[0],True)
Vielen Dank!!! Tausende von Dankeschön !!!!!!!!!!!!!!!
Betriebssystem: Ubuntu 18.04 lts
Treiberversion: 435.21
CUDA: cudatoolkit 10.1
CUDNN: cudnn-7.6.5-cuda10.1_0
Ich habe Anaconda Tensorflow installiert
conda create -n tf-gpu tensorflow-gpu
Das Cudatoolkit und Cudnn werden von Anaconda über den vorherigen Befehl automatisch installiert.
Ich habe die gleiche Frage: Der Fehler:
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}}]]
Wir haben hier also ein ungelöstes Problem (abgesehen von einer Problemumgehung, die gegen offizielle Empfehlungen verstößt, das Speicherwachstum nicht für eine effizientere Speicherbehandlung zu verwenden). Das Entwicklerteam hat nicht viel Feedback gegeben. Ich wundere mich warum?
Dieser Fehler scheint eine ganze Reihe von Tensorflow-Versionen (1.13, 2.0, 2.1) zu betreffen. Wenn ich richtig gesehen habe, werden alle Probleme mit cuda 10 gemeldet. Der Code läuft auf vielen Karten einwandfrei, auf anderen jedoch nicht.
Könnte uns jemand vom Entwicklerteam sagen, ob dies mehr auf ein Problem im Cuda-Treiber als in der Tensorflow-Schicht hindeutet? In diesem Fall wäre es sicherlich hilfreich, den Fehlerbericht an die NVIDIA-Support-Seiten zu senden. Wäre es nicht?
Könnte jemand vom Tensorflow-Entwicklerteam kommentieren, wie er diesen Fehler sieht? Gibt es jemanden, der sich darum kümmert?
Haben Leute überprüft, ob sich zwei gemeinsam genutzte CuDNN 7-Bibliotheken im Pfad oder im LD-Bibliothekspfad befinden? Diese Bibliothek enthält keine Neben- oder Patchnummern, aber Versionsinkongruenzen können zu dieser Fehlermeldung führen.
Ich habe bei NVIDIA einen Fehlerbericht geöffnet. Ich werde Sie wissen lassen, was dabei herauskommt.
@samhodge
In der Tat sind viele Versionen von libcudnn installiert, jede anaconda env hat ihre eigene Version.
Normalerweise wird anaconda mit ordnungsgemäß eingerichtetem Pfad installiert, sodass es ziemlich schwierig ist, nicht die richtigen Bibliotheken zu finden.
Ich habe eine Strace gemacht und die Bibliotheken durchsucht, die geöffnet werden, wenn es fehlschlägt
Sie stammen konsistent aus dem Anaconda-Env-Verzeichnis, in dem sich das Tensorflow-Paket befindet (siehe unten).
Neben libcuda ist das Version 440.82 und das habe ich mit dem NVIDIA Installer kompiliert.
Ich kann LD_LIBRARY_PATH auf eines der anderen anaconda env lib-Verzeichnisse mit unterschiedlichen cudatoolkits und unterschiedlichen libcudnn setzen, die Ablaufverfolgung bleibt gleich.
Beachten Sie auch, dass es nicht lbcudnn ist, das das Problem aufwirft. Es ist immer die dritte libcuxyz-Bibliothek
verwendet und dies nur auf bestimmten GPUs (ich habe das gleiche Installationsskript auf verschiedenen Computern mit unterschiedlichen GPUs verwendet, einige funktionieren, andere nicht) und sie funktionieren alle, wenn das Speicherwachstum aktiviert ist.
(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
Ich habe das gleiche Problem unter Ubuntu 20.04 mit einer GeForce RTX 2060 SUPER. Ein NN mit dichten Schichten funktioniert gut. Aber mit CNN-Schichten bekomme ich 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.
Das Hinzufügen von tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
macht keinen Unterschied für den Fehler.
Ich verfolgte die Installation gemäß https://www.tensorflow.org/install/gpu und nvidia-smi
zeigt:
Driver Version: 440.64.00
CUDA Version: 10.2
Mein conda env hat:
cudatoolkit 10.1.243 h6bb024c_0
cudnn 7.6.5 cuda10.1_0
tensorflow-gpu 2.1.0 h0d30ee6_0
In einer Conda-Umgebung mit tf 1.15 erhalte ich den gleichen Fehler. Es wäre großartig, wenn dies behoben werden könnte.
Nach der Verwendung von export TF_FORCE_GPU_ALLOW_GROWTH=true
funktioniert alles. Ich hatte den Eindruck, dass die tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
dasselbe tun würden, aber das ist nicht der Fall. Ich denke, dies sollte auf der TensorFlow GPU-Support-Webseite klar angegeben werden.
@samhodge
In der Tat sind viele Versionen von libcudnn installiert, jede anaconda env hat ihre eigene Version.
Normalerweise wird anaconda mit ordnungsgemäß eingerichtetem Pfad installiert, sodass es ziemlich schwierig ist, nicht die richtigen Bibliotheken zu finden.Ich habe eine Strace gemacht und die Bibliotheken durchsucht, die geöffnet werden, wenn es fehlschlägt
Sie stammen konsistent aus dem Anaconda-Env-Verzeichnis, in dem sich das Tensorflow-Paket befindet (siehe unten).
Neben libcuda ist das Version 440.82 und das habe ich mit dem NVIDIA Installer kompiliert.Ich kann LD_LIBRARY_PATH auf eines der anderen anaconda env lib-Verzeichnisse mit unterschiedlichen cudatoolkits und unterschiedlichen libcudnn setzen, die Ablaufverfolgung bleibt gleich.
Beachten Sie auch, dass es nicht lbcudnn ist, das das Problem aufwirft. Es ist immer die dritte libcuxyz-Bibliothek
verwendet und dies nur auf bestimmten GPUs (ich habe das gleiche Installationsskript auf verschiedenen Computern mit unterschiedlichen GPUs verwendet, einige funktionieren, andere nicht) und sie funktionieren alle, wenn das Speicherwachstum aktiviert ist.(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
Sie veranschaulichen also meinen Standpunkt. libcudnn.so.7
sagt nicht, dass 7.XXX.YYY
zu 7.XXX.YYY
eine weitere Abhängigkeit von CUDA 10.2
10.1
10.0
9.2
9.1
9.0
etc.
Ich habe den Fehler nicht gesehen, seit ich damit begonnen habe, den Pfad gut zu verwalten und die verfügbare Speichermenge zu verwalten, bevor ich ein Diagramm bekannter Größe initialisiert und sichergestellt habe, dass die Ziel-GPU nur genügend Speicher für das Diagramm und genügend Speicher verwendet, um abzufragen, wie viel CUDA abgefragt wird Speicher ist verfügbar.
Ich denke, es ist ein Ressourcenproblem. Wie viel Speicher ist verfügbar, wenn Sie den Prozess starten, und wie viel Speicher verwendet Ihr Diagramm?
@ kognat-docs
Sie veranschaulichen also meinen Standpunkt libcudnn.so.7 sagt nicht 7.XXX.YYY zusätzlich zu 7.XXX.YYY hat eine weitere Abhängigkeit von CUDA 10.2 10.1 10.0 9.2 9.1 9.0 usw.
Die von Ihnen gestellte Frage lautete: "Haben die Benutzer überprüft, ob sich zwei gemeinsam genutzte CuDNN 7-Bibliotheken im Pfad oder im LD-Bibliothekspfad befinden?". Und meine Antwort war: Ich habe das überprüft, es gibt nur einen.
Ich habe dir die Spur geschickt.
Ich habe den Fehler nicht gesehen, seit ich mit der Verwaltung des Pfads begonnen habe
Was meinst du mit der Verwaltung des Pfades?
Ich verwalte immer meine Wege! Ich habe eine Conda-Umgebung installiert, deren Konsistenz ich überprüft habe! Alles ist so, wie es von Anaconda verpackt wurde. Ich habe dies überprüft.
Wie auch immer, Sie mögen glauben, ich bin zu dumm, um eine Anakonda aufzubauen. Gut
Ich habe jetzt das offizielle Docker-Image heruntergeladen
Tensorflow / t ensorflow: 2.1.0-gpu-py3
und führe dort mein Skript aus. Es stürzt ab, wenn ich nicht habe
export TF_FORCE_GPU_ALLOW_GROWTH = true
Kann ich Pfade besser verwalten?
und Verwalten der verfügbaren Speichermenge vor dem Initialisieren eines Diagramms bekannter Größe und Sicherstellen, dass die Ziel-GPU nur genügend Speicher für das Diagramm und genügend Speicher verwendet, um abzufragen, wie viel CUDA-Speicher verfügbar ist.
Ich denke, es ist ein Ressourcenproblem. Wie viel Speicher ist verfügbar, wenn Sie den Prozess starten, und wie viel Speicher verwendet Ihr Diagramm?
Wie ich oben in meinem Bericht geschrieben habe, gibt es keine Grafik (oder besser gesagt, es gibt kaum eine Grafik)! Ich führe nur diese vier Zeilen
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")
und es stürzt ab. Wenn ich die Reihenfolge der drei Zeilen ändere, stürzt es nach diesen drei Vorgängen immer ab (ich hatte dies in meinem Fehlerbericht erklärt).
Nur zum Spaß habe ich die Bytes gezählt: Es sind <83kB Datenspeicher erforderlich. Die GPU ist leer, ich verwende sie nicht für Grafiken und es laufen keine anderen Prozesse darauf. Auf den verschiedenen Systemen stehen 4GB oder 11GB zur Verfügung! Außerdem weiß ich, wie man nvidia-smi ausführt! Die Karte ist also immer noch leer. Ich kann diese 4 Zeilen, die 84 KB benötigen, nicht ausführen!
Nur zu Ihrer Information, ein Fehler aufgrund von Speicherauslastung sieht ganz anders aus, ich habe auch diese. Für meine realen Grafiken kann ich diese sehr gut erkennen und entsprechend reagieren.
Trotzdem vielen Dank für Ihre Bemühungen.
@roebel Haben Sie den Kommentar von @sanjoy zum Debuggen über die CPP https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750 gesehen?
Ich bin nicht dazu gekommen, den Tensorflow neu zu kompilieren und auszuprobieren. Ihre Versionen bewegen sich so schnell, dass ich ein bisschen brauchen würde, um alles einzurichten und zu kompilieren. Außerdem hat 1.15 die Unterstützung für die von mir verwendete gcc-Version eingestellt, und 1.13 erhält keine Updates, sodass es für mich sowieso etwas sinnlos war, dies zu debuggen.
@roebel Ich konnte mich nicht erinnern, was das Problem für Sie ausgelöst hat.
Siehe dies https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -480549043
Aus diesem Grund dachte ich, es sei speicherbezogen. Dieses Problem hat mich und die Benutzer meiner Software auf einer Vielzahl von Plattformen seit einiger Zeit nicht mehr betroffen.
@samhodge
Ja, ich verstehe, wenn es einen Fehler gibt, scheint er nur durch eine bestimmte Situation ausgelöst zu werden.
@odinsbane
danke nein ich hatte das nicht bemerkt. Ich werde sehen, ob es gelingt, die neueste Version tf2.2.0 zu kompilieren.
Tatsächlich habe ich den Docker mit Tensorflow 2.2 ausprobiert, er verwendet dieselbe Version von Cuda 10.1 und hat dasselbe Problem.
Ich dachte, dies sei nur ein Windows-Problem, also habe ich eine Ubuntu-Umgebung von Grund auf neu installiert, nur um herauszufinden, dass meine Grafikkarte (RTX 2080) das Problem ist. Leider denke ich, dass ich aufgrund dieses Problems eine andere Plattform für maschinelles Lernen auswählen werde, da dies seit 2018 ein Problem zu sein scheint.
@ kognat-docs
und Verwalten der verfügbaren Speichermenge vor dem Initialisieren eines Diagramms bekannter Größe und Sicherstellen, dass die Ziel-GPU nur genügend Speicher für das Diagramm und genügend Speicher verwendet, um abzufragen, wie viel CUDA-Speicher verfügbar ist.
Ich denke, es ist ein Ressourcenproblem. Wie viel Speicher ist verfügbar, wenn Sie den Prozess starten, und wie viel Speicher verwendet Ihr Diagramm?
Wie ich oben in meinem Bericht geschrieben habe, gibt es keine Grafik (oder besser gesagt, es gibt kaum eine Grafik)! Ich führe nur diese vier Zeilen
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")
und es stürzt ab. Wenn ich die Reihenfolge der drei Zeilen ändere, stürzt es nach diesen drei Vorgängen immer ab (ich hatte dies in meinem Fehlerbericht erklärt).
Nur zum Spaß habe ich die Bytes gezählt: Es sind <83kB Datenspeicher erforderlich. Die GPU ist leer, ich verwende sie nicht für Grafiken und es laufen keine anderen Prozesse darauf. Auf den verschiedenen Systemen stehen 4GB oder 11GB zur Verfügung! Außerdem weiß ich, wie man nvidia-smi ausführt! Die Karte ist also immer noch leer. Ich kann diese 4 Zeilen, die 84 KB benötigen, nicht ausführen!
Haben Sie beobachtet, wie viel Speicher verwendet wurde, indem Sie watch auf nvidia-smi verwendet haben, während Ihr Prozess mit einem Intervall von 50 ms ausgeführt wurde?
Sehen Sie sich dieses Update an, das für andere Personen funktioniert hat
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -497202806
Hier ist ein verwandter Beitrag von vor 4 Jahren.
Oder Sie können das freundliche Handbuch lesen:
https://www.tensorflow.org/guide/gpu#limiting_gpu_memory_growth
Sie können den Patch also ausführen, ohne den Code zu berühren, indem Sie einfach Ihre Laufzeitumgebung ändern.
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
Gute Nachrichten!
Folgen
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750
Ich habe die Version 2.1 mit dem Anaconda-Tensorflow-Rezept von hier neu erstellt
https://github.com/AnacondaRecipes/tensorflow_recipes
Ich habe zwei Drucke in MinSystemMemory hinzugefügt, die "available_memory" und "min_system_memory" anzeigen.
Auf meinem System mit GeForce GTX 1050 Ti
Deaktivieren des TF-Standardprotokolls
Ich habe das
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 meldet, dass die GPU 4040 MB hat. Auf diesem System läuft X auf der Karte mit 13 MB, sodass die Zahlen in Ordnung zu sein scheinen.
min_system_memory ist so eingestellt
min_system_memory =
std::max(int64{314572800}, static_cast<int64>(available_memory * 0.05));
Die maximale Speichermenge wird also trotzdem gewählt. Stattdessen habe ich einen Mechanismus hinzugefügt, um das min_system_memory über die Umgebungsvariable TF_FORCE_MIN_SYSTEM_MEMORY_MB zu erzwingen.
Dann rennen
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
das Problem ist behoben!
Leider habe ich derzeit kein System mit einer funktionierenden RTX-Karte und bin mir nicht sicher, wann diese wieder funktionieren werden. Wenn jemand bereit wäre, dies auf einer solchen Karte zu testen, könnte ich das Pip-Paket und den Inhalt der Conda-Umgebung für Ubuntu Linux bereitstellen, das installiert werden muss, damit es ausgeführt wird.
Netter @roebel !
Könnte es wert sein, dies als Pull-Anfrage vorzuschlagen und zu den Dokumenten hinzuzufügen.
@samhodge @sanjoy @odinsbane
Könnte es wert sein, dies als Pull-Anfrage vorzuschlagen und zu den Dokumenten hinzuzufügen.
Sicher, aber das Problem ist, dass die Lösung für die anderen Karten wahrscheinlich nicht funktioniert.
Für meine GTX 1050 beträgt der Gesamtspeicher 4 GB und der Standard-Systemspeicher bleibt erhalten
durch Tensorfluss ist max (300 MB, 4 GB * 0,05). Für die GTX1050 sind dies also 300 MB, was anscheinend zu klein ist. Wie oben erwähnt, muss ich auf 310 MB erhöhen.
Für den RTX2080 beträgt der Gesamtspeicher 11 GB, maximal (300 MB, 11 GB * 0,05).
wählt den Systemspeicher auf 550 MB, was den Ergebnissen des 1050 entspricht
sollte normalerweise ausreichen.
Ich werde bis Ende der Woche wieder Zugriff auf die RTX2080-GPUs haben und sehen
was ich dort bekomme.
@samhodge @sanjoy @odinsbane
Endlich konnte ich die gepatchte Bibliothek auf den RTX 2080-Karten ausführen.
Wie erwartet wird die gepatchte Version nicht bestanden. Hier nochmal das Drehbuch
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")
Und hier die Matrix von available memory
, die von gpu_device.cc gemeldet wurde,
Standardwert von Min_system_memory
wie in gpu_device.cc und dem ausgewählt
min value of the min_system_memory
Ich muss auswählen, damit das Skript nicht abgebrochen wird:
Karte | AvailMem | Def MinSysMem | Erforderliches MinSysMem
: ------- |: ----------- |: ---------- |: --------------- --------
1050 TI | 4163764224 | 314572800 | 325058560
1080 TI | 11567431680 | 578371584 | 335544320
2080 TI | 11381964800 | 569098240 | 618659840
Während 1050 und 1080 das Skript mit ungefähr der gleichen Speichergröße ausführen
Der RTX2080 benötigt fast doppelt so viel Speicher. Das hört sich nicht gut an
mir.
Irgendwelche Vorschläge, was Sie versuchen sollten, um dies auf einen vergleichbaren Wert zu bringen?
@roebel
Ich habe in meiner C ++ - Anwendung für eine Reihe von Iterationen damit zu kämpfen.
Am Ende ging es um Folgendes.
Führen Sie Modelle nur auf der GPU aus, wenn genügend Speicher verfügbar ist, um das Modell auszuführen.
Die Menge an Speicher, die das Modell benötigt, ist also quantifizierbar.
Sie benötigen also einen GPU-Speicher als Prozentsatz, der zu diesem Modell passt.
Dann müssen Sie auch genau wissen, wie viel Speicher auf der Karte verfügbar ist, bevor Sie den Speicher zuweisen, der den Rennbedingungen unterliegt, da Sie nicht wissen, was CUDA-Speicher gleichzeitig auf dem Betriebssystem verwendet.
Abgesehen von den Rennbedingungen müssen Sie auch den freien Speicher messen.
Dies geschieht mit cudaMemInfo
, das an sich Speicher verwendet.
Vorausgesetzt, Sie haben genug Speicher, um cudaMemInfo
einmal zum Messen auszuführen, und Sie müssen sicherstellen, dass genügend Speicher frei ist, um zum Modell zu passen, und cudaMemInfo
dann und nur noch einmal ausführen Dann können Sie genug Prozentsatz des verfügbaren VRAM auf dieser Karte zuweisen, um das Modell auszuführen.
Auf jeden Fall ist das Mitnehmen von meinem zufälligen Geschwätz, dass cudaMemInfo
erforderlich ist, um die zur Zuweisung verfügbare Speichermenge abzufragen, die an sich auch einen Teil des verfügbaren Speichers verwendet.
Vielleicht ist die von cudaMemInfo
verwendete Speichermenge auf einer Turing-basierten Karte anders als auf einer Pascal-basierten Karte. Wenn Sie möchten, kann ich jemanden von NVIDIA dazu bringen, einen Blick darauf zu werfen.
Ja, ich kann überhaupt keinen Hinweis auf cudaMemInfo
aber das scheint die Art von Footprint zu sein, die maximal 300 MB und 5% des Kartenspeichers beträgt.
einen Blick auf:
Es scheint nicht so, als würde es dies per se verwenden.
Ich denke nicht, dass wir Katz und Maus mit der Menge an Speicher spielen sollten, die wir für Systembibliotheken reservieren müssen - wie Sie bemerkt haben, gibt es keinen systematischen Weg, dies richtig zu machen.
Stattdessen sollten wir IMO versuchen, die Systembibliotheken zu initialisieren, bevor der BFC-Allokator die Möglichkeit hatte, den Rest des GPU-Speichers zuzuweisen.
CC @chsigg
Wahrscheinlich sollte man dies nur tun, wenn das Wachstum des Speichers deaktiviert ist. Andernfalls benötigen Sie für den 2080 immer etwa 580 MB, auch wenn Sie nicht alle Operatoren benötigen.
Ich habe einige weitere Tests bezüglich der minimalen Systemspeicheranforderungen für die Ausführung von Kombinationen der drei Operationen aus meinem Testfall durchgeführt. Ich vergleiche nur die Karten 1080 und 2080. Sie finden conv2d nicht alleine, da es auf jeden Fall blas initialisiert. Kommt raus
GPU | MatMul | STFT | Conv2D + MatMUL | MatMul + STFT | MATMUL + STFT + Conv2D |
: --- |: --- |: --- |: --- |: --- |: ---
1080 | 140 MB | 130 MB | 290 MB | 170 MB | 320 MB
2080 | 190 MB | 190 MB | 520 MB | 250 MB | 580 MB
Man kann sehen, dass auf dem 2080 cuda für jede Operation ein Overhead erforderlich ist und dass sich dieser Overhead erhöht, wenn mehr Bibliotheken verwendet werden. In den meisten Fällen beträgt der Overhead <100MB
, wird jedoch zu >220MB
sobald Conv2D beteiligt ist.
Wenn @samhodge Kontakt zu NVIDIA hat, würde ich es
Hallo, alle miteinander!
Ich habe ein ähnliches Problem mit der Begrenzung des Speicherwachstums gelöst, und Sie können es versuchen.
Code finden Sie im Abschnitt Speicherwachstum begrenzen
(Dies ist mein erster Kommentar in GitHub)
Ich hatte vorher ein ähnliches Problem. Die manuelle Begrenzung des GPU-Speichers hat geholfen. https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167
Ich habe das gleiche Problem unter Ubuntu 20.04 mit einer GeForce RTX 2060 SUPER. Ein NN mit dichten Schichten funktioniert gut. Aber mit CNN-Schichten bekomme ich
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.
Das Hinzufügen vontf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
macht keinen Unterschied für den Fehler.
Ich verfolgte die Installation gemäß https://www.tensorflow.org/install/gpu undnvidia-smi
zeigt:
Driver Version: 440.64.00 CUDA Version: 10.2
Mein conda env hat:cudatoolkit 10.1.243 h6bb024c_0 cudnn 7.6.5 cuda10.1_0 tensorflow-gpu 2.1.0 h0d30ee6_0
In einer Conda-Umgebung mit tf 1.15 erhalte ich den gleichen Fehler. Es wäre großartig, wenn dies behoben werden könnte.
Aktualisieren
Nach der Verwendung von
export TF_FORCE_GPU_ALLOW_GROWTH=true
funktioniert alles. Ich hatte den Eindruck, dass dietf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
dasselbe tun würden, aber das ist nicht der Fall. Ich denke, dies sollte auf der TensorFlow GPU-Support-Webseite klar angegeben werden.
Alter, deine Lösung rettet mein Leben.
Nvidia hat gerade die Linux-Display-Treiber 440.100 und 450.51 (Beta) veröffentlicht.
Ich habe den 440.100 ausprobiert und das Problem wurde dadurch nicht behoben. Hat jemand die Beta 450.51 ausprobiert?
@eduardoscsouza
Nvidia hat gerade die Linux-Display-Treiber 440.100 und 450.51 (Beta) veröffentlicht.
Ich habe den 440.100 ausprobiert und das Problem wurde dadurch nicht behoben. Hat jemand die Beta 450.51 ausprobiert?
Ich habe 450.36.06 versucht. Überprüfen Sie https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167.
der Code, der für mich funktioniert hat:
Tensorflow als tf importieren
config = tf.compat.v1.ConfigProto ()
config.gpu_options.allow_growth = True
session = tf.compat.v1.InteractiveSession (config = config)
_Bitte stellen Sie sicher, dass dies ein Fehler ist. Gemäß unserer GitHub-Richtlinie behandeln wir nur Code- / Dokumentfehler, Leistungsprobleme, Funktionsanforderungen und Build- / Installationsprobleme auf GitHub. tag: bug_template_
System Information
- Habe ich benutzerdefinierten Code geschrieben (im Gegensatz zur Verwendung eines in TensorFlow bereitgestellten Beispielskripts): Ja und Nein (unten beschrieben)
- Betriebssystemplattform und -verteilung (z. B. Linux Ubuntu 16.04): Manjaro
- Mobiles Gerät (z. B. iPhone 8, Pixel 2, Samsung Galaxy), wenn das Problem auf einem mobilen Gerät auftritt:
- TensorFlow installiert von (Quelle oder Binärdatei): tf-nightly-gpu (19. Dezember, r1.13)
- TensorFlow-Version (Befehl unten verwenden): 1.13.0-dev20181219
- Python-Version: 3.7.1
- Bazel-Version (wenn aus der Quelle kompiliert):
- GCC / Compiler-Version (beim Kompilieren aus dem Quellcode):
- CUDA / cuDNN-Version: CUDA 10 mit cuDNN 7.4.1
- GPU-Modell und Speicher: RTX 2070 8 GB
Beschreiben Sie das aktuelle Verhalten
Ich verwende das CNN-Modell auf MNIST. Wenn ich mit der GPU laufe, stoße ich auf
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
Ich habe ein bisschen gegraben und festgestellt, dass es sich um ein Speicherproblem handelt (was nicht der Fall sein sollte, da ich 32 GB RAM und 64 GB Swap habe. Ich habe htop ausgeführt, als ich das Modell ausgeführt habe, und ich habe 20 + GB frei, was mehr als ist genug für die 8 GB vRAM-Zuordnungen.
Wenn Sie
gpu_options.allow_growth = True
verwenden, funktioniert das Modell ordnungsgemäß, und das Festlegen vonos.environ['CUDA_VISIBLE_DEVICES'] = '-1'
funktioniert ebenfalls. Dies bedeutet, dass ich mit einem Speicherproblem konfrontiert bin, aber ich sehe nicht wie.Die Verwendung von
gpu_options.allow_growth = True
behebt nicht das gleiche Problem, wenn versucht wird, Tensorflow / Models / Official / Mnist / Model auszuführen, das sich mit meinem Code ähnlich verhalten sollte.Code zur Reproduktion des Problems
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()
Das hat bei mir funktioniert.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 ...
Hallo @ bm777
Nach meiner Untersuchung vor einigen Monaten fasse ich zusammen, wie ich das Problem verstehe
GPU-Modell und Speicher: RTX 2070 8 GB
... was nicht der Fall sein sollte, da ich 32 GB RAM und 64 GB RAM habe
Das Problem ist nicht der Systemspeicher, das Problem ist der GPU-Speicher!
os.environ ['CUDA_VISIBLE_DEVICES'] = '-1'
funktioniert, weil die GPU nicht verwendet wird!
Einige Erklärungen:
TF hat zwei Betriebsarten:
allow memory growth = false
: In diesem Fall ordnet TF etwas Speicher für die Systembibliotheken vor, wobei eine grobe Schätzung von verwendet wird
wie viel Speicher benötigt wird. WIE Sie hier lesen können https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -633953715 TF verwendet für diese Vermutung die Formel max(300MB, GPU-MEM * fac)
. Für TF2.1 fac = 0.05
für TF2.2 und wenn ich
Denken Sie daran, es ist fac=0.07
. Jetzt haben Sie also 8 GB, was 400 MB für den vorab zugewiesenen GPU-Speicher unter TF2.1 ergibt
und 560 MB unter TF2.2.
Ich habe den erforderlichen vorab zugewiesenen Speicher für einige GPUs und TF21 hier experimentell ausgewertet: https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -637715002 und hier https://github.com/tensorflow/tensorflow / issue / 24496 # issuecomment -637715002
Es stellte sich heraus, dass ich für Conv2D-Vorgänge dort 520 MB benötigte. Unter TF21 hätten Sie weniger als unter TF22 mehr. Leider erwähnen Sie Ihre TF-Version nicht, aber ich gehe davon aus, dass Sie TF2.1 verwenden. Wenn Sie TF2.2 verwenden und es dennoch fehlschlägt, liegt dies möglicherweise daran, dass Sie eine andere GPU verwenden. Tatsache ist jedenfalls, dass es fehlschlägt. Siehe unten
2) allow memory growth = true
: TF verwendet keinen vorab zugewiesenen Speicher und lädt die Bibliotheken so, wie sie kommen. In der TF-Dokumentation wird dies aufgrund einer möglichen Speicherfragmentierung als problematisch deklariert und ist daher standardmäßig off
.
Meine Einstellung:
Angesichts des großen Bereichs des erforderlichen Speichers für die Bibliotheken, der von den Operationen abhängt, die Sie ausführen, sowie von der GPU, die Sie ausführen, scheint es sehr schwierig zu sein, den Modus allow memory growth = false
richtig zu machen (siehe https://github.com/tensorflow/). Tensorflow / Issues / 24496 # Issuecomment-637950411). Die aktuelle Lösung: Die Vergrößerung des vorab zugewiesenen Speichers, der für TF2.2 durchgeführt wurde, ist problematisch, wenn Ihre GPU eher klein ist. Dies blockiert die Verwendung des Speichers, vorausgesetzt, Sie benötigen alle verfügbaren Bibliotheken (blas, Conv, FFT und ich weiß nicht, ob es andere gibt). Wenn Sie nicht alle verwenden, wird vorab zugewiesener Speicher verschwendet, wodurch sich die Modellgröße verringert, die Sie möglicherweise für Ihre Anwendung laden. Andererseits glaube ich, dass das Problem der Speicherfragmentierung verhindert werden kann, wenn Sie Modelle erstellen, die Systembibliotheken frühzeitig zum Laden zwingen, bevor Sie mit dem Training beginnen. Dies scheint ohnehin in den meisten Fällen der Fall zu sein, und es scheint daher insbesondere für GPUs mit kleinem Speicher und insbesondere für das Training eines einzelnen Modells von Vorteil zu sein, nicht vorab zuzuweisen, sondern allow memory growth = true
.
Persönlich verwende ich GPUs mit einem Speicher zwischen 4 GB und 11 GB. Nach dem obigen Argument habe ich TF_FORCE_GPU_ALLOW_GROWTH = true für alle festgelegt. Im Moment hatte ich damit keine Probleme.
Hallo @roebel
Auch ich habe über die Probleme des Fehlers bei der Zuweisung von Speicher nachgedacht. Das ist jetzt klar für mich.
Jetzt sieht es gut aus GPU-Speicher
In der Vergangenheit habe ich viele Optionen getestet, um Speicher vorab zuzuweisen 😢:
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
Persönlich benutze ich GPU mit 6 GB Speicher.
Und danke @roebel , für diesen neuen Pfeil TF_FORCE_GPU_ALLOW_GROWTH=true
, der meine GPU zur Zuweisung zwingt 😊.
Ich hatte das gleiche Problem. Ich kann mit Sicherheit sagen, dass das Problem nur bei meinem 2070 RTX und NICHT bei einem Titan RTX auftritt, auf dem genau derselbe Code ausgeführt wird.
Aktualisieren Sie einfach mit CUDA 11 und cudnn 8.0 auf Tensorflow 2.3. Es hat alle meine Probleme auf magische Weise gelöst und ich brauche jetzt nicht einmal die Problemumgehung mit config.gpu_options.allow_growth = True
.
Leider muss ich Code ausführen, der nur Tensorflow 1.X unterstützt
Aktualisieren Sie einfach mit CUDA 11 und cudnn 8.0 auf Tensorflow 2.3. Es hat alle meine Probleme auf magische Weise gelöst und ich brauche jetzt nicht einmal die Problemumgehung mit
config.gpu_options.allow_growth = True
.
Ein Upgrade von 2.2 auf 2.3 auch mit explizitem TF_FORCE_GPU_ALLOW_GROWTH=false
dies auch für mich gelöst (zumindest kann ich jetzt Delf-Demo-Code ausführen ; habe mit nichts anderem getestet).
Ich bin immer noch auf CUDA 10.1, Cudnn 7.6.5.
Gibt es eine Lösung für dieses Problem mit Tensorflow 2 und Python3?
Ich habe ein:
RTX 2080
Ich erhalte folgende Nachricht:
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
Falls Ihr Problem denselben Ursprung hat wie die Probleme, die in der vorliegenden Ausgabe behandelt werden (was ich aus Ihrem Bericht nicht wissen kann), gibt es einige Lösungen, die Sie leicht finden können, indem Sie die letzten 10 bis 20 Beiträge in diesem lesen Faden.
Ich habe es damit behoben:
config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.compat.v1.Session(config=config)
sess.as_default()
Ich hatte das gleiche Problem mit RTX 2080. Dann funktionierte der folgende Code für mich.
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
Vielen Dank an alle
Ich denke, wir können jetzt aufhören, das allow_growth
Fix zu veröffentlichen :)
RTX 2070 hier. Wurde dieser Fehler angezeigt, aber jetzt läuft er mit TF_FORCE_GPU_ALLOW_GROWTH=true
(wie andere Kommentatoren darauf hingewiesen haben, behebt ihn für sie) und ändert die Fehlermeldung in einen Fehler wegen zu wenig Speicher (obwohl ich genügend Speicher habe):
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
Aber meine GPU hat 8 GB und nur ungefähr 250 MB wurden verwendet, bevor ich den Prozess startete. Ich verstehe also nicht, warum es nicht 3,87 GB zuweisen kann. (Das Verringern der Stapelgröße hatte keine Auswirkung. Die HDF5-Datei mit Gewichten ist kleiner als 200 MB.)
TF_FORCE_GPU_ALLOW_GROWTH = true hat bei mir funktioniert.
tf.config.experimental.set_memory_growth (gpu, True) funktionierte ebenfalls.
Hier ist meine Konfiguration:
GPU GTX 1650
cuda-10-1 10.1.243-1
libcudnn7 7.6.5.32-1 + cuda10.1
Ubuntu 18.04.5 LTS
Wer die Umgebungsvariable nicht festlegen kann, kann dies wie unter https://www.tensorflow.org/guide/gpu vorgeschlagen versuchen:
gpus = tf.config.experimental.list_physical_devices ('GPU')
wenn gpus:
Versuchen:
# Derzeit muss das Speicherwachstum für alle GPUs gleich sein
für gpu in gpus:
tf.config.experimental.set_memory_growth (gpu, True)
logischer_gpus = tf.config.experimental.list_logical_devices ('GPU')
print (len (gpus), "Physische GPUs", len (logischer_gpus), "Logische GPUs")
außer RuntimeError als e:
# Das Speicherwachstum muss eingestellt werden, bevor GPUs initialisiert wurden
drucken (e)
Das Eingeben des auf dem Terminal erwähnten Befehls hat gerade für mich funktioniert.
https://github.com/tensorflow/tfjs/issues/671#issuecomment -494832790
Aktualisieren Sie einfach mit CUDA 11 und cudnn 8.0 auf Tensorflow 2.3. Es hat alle meine Probleme auf magische Weise gelöst und ich brauche jetzt nicht einmal die Problemumgehung mit
config.gpu_options.allow_growth = True
.
Es scheint, dass das Problem in Tensorflow 2.3.0 bemerkt und gelöst wird.
Gleiches Problem:
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.
Und die Problemumgehung allow_growth = True
hilft nicht.
Nachdem ich Tensorflow auf 2.3.0 aktualisiert hatte, verschwand das Problem, auch ohne die Zeile allow_growth = True
hinzuzufügen.
ok, hat es in tf-nightly-gpu-2.0-preview und ipython notebook funktionieren lassen und dies meinem Code hinzugefügt:
aus tensorflow.compat.v1 ConfigProto importieren
aus tensorflow.compat.v1 InteractiveSession importierenconfig = ConfigProto ()
config.gpu_options.allow_growth = True
session = InteractiveSession (config = config)
es funktioniert in meinem Fall
Hilfreichster Kommentar
Ich habe versucht, aus dem Quellcode zu kompilieren, bin aber auf dasselbe Problem gestoßen. Ich konnte endlich mein Problem beheben, indem ich
config.gpu_options.allow_growth = True
.