Tensorflow: تعذر إنشاء مؤشر cudnn: CUDNN_STATUS_INTERNAL_ERROR

تم إنشاؤها على ٢١ ديسمبر ٢٠١٨  ·  181تعليقات  ·  مصدر: tensorflow/tensorflow

يرجى التأكد من أن هذا خطأ. العلامة: bug_template

معلومات النظام

  • هل قمت بكتابة رمز مخصص (بدلاً من استخدام نص برمجي مثال على الأسهم متوفر في TensorFlow): نعم ولا (موضح أدناه)
  • نظام التشغيل الأساسي والتوزيع (مثل Linux Ubuntu 16.04): Manjaro
  • الجهاز المحمول (مثل iPhone 8 و Pixel 2 و Samsung Galaxy) إذا حدثت المشكلة على الجهاز المحمول:
  • تم تثبيت TensorFlow من (مصدر أو ثنائي): tf-nightly-gpu (19 ديسمبر ، r1.13)
  • إصدار TensorFlow (استخدم الأمر أدناه): 1.13.0-dev20181219
  • إصدار Python: 3.7.1
  • إصدار Bazel (إذا كان التجميع من المصدر):
  • إصدار GCC / Compiler (إذا كان التجميع من المصدر):
  • إصدار CUDA / cuDNN: CUDA 10 مع cuDNN 7.4.1
  • طراز وحدة معالجة الرسومات والذاكرة: RTX 2070 8 جيجابايت

صف السلوك الحالي
أنا أدير نموذج CNN على MNIST. عندما أعمل مع GPU ، أواجه
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

لقد أجريت بعض البحث وأدركت أنها مشكلة في الذاكرة (وهو ما لا ينبغي أن يكون هو الحال لأن لدي 32 جيجابايت من ذاكرة الوصول العشوائي و 64 جيجابايت من سعة المبادلة. لقد قمت بتشغيل htop عند تشغيل النموذج ولدي 20 جيجابايت مجانًا ، وهو أكثر من بما يكفي لتناسب تعيينات 8 جيجابايت vRAM.

يؤدي استخدام gpu_options.allow_growth = True تشغيل النموذج بشكل صحيح ، كما يعمل تعيين os.environ['CUDA_VISIBLE_DEVICES'] = '-1' . هذا يعني أنني أواجه مشكلة في الذاكرة ، لكنني لا أرى كيف.

أيضًا ، لا يؤدي استخدام gpu_options.allow_growth = True إصلاح نفس المشكلة عند محاولة تشغيل tensorflow / Models / official / mnist / model ، والذي يجب أن يكون له نفس السلوك مع الكود الخاص بي.

رمز إعادة إظهار المشكلة

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


class Model:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

    model = Model(inputs, labels)

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

    # sess = tf.Session()

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

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

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

    return


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

التعليق الأكثر فائدة

لقد حاولت التجميع من المصدر ، لكنني واجهت نفس المشكلة. تمكنت أخيرًا من إصلاح مشكلتي وهي تعيين config.gpu_options.allow_growth = True .

ال 181 كومينتر

لقد كنت أواجه نفس المشكلة مع نفس GPU: "CUDNN_STATUS_INTERNAL_ERROR".

وحدة معالجة الرسومات RTX 2070
كودا 10
cuDNN 7.4.2
أوبونتو 18.04.2018
tf-nightly-gpu (r1.13 ، 13 كانون الثاني (يناير))
بايثون 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.

لدي نفس المشكلة قيد التشغيل

وحدة معالجة الرسومات RTX2080
كودا 10
cudnn 7.4.2

جربت إصدارات tf التالية tf-nightly-gpu وإصدار مترجم ذاتيًا من المعلم (060b6e32ad).
اكتشفت أنه من الممكن تعيين متغيرات البيئة التالية للحصول على مزيد من معلومات التصحيح.

CUDNN_LOGINFO_DBG = 1 ،
CUDNN_LOGDEST_DBG = stdout

ثم أحصل على الخطأ التالي:

I0117 14: 11: 24.441819 140433563125568 basic_session_run_hooks.py:594] حفظ نقاط التفتيش لـ 0 في /tmp/mnist/model.ckpt.
2019-01-17 14: 11: 25.916269: I tensorflow / stream_executor / platform / default / dso_loader.cc: 154] افتتح مكتبة CUDA libcublas.so.10.0 محليًا بنجاح

أنا! دالة CuDNN (v7402) cudnnCreate () تسمى:
أنا! الوقت: 2019-01-17T14: 11: 26.079184 (0d + 0h + 0m + 0s منذ البداية)
أنا! العملية = 29255 ؛ الموضوع = 29356 ؛ GPU = NULL ؛ مقبض = NULL ؛ StreamId = NULL.

2019-01-17 14: 11: 26.079151: I tensorflow / stream_executor / platform / default / dso_loader.cc: 154] افتتح بنجاح مكتبة CUDA libcudnn.so.7 محليًا

أنا! دالة CuDNN (v7402) cudnnCreate () تسمى:
أنا! الوقت: 2019-01-17T14: 11: 26.571897 (0d + 0h + 0m + 0s منذ البداية)
أنا! العملية = 29255 ؛ الموضوع = 29356 ؛ GPU = NULL ؛ مقبض = NULL ؛ StreamId = NULL.

2019-01-17 14: 11: 26.571858: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] تعذر إنشاء مقبض cudnn: CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14: 11: 26.579375: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] تعذر إنشاء مقبض cudnn: CUDNN_STATUS_INTERNAL_ERROR

أنا! دالة CuDNN (v7402) cudnnCreate () تسمى:
أنا! الوقت: 2019-01-17T14: 11: 26.579803 (0d + 0h + 0m + 0s منذ البداية)
أنا! العملية = 29255 ؛ الموضوع = 29356 ؛ GPU = NULL ؛ مقبض = NULL ؛ StreamId = NULL.

2019-01-17 14: 11: 26.585818: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] تعذر إنشاء مقبض cudnn: CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14: 11: 26.585850: W ./tensorflow/stream_executor/stream.h:2109] محاولة تنفيذ عملية DNN باستخدام StreamExecutor بدون دعم DNN
Traceback (أحدث مكالمة أخيرة):
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py" ، السطر 1335 ، في _do_call
عودة fn (* args)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py" ، السطر 1320 ، في _run_fn
الخيارات ، feed_dict ، fetch_list ، target_list ، run_metadata)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py" ، السطر 1408 ، في _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.UnknownError: فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا تمت طباعة رسالة سجل تحذير أعلاه.
[[{{node Discriminator_1 / Conv / Conv2D}}]]
[[train / التمييز_القطار / train_op / control_dependency / _569]]

أثناء معالجة الاستثناء أعلاه ، حدث استثناء آخر:

Traceback (أحدث مكالمة أخيرة):
ملف "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py" ، السطر 151 ، في
tf.app.run ()
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py" ، السطر 125 ، قيد التشغيل
_sys.exit (main (argv))
ملف "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py" ، السطر 147 ، بشكل رئيسي
get_hooks_fn = tfgan.get_joint_train_hooks ())
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py" ، السطر 1200 ، في gan_train
التكوين = التكوين)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/training/python/training/training.py" ، السطر 546 ، في القطار
الخسارة = session.run (train_op ، run_metadata = run_metadata)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py" ، السطر 693 ، قيد التشغيل
run_metadata = run_metadata)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py" ، السطر 1188 ، قيد التشغيل
run_metadata = run_metadata)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py" ، السطر 1287 ، قيد التشغيل
رفع ستة. reraise ( original_exc_info)ملف "/usr/local/lib/python3.6/dist-packages/six.py" ، السطر 693 ، قيد التطويررفع القيمةملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py" ، السطر 1272 ، قيد التشغيلإرجاع self._sess.run ( args ، ** kwargs)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py" ، السطر 1336 ، قيد التشغيل
feed_dict ، خيارات)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py" ، السطر 1362 ، في _call_hook_before_run
طلب = hook.before_run (run_context)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py" ، السطر 1061 ، في before_run
run_context.session.run (self._train_ops)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py" ، السطر 930 ، قيد التشغيل
run_metadata_ptr)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py" ، السطر 1153 ، في _run
feed_dict_tensor، options، run_metadata)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py" ، السطر 1329 ، في _do_run
run_metadata)
ملف "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py" ، السطر 1349 ، في _do_call
رفع نوع (هـ) (node_def، op، message)
tensorflow.python.framework.errors_impl.UnknownError: فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا تمت طباعة رسالة سجل تحذير أعلاه.
[[node Discriminator_1 / Conv / Conv2D (محدد في home / dj / projects / gan / tf_models / research / gan / mnist / networks.py: 152)]]
[[train / التمييز_القطار / train_op / control_dependency / _569]]

قد تكون الأخطاء قد نشأت من عملية الإدخال.
عمليات مصدر الإدخال المتصلة بالعقدة Discriminator_1 / Conv / Conv2D:
المدخلات / الدفعة / n (محددة في home / dj / projects / gan / tf_models / research / gan / mnist / data_provider.py: 67)

تتبع التكديس الأصلي لـ "Discriminator_1 / Conv / Conv2D":
ملف "home / dj / projects / gan / tf_models / Research / gan / mnist / train.py" ، السطر 151 ، في
tf.app.run ()
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / platform / app.py" ، السطر 125 ، قيد التشغيل
_sys.exit (main (argv))
ملف "home / dj / projects / gan / tf_models / Research / gan / mnist / train.py" ، السطر 87 ، بشكل رئيسي
[FLAGS.batch_size، FLAGS.noise_dims]))
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / Contrib / gan / python / train.py" ، السطر 118 ، في gan_model
المميّز_real_outputs = المُميز_fn (البيانات الحقيقية ، المُولِّد_المدخلات)
ملف "home / dj / projects / gan / tf_models / Research / gan / mnist / networks.py" ، السطر 176 ، في unconditional_discriminator
net = _discriminator_helper (img، False، None، weight_decay)
ملف "home / dj / projects / gan / tf_models / Research / gan / mnist / networks.py" ، السطر 152 ، في _discriminator_helper
net = layer.conv2d (img، 64، [4، 4]، خطوة = 2)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / Contrib / framework / python / ops / arg_scope.py" ، السطر 182 ، في func_with_args
عودة func ( args ، * current_args)
ملف "usr / local / lib / python3.6 / dist -pack / Tensorflow / Contrib / Layers / Python / Layers.py" ، السطر 1155 ، في Convolution2d
conv_dims = 2)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / Contrib / framework / python / ops / arg_scope.py" ، السطر 182 ، في func_with_args
عودة func ( args ، * current_args)
ملف "usr / local / lib / python3.6 / dist -pack / Tensorflow / Contrib / Layers / Python / Layers.py" ، السطر 1058 ، في الالتفاف
المخرجات = layer.apply (المدخلات)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / keras / engine / base_layer.py" ، السطر 1228 ، قيد التطبيق
العودة الذاتية. _ استدعاء __ (المدخلات ، أرغس ، * كوارز)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / layer / base.py" ، السطر 531 ، في __call__
المخرجات = سوبر (طبقة ، ذاتية) .__ استدعاء __ (المدخلات ، أرغس ، * كوارغس)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / keras / engine / base_layer.py" ، السطر 564 ، في __call__
المخرجات = self.call (المدخلات ، args ، * kwargs)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / keras / Layers / convolutional.py" ، السطر 196 ، قيد الطلب
المخرجات = self._convolution_op (المدخلات ، self.kernel)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / ops / nn_ops.py" ، السطر 966 ، في __call__
إرجاع self.conv_op (inp ، عامل التصفية)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / ops / nn_ops.py" ، السطر 591 ، في __call__
إرجاع self.call (inp ، عامل التصفية)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / ops / nn_ops.py" ، السطر 208 ، في __call__
name = self.name)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / ops / nn_ops.py" ، السطر 1578 ، في التحويل2d
الاسم = الاسم)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / ops / gen_nn_ops.py" ، السطر 1040 ، في conv2d
data_format = data_format، التوسع = التمدد، الاسم = الاسم)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / framework / op_def_library.py" ، السطر 788 ، في _apply_op_helper
op_def = op_def)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / util / devecation.py" ، السطر 501 ، في new_func
عودة func ( args ، * kwargs)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / framework / ops.py" ، السطر 3300 ، في create_op
op_def = op_def)
ملف "usr / local / lib / python3.6 / dist -pack / tensorflow / python / framework / ops.py" ، السطر 1801 ، في __init__
self._traceback = tf_stack.extract_stack ()

اي افكار شخص ما؟ أنا فقط قبل إعادة تثبيت بيئتي الكاملة :-(

حاول تجميع r1.13 من المصدر. سيستغرق الأمر وقتًا طويلاً ، ولكن يجب أن يحل مشكلتك. على الأقل أصلحت لي.

لقد حاولت التجميع من المصدر ، لكنني واجهت نفس المشكلة. تمكنت أخيرًا من إصلاح مشكلتي وهي تعيين config.gpu_options.allow_growth = True .

أواجه نفس المشكلة (على RTX 2060 ، Ubuntu 18.04 ، Python 3.6.7 ، CUDA 10.0.130 ، cuDNN 7.4.2 ، Tensorflow 1.13.0-rc0 من المصدر). بفضل اقتراح @ va-andrew ، عملت مع مجموعة خيارات allow_growth .

FWIW ، أثناء البحث عن حلول لهذا ، يبدو أن هذه المشكلة هي مشكلة شائعة في سلسلة RTX (على الرغم من أنها قد تكون مشكلة عامة مع CUDA 10.0 ، نظرًا لأن البطاقات الجديدة لا تدعم الإصدارات القديمة). سيكون من الرائع أن يتم تحديث الإعدادات الافتراضية في إصدار 1.13 بحيث لا يلزم تعيين الخيارات الخاصة لهذه البطاقات.

نشير إلى القول إنني واجهت هذا أيضًا في ظل التكوين التالي:

  • تشغيل اختبارات tf من https://github.com/tensorflow/benchmarks
  • RTX 2080
  • أوبونتو 18.04.2018
  • CUDA 10.0.0 تحديث
  • برامج تشغيل Nvidia 415.27.2018
  • Tensorflow 1.13.0-dev20190125.0
  • CuDNN 7.4.2
  • بايثون 3

حاويات وحدة معالجة الرسومات Tensorflow Docker ذات الإصدارات الثابتة من كل شيء لا تعمل أيضًا (فهي تعمل بشكل مستقيم على segfault بدلاً من الإبلاغ عن CUDNN_STATUS_INTERNAL_ERROR).

من الغريب أن الأشياء تعمل بشكل جيد على Windows 10 مع Tensorflow v1.12!

وقد أفاد آخرون بأن إعداد allow_growth يسمح بتشغيل الأشياء بشكل صحيح.

نفس المشكلة هنا.

  • RTX 2070
  • أوبونتو 18.04.2018
  • CudNN 7.4.2 (لكنني حاولت التجميع مع إصدارات أقدم أخرى بدون حظ)
  • Tensorflow 1.13.0-dev20190125 (جرب أيضًا Tensorflow 1.12 المترجمة مع Cuda 10)

وكما أفاد آخرون ، فإن إعداد allow_growth = TRUE يسمح بتشغيل الأشياء.

إغلاق هذه القضية منذ حلها. شكر!

ymodak هل يمكنك الرجوع إلى العلاقات العامة التي أصلحت هذا الخطأ؟

لدي مشكلة مماثلة مع tf-nightly-gpu-2.0-preview على RTX 2080

نفس المشكلة مع RTX2080 ، قضت يومين في إعادة الترجمة والبحث عن الأخطاء حتى وجدت هذا الإصلاح.
(the allow_growth = الشيء الصحيح الذي تم إصلاحه)

انت صنعت يومي

كيف تحدد في الواقع allow_growth = صحيح؟ لدي معاينة tf-nightly-gpu-2.0 وحاولت:

استيراد tensorflow مثل tf
التكوين = tf.ConfigProto ()
config.gpu_options.allow_growth = صحيح
جلسة = tf.Session (config = config، ...)

لكن احصل على هذا الخطأ:

AttributeError Traceback (آخر مكالمة أخيرة)
في()
1 استيراد Tensorflow مثل tf
----> 2 config = tf.ConfigProto ()

AttributeError: الوحدة النمطية "tensorflow" ليس لها سمة "ConfigProto"

كيف يمكنني ضبط allow_growth في Tensorflow 2.0؟

حسنًا ، اجعلها تعمل في معاينة tf-nightly-gpu-2.0 و دفتر ipython مضيفًا هذا إلى الكود الخاص بي:

من tensorflow.compat.v1 استيراد ConfigProto
من tensorflow.compat.v1 استيراد InteractiveSession

config = ConfigProto ()
config.gpu_options.allow_growth = صحيح
جلسة = InteractiveSession (config = config)

نفس المشكلة ، مع gpu_options.allow_growth = صحيح ، تم إصلاح المشكلة.

newhouseb كيف / أين ضبطت هذا صحيحًا لجميع المعايير؟ هل كان تغيير سهل؟

هل البطانية تسمح بالنمو حلا؟

يتم إيقاف تشغيله افتراضيًا لسبب ما
https://www.tensorflow.org/guide/using_gpu#allowing_gpu_memory_growth

إدارة الذاكرة مهمة في برنامجي

أرغب في الحد من مقدار GPU المستخدم بواسطة TF لأنه في تطبيق الرسومات الخاص بي ، سيتم استخدام ذاكرة GPU لأشياء أخرى ووضعها في مساحة محدودة أمر مهم لمنع أخطاء الذاكرة

أنا أعمل في C ++ تحت Windows

تؤدي إضافة خيار السماح للنمو إلى حدوث خطأ OOM.

بدون هذا السطر من التعليمات البرمجية ، يعمل النموذج بشكل جيد على نفس الجهاز بنفس البطاقة.

مع خطأ OOM

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

بدون خطأ OOM

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

لذلك لحل هذه المشكلة مع مجموعة السماح بنتائج النمو في segfault.

ymodak لم يتم إصلاح هذا الخطأ. يمكن القول ، باستخدام أي نوع من convnet يجب أن يعمل في التكوين الافتراضي. يجب أن يكون allow_growth صحيحًا بشكل افتراضي ، أو يجب إصلاحه حتى يعمل هذا ، أو يجب أن يكون هناك خطأ أفضل من CUDNN_STATUS_INTERNAL_ERROR .

ymodak يبدو أنه تم إغلاق هذه المشكلة قبل الأوان. بينما يوجد حل بديل لهذه المشكلة ، فإنه يتضمن تغيير رمز التطبيق. نتيجة لذلك ، لا يعمل رمز المثال _خارج المربع _ على بطاقات RTX وستحتاج معظم الوصفات على الإنترنت أيضًا إلى تعديل.

samhodge ألا يمكنك منع OOM باستخدام config.gpu_options.per_process_gpu_memory_fraction = 0.4 كما هو مقترح في صفحة وثائق tensorflow التي نشرتها بنفسك؟

أنا مرتبك من هذا الاختراق المنطقي لتمكين tensorflow-gpu على RTX 2080 الخاص بي: هل سيكون هذا allow_growth = True مشكلة إذا كنت أستخدم GPU فقط لمفكرة نصية / دفتر ملاحظات jupyter واحد في وقت واحد؟ (بالإضافة إلى استخدام GPU القياسي للشاشة وما إلى ذلك)

أعتزم تعيين مكدس ML ثابت على جهاز كمبيوتر وأود أن أعرف ما إذا كان هذا سينتهي في حالة من الفوضى في مرحلة ما (بحث شبكي كبير ، نماذج بها الكثير من المعلمات ، إلخ). لم أفهم بعد ما إذا كنت بحاجة بالتأكيد إلى البناء من المصادر لمحاولة تجنب هذا الخطأ الداخلي أو مجرد تغيير هذا المنطقي.

حسنًا ، أعتقد أنني وجدت مصدر مشاكلي قبل إنشاء جلستي ، أقوم بقياس ذاكرة الوصول العشوائي GPU مجانًا ، لذا إذا كنت على بطاقة 8 جيجا بايت وكانت 6 جيجا بايت مجانية ، فأنا أستخدم جزءًا صغيرًا من 0.75 وأحيانًا ينتهي بـ OOM ولكن لدي مؤخرًا أجرب 0.95 * 0.75 ولا يزال لدي OOM. لذلك إذا دفعت المساحة المخصصة لتخصيص Tensorflow إلى الحد الأقصى ، فإنه يتعارض أحيانًا. من الواضح أنه إذا كنت تدخلات ومخرجات إلى عملية فردية لا تناسبها ، فستكون OOM ، لكنني أقيس مقابل ذلك وسوف تستخدم GPU أو CPU اعتمادًا على أيهما يناسب.

samhodge رائع ، لذا في النهاية ، يوفر الاختراق المنطقي allow_growth حلاً إذا لم يتم تشغيل أي عملية GPU رئيسية بالتوازي وإذا كانت المعالجة _ في وقت معين_ بواسطة tensorflow (حجم الدفعة سيكون بالغ الأهمية) تجاوز سعة الذاكرة التي توفرها وحدة معالجة الرسومات ...؟

كل شيء يستخدم GPU حتى متصفحك

تواجه نفس المشكلة على GTX 1050 باستخدام tensorflow-gpu 1.13.1 من نقطة مع CUDA 10.0 / cuDNN 7.4.2.24/Nvidia driver 410 / Ubuntu 16.04.

لا تزال تواجه نفس المشكلة هنا ولكن "config.gpu_options.allow_growth = True" لا يحل المشكلة. يحدث على كل من TF-gpu 1.14.1 و TF-gpu 2.0. RTX1070 ، CUDA 10.0 ، Ubuntu 18.04 ، برنامج تشغيل Nvidia 430.09.

تجعلني أوصاف المشكلات التي تراها أعتقد أن (إصدار معين من) cuDNN يحاول تخصيص ذاكرة GPU عند إنشاء المقبض. إذا كان TensorFlow قد أخذ بالفعل كل الذاكرة (إما لأن config.gpu_options.allow_growth = false ، أو per_process_gpu_memory_fraction قريبة من 1.0) فلا يوجد ذاكرة متبقية لتخصيصها لـ cuDNN.

يمكنك تأكيد ذلك عن طريق تشغيل TensorFlow من خلال nvprof وإنشاء تتبع API لفحص استدعاء cuMemAlloc الفاشل.

يبدو أن المشكلة رقم 6698 تناقش نفس المشكلة. لاحظ بعض الأشخاص أنهم استخدموا بطريق الخطأ إصدار cuDNN لا يتطابق مع إصدار CUDA الخاص بهم. هل يمكنك التحقق من أنك تستخدم cuDNN لـ CUDA 10 عند التشغيل باستخدام CUDA 10؟

تبين أنه لم يكن لدي cuDNN مثبتًا بشكل صحيح لأنني أحمق رائع. حصلت عليه ، وأعد تثبيت TF2 ليلا ، وأضاف الخطوط للسماح بالنمو ، وكل شيء جيد.

كيفية حذف Cudatoolkit و cudnn من Conda؟

نظرًا لأن cudnn المضمنة (أو المضمنة) في Anaconda لديها الخطأ على النحو التالي ، فأنا أريد إزالة cudatoolkit و cudnn المثبتين من Conda ، وتثبيت CUDA و cudnn مستقلين من موقع Nvidia على الويب.

خطأ: فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا تمت طباعة رسالة سجل تحذير أعلاه.

ومع ذلك ، بينما أستخدم الأوامر على النحو التالي ولكن لا يمكنني إزالتها ، لا يمكنني إزالتها.
conda إزالة - اسم cuda - الكل
conda إزالة - اسم cudnn - الكل

أرى أن وثيقتين تتضمن cudatoolkit-10.0.130-0 و cudnn-7.3.1-cuda10.0.0_0 في المسار كـ
يتبع.

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

كيف يمكنني حذف (أو إزالة) cuda و cudnn المتضمنة (أو المضمنة) في Anaconda.

شكرا لك مقدما،

مايك

@ mikechen66 ما هو ناتج كوندا؟ قد يكون ذلك بسبب اعتماد الحزم الأخرى على cuda و cudnn. لماذا تريد حذفها في المقام الأول؟ إذا كنت ترغب في الحصول على بيئة مخصصة ، فاستخدم المينيكوندا بدلاً من الأناكوندا. Miniconda يأتي فقط مع conda ، وتحتاج إلى تثبيت جميع الحزم التي تحتاجها يدويًا.

مرحبا tydlwav:

شكرا لملاحظاتك. بعد التحقق من توافق الإصدار وتاريخ إصدار المكتبات الأساسية ، قمت بتثبيت بيئات التطوير ذات الصلة ، وقمت بتشغيل رمز اختبار MNIST البسيط وحصلت على المخرجات على النحو التالي.

أعتقد أن Anaconda3 لا يمكنه حتى دعم المكتبات الأساسية في cudnn و TensorFlow. لذلك فهي مشكلة كبيرة من Anaconda3. لذلك أريد حذف مكتبات cudnn خفيفة الوزن من Anaconda واستخدام مكتبات Nvidia cuda و cudnn المستقلة والقوية لتشغيل كود الاختبار. الرجاء المساعدة في إعطاء بعض الاقتراحات.

  1. بيئات التثبيت

انفيديا جي فورس ار تي اكس 2060
برنامج تشغيل الرسومات: NVIDIA-Linux-x86_64-415.27 (15 يناير 2019)
الإصدار الأول الذي يدعم RTX 2060
Anaconda3: Anaconda3-2019.03-Linux-x86_64.sh (2019.04-04)
- كوداتولكيت-10.0.130-0
- cudnn-7.3.1-cuda10.0.0_0
- TensorFlow 13.1
- Juputer Notebook و ipykernel
- تخلفت عن طريق Ananconda3

  1. كود اختبار MNIST:

استيراد كراس
من keras.datasets استيراد mnist
من keras.models استيراد تسلسلي
من keras.layers استيراد كثيف ، تسرب
من keras.layers استيراد Flatten ، MaxPooling2D ، Conv2D
من keras.callbacks استيراد 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.add (Conv2D (32، kernel_size = (3،3)، التنشيط = 'relu'، input_shape = (28،28،1)))
model.add (Conv2D (64، kernel_size = (3،3)، التنشيط = 'relu'))
model.add (MaxPooling2D (pool_size = (2،2)))
model.add (التسرب (0.25))
model.add (تسطيح ())
model.add (كثيف (128 ، التنشيط = 'relu'))
model.add (التسرب (0.5))
model.add (كثيف (n_classes ، التنشيط = 'softmax'))

model.compile (الخسارة = 'categorical_crossentropy' ، المحسن = 'adam' ، المقاييس = ['الدقة'])

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

model.fit (X_train ، y_train ، batch_size = 128 ، فترات = 15 ، مطول = 1 ،
Validation_data = (X_test، y_test)، عمليات رد النداء = [tensor_board])

  1. المخرجات:

باستخدام TensorFlow الخلفية.

تحذير: tensorflow : من /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (من tensorflow.python.framework.ops.ops ) مهمل وستتم إزالته في إصدار مستقبلي.
تعليمات التحديث:
تم التعامل مع Colocations تلقائيًا بواسطة الغرينية.
تحذير: tensorflow : من /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:3445: استدعاء التسرب (من tensorflow.python.ops.nn_ops) مع keep_prob مهملة وستتم إزالتها في إصدار مستقبلي.
تعليمات التحديث:
الرجاء استخدام rate بدلاً من keep_prob . يجب ضبط السعر على rate = 1 - keep_prob .
تحذير: tensorflow : From /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (من tensorflow.python.ops.math_ops ) مهمل وستتم إزالته في إصدار مستقبلي.
تعليمات التحديث:
استخدم tf.cast بدلاً من ذلك.
تدريب على 60000 عينة ، والتحقق من صحة 10000 عينة
الحقبة 15/1

UnknownError Traceback (آخر مكالمة أخيرة)
في
34
35 model.fit (X_train، y_train، batch_size = 128، فترات = 15، مطول = 1،
---> 36 validation_data = (X_test، y_test) ، عمليات رد الاتصال = [tensor_board])

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site -pack / keras / engine / training.py in fit (self، x، y، batch_size، epochs، verbose، callbacks، validation_split، validation_data، shuffle، class_weight ، sample_weight ، initial_epoch ، steps_per_epoch ، Validation_steps ، ** kwargs)
1037 Init_epoch = initial_epoch،
1038 steps_per_epoch = steps_per_epoch ،
-> 1039 Validation_steps = validation_steps)
1040
1041 def تقييم (self، x = None، y = لا شيء،

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site -packs / keras / engine / training_arrays.py in fit_loop (model، f، ins، out_labels، batch_size، epochs، verbose، callbacks، val_f، val_ins، خلط ورق اللعب ، callback_metrics ، initial_epoch ، steps_per_epoch ، Validation_steps)
197 ins_batch [i] = ins_batch [i] .toarray ()
198
-> 199 الرافضة = f (ins_batch)
200 الرافضة = to_list (الرافضة)
201 لـ l ، o in zip (الملصقات الخارجية ، الرافضة):

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site -pack / keras / backend / tensorflow_backend.py in __call __ (self ، inputs)
2713 عودة الذات ._legacy_call (المدخلات)
2714
-> 2715 إرجاع self._call (المدخلات)
2716 آخر:
2717 إذا كان py_any (is_tensor (x) لـ x في المدخلات):

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site -pack / keras / backend / tensorflow_backend.py in _call (self ، inputs)
2673 مجلب = self._callable_fn ( array_vals، run_metadata = self.run_metadata)2674 آخر:-> 2675 تم جلبه = self._callable_fn (array_vals )
تم جلب 2676 [: len (self.outputs)]
2677

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site -pack / tensorflow / python / client / session.py in __call __ (self، args، * kwargs)
1437 ret = tf_session.TF_SessionRunCallable (
1438 الجلسة الذاتية.
-> 1439 run_metadata_ptr)
1440 إذا كان run_metadata:
1441 proto_data = tf_session.TF_GetBuffer (run_metadata_ptr)

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site -pack / tensorflow / python / framework / errors_impl.py في __exit __ (self، type_arg، value_arg، traceback_arg)
526 لا شيء ، لا شيء
527 موافقا. as_text (c_api.TF_Message (self.status.status)) ،
-> 528 c_api.TF_GetCode (self.status.status))
529 # احذف كائن الحالة الأساسي من الذاكرة وإلا سيبقى على قيد الحياة
530 # حيث يوجد إشارة إلى الحالة من هذا التتبع بسبب

خطأ غير معروف: فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا تمت طباعة رسالة سجل تحذير أعلاه.
[[{{node conv2d_1 / convolution}}]]
[[{{node metrics / acc / Mean}}]]

مرحبا tydlwav:

أستخدم الأمر التالي لإلغاء تثبيت كل من cuda و cudnn. ومع ذلك ، لا تزال كلتا المكتبتين موجودتين في Anaconda3 على الرغم من أنها لا تعمل في الوقت الحالي. أعتقد أن Anaconda3 يعتزم حماية المكتبات الأساسية حتى لا تتم إزالتها. قد تكون القدرة الأساسية لـ Continuum حتى يعتقد أنه يحتوي على أخطاء. سأحاول استخدام إما Independent Nvdia cuda (uncluding nvcc) و cudnn أو العثور على cuda أو cudnn الجديد مع conda ليتم تثبيته.

أمر إلغاء التثبيت:

conda إلغاء تثبيت cudatoolkit

جمع البيانات الوصفية للحزمة: تم
حل البيئة: تم

خطة الحزمة

موقع البيئة: / home / mike / anaconda3 / envs / tf-gpu

المواصفات التي تمت إزالتها:
- cudatoolkit

ستتم إزالة الحزم التالية:

cudatoolkit-10.0.130-0
cudnn-7.3.1-cuda10.0_0
كوبتي-10.0.130-0
كيراس 2.2.4-0
tensorflow-1.13.1-gpu_py37hc158e3b_0
tensorflow-base-1.13.1-gpu_py37h8d69cac_0
تينسورفلو- gpu-1.13.1-h0d30ee6_0

المضي قدما ([ص] / ن)؟ ذ

تجهيز المعاملة: تم
التحقق من المعاملة: تم
تنفيذ المعاملة: تم

ملاحظات:

بعد أن قمت بإلغاء تثبيت كل منهما ، أظهر Jupyter Notebook "No mudule اسمه" tensorflow ". وهذا يعني أن إلغاء العزل ناجح. ومع ذلك ، لا يزال كل من cudatoolkit و cudnn موجودًا في Anaconda3. وأعتقد أن Continuum يفترض عدم حذفهما بالرغم من لهم لا يعمل.

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

لقد قمت بالفعل بإزالتها. الملفات الموجودة في pkgs مخصصة للتثبيت. هذه هي ذاكرة التخزين المؤقت التي تم تنزيلها للتثبيت. أيضا ، هذا ليس المكان المناسب لمناقشة قضايا بيئة كوندا. انها ليست ذات صلة بهذه القضية. قد ترغب في محاولة تجاوز سعة المكدس.

أنا مرتبك قليلاً من حالة هذه المشكلة. أنا أستخدم RTX 2080 و cuda 10.1 و cudnn v7.5.1.10 و Tensorflow 1.14.

باستخدام عمل السماح بالنمو حول الأعمال ، ولكن ربما لدي إصدار مختلف غير متطابق؟

هل سيكون هناك إصلاح لهذا في Tensorflow 1.14؟

شكرا لك

شكر. أرى مشكلة التوافق بين سلسلة RTX 20XX Turing و TensorFlow و Anaconda. من الواضح أن سلسلة RTX 20XX تدعم cudnn 7.5.0 ، TensorFlow تدعم فقط cudnn 7.4 ، لكن Anaconda تتضمن 7.3.1 مبسطة ، وهو عدم تطابق كلي بين البائعين الثلاثة. بالإضافة إلى ذلك ، تواجه سلسلة RTX 20XX مشكلة توافق كبيرة مع Ubuntu 16.04 LTS. في بعض الأحيان ، تحطمت Ubuntu 16.04. اضطررت إلى إحضار قرصي USB قابلين للتمهيد لإعادة تثبيت نظام التشغيل. لذلك ، قمت بترقية جهازي كمبيوتر إلى Ubuntu 18.04 LTS وقمت بتثبيت Miniconda. ثم سأحاول إصدار أعلى من Tensorflow.

ملاحظات:

تمتلك Nvidia نظام Ubuntu 18.04 LTS المخصص الخاص بها لمنصة Jetson TX1 / TX2 و Jetson Nano Mobile GPU. يبدو أن Nvidia تحدد منتجاتها الجديدة مثل سلسلة RTX 20XX المتوافقة مع Ubuntu 18.04 LTS بدلاً من الإصدار الأقل من Ubuntu 16.04. ومع ذلك ، لا أعرف ما إذا كانت Continuum لديها خطة ترقية لسلسلة Nvidia RTX 20XX Turing.

سلسلة RTX مدعومة جيدًا حتى الآن. لقد استخدمت tf مع RTX 2070 من خلال بيئة كوندا على توزيع غير ubuntu. يجب أن يكون هذا هو السيناريو الأسوأ ، ولا يزال يعمل بشكل جيد. Cuda و cudnn متوافقان مع الإصدارات السابقة ، ولا ينبغي أن يكون هناك مشكلة إذا كنت تستخدم الإصدارات الأحدث. يجب عليك ببساطة إنشاء بيئة Python 3.6 جديدة باستخدام conda create -n tf python==3.6.8 وتشغيل conda install tensorflow-gpu .

هذا شيء رائع لقد جمعت من المصدر ولدي عملاء يعملون مع Tensorflow 1.12.0 CUDA 10.0 و CUDNN 7.4.2.24 على معظم الأجهزة ، لكنني واجهت مشكلات مع عدد قليل من العملاء الذين يستخدمون بطاقات RTX مع CNN مع cudnn على وحدة معالجة الرسومات. ربما قمت بحزم CUDNN الخاطئ عن طريق الخطأ لـ CUDA 9.0 ، حيث تمت تسمية الملفات بنفس الاسم.

هل يمكن لأي شخص أن يؤكد أن هذه الإصدارات تعمل على RTX2080 وبطاقات تورينج الأخرى؟

مرحبا tydlwav:

لقد قمت بتثبيت Miniconda وبيئة python و tensorflow ذات الصلة وفقًا لاقتراحك. لا يزال بها الخطأ: فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة .......
الرجاء المساعدة في إيجاد حل.

يرجى الاطلاع على الخطوات التي عملت بها.

  1. قم بتثبيت الثعبان 3.6.8 وفقًا لإرشاداتك.
    كوندا يخلق -n tf python == 3.6.8

  2. تفعيل tf
    كوندا تفعيل tf

  3. قم بتثبيت tensorflow-gpu في بيئة tf وفقًا لإرشاداتك.
    كوندا تثبيت tensorflow-gpu

تتضمن الحزمة المثبتة cudatoolkit و cudnn على النحو التالي.
.................................................. ..................................................
cudatoolkit pkgs / main / linux-64 :: cudatoolkit-10.0.130-0
cudnn pkgs / main / linux-64 :: cudnn-7.3.1-cuda10.0_0
.................................................. ..................................................

  1. تثبيت دفتر jupyter ، ipykernel والبيئة ذات الصلة على صفحة الويب.

1). تثبيت دفتر jupyter
كوندا تثبيت دفتر jupyter

2). تثبيت ipykernel على أساس دفتر jupyter
كوندا تثبيت ipykernel jupyter

3). قم بإنشاء TensorFlow-GPU في صفحة الويب الخاصة بدفتر jupyter
تثبيت python -m ipykernel - المستخدم - الاسم tf-gpu - اسم العرض "TensorFlow-GPU"

  1. افتح دفتر jupyter
    1). الأمر في صفحة ويب دفتر jupyter
    دفتر jupyter

2). انقر فوق TensorFlow-GPU
أثناء النقر في القائمة "جديد" واختيار "TensorFlow-GPU" في صفحة الويب ، تظهر الخلية في صفحة الويب الخاصة بدفتر jupyter. يتم سرد صفحة الويب على النحو التالي.
http: // localhost : 8888 / notebooks / Untitled3.ipynb؟ kernel_name = tf-gpu

  1. لصق قم بتشغيل رمز اختبار MNIST البسيط

استيراد كراس
من keras.datasets استيراد mnist
من keras.models استيراد تسلسلي
من keras.layers استيراد كثيف ، تسرب
من keras.layers استيراد Flatten ، MaxPooling2D ، Conv2D
من keras.callbacks استيراد 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.add (Conv2D (32، kernel_size = (3،3)، التنشيط = 'relu'، input_shape = (28،28،1)))
model.add (Conv2D (64، kernel_size = (3،3)، التنشيط = 'relu'))
model.add (MaxPooling2D (pool_size = (2،2)))
model.add (التسرب (0.25))
model.add (تسطيح ())
model.add (كثيف (128 ، التنشيط = 'relu'))
model.add (التسرب (0.5))
model.add (كثيف (n_classes ، التنشيط = 'softmax'))

model.compile (الخسارة = 'categorical_crossentropy' ، المحسن = 'adam' ، المقاييس = ['الدقة'])

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

model.fit (X_train ، y_train ، batch_size = 128 ، فترات = 15 ، مطول = 1 ،
Validation_data = (X_test، y_test)، عمليات رد النداء = [tensor_board])

  1. أخطاء مثل الرسالة الأخيرة:

خطأ غير معروف: فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا تمت طباعة رسالة سجل تحذير أعلاه.
[[{{node conv2d_1 / convolution}}]]
[[{{node metrics / acc / Mean}}]]

شكر،

مايك

مرحبا tydlwav:

بالمناسبة ، قمت أيضًا بتثبيت keras بالأمر التالي.
كوندا تثبيت keras-gpu

منذ أن كان التثبيت صحيحًا ، لقد حصلت على الخطأ. لذلك أفترض أنها مشكلة توافق الإصدار بين سلسلة Miniconda و RTX20XX Turing. الخطأ هو نفسه أناكوندا. أعرف أن إصدار cudnn و cuda في Miniconda و Anaconda متماثلان.

هذا مثير للاهتمام إلى حد ما. حصلت على cuda 10 و cudnn7.3 يعملان مع Conda منذ حوالي شهر ونصف. لم أستخدم Tensorflow منذ ذلك الحين. إذا لم ينجح الأمر بالنسبة لك ، فيمكنك البناء من المصدر. الذي يعمل دائما بالنسبة لي. إذا كنت بدأت للتو ، فإنني أوصي باستخدام pytorch. سيكون لديك وقت أسهل في التثبيت وتشغيل الأشياء.

مرحبا tydlwav:

سأحاول الطريقة الأخرى مثل pytorch. الآن بعد أن أصدرت Google tensorflow-gpu 1.14 ، هل يمكنني استخدام Miniconda لتثبيت tensorflow-gpu 1.14 مستقل على موقع Google Tensorflow على النحو التالي.

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

ملاحظات:

تحتوي Conda على عمليات بناء tensorflow-gpu فقط من 1.0.1 إلى 1.13.1 على النحو التالي. البنيات قديمة جدًا لدرجة أن البنايات لم تتمكن من اللحاق بـ Google TensorFlow الرسمي وسلسلة Nvidia GeForce RTX 20XX الرسمية (2060 ~ 2080) Truing.

أمر:
البحث عن كوندا tensorflow-gpu

قنوات التحميل: انتهى

اسم الإصدار بناء القناة
tensorflow-gpu 1.0.1 py27_4 pkgs / free
tensorflow-gpu 1.0.1 py35_4 pkgs / free
tensorflow-gpu 1.0.1 py36_4 pkgs / free
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 / free
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

إنها ليست قديمة ، حيث استخدمت إصدار conda من tf 1.12 مع RTX 2070. الأجهزة الجديدة عادةً ما تكون متوافقة مع الإصدارات السابقة ، ولا يختلف RTX. من المرجح أن هناك مشكلة بيئية غريبة قيد التشغيل. لا يمكنني الوصول إلى جهاز RTX حتى يوليو ، لذا لا يمكنني المساعدة في الاختبار الآن. يجب أن يحل البناء من المصدر مشكلتك. لم أفشل مطلقًا في تشغيل convnets من tf المبني من المصدر (بافتراض أن لديك التكوينات الصحيحة أثناء الإنشاء).

مرة أخرى ، ليس هذا هو المكان المناسب لمناقشة مسألة توزيع Tensorflow. يمكنك إنشاء منشور على مكدس الفائض أو reddit وربطه هنا. سيتمكن المزيد من الأشخاص من رؤيته ومساعدتك بهذه الطريقة.

مشكلتك ليست خطأ ، وهي بالتأكيد ليست ما تناقشه هذه القضية.

chsigg تقوم بتشخيص أن هذه مشكلة مع محاولة CUDNN تخصيص موارد ذاكرة GPU التي خصصها Tensorflow بالفعل ويبدو أنها صحيحة بالنسبة لي. كان تعيين per_process_gpu_memory_fraction=0.9 بدلاً من 0.95 كافيًا لحل مشكلاتي.

كنت أواجه هذه المشكلة أيضًا. تم إصلاحه عن طريق تحديث cuDNN إلى الإصدار 7.6.

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

Tensorflow-GPU: 1.13.1
كودا: 10.0
CuDNN: 7.3.1

أيضًا ، تم تثبيت tensorflow و CuDNN بواسطة Conda.
conda list cudnn

cudnn                     7.3.1                cuda10.0_0    anaconda

الأشياء التي فعلتها:

  1. تم إلغاء تثبيت Conda Tensorflow.
    conda remove tensorflow
  2. إلغاء تثبيت conda cuDNN
    conda remove cudnn
  3. قم بتثبيت Tensorflow مع النقطة
    pip install tensorflow
  4. قم بتنزيل ملف cuDNN 7.6 وقت التشغيل المطابق من https://developer.nvidia.com/cudnn
  5. قم بتثبيته بـ sudo dpkg -i libcudnn_xxxxx_amd64.deb

nluehr أي تعليق؟ هل يمكننا جعل إصدار MinSystemMemory () cuda / cudnn مدركًا؟

يعد خطأ في الذاكرة شرعيًا ، إذا كنت تستخدم tf.keras ، فقم بما يلي في أعلى الملف
التكوين = tf.ConfigProto ()
config.gpu_options.allow_growth = صحيح
tf.keras.backend.set_session (tf.Session (config = config))

واجهت هذه المشكلة أيضًا ، وتمكنت من حلها باستخدام حل @ va-andrew ، وعلى وجه التحديد ، استخدمت تطبيقcolinsteidtmann ، حيث أنني أستخدم بعض وظائف tensorflow.keras في الكود الخاص بي. لقد قضيت وقتًا طويلاً في محاولة تصحيح هذه المشكلة ، لذا أشكركما على مساهماتكما.

تحرير: كنت أبحث فقط في وثائق tensorflow (https://www.tensorflow.org/guide/using_gpu) ، ويمكنك أيضًا إخباره بالسماح بنمو الذاكرة عن طريق تعيين متغير البيئة TF_FORCE_GPU_ALLOW_GROWTH على true. تقول أيضًا أن هذا التكوين خاص بالنظام الأساسي ، لذلك YMMV (يعمل معي مع Ubuntu 18.04).

كمرجع ، أنا أدير:
Ubuntu 18.04.2 LTS و Gigabyte GeForce RTX 2080 Turbo و NVIDIA driver 430.26 و CUDA 10.0.130 و cuDNN 7.4.2.24 و tensorflow-gpu 1.13.1 و python 3.6. أقوم بتشغيل Tensorflow من داخل بيئة افتراضية ، باستخدام spyder 3.3.4.

لدي جهاز كمبيوتر ثانٍ بنفس الجهاز بالضبط ، وقمت بإعداده باتباع نفس مجموعة التعليمات ، واستخدمت نفس الملفات لإجراء التثبيت ، وواجهت هذه المشكلة على هذا الجهاز أيضًا. لا عجب هناك.

لدي جهاز كمبيوتر ثالث به نفس الجهاز بالضبط ، باستثناء أنه يحتوي على 2080 Ti بدلاً من 2080 ، وقمت بإعداده باتباع نفس مجموعة التعليمات ، واستخدمت نفس الملفات مرة أخرى لإجراء التثبيت. لكن هذه المرة ، لم تكن هناك مشكلة.

لذلك ، قادني إلى الاعتقاد بأنه لا يتعلق ببعض التعارض بين CUDA و cuDNN وإصدار برنامج التشغيل ؛ لم يتم التثبيت بشكل غير صحيح ، إلخ. بدلاً من ذلك ، إنه مرتبط بنموذج بطاقة الفيديو ؛ لقد رأيت فقط ذكرًا لهذه المشكلة مع RTX 2060 و 2070 و 2080.

لحسن الحظ ، لا يمثل استخدام الحل البديل مشكلة كبيرة.

كنت أواجه هذه المشكلة أيضًا. تم إصلاحه عن طريق تحديث cuDNN إلى الإصدار 7.6.

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

Tensorflow: 1.13.1
كودا: 10.0
CuDNN: 7.3.1

أيضًا ، تم تثبيت tensorflow و CuDNN بواسطة Conda.
conda list cudnn

cudnn                     7.3.1                cuda10.0_0    anaconda

الأشياء التي فعلتها:

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 بعد قيامك بالتحديث ، هل أنت متأكد من أنك تعمل على وحدة معالجة الرسومات الخاصة بك ، وليس وحدة المعالجة المركزية؟ يبدو أنك تستخدم وحدة معالجة الرسومات قبل إجراء التحديث الخاص بك (بسبب رسالة الخطأ التي تشير إلى cuDNN) ، لكني أتساءل بعد ذلك. يمكنك استخدام "pip install tensorflow" ، ولكن يجب أن يكون "pip install tensorflow-gpu" ، أليس كذلك؟ أيضًا ، قلت إنك تستخدم CUDA 10 ، لكن ملف cuDNN deb الذي أدرجته مخصص لـ cuda9.0 ، لذلك لا ينبغي أن يعمل.

لذلك ، أعتقد أنه قد يكون الأمر أنك لا تستخدم بالفعل وحدة معالجة الرسومات (GPU) ، وبالتالي فهي ليست دليلاً على أن التحديث إلى cuDNN 7.6 يحل المشكلة.

@ synapse8 أنت محق تمامًا بشأن إصدار tensorflow-gpu و cuDNN. أنا أيضًا في حيرة من أمري بسبب تعليقي الآن ، ولا أتذكر التفاصيل بعد الآن. على أي حال ، فيما يلي الإصدارات الحالية في نظامي.

pip show tensorflow-gpu
الاسم: tensorflow-gpu
الإصدار: 1.13.1

nvidia-smi
NVIDIA-SMI 430.26 إصدار برنامج التشغيل: 430.26 إصدار CUDA: 10.2

sudo apt search cudnn | grep installed
libcudnn7 / الآن 7.6.0.64-1 + cuda10.0 amd64

@ alexforever86 بالتكوين الذي ذكرته الآن هل ما زلت ترى هذه المشكلة؟ (أفترض أنه يعمل من أجلك). لقد قمت مؤخرًا بتثبيت نظام به cuda10 و 410 driver و 7.6 cudnn و TF-gpu 1.14 (تثبيت النقطة) ولم أر المشكلة.

@ robzor92 لقد كنت أستخدم tensorflow-gpu 1.13 ، وبدافع الفضول ، قمت للتو بتثبيت 1.14 لاختبار ما إذا كان هذا قد أدى إلى حل المشكلة (بالنسبة لي). ما زلت أتلقى الخطأ ، ولا يزال يتعين علي القيام بحل "السماح بالنمو" (مرة أخرى ، ليس بهذه الصفقة الكبيرة).

أي بطاقة فيديو تستعمل؟

@ synapse8 جربتها باستخدام GTX 1070.

@ synapse8 لقد جربت أيضًا نموذج الشفرة الذي قدمه مُنشئ الخيط هذا الآن ، لقد

@ robzor92 أشك في أن مشكلة 1050Ti تكمن في حجم VRAM الصغير. ستواجه بطاقات RTX هذا في طرز CNN MNIST الأساسية. أشك في أن تعديل NVIDIA لتخصيص VRAM على بطاقات RTX أفسد الأمور بطريقة ما.

لدي نفس الخطأ في tensorflow 1.14.0 و RTX2080. لكن في حالتي ، يحدث هذا الخطأ فقط عندما أستخدم طبقة الالتفاف.

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.

لقد حاولت config.gpu_options.allow_growth = True ، لكنها لم تحل هذا الخطأ.

اريد ان يساعدني احد.

شكرا لك.

نفس المشكلة مع RTX 2070

لقد قدمت ملاحظة مثيرة للاهتمام بخصوص هذا الأمر ، والتي قد تساعد في تعقب هذا الخطأ أو إيجاد حل قابل للتطبيق:
يظهر لي أيضًا الخطأ Failed to get convolution algorithm بالإشارة إلى Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR .
النظام: جهاز كمبيوتر محمول مع Nvidia Quadro P2000 ، Ubuntu 18.04 ، tf 1.13.1 ، cuda10 ، cudnn 7.4.2
كما ذكرنا ، يمكنني تشغيل البرنامج بسلاسة باستخدام allow_growth ، لذا شكرًا على ذلك ، جيد بما يكفي بالنسبة لي.

مثير للاهتمام: أحصل على هذا الخطأ فقط عند استخدام tf.layers.conv... ولكن التبديل إلى tf.keras.layers.... يسمح للبرنامج بالعمل بدون allow_growth ، لذلك يبدو أن شيئًا ما في keras يعمل بشكل أفضل مما هو عليه في كود tf. ربما يمكن لشخص ما استخدام هذه المعلومات لتعقب حل من keras.
أنا متمسك بطبقات tf في الوقت الحالي ، لأنها توفر مشاركة سهلة للوزن من خلال نطاقات متغيرة ، والتي لا تدعمها keras للأسف.

@ DavidS3141 إنه مثير للاهتمام. في حالتي ، طبقة الالتفاف الوحيدة لا تعمل في كل من طبقات tf و tf.keras.layer ...

عندما أستخدم pytorch ، يكون torch.cuda.is_available صحيحًا ويمكنه استخدام طبقة الالتفاف دون أي مشكلة ، لذلك أعتقد أن السبب هو tensorflow ، لكنني لا أعرف ما هو الخطأ.

أتفق مع @ Hayashi-Yudai: الأمر نفسه ينطبق على MXNet. التكوين المتطابق يعمل بشكل جيد عندما يفشل Tensorflow.

بيئة:
RTX2080
Ubuntu 18.10.2 تحديث
سائق 430.26
CUDA 10.0 (أيضًا 10.1 ، والتي لم يتم دعمها بواسطة TF)
cuDNN 7.6.1
mxnet-cu100 1.4.1
tensorflow-gpu 1.14.0

مرحبًا يا رفاق ، أنا أستخدم الأوزان من النموذج المدرب مسبقًا مع ResNet50 العمود الفقري على مجموعة بيانات COCO للتدريب على مجموعة بيانات CSV الخاصة بي. أتلقى هذا الخطأ: غير معروف: فشل الحصول على خوارزمية الالتفاف.
- حجم الدفعة 7 - الخطوات 9 - الأوجه 4
- لقطات مسار اللقطة - لوحة تنسوربورد-دير
csv dataset / train.csv dataset / class.csv حاولت حل المشكلة عن طريق النص التالي في سطر الأوامر في البيئة الافتراضية:
بيثون

استيراد tensorflow

من tensorflow.compat.v1 استيراد ConfigProto
من tensorflow.compat.v1 استيراد InteractiveSession
config = ConfigProto ()
config.gpu_options.allow_growth = صحيح
جلسة = InteractiveSession (config = config)

طالما
استيراد tensorflow مثل tf
التكوين = tf.ConfigProto ()
config.gpu_options.allow_growth = صحيح
Session = tf.Session (config = config) لكنها لم تحل الخطأ الخاص بي:

انا استعمل: -
نظام التشغيل Ubuntu 16.0
كودا: 10.0
Tensorflow 1.14.0

خطأ:
tensorflow.python.framework.errors_impl.UnknownError: تم العثور على 2 خطأ (أخطاء) جذر. │ | لم يتم العثور على عمليات جارية |
(0) غير معروف: فشل الحصول على خوارزمية التفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا كان هناك تحذير │ + ------------------------------- ---------------------------------------------- +
تمت طباعة رسالة السجل أعلاه. │
[[{{node conv1 / convolution}}]] │
[[خسارة / إضافة / _2377]]
(1) غير معروف: فشل الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا كان هناك تحذير │
تمت طباعة رسالة السجل أعلاه. │
[[{{node conv1 / convolution}}]] │
0 عمليات ناجحة. │
تم تجاهل 0 أخطاء مشتقة. │
إنهاء استدعاء بدون استثناء نشط │
تم إحباط (تم تفريغ النواة)
سيكون موضع تقدير أي مساعدة.

نفس المشكلة هنا. يعمل الحل Allow_growth. بخلاف ذلك ، أحصل على هذا الخطأ في مجموعة بيانات MNIST الأساسية Tensorflow.

RTX2060 جوال هنا.

تحدث المشكلة مع tensorflow المترجم من فرع r2.0 بالإضافة إلى TF 1.4 مثبت عبر conda مع conda (tensorflow-gpu).

@ Hayashi-Yudai

حاولت config.gpu_options.allow_growth = صحيح ، لكنه لا يحل هذا الخطأ.

ما هي بالضبط الأوامر التي أضفتها إلى التعليمات البرمجية الخاصة بك؟ جرب ما يلي بدلاً من ذلك إذا كان مختلفًا ...

التكوين = tf.ConfigProto ()
config.gpu_options.allow_growth = صحيح
tf.keras.backend.set_session (tf.Session (config = config))

@ synapse8 شكرا لتعليقك. حاولت لكن النتيجة كانت هي نفسها.

بالمناسبة ، جربت nvidia-docker وسارت بشكل جيد باستثناء أن إصدار python هو 3.5.
https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/running.html#running

معلومات إضافية ، إذا كنت لا تمانع في استخدام python 3.6.8 و tensorflow-gpu 1.12.0 ، فيمكنك استخدام الأناكوندا.

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

لقد اختبرت بناء tf-2.0.0-beta1 من مصادر باستخدام CUDA-10.1 و CUDNN-7.6.2.4 ولم يظهر الخطأ.

يمكنك العثور على صور عامل الإرساء لبناء حزمة tf-gpu وحزمة tf-base هنا:
https://github.com/edowson/docker-tensorflow

لم يكن لدى قناة الأناكوندا cudnn==7.6.2 وقت كتابة هذا التعليق.

Windows 7 ، صدم رأسي بالحائط فوق Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR لفترة طويلة أثناء محاولة الحصول على جهاز جديد.

عمليات إعادة التثبيت ، الكثير من الأشياء الأخرى في هذا الموضوع وغيره من المواضيع لم يتم إصلاحها.

أثناء اختبار عدم وجود cudnn64_7.dll قد يتسبب في حدوث خطأ مختلف عن CUDNN_STATUS_INTERNAL_ERROR قمت بإعادة تسمية dll. كان تأكيد الخطأ بدلاً من ذلك خطأ من النوع CUDNN NOT INSTALLED ، فقمت بفك تغيير اسم الملف.

بطريقة سحرية ، بدأ كل شيء يعمل.

لا فكرة لماذا أو كيف ، لكنها تفعل. نأمل أن هذا يساعد شخص آخر. إذا لم يكن الأمر كذلك ، فلن يستغرق الأمر سوى بضع ثوانٍ للمحاولة.

لقد اكتشفت أن سبب هذه المشكلة هو إجراء مكالمتين عن طريق الخطأ إلى tf.Session

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

# several lines of code later...

sess = tf.Session(config=config)

ربما ليس السبب الجذري لمعظم الناس ولكن قد يكون من المفيد البحث عنه.

مجرد مشاركة "allow_growth = True" يحل المشكلة لنظامي أدناه
RTX 2080ti ، ubuntu18.04 ، cuda9.0 ، cudnn7 ، tf1.9

التكوين = tf.ConfigProto ()
config.gpu_options.allow_growth = صحيح
جلسة = tf.Session (config = config)

يتعلق الأمر بجزء الذاكرة المتاح لتحميل موارد GPU لإنشاء مقبض cudnn ، والمعروف أيضًا باسم per_process_gpu_memory_fraction .
سيؤدي تقليل جزء الذاكرة هذا بنفسك إلى حل الخطأ.

> 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])

استخدم جزء صغير بقدر ما يتناسب مع ذاكرتك. (في الكود ، أستخدم 0.7 ، يمكنك أن تبدأ بـ 0.3 أو أصغر ، ثم تزيد حتى تحصل على نفس الخطأ ، هذا هو الحد الأقصى.)
قم بتمريرها إلى tf.Session() أو tf.train.MonitoredTrainingSession() أو المشرف sv.managed_session() كإعداد.

يجب أن يسمح هذا لوحدة معالجة الرسومات الخاصة بك بإنشاء مقبض cudnn لرمز TensorFlow الخاص بك.

كما هو موضح هنا ، فإن النهج الجديد في TF 2.0 لإعداد 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)

مع مقتطف الشفرة هذا و TF 2.0 RC1 ، لم يعد يظهر الخطأ.
ومع ذلك ، نظرًا لعدد الأشخاص الذين لديهم 20XX Nvidia GPU ، أعتقد أنه سيكون من الجيد معالجة هذه المشكلة محليًا قبل إصدار الإصدار النهائي من TF 2.0.

واجهت نفس المشكلة مع 1080Ti و TitanX على TF1.4 والاقتراحات من @ va-andrew و oscarlinux أنقذت اليوم! وهو ما يذكرني في المقام الأول لماذا تحولت إلى pytorch ولم أعود أبدًا. لسوء الحظ ، لا يزال هناك ppl يستخدم TF .... لذلك لا يزال يتعين علي أن أعاني من هذا الألم عندما أستخدم قاعدة الرموز الخاصة بهم ... ربما حان الوقت للعب قليلاً مع ONNX.

بالنسبة لأي شخص آخر يجد هذا بعد الترقية إلى tensorflow 2.0 ، تختلف واجهة برمجة التطبيقات (API) والكود قليلاً.

أوبونتو 18
Tensorflow 2.0
Tensorflow-GPU 2.0
GeForce RTX 2070

كود محدث لهذا النظام.

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

هذا الحل نجح معي (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)

أضف نقطة بيانات إضافية:
rtx 2080ti ، ubuntu18.04 ، cuda10.0 ، cudnn7
في حالتي ، لا يعمل مع أي من tf1.14 و 1.15rc3

@ w4nderlust ، بالنسبة إلى 1.14 و 1.15 ، سترغب في الاستمرار في تعيين خيار تكوين الجلسة config.gpu_options.allow_growth = True . هل هذا ما تقوم بالإبلاغ عنه لا يعمل ، أم مجرد آلية tf.config.experimental ؟

@ w4nderlust ، بالنسبة إلى 1.14 و 1.15 ، سترغب في الاستمرار في تعيين خيار تكوين الجلسة config.gpu_options.allow_growth = True . هل هذا ما تقوم بالإبلاغ عنه لا يعمل ، أم مجرد آلية tf.config.experimental ؟

عذرًا ، كان ينبغي أن يكون الأمر أكثر دقة ، فأنا أبلغ أنه بدون config.gpu_options.allow_growth = True لا يزال لا يعمل في التكوين الخاص بي مع 1.14 و 1.15rc3.

أعتقد أنني وجدت حلاً أفضل من config.gpu_options.allow_growth = True .

بالنسبة للإعداد الخاص بي (_RTX 2070_، docker image _tensorflow: 1.15.0-gpu-py3_) ، فإن إعداد التكوين كما هو موضح أدناه يتجنب _CUDNN_STATUS_INTERNAL_ERROR_ مع الاستمرار في تخصيص ذاكرة GPU بالكامل .
هذا مفيد جدًا للنماذج الكبيرة التي لا تتناسب مع الذاكرة في الوضع allow_growth ولكنها تناسبها فقط عندما يتم تخصيص الذاكرة بالكامل.

لتخصيص الذاكرة بالكامل على RTX:
config.gpu_options.per_process_gpu_memory_fraction = 1.0

لتخصيص الذاكرة بالكامل على RTX:
config.gpu_options.per_process_gpu_memory_fraction = 1.0

تضمين التغريدة
لقد جربت هذا مع TF 2.0 ولا يبدو أنه يعمل.
Ubuntu18.04 ، RTX 2080 ، CUDA10 ، cudnn 7.6.

بالنسبة إلى TF 2.0 ، تم تغيير واجهة برمجة التطبيقات للحد من استخدام ذاكرة وحدة معالجة الرسومات.

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 هل تفهم لماذا لا تظهر هذه المشكلة إلا على RTX؟ هل يمكن أن يكون ذلك بسبب وجود تطبيقات أخرى تستخدمه كشاشة عرض GPU بالتزامن مع TensorFlow؟

من الصعب بالنسبة لي تصحيح هذا الخطأ مباشرة لأنني لا أستطيع الوصول إلى وحدة معالجة الرسومات RTX.

sanjoy أنا أقوم بتشغيل العرض على

حاولت استخدام ذلك لـ tensorflow 2.0:

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

إنه يعمل على إصلاح خطأ cudnn على جهاز rtx2080 ، لكن التدريب يكون بنفس سرعة 1050Ti على الكمبيوتر المحمول الخاص بي!
أثناء تدريب 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 |
+-----------------------------------------------------------------------------+

مضيفا

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

لم تحل المشكلة ، بدون allow_growth ، أتلقى خطأ cudnn ، وعلى أي حال فإن RTX الخاص بي يستخدم شيئًا مثل 3Gb أو الذاكرة فقط.

اي فكرة ؟

حاولت

    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)])

لكن cudnn لا يزال يلقي خطأ

أحصل أيضًا على هذا الخطأ وهو يعمل في صورة Tensorflow 1.15.0-py3-gpu Docker (Ubuntu 18.04) مع وحدتي GPU من Titan V (@ sanjoy) - وليس RTXs. ومع ذلك ، يبدو أن هذا الخطأ يحدث فقط بالنسبة لي على GPU0 الخاص بي الذي يحتوي على Xorg و gnome-shell باستخدام ذاكرة GPU0 بينما يحتوي GPU1 فقط على python باستخدام ذاكرة GPU ولا يرمي هذا الخطأ. الخطأ أيضًا متقطع للأسف - في بعض الأحيان سأكون قادرًا على إزالة حاوية عامل الإرساء ، وإعادة إنشائها بنفس الإعدادات ونفس الرمز ، ثم يختفي الخطأ. أم لا.

تمكنت من إصلاحه باستخدام واجهة Keras الخلفية مع:

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)

فيما يلي nvidia-smi الخاص بي على كلا وحدات معالجة الرسومات

+-----------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------+

أواجه نفس المشكلة مثل clementpoiret مع تثبيت TF 2.0 عبر conda. باستخدام علامة allow_growth تختفي المشكلة ولكن هذا أيضًا يجعل التدريب بطيئًا جدًا وأبطأ مما كان لدي في TF 1.x ... هل أنت حريص أولاً؟

clementpoiret و EKami ، هل config.gpu_options.allow_growth = True بـ config.gpu_options.per_process_gpu_memory_fraction = 0.8 ؟ يمكنك تجربة لمعرفة الكسر الذي يحقق أقصى استفادة من وحدة معالجة الرسومات الخاصة بك.

@ synapse8 لا أرى شيئًا مكافئًا في وثائق tensorflow 2.0 ، هل من طريقة للقيام بذلك باستخدام tf.config.experimental؟

تحرير: سأحاول ضبط الذاكرة بهذه الطريقة ، لمعرفة ما إذا كان يتم حل المشكلة:

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)

بهذه الطريقة يمكننا ببساطة الاتصال بـ setup_gpus(True, .9)

clementpoiret : يرجى ملاحظة أن المكالمة tf.config.experimental.set_memory_growth غير ضرورية لأن tf.config.experimental.set_virtual_device_configuration يتجاوز هذا العلم لأنه يقطع ذاكرة GPU ويخصص الذاكرة المخصصة مسبقًا.

لا تقتصر هذه المشكلة على RTX. أو TF 2.0.

مضيفا:
_ من tensorflow.compat.v1 ، قم باستيراد ConfigProto
من tensorflow.compat.v1 استيراد InteractiveSession
config = ConfigProto ()
config.gpu_options.allow_growth = صحيح
جلسة = InteractiveSession (config = config) _

يحل مشكلة "تعذر إنشاء مؤشر cudnn: CUDNN_STATUS_INTERNAL_ERROR" مع البيئة على النحو التالي:

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
هل يمكن أن تكون هذه مشكلة تخصيص كتلة متجاورة مع برامج تشغيل NVIDIA؟ أين من المقبول تخصيص نفس الحجم الإجمالي للذاكرة ولكن في كتل أصغر؟

مرحبا،

لا يمكنني إعادة إنتاج هذا على جهازي ، لذا سأحتاج إلى بعض المساعدة في التسبب في ذلك. هل لدينا شخص هنا يمكنه إعادة إنتاج المشكلة وهو على استعداد للقيام ببعض التصحيح العملي؟

كنقطة بداية ، أود أن أفهم لماذا لا يحتفظ MinSystemMemory بذاكرة كافية لـ cuDNN. إذا كان هناك شخص ما لديه إعداد يقوم بإعادة إنتاج هذه المشكلة ، فيمكنه إضافة بعض التسجيل (كصحيح محلي) لاكتشاف مقدار الذاكرة التي يتم إرجاعها بواسطة MinSystemMemory والتي ستكون رائعة. وهل زيادة الرقم السحري 0.05 في MinSystemMemory يساعد الموقف؟

sanjoy لدي نسخة تعرض هذه المشكلة. كيف يمكنني الوصول إلى MinSystemMemory أو "تعيين الرقم السحري 0.05"؟ لقد عدت إلى استخدام cuda 9.1 في الغالب ، لكنني لا أمانع في تجربة بعض الأشياء.

odinsbane ، سيتعين عليك إنشاء TensorFlow من المصدر للقيام بما أقترحه أدناه.

الخطوة الأولى هي إضافة خطوط LOG(INFO) أو std::cerr إلى MinSystemMemory لطباعة available_memory وقيمة الإرجاع من MinSystemMemory . هل توافق available_memory مع ما يُطبع nvidia-smi ؟ ما مقدار الذاكرة التي نتركها للنظام؟

ثانيًا ، هل زيادة الرقم السحري 0.05 إلى ، على سبيل المثال ، 0.07 مساعدة على الإطلاق؟

هذا واحد يعمل! شكرا يا رفاق!

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)

نواجه مشكلة مماثلة في RTX 2070 (Ubuntu 18.04، TF2) لقد جربنا مجموعات مختلفة من إصدارات CUDA 10.0 و libcudnn7.xxx ، لكن الخطأ يستمر في الظهور مرة أخرى.
على جهاز آخر لدينا GTX 1080ti وهذا الجهاز يعمل بدون مشكلة.
سائق nvidia هو 430.50 في كلتا الحالتين.

لا ينتج عن tf.keras.utils.plot_model ، قمت بإزالته ولا يزال هذا الخطأ يظهر ، ولكن بشكل أقل تكرارًا.
تحديث: أجد أن هذا يحدث فقط عندما أستخدم tf.keras.utils.plot_model . سوف نستمر في المحاولة.

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

لدي مشكلة مماثلة مع RTX 2080 Ti على Ubuntu 18.04.3 LTS ، tf 1.15 ، cuda 10.0.

الغريب في حالتي هو أن هذا يحدث فقط من حين لآخر ، وبمجرد حدوثه ، سيستمر من دقائق إلى ساعات ثم يختفي من تلقاء نفسه .

لقد جربت جميع الحلول المذكورة أعلاه ولا يمكن لأي منها إصلاحها على الفور. حاولت ألا أفعل شيئًا وانتظر فقط ، سيختفي أخيرًا.

كما جربته ولم أذكره أعلاه:

  1. إزالة الدليل ~/.nv
  2. ببساطة أعد التشغيل

لمعلوماتك ، سجلات الأخطاء

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.

نحن نواجه القضايا ذات الصلة

خصائص النظام

  • نظام التشغيل Ubuntu 18.04.3 LTS
  • RTX 2070
  • بيثون 3.7.1
  • tf-gpu 2.0.0
  • V10.0.130 كودا
  • libcudnn7 7.6.2

يظهر الخطأ عندما أحاول استخدام LSTM و GRU و RNN وما إلى ذلك.

خطأ فعلي

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]

مشكلة ظاهرة

كما يبدو ، فإن كل ذاكرتي تتآكل بسرعة كبيرة. يبدو أن المشاكل تظهر فقط في وضع gpu ، نفس الكود يعمل بشكل جيد مع وحدة المعالجة المركزية

المحاكمات

  • تسمح بنمو الذاكرة
  • إنشاء جهاز افتراضي بذاكرة محدودة

كلا المحاولتين تنتج نفس الخطأ.

أيه أفكار؟

لا يمكنني إحراز تقدم بشأن هذه المشكلة لأنني لا أستطيع إعادة إنتاجها. إذا كنت قادرًا على إعادة إنتاج هذا بشكل موثوق على جهازك ، فيمكنك المساعدة ؛ إليك الكيفية: https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -560963770 ، https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750

لا يمكنني إحراز تقدم بشأن هذه المشكلة لأنني لا أستطيع إعادة إنتاجها. إذا كنت قادرًا على إعادة إنتاج هذا بشكل موثوق على جهازك ، فيمكنك المساعدة ؛ وإليك الطريقة: # 24496 (تعليق) ، # 24496 (تعليق)

مرحبًا @ sanjoy ، أنا على استعداد تام للمساعدة ، لكن لسوء الحظ قد لا أستطيع إنشاء tf من المصدر لأنني أستخدم خصائص جامعتي لإجراء تجاربي وجهاز الكمبيوتر المحمول الخاص بي غير مجهز

لقد وجدت الكود التالي في Stack overflow ، هل يمكن أن يساعد؟

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))

هل هناك أي طرق أخرى نحتاجها للحصول على السجل؟

سوف أتحقق من كشف حساب VLOG للحصول على هذه المعلومات. بمجرد الانتهاء من ذلك ، هل ستكون قادرًا على تثبيت وإعادة إنتاج هذا باستخدام tf-nightly (مع بعض العلامات الإضافية ، سأعلمك بالضبط أي منها)؟

بالتأكيد ، يمكنني تثبيت حزمة على هذا الكمبيوتر إذا كانت متوفرة على pip أو conda وأنا أستخدم بيئة افتراضية. سأحاول إعادة إنتاج الخطأ.

بالتأكيد ، يمكنني تثبيت حزمة على هذا الكمبيوتر إذا كانت متوفرة على pip أو conda وأنا أستخدم بيئة افتراضية. سأحاول إعادة إنتاج الخطأ.

هل يمكنك من فضلك تثبيت tf-nightly (بحيث يلتقط الالتزام الذي يضيف التسجيل) وتشغيله باستخدام متغير البيئة TF_CPP_VMODULE مضبوطًا على gpu_device=5 ؟ يجب أن يطبع سطرين مثل

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                                              

هل يمكنك الإبلاغ عن هذه الأرقام هنا؟

عذرًا ، الكود الخاص بي الحالي غير متوافق مع tf 2.0 (أستخدم 1.15) ، أحاول تحديثه. من فضلك أعطني بعض الوقت.

يبدو أن هذه المشكلة مرتبطة بـ RTX2080 ، لديّ GTX1080 سطح المكتب ، كل شيء يبدو على ما يرام ، ثم أستخدم conda استنساخ بيئة كوندا في دفتر RTX2080 الخاص بي ، وأستخدم tensorflow2.0.0-gpu. بمجرد استخدام كود التطبيق Conv2d، LSTM، GRU ثم تأتي هذه المشكلة.
قبل استخدام الرموز التالية لحل هذه المشكلة:
gpus = tf.config.experimental.list_physical_devices ("GPU")
إذا كان gpus:
محاولة:

حاليًا ، يجب أن يكون نمو الذاكرة هو نفسه عبر وحدات معالجة الرسومات

    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)

ولكن منذ عدة أيام مضت ، لم تعد الطريقة المذكورة أعلاه تعمل

أواجه نفس المشكلة مع gtx 960m

مرحبًا sanjoy ، لقد تلقيت للتو هذا الناتج:

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

مرحبًا sanjoy ، لقد تلقيت للتو هذا الناتج:

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

شكر!

لسوء الحظ ، لم يساعد هذا كثيرًا كما اعتقدت. إذا قمت بربط MinSystemMemory على بناء محلي بـ 542015488 (على سبيل المثال min_system_memory = std::min(min_system_memory, 542015488ll) ) يبدو أنه يعمل بشكل جيد ، ولا أحصل على أي أخطاء من cuDNN .

sanjoy أنا قادر (في الغالب باستمرار) على إعادة

الرسائل ذات الصلة من آخر ليلة:

مع نمو الذاكرة المسموح به صراحة

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

بدون أي تغييرات على تكوين جهاز GPU

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



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



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

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

تحرير: معلومات النموذج ، إذا كانت تساعد.

__________________________________________________________________________________________________
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

مثال بسيط باستخدام TF 1.15 ، وأنا أتلقى هذا الخطأ. على RTX 2070 و NVIDIA 440.44 و CUDA الإصدار 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.

أريد أن أشير في مشكلة منفصلة https://github.com/tensorflow/tensorflow/issues/36501 إلى أنه أثناء استخدام هذه الخيارات يمكّن الكود من العمل ، مع ملاحظة استخدام الذاكرة الفعلي لوحدات معالجة الرسومات يوضح أنه ليس كذلك بالفعل القيام بالاستخدام المتزايد للذاكرة. لذا فإن الخيار أعلاه يصلح الخطأ ، لكنه لا يفعل ما يدعي أنه يفعله. اعتدت على استخدام نفس النموذج مرة أخرى في إصدارات TF القديمة مثل 1.2 ... إلخ ، وكان هؤلاء يقومون بتخصيص فعلي متزايد للذاكرة.

لدي نفس المشاكل مثل الجميع هنا! بعد تثبيت tf 2.1 ، لم أستطع الحصول على مثال MNIST بسيط للتشغيل دون إضافة نمو الذاكرة إلى وحدة معالجة الرسومات. أنا استخدم 2080 ti .

المشكلة الرئيسية التي أواجهها هي أنه لا يمكنني تشغيل tensorflow-probability مع tf 2.1 دون الحصول على الخطأ الداخلي CUDNN ، حتى مع إضافة نمو الذاكرة إلى الكود. لقد حاولت تثبيت tf 2.0 و CUDA 10.0 و CUDA 10.1 ، إصدارات مختلفة من CUDNN. تمكنت من إصلاح مثال MNIST البسيط للعمل بدون النمو بعد إعادة تثبيت ubuntu تمامًا ولكن ليس مثال احتمالية tensorflow. لقد حاولت أخيرًا استخدام عامل إرساء ليلي رسمي Tensorflow وما زلت أحصل على نفس الخطأ عند استخدام احتمال تدفق tensorflow (tf 2.2 داخل الحاوية). كل شيء يعمل بشكل جيد على وحدة المعالجة المركزية. لقد حاولت أيضًا تشغيل نفس عامل الإرساء على جهاز مع 1080 ti وقد نجح ذلك ... هناك بالتأكيد خطأ ما في سلسلة RTX أشعر به.

خطأ مع tf docker ومثال احتمال تدفق tensorflow ومعلومات تصحيح cudnn الإضافية

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

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

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

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

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

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

Function call stack:
distributed_function

sanjoy لدي نفس المشكلة مع RTX 2080 ويمكنني البناء من المصدر إذا لزم الأمر.

odinsbane ، سيتعين عليك إنشاء TensorFlow من المصدر للقيام بما أقترحه أدناه.

الخطوة الأولى هي إضافة خطوط LOG(INFO) أو std::cerr إلى MinSystemMemory لطباعة available_memory وقيمة الإرجاع من MinSystemMemory . هل توافق available_memory مع ما يُطبع nvidia-smi ؟ ما مقدار الذاكرة التي نتركها للنظام؟

ثانيًا ، هل زيادة الرقم السحري 0.05 إلى ، على سبيل المثال ، 0.07 مساعدة على الإطلاق؟

يمكن أن تؤكد أن البناء من المصدر بتغيير الرقم السحري 0.05 الرقم السحري إلى 0.1 يبدو أنه يحل المشكلة (على الأقل لـ 1.15.2)!

في محيط من المنشورات الصاخبة ، يبدو الحد الأدنى للرقم السحري لذاكرة النظام منطقيًا تمامًا. شكرا للمشاركة!

chsigg أي اقتراحات؟ ربما يمكننا محاولة تهيئة مكتبات cuDNN و cuBLAS ومكتبات NVIDIA الأخرى قبل أن نحتفظ بكامل ذاكرة GPU؟

يمكننا أيضًا محاولة تمكين allow_growth افتراضيًا ، لكن هذا سيستغرق بعض الوقت.

يبدو أن هذه المشكلة مرتبطة بـ RTX2080 ، لديّ GTX1080 سطح المكتب ، كل شيء يبدو على ما يرام ، ثم أستخدم conda استنساخ بيئة كوندا في دفتر RTX2080 الخاص بي ، وأستخدم tensorflow2.0.0-gpu. بمجرد استخدام كود التطبيق Conv2d، LSTM، GRU ثم تأتي هذه المشكلة.
قبل استخدام الرموز التالية لحل هذه المشكلة:
gpus = tf.config.experimental.list_physical_devices ("GPU")
إذا كان gpus:
محاولة:

حاليًا ، يجب أن يكون نمو الذاكرة هو نفسه عبر وحدات معالجة الرسومات

    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)

ولكن منذ عدة أيام مضت ، لم تعد الطريقة المذكورة أعلاه تعمل

لقد حاولت تشغيل رمز تصنيف الصور الأساسي لبرنامج lambda Tensorflow2 لعدة أيام والحصول على نفس خطأ مقبض cudnn حتى جربت الحل الخاص بك. يتم تشغيله الآن أخيرًا على RTX 2070 Max Q ويستخدم الحد الأدنى من ذاكرة GPU.

أنا أيضا أواجه هذه المشكلة
anacondacloud تثبيت tensorflow-gpu2.0

rtx2070s
tensorflow-gpu.2.0.0
كودا 10.0.13
cudnn 7.6.5
تعذر إنشاء مؤشر cudnn: CUDNN_STATUS_INTERNAL_ERROR
فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا تمت طباعة رسالة سجل تحذير أعلاه.

أنا أيضا أواجه هذه المشكلة
anacondacloud تثبيت tensorflow-gpu2.0

rtx2070s
tensorflow-gpu.2.0.0
كودا 10.0.13
cudnn 7.6.5
تعذر إنشاء مؤشر cudnn: CUDNN_STATUS_INTERNAL_ERROR
فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا تمت طباعة رسالة سجل تحذير أعلاه.

هل أدخلت:

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)

في الجزء العلوي من رمز الدخول الخاص بك؟

بعد مرور بعض الوقت ، جربت مشكلة مختلفة على ما يبدو مع فشل tf.signal.stft
لقد جئت أخيرًا عبر هذا الخيط وجربت الحل الذي يسمح بنمو الذاكرة. لقد حلت مشكلتي ايضا
لقد قمت بتثبيت tensorflow-gpu = 2.1 مع cudatoolkit = 10.1 من أناكوندا ، لكنني حاولت أيضًا التثبيت
tensorflow-gpu عبر نقطة بنفس النتيجة بالضبط. يمكنني إعادة إنتاج هذا في نظام التشغيل linux-ubuntu 18.04 و debian 9.12 باستخدام البطاقات

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

لقد جربت أيضًا بطاقتين أخريين في معملنا

  GeForce GTX 1080 Ti
  TITAN Xp COLLECTORS EDITION

حيث تعمل الشفرة بشكل جيد مع وبدون السماح بنمو الذاكرة

مشكلتي البسيطة أدناه. ومن المثير للاهتمام أن المشكلة ليست conv2d. يمكنني تغيير ترتيب هذه الأوامر الثلاثة ويكون دائمًا الثالث الذي يفشل فيه أحد.

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")

أنا أيضا واجهت هذه المشكلة
anacondacloud تثبيت tensorflow-gpu2.0
rtx2070s
tensorflow-gpu.2.0.0
كودا 10.0.13
cudnn 7.6.5
تعذر إنشاء مقبض cudnn: CUDNN_STATUS_INTERNAL_ERROR
تعذر الحصول على خوارزمية الالتفاف. قد يكون هذا بسبب فشل cuDNN في التهيئة ، لذا يرجى محاولة معرفة ما إذا كانت هناك رسائل سجل تحذير مطبوعة أعلاه.

هل أدخلت:

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)

في الجزء العلوي من الرمز الذي أدخلته؟

نعم ، لقد حللت هذه المشكلة بهذه الطريقة. شكرا !!

واجهت نفس المشكلة وكان الحل هو allow_growth = True . ولكن بالنسبة لـ TensorFlow 2 ، من أجل القيام بذلك ، يجب إضافة الأسطر التالية:

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

بفضل المستخدم opcecco في هذه المشكلة: https://github.com/tensorflow/tensorflow/issues/25446

ومن المثير للاهتمام أن المشكلة ليست conv2d. يمكنني تغيير ترتيب هذه الأوامر الثلاثة ويكون دائمًا الثالث الذي يفشل فيه أحد.

roebel هل يمكنك إرفاق سجلات لبضعة تباديل مختلف؟

وماذا يحدث إذا قمت بتغيير البرنامج إلى (قل):

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")

هل لا يزال الفشل يحدث عند conv2d أم أنه يحدث عند stft الثالث؟

sanjoy تأكد هنا من أن هناك ثلاثة أشكال مختلفة من البرنامج النصي أعلاه تغيير ترتيب الأوامر ومتغير رابع يبدأ بـ 4 stft وينتهي بـ conv2d

تستخدم السجلات الأربعة المختلفة البرنامج النصي من
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -593098386
استبدال الأسطر الأربعة الأخيرة.

باختصار ، النتائج حسب الترتيب:

stft-> blas-> conv2d فشل عند تنفيذ conv2d
conv2d-> stft-> blas فشل عند تنفيذ stft (لذلك ليس الثالث ، لكن يبدو أن blas قد تم تحميله بالفعل لـ conv2d
matmul-> conv2d-> stft فشل عند تنفيذ STFT
stft -> - stft -> - stft-> stft-> matmul-> فشل conv2d عند تنفيذ conv2d. يرجى الاطلاع على السجلات أدناه.

لا تمانع في طلب المتغيرات الأخرى إذا لزم الأمر.

conv2d الأخير:

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

log.conv2d.last.txt

matmul الماضي

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

log.matmul.last.txt

stft الماضي

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

log.stft.last.txt

4 stft 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")

log.multi_stft.first.txt

شكرا جزيلا

لدي نفس المشكلة مع التكوين التالي:
تم تثبيت TensorFlow من (المصدر أو الثنائي): r1.13.1 ، r.1.13.2 ، r1.14
إصدار Python: 3.6.1
إصدار Bazel (إذا كان التجميع من المصدر):
إصدار GCC / Compiler (إذا كان التجميع من المصدر):
إصدار CUDA / cuDNN: CUDA 10 مع cuDNN 7.4.1
طراز وحدة معالجة الرسومات والذاكرة: RTX 2070 8 جيجابايت.

لقد عالجت هذه المشكلة مع:
تم تثبيت TensorFlow من (مصدر أو ثنائي): r1.12.0
إصدار Python: 3.6.9
إصدار GCC / Compiler: 4.8.1
إصدار CUDA / cuDNN: CUDA 9.0 مع cuDNN 7.1.4
طراز وحدة معالجة الرسومات والذاكرة: RTX 2070 8 جيجابايت.
نأمل أن تكون مفيدة لك

لقد واجهت أيضًا مثل هذه المشكلة ، والتي تم حلها عن طريق إضافة متغير بيئة TF_FORCE_GPU_ALLOW_GROWTH = صحيح.

التكوين هو كما يلي:
نظام التشغيل Windows 10
تم تجميع Tensorflow من المصدر r2.0
بازل: 0.26.1
مترجم C ++: MSVC 2017
كودا: 10
cuDNN: 7.6.5

Intel4930 cpu، nvidia titan XP pascal
Ubuntu 18.04.4 ، أحدث إصدار من miniconda ،
`! قائمة Conda | يعطي grep "cud"

    cudatoolkit               10.1.243             h6bb024c_0  
    cudnn                     7.6.5                cuda10.1_0  

`! قائمة Conda | grep "tensor" `يعطي

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  

الخلية الأولى في دفتر Jupyter هي:

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)

النموذج عبارة عن ترميز تلقائي متغير مع إجمالي المعلمات: 112،269
يعطي x_train.shape ، y_train.shape ، x_test.shape ، y_test.shape
((106496, 32, 32, 1), (106496,), (12288, 32, 32, 1), (12288,))

الكود يشمل:

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))

وفشلت. عروض وحدة التحكم

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

أنا أستخدم بدلاً من الخلية الأولى كما هو مذكور أعلاه

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)

ثم أحصل على هذا الخطأ


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?

ومن المثير للاهتمام ، خلال معاناتي ، تلقيت رسالة من علامة حمراء "ممنوع الدخول" في شريط القوائم الخاص بي والتي تقول "خطأ كسر العد لديك تبعية غير مستوفاة"
قمت بتشغيل تحديث البرنامج ويريد إزالة libcudnn7-dev و libcudnn7-doc
بالإضافة إلى ترقية 57 مكتبة أخرى لها علاقة بنظام Linux

تحرير: بعد إعادة التشغيل ، يبدو أن النموذج يتدرب بنجاح باستخدام هذا:

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)

أو هذا:

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)

استخدام الذاكرة على وحدة معالجة الرسومات <700 ميجابايت مع حجم الدفعة 16 و
~ 1 غيغابايت مع حجم دفعة 256 (التي تدرب 3x أسرع)

لقد حاولت التجميع من المصدر ، لكنني واجهت نفس المشكلة. تمكنت أخيرًا من إصلاح مشكلتي وهي تعيين config.gpu_options.allow_growth = True .

ولكن إذا واجهت هذه المشكلة في سطر الأوامر ، كيف يمكنني إضافة هذه الرموز؟

أنا أيضا أواجه هذه المشكلة
anacondacloud تثبيت tensorflow-gpu2.0
rtx2070s
tensorflow-gpu.2.0.0
كودا 10.0.13
cudnn 7.6.5
تعذر إنشاء مؤشر cudnn: CUDNN_STATUS_INTERNAL_ERROR
فشل في الحصول على خوارزمية الالتفاف. ربما يكون هذا بسبب فشل cuDNN في التهيئة ، لذا حاول البحث لمعرفة ما إذا تمت طباعة رسالة سجل تحذير أعلاه.

هل أدخلت:

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)

في الجزء العلوي من رمز الدخول الخاص بك؟

كان لدي نفس المشكلة بالضبط أعلاه. Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

الحل من robosmith يصلح مشكلتي تمامًا!

المواصفات الخاصة بي:
RTX 2070
نظام التشغيل Ubuntu 18.04 LTE
Tensorflow 2.1.0
Keras 2.3.0
cudnn 7.6.5
10.1.0
كوندا 4.8.3
بيثون 3.7.7

بنيت عبر conda install tensorflow-gpu keras

شكرا جزيلا لك! هذه هي المرة الأولى التي أحصل فيها على TF-2 للعمل على الإطلاق! وتوقف TF-1 عن العمل تمامًا ، ولهذا قررت الترقية و "رؤية ما سيحدث"!

شكرا لك!

config.gpu_options.allow_growth = صحيح

عند استخدام tensorflow 2.0 ، يمكنك استخدام ملفات
tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
هذا الرمز بعد import tensorflow as tf ولكن قبل الرمز الخاص بك.

لقد حاولت التجميع من المصدر ، لكنني واجهت نفس المشكلة. تمكنت أخيرًا من إصلاح مشكلتي وهي تعيين config.gpu_options.allow_growth = True .

تتم مشاركة هذا الرمز لجعله متاحًا بشكل أسرع لمستخدمي Tensorflow و keras.
مصدر من هنا

# 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

أردت فقط التناغم والقول إن المشكلة لا تزال قائمة ؛

المواصفات الخاصة بي:
نظام التشغيل Ubuntu 20.04.0
NVIDIA RTX 2070
Nvidia_driver 440.64.0
Tensorflow-gpu 2.0.1 (مثبت من خلال conda ، الذي يقوم تلقائيًا بتثبيت Cudatoolkit و CuDNN في نفس البيئة)
كوداتولكيت 10.1.243.0
cudnn 7.6.5

تم حل المشكلة عن طريق tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)

ومع ذلك ، يبدو هذا وكأنه حل بديل أكثر من كونه إصلاحًا فعليًا ، ولدى الكثير من الأشخاص بطاقات 20XX هذه الأيام. ربما يجب أن يكون هناك تحديث يتم فيه معالجة هذه المشكلة.

تحديث: نظرًا لأنني أقوم بالتمهيد المزدوج ، فقد حاولت التحقق من وجود Windows أيضًا. استمرت المشكلة هناك.
نظام التشغيل Windows 10
برنامج تشغيل Nvidia 445.87.0
بخلاف ذلك كل شيء متشابه

أدى تثبيت أحدث برنامج تشغيل (445.87) لجهاز RTX 2080 إلى حل هذه المشكلة بالنسبة لي.

NBouman هذا مثير للاهتمام ولكن بالنسبة لي على Ubuntu 18.04 مع GeForce GTX 1050 TI ، لقد قمت للتو بالتحديث لآخر برنامج تشغيل متوفر 440.82. لا يزال السماح بنمو الذاكرة مطلوبًا لجعلها تعمل.

أدى تثبيت أحدث برنامج تشغيل (445.87) لجهاز RTX 2080 إلى حل هذه المشكلة بالنسبة لي.

NBouman ما هو نظام التشغيل الذي تستخدمه؟ أنا على Ubuntu 20.40 ، وأحدث برنامج تشغيل يمكن أن أجده هو 440.82 ، ومثل roebel ، استمرت المشكلة.

roebeleduardoscsouza أنا على ويندوز 10 مع الجهاز الذي كان في وقت سابق من هذه المسألة.

أردت فقط التناغم والقول إن المشكلة لا تزال قائمة ؛

المواصفات الخاصة بي:
نظام التشغيل Ubuntu 20.04.0
NVIDIA RTX 2070
Nvidia_driver 440.64.0
Tensorflow-gpu 2.0.1 (مثبت من خلال conda ، الذي يقوم تلقائيًا بتثبيت Cudatoolkit و CuDNN في نفس البيئة)
كوداتولكيت 10.1.243.0
cudnn 7.6.5

تم حل المشكلة عن طريق tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)

ومع ذلك ، يبدو هذا وكأنه حل بديل أكثر من كونه إصلاحًا فعليًا ، ولدى الكثير من الأشخاص بطاقات 20XX هذه الأيام. ربما يجب أن يكون هناك تحديث يتم فيه معالجة هذه المشكلة.

تحديث: نظرًا لأنني أقوم بالتمهيد المزدوج ، فقد حاولت التحقق من وجود Windows أيضًا. استمرت المشكلة هناك.
نظام التشغيل Windows 10
برنامج تشغيل Nvidia 445.87.0
بخلاف ذلك كل شيء متشابه

بالنسبة لـ Tensorflow 2.0.0 ، تم العمل مع:
tf.config.experimental.set_memory_growth(tf.config.experimental.list_physical_devices('GPU')[0],True)

شكرا لك!!! الآلاف من الشكر !!!!!!!!!!!!!!!

نظام التشغيل: ubuntu 18.04 لتر

إصدار برنامج التشغيل: 435.21.0

كودا: cudatoolkit 10.1

CUDNN: cudnn-7.6.5-cuda10.1_0

لقد استخدمت أناكوندا لتثبيت Tensorflow

conda create -n tf-gpu tensorflow-gpu

يتم تثبيت cudatoolkit و cudnn تلقائيًا بواسطة anaconda من خلال الأمر السابق.

لدي نفس السؤال الخطأ:

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}}]]

لذلك لدينا هنا مشكلة لم يتم حلها (إلى جانب حل بديل يتعارض مع التوصيات الرسمية بعدم استخدام نمو الذاكرة لمعالجة الذاكرة بشكل أكثر كفاءة). لم يكن هناك الكثير من ردود الفعل من قبل فريق التطوير. أتساءل لماذا؟

يبدو أن هذا الخطأ يؤثر على مجموعة متنوعة من إصدارات tensorflow (1.13 ، 2.0 ، 2.1) ، إذا رأيت بشكل صحيح تم الإبلاغ عن حدوث جميع المشكلات مع cuda 10. يعمل الكود جيدًا على العديد من البطاقات ولكن ليس على بطاقات أخرى.
هل يمكن لشخص من فريق التطوير أن يخبرنا ما إذا كان هذا يشير إلى مشكلة في برنامج تشغيل cuda أكثر من طبقة tensorflow؟ في هذه الحالة ، سيكون من المفيد بالتأكيد إرسال تقرير الخطأ إلى صفحات دعم NVIDIA. أليس كذلك؟

هل يمكن لشخص من فريق تطوير tensorflow التعليق على كيفية رؤيتهم لهذا الخطأ؟ هل هناك أي شخص يبحث في هذا؟

هل قام الأشخاص بالتحقق مما إذا كان هناك مكتبتان مشتركتان CuDNN 7 على المسار أو مسار مكتبة LD. لا توجد أرقام ثانوية أو أرقام تصحيح في هذه المكتبة ولكن عدم تطابق الإصدار يمكن أن يؤدي إلى رسالة الخطأ هذه.

فتحت تقرير خطأ في NVIDIA ، وسأخبرك بما ينتج عن ذلك.

تضمين التغريدة
في الواقع ، هناك العديد من إصدارات libcudnn المثبتة ، كل anaconda env لها نسختها الخاصة.
عادةً ما يتم تثبيت الأناكوندا مع إعداد rpath بشكل صحيح ، لذا من الصعب جدًا عدم الحصول على المكتبات الصحيحة.

لقد قمت بعمل دعامة واستحوذت على المكتبات التي تفتح عندما تفشل
إنها تأتي باستمرار من anaconda env dir الذي يستضيف حزمة tensorflow (انظر أدناه).
إلى جانب libcuda ، هذا هو الإصدار 440.82 والذي قمت بتجميعه باستخدام مثبت NVIDIA.

يمكنني تعيين LD_LIBRARY_PATH إلى أحد الأعداد الأخرى من anaconda env lib dirs مع مجموعات cudatoolkits مختلفة و libcudnn مختلف ، يبقى التتبع كما هو.
لاحظ أيضًا أنه ليس lbcudnn هو الذي يطرح المشكلة. إنها دائمًا مكتبة libcuxyz الثالثة
مستخدمة وهذا فقط على وحدات معالجة رسومات محددة (لقد استخدمت نفس البرنامج النصي للتثبيت على أجهزة مختلفة مع وحدات معالجة رسومات مختلفة ، والبعض الآخر لا يعمل) ويعملون جميعًا إذا تم تمكين نمو الذاكرة.

(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

حصلت على نفس المشكلة على Ubuntu 20.04 مع GeForce RTX 2060 SUPER. NN مع طبقات كثيفة يعمل بشكل جيد. ولكن مع طبقات CNN ، أحصل على 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.
لا تحدث إضافة tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) أي اختلاف في الخطأ.
لقد تابعت التثبيت وفقًا لـ https://www.tensorflow.org/install/gpu و nvidia-smi يظهر:
Driver Version: 440.64.00 CUDA Version: 10.2
كوندا إنفتي لديه:

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

في حالة كوندا مع tf 1.15 ، أحصل على نفس الخطأ. سيكون من الرائع أن يتم إصلاح هذا.

تحديث

بعد استخدام export TF_FORCE_GPU_ALLOW_GROWTH=true كل شيء يعمل. كان لدي انطباع بأن tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) سيكون لنفس الشيء ، لكن هذا ليس هو الحال. أعتقد أنه يجب ذكر ذلك بوضوح على صفحة ويب دعم وحدة معالجة الرسومات TensorFlow.

تضمين التغريدة
في الواقع ، هناك العديد من إصدارات libcudnn المثبتة ، كل anaconda env لها نسختها الخاصة.
عادةً ما يتم تثبيت الأناكوندا مع إعداد rpath بشكل صحيح ، لذا من الصعب جدًا عدم الحصول على المكتبات الصحيحة.

لقد قمت بعمل دعامة واستحوذت على المكتبات التي تفتح عندما تفشل
إنها تأتي باستمرار من anaconda env dir الذي يستضيف حزمة tensorflow (انظر أدناه).
إلى جانب libcuda ، هذا هو الإصدار 440.82 والذي قمت بتجميعه باستخدام مثبت NVIDIA.

يمكنني تعيين LD_LIBRARY_PATH إلى أحد الأعداد الأخرى من anaconda env lib dirs مع مجموعات cudatoolkits مختلفة و libcudnn مختلف ، يبقى التتبع كما هو.
لاحظ أيضًا أنه ليس lbcudnn هو الذي يطرح المشكلة. إنها دائمًا مكتبة libcuxyz الثالثة
مستخدمة وهذا فقط على وحدات معالجة رسومات محددة (لقد استخدمت نفس البرنامج النصي للتثبيت على أجهزة مختلفة مع وحدات معالجة رسومات مختلفة ، والبعض الآخر لا يعمل) ويعملون جميعًا إذا تم تمكين نمو الذاكرة.

(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

لذا فأنت نوعاً ما توضح نقطتي أن libcudnn.so.7 لا يقول أن 7.XXX.YYY فوق ذلك 7.XXX.YYY له تبعية إضافية على CUDA 10.2 10.1 10.0 9.2 9.1 9.0 إلخ

لم أر الخطأ منذ أن بدأت في إدارة المسار جيدًا وإدارة مقدار الذاكرة المتاحة قبل تهيئة رسم بياني بحجم معروف والتأكد من أن وحدة معالجة الرسومات المستهدفة تستخدم فقط ذاكرة كافية للرسم البياني وذاكرة كافية للاستعلام عن مقدار CUDA الذاكرة متاحة.

أعتقد أنها مشكلة موارد. ما مقدار الذاكرة المتوفرة عند بدء العملية وما مقدار الذاكرة التي يستخدمها الرسم البياني؟

@ kognat-docs

لذا فأنت نوعاً ما توضح وجهة نظري libcudnn.so.7 لا تقول 7.XXX.YYY فوق ذلك 7.XXX.YYY له اعتماد إضافي على CUDA 10.2 10.1 10.0 9.2 9.1 9.0 إلخ

كان السؤال الذي طرحته هو "هل كان الأشخاص يتحققون مما إذا كان هناك مكتبتان مشتركتان CuDNN 7 على المسار أو مسار مكتبة LD". وكان جوابي: لقد تحققت من هذا ، هناك واحد فقط.
لقد أرسلت لك التتبع.

لم أر الخطأ منذ أن بدأت إدارة المسار

ماذا تقصد بإدارة المسار؟
أنا دائما أدير مساراتي! لقد قمت بتثبيت بيئة conda التي تحققت من أنها متسقة! كل شيء كما تم تعبئته بواسطة الأناكوندا ، لقد تحققت من هذا.

على أي حال ، قد تعتقد أنني غبي جدًا ، لدرجة أنني لا أستطيع إنشاء أناكوندا. حسنا
لقد قمت الآن بتنزيل صورة عامل الميناء الرسمية

tensorflow / t إنسورفلو: 2.1.0-gpu-py3.0

وتشغيل البرنامج النصي الخاص بي هناك. إنه يتعطل إذا لم يكن لدي

تصدير TF_FORCE_GPU_ALLOW_GROWTH = صحيح

هل يمكنني إدارة المسارات بشكل أفضل؟

وإدارة مقدار الذاكرة المتاحة قبل تهيئة رسم بياني بحجم معروف والتأكد من أن وحدة معالجة الرسومات المستهدفة تستخدم فقط ذاكرة كافية للرسم البياني وذاكرة كافية للاستعلام عن حجم ذاكرة CUDA المتاحة

أعتقد أنها مشكلة موارد. ما مقدار الذاكرة المتوفرة عند بدء العملية وما مقدار الذاكرة التي يستخدمها الرسم البياني؟

كما كتبت أعلاه في تقريري لا يوجد رسم بياني (أو الأفضل القول أنه لا يكاد يوجد رسم بياني)! لقد قمت بتشغيل هذه الأسطر الأربعة

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")

ويتعطل. إذا قمت بتغيير ترتيب الأسطر الثلاثة ، فإنه دائمًا ما يتعطل بعد هذه العمليات الثلاث (لقد أوضحت هذا في تقرير الخطأ الخاص بي).

من أجل المتعة فقط ، قمت بحساب البايت: هناك <83 كيلو بايت من ذاكرة البيانات المطلوبة. وحدة معالجة الرسومات فارغة ، ولا أستخدمها للرسومات ، ولا توجد عمليات أخرى تعمل عليها. على الأنظمة المختلفة ، يتوفر 4 جيجابايت أو 11 جيجابايت! إلى جانب أنني أعرف كيفية تشغيل nvidia-smi! إذن البطاقة فارغة ما زلت لا أستطيع تشغيل هذه الأسطر الأربعة التي تتطلب 84 كيلوبايت!

لمعلوماتك فقط ، يبدو خطأ بسبب استنفاد الذاكرة بشكل مختلف تمامًا ، ولدي هذه أيضًا. بالنسبة إلى الرسوم البيانية الحقيقية الخاصة بي ، فأنا قادر تمامًا على اكتشافها والتفاعل وفقًا لذلك.

شكرا لجهودك على أي حال.

roebel هل رأيت تعليق @ sanjoy s حول تصحيح الأخطاء من cpp https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750؟

لم أتمكن من إعادة تجميع Tensorflow وتجربته. نسختهم تتحرك بسرعة كبيرة وسوف يستغرق الأمر مني بعض الشيء لإعداد وتجميع كل شيء. بالإضافة إلى ذلك ، فقد 1.15 دعمًا لإصدار مجلس التعاون الخليجي الذي أستخدمه ، ولم يتلق 1.13 أي تحديثات ، لذا كان من غير المجدي إلى حد ما بالنسبة لي تصحيح هذا على أي حال.

roebel لم أتذكر سبب المشكلة بالنسبة لك.

انظر هذا https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -480549043

ولهذا السبب اعتقدت أنها تتعلق بالذاكرة ، لم تؤثر هذه المشكلة عليّ لبعض الوقت ، ولا مستخدمي برنامجي على مجموعة متنوعة من الأنظمة الأساسية.

تضمين التغريدة

نعم ، أفهم أنه إذا كان هناك خطأ يبدو أنه ناتج عن حالة معينة فقط.

تضمين التغريدة

شكرا لا لم ألاحظ ذلك. سأرى ما إذا كنت تمكنت من تجميع أحدث إصدار tf2.2.0.

في الواقع ، جربت عامل الإرساء مع tensorflow 2.2 ، وهو يستخدم نفس الإصدار من cuda 10.1 ولديه نفس المشكلة.

اعتقدت أن هذه كانت مشكلة Windows فقط ، لذا قمت بتثبيت بيئة ubuntu من البداية ، فقط لمعرفة أنها بطاقة الرسومات الخاصة بي (RTX 2080) هي المشكلة. لسوء الحظ ، أعتقد أنني سأختار نظامًا أساسيًا مختلفًا للتعلم الآلي بسبب هذه المشكلة ، حيث يبدو أن هذا يمثل مشكلة منذ عام 2018.

@ kognat-docs

وإدارة مقدار الذاكرة المتاحة قبل تهيئة رسم بياني بحجم معروف والتأكد من أن وحدة معالجة الرسومات المستهدفة تستخدم فقط ذاكرة كافية للرسم البياني وذاكرة كافية للاستعلام عن حجم ذاكرة CUDA المتاحة

أعتقد أنها مشكلة موارد. ما مقدار الذاكرة المتوفرة عند بدء العملية وما مقدار الذاكرة التي يستخدمها الرسم البياني؟

كما كتبت أعلاه في تقريري لا يوجد رسم بياني (أو الأفضل القول أنه لا يكاد يوجد رسم بياني)! لقد قمت بتشغيل هذه الأسطر الأربعة

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")

ويتعطل. إذا قمت بتغيير ترتيب الأسطر الثلاثة ، فإنه دائمًا ما يتعطل بعد هذه العمليات الثلاث (لقد أوضحت هذا في تقرير الخطأ الخاص بي).

من أجل المتعة فقط ، قمت بحساب البايت: هناك <83 كيلو بايت من ذاكرة البيانات المطلوبة. وحدة معالجة الرسومات فارغة ، ولا أستخدمها للرسومات ، ولا توجد عمليات أخرى تعمل عليها. على الأنظمة المختلفة ، يتوفر 4 جيجابايت أو 11 جيجابايت! إلى جانب أنني أعرف كيفية تشغيل nvidia-smi! إذن البطاقة فارغة ما زلت لا أستطيع تشغيل هذه الأسطر الأربعة التي تتطلب 84 كيلوبايت!

هل لاحظت مقدار الذاكرة المستخدمة باستخدام الساعة على nvidia-smi أثناء تشغيل العملية بفاصل زمني قدره 50 مللي ثانية؟

شاهد هذا الإصلاح الذي نجح مع أشخاص آخرين

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

أو يمكنك قراءة الدليل الودي:
https://www.tensorflow.org/guide/gpu#limiting_gpu_memory_growth

لذلك يمكنك إجراء التصحيح دون لمس الكود فقط عن طريق تغيير بيئة وقت التشغيل.

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

تضمين التغريدة

أخبار جيدة!
التالية
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750

أعدت بناء الإصدار 2.1 باستخدام وصفة أناكوندا تينسورفلو من هنا
https://github.com/AnacondaRecipes/tensorflow_recipes

لقد أضفت نسختين من المطبوعات في MinSystemMemory تُظهِر available_memory و min_system_memory.
على نظامي باستخدام GeForce GTX 1050 Ti تعطيل سجل TF القياسي
لقد حصلت على هذا

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 أن وحدة معالجة الرسومات لديها 4040 ميغا بايت ، في هذا النظام يوجد X يعمل على البطاقة التي تحتوي على 13 ميغا بايت لذا تبدو الأرقام جيدة.

تم تعيين min_system_memory مثل هذا

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

لذلك يتم اختيار الحد الأقصى لمقدار الذاكرة على أي حال. بدلاً من ذلك أضفت آلية لفرض min_system_memory عبر متغير البيئة TF_FORCE_MIN_SYSTEM_MEMORY_MB.
ثم الجري

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

حلت المشكلة!

لسوء الحظ ، ليس لدي حاليًا نظام به بطاقة RTX صالحة ولست متأكدًا من متى سيعود هؤلاء للعمل. إذا كان أي شخص يرغب في اختبار ذلك على بطاقة كهذه ، فيمكنني توفير حزمة النقطة ومحتوى بيئة conda لـ ubuntu linux التي يجب تثبيتها لتشغيلها.

لطيفة roebel !

قد يكون من المفيد اقتراح ذلك كطلب سحب وإضافة إلى المستندات.

samhodgesanjoyodinsbane

قد يكون من المفيد اقتراح ذلك كطلب سحب وإضافة إلى المستندات.

بالتأكيد ، ولكن المشكلة تكمن في أن الحل ربما لن يعمل مع البطاقات الأخرى.
بالنسبة لجهاز GTX 1050 ، تبلغ الذاكرة الإجمالية 4 جيجابايت ويتم الاحتفاظ بذاكرة النظام الافتراضية
بواسطة Tensorflow بحد أقصى (300 ميجابايت ، 4 جيجابايت * 0.05). لذلك بالنسبة إلى GTX1050 ، سيكون هذا 300 ميجابايت وهو صغير جدًا على ما يبدو. كما ذكر أعلاه ، أحتاج إلى زيادة حجمها إلى 310 ميغا بايت.

الآن بالنسبة لـ RTX2080 ، تبلغ الذاكرة الإجمالية 11 جيجابايت بحد أقصى (300 ميجابايت ، 11 جيجابايت * 0.05)
سيختار ذاكرة النظام لتكون 550 ميجابايت ، والتي وفقًا لنتائج 1050
يجب أن تكون كافية في العادة

سأتمكن من الوصول إلى وحدات معالجة الرسومات RTX2080 مرة أخرى بحلول نهاية الأسبوع وسأرى
ما وصلت هناك.

samhodgesanjoyodinsbane

أخيرًا ، تمكنت من تشغيل المكتبة المصححة على بطاقات rtx 2080.
كما هو متوقع ، لا يمر الإصدار المصحح. هنا مرة أخرى البرنامج النصي

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")

وهنا مصفوفة available memory الإبلاغ عنها من gpu_device.cc ،
القيمة الافتراضية Min_system_memory كما هو محدد في gpu_device.cc و
min value of the min_system_memory أحتاج إلى تحديد البرنامج النصي لعدم الإحباط:

بطاقة | أفيلميم | ديف MinSysMem | مطلوب MinSysMem
: ------- |: ----------- |: ---------- |: --------------- --------
1050 TI | 4163764224 | 314572800 | 325058560
1080 تي | 11567431680 | 578371584 | 335544320
2080 TI | 11381964800 | 569098240 | 618659840

لذلك ، بينما يقوم 1050 و 1080 بتشغيل البرنامج النصي بنفس حجم الذاكرة تقريبًا
يتطلب RTX2080 ما يقرب من ضعف الذاكرة. هذا لا يبدو جيدا
إلي.

أي اقتراحات ما لمحاولة الحصول على قيمة مماثلة؟

تضمين التغريدة

لقد كافحت مع هذا في تطبيق C ++ الخاص بي لعدد من التكرارات.

ما جاء في النهاية هو التالي.

قم بتشغيل النماذج على وحدة معالجة الرسومات فقط عندما تتوفر ذاكرة كافية لتشغيل النموذج.

لذا فإن مقدار الذاكرة التي سيحتاجها النموذج قابل للقياس الكمي.

لذلك يجب أن يكون لديك ذاكرة GPU كنسبة مئوية تناسب هذا النموذج.

ثم تحتاج أيضًا إلى معرفة مقدار الذاكرة المتوفرة على البطاقة بالضبط قبل تخصيص الذاكرة ، والتي تخضع لظروف السباق ، لأنك لا تعرف ما الذي يستخدم ذاكرة CUDA في نفس الوقت على نظام التشغيل.

لكن بغض النظر عن حالة السباق ، تحتاج أيضًا إلى قياس الذاكرة الخالية.

يتم ذلك باستخدام cudaMemInfo ، والذي يستخدم في حد ذاته الذاكرة.

لذا ، في حالة توفير أن لديك ذاكرة كافية لتشغيل cudaMemInfo مرة واحدة للقياس وتحتاج إلى التأكد من توفر مساحة كافية من الذاكرة لتناسب النموذج وتشغيل cudaMemInfo مرة أخرى ، ثم وفقط ثم يمكنك تخصيص نسبة كافية من VRAM المتوفرة على تلك البطاقة لتشغيل النموذج.

على أي حال ، فإن ما أخذته إلى المنزل من المناغاة العشوائية هو أن cudaMemInfo مطلوب لاستقصاء مقدار الذاكرة المتاحة لتخصيصها والتي في حد ذاتها تستخدم أيضًا بعض تلك الذاكرة المتاحة.

ربما يختلف مقدار الذاكرة المستخدمة بواسطة cudaMemInfo ما على بطاقة تستند إلى Turing مقارنة ببطاقة تستند إلى Pascal ، يمكنني الحصول على شخص من NVIDIA لإلقاء نظرة إذا كنت ترغب في ذلك.

نعم ، لا يمكنني العثور على إشارة إلى cudaMemInfo على الإطلاق ، لكن يبدو أن هذا النوع من البصمة سيكون بحد أقصى 300 ميغا بايت و 5٪ من ذاكرة البطاقة.

إلقاء نظرة على:

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

لا يبدو أنه يستخدم هذا في حد ذاته.

لا أعتقد أننا يجب أن نلعب لعبة القط والفأر مع مقدار الذاكرة التي نحتاجها لحجزها لمكتبات النظام - كما لاحظت ، لا توجد طريقة منهجية لفهم ذلك بشكل صحيح.

بدلاً من ذلك ، يجب أن نحاول IMO تهيئة مكتبات النظام قبل أن تتاح لمخصص BFC الفرصة لتخصيص بقية ذاكرة وحدة معالجة الرسومات.

CC @ chsigg

ربما يجب على المرء القيام بذلك فقط إذا كان السماح بنمو الذاكرة معطلاً. وإلا فستحتاج دائمًا إلى حوالي 580 ميجابايت لعام 2080 حتى لو لم تكن بحاجة إلى جميع المشغلين.

لقد أجريت بعض الاختبارات الإضافية المتعلقة بالحد الأدنى لمتطلبات ذاكرة النظام لتشغيل مجموعات من العمليات الثلاث من حالة الاختبار الخاصة بي. أقارن فقط بين بطاقات 1080 و 2080. لا تجد conv2d وحده لأنه يقوم بتهيئة blas في أي حال. يخرج

وحدة معالجة الرسومات | ماتمول | STFT | Conv2D + MatMUL | ماتمول + STFT | MATMUL + STFT + Conv2D |
: --- |: --- |: --- |: --- |: --- |: ---
1080 | 140 ميغا بايت | 130 ميغا بايت | 290 ميغا بايت | 170 ميغا بايت | 320 ميغا بايت
2080 | 190 ميغا بايت | 190 ميغا بايت | 520 ميغا بايت | 250 ميجا بايت | 580 ميجا بايت

يمكن للمرء أن يرى أنه في عام 2080 يتطلب cuda نفقات إضافية لكل عملية ، وأن هذا الحمل يزيد عند استخدام المزيد من المكتبات. في معظم الحالات ، تكون النفقات العامة هي <100MB ولكنها تصبح >220MB بمجرد تضمين Conv2D ..

إذا كان لدى samhodge اتصال بـ NVIDIA ،

مرحبا جميعا!
لقد قمت بحل مشكلة مماثلة في الحد من نمو الذاكرة ويمكنك المحاولة.

يمكنك العثور على الكود في قسم الحد من نمو الذاكرة

(هذا أول تعليق لي في GitHub)

لدي مشكلة مماثلة من قبل. ساعد الحد من ذاكرة GPU يدويًا. https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167

حصلت على نفس المشكلة على Ubuntu 20.04 مع GeForce RTX 2060 SUPER. NN مع طبقات كثيفة يعمل بشكل جيد. ولكن مع طبقات CNN ، أحصل على 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.
لا تحدث إضافة tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) أي اختلاف في الخطأ.
لقد تابعت التثبيت وفقًا لـ https://www.tensorflow.org/install/gpu و nvidia-smi يظهر:
Driver Version: 440.64.00 CUDA Version: 10.2
كوندا إنفتي لديه:

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

في حالة كوندا مع tf 1.15 ، أحصل على نفس الخطأ. سيكون من الرائع أن يتم إصلاح هذا.

تحديث

بعد استخدام export TF_FORCE_GPU_ALLOW_GROWTH=true كل شيء يعمل. كان لدي انطباع بأن tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) سيكون لنفس الشيء ، لكن هذا ليس هو الحال. أعتقد أنه يجب ذكر ذلك بوضوح على صفحة ويب دعم وحدة معالجة الرسومات TensorFlow.

يا صاح ، حلك ينقذ حياتي.

أصدرت Nvidia للتو برامج تشغيل عرض Linux 440.100 و 450.51 (بيتا).
لقد جربت جهاز 440.100 ، ولم يحل المشكلة. هل جرب أي شخص الإصدار التجريبي 450.51؟

eduardoscsouza

أصدرت Nvidia للتو برامج تشغيل عرض Linux 440.100 و 450.51 (بيتا).
لقد جربت جهاز 440.100 ، ولم يحل المشكلة. هل جرب أي شخص الإصدار التجريبي 450.51؟

حاولت 450.36.06. تحقق من https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167.

الكود الذي يعمل معي:

استيراد tensorflow مثل tf
config = tf.compat.v1.ConfigProto ()
config.gpu_options.allow_growth = صحيح
جلسة = tf.compat.v1.InteractiveSession (config = config)

_يرجى التأكد من أن هذا خطأ. وفقًا لسياسة GitHub الخاصة بنا ، فإننا نتعامل فقط مع أخطاء التعليمات البرمجية / المستندات ومشكلات الأداء وطلبات الميزات ومشكلات الإنشاء / التثبيت على GitHub. العلامة: bug_template_

معلومات النظام

  • هل قمت بكتابة رمز مخصص (بدلاً من استخدام نص برمجي مثال على الأسهم متوفر في TensorFlow): نعم ولا (موضح أدناه)
  • نظام التشغيل الأساسي والتوزيع (مثل Linux Ubuntu 16.04): Manjaro
  • الجهاز المحمول (مثل iPhone 8 و Pixel 2 و Samsung Galaxy) إذا حدثت المشكلة على الجهاز المحمول:
  • تم تثبيت TensorFlow من (مصدر أو ثنائي): tf-nightly-gpu (19 ديسمبر ، r1.13)
  • إصدار TensorFlow (استخدم الأمر أدناه): 1.13.0-dev20181219
  • إصدار Python: 3.7.1
  • إصدار Bazel (إذا كان التجميع من المصدر):
  • إصدار GCC / Compiler (إذا كان التجميع من المصدر):
  • إصدار CUDA / cuDNN: CUDA 10 مع cuDNN 7.4.1
  • طراز وحدة معالجة الرسومات والذاكرة: RTX 2070 8 جيجابايت

صف السلوك الحالي
أنا أدير نموذج CNN على MNIST. عندما أعمل مع GPU ، أواجه
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

لقد أجريت بعض البحث وأدركت أنها مشكلة في الذاكرة (وهو ما لا ينبغي أن يكون هو الحال لأن لدي 32 جيجابايت من ذاكرة الوصول العشوائي و 64 جيجابايت من سعة المبادلة. لقد قمت بتشغيل htop عند تشغيل النموذج ولدي 20 جيجابايت مجانًا ، وهو أكثر من بما يكفي لتناسب تعيينات 8 جيجابايت vRAM.

يؤدي استخدام gpu_options.allow_growth = True تشغيل النموذج بشكل صحيح ، كما يعمل تعيين os.environ['CUDA_VISIBLE_DEVICES'] = '-1' . هذا يعني أنني أواجه مشكلة في الذاكرة ، لكنني لا أرى كيف.

أيضًا ، لا يؤدي استخدام gpu_options.allow_growth = True إصلاح نفس المشكلة عند محاولة تشغيل tensorflow / Models / official / mnist / model ، والذي يجب أن يكون له نفس السلوك مع الكود الخاص بي.

رمز إعادة إظهار المشكلة

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()

هذا عمل معي.RTX 2060أوبونتو 18.04.2018بيثون 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 ...

مرحبا @ bm777

بعد التحقيق الذي أجريته منذ بضعة أشهر ، ألخص كيف فهمت المشكلة

طراز وحدة معالجة الرسومات والذاكرة: RTX 2070 8 جيجابايت
... وهو ما لا ينبغي أن يكون عليه الحال لأن لدي 32 جيجابايت من ذاكرة الوصول العشوائي و 64 جيجابايت من

المشكلة ليست ذاكرة النظام ، المشكلة هي ذاكرة وحدة معالجة الرسومات!

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

يعمل لأنه لا يستخدم GPU!

بعض التفسيرات:

لدى TF طريقتان للتشغيل:

  1. allow memory growth = false : في هذه الحالة ، يخصص TF مسبقًا بعض الذاكرة لمكتبات النظام باستخدام تخمين تقريبي لـ
    مقدار الذاكرة المطلوبة. كما يمكنك أن تقرأ هنا https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -633953715 يستخدم TF الصيغة max(300MB, GPU-MEM * fac) لهذا التخمين. بالنسبة إلى TF2.1 fac = 0.05 لـ TF2.2 وإذا كنت
    تذكر الحق أنه fac=0.07 . الآن لديك 8 جيجا بايت والتي توفر 400 ميجا بايت لذاكرة GPU المخصصة مسبقًا تحت TF2.1
    و 560 ميجابايت تحت TF2.2.

    لقد قمت بتقييم الذاكرة المخصصة مسبقًا اللازمة لعدد قليل من وحدات معالجة الرسومات و TF21 بشكل تجريبي هنا: https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -637715002 وهنا https://github.com/tensorflow/tensorflow / issues / 24496 # issuecomment -637715002

    بالنسبة لعمليات Conv2D ، كنت بحاجة إلى 520 ميجا بايت هناك ، سيكون لديك أقل من ذلك تحت TF21 ولكن أكثر تحت TF22. لسوء الحظ ، لم تذكر إصدار TF الخاص بك ولكن أفترض أنك تستخدم TF2.1. إذا كنت تستخدم TF2.2 ولا يزال يفشل ، فقد يكون هذا بسبب استخدامك لوحدة معالجة رسومات مختلفة. على أي حال الحقيقة هي فشل. انظر أدناه

2) allow memory growth = true : لا يستخدم TF أي ذاكرة مخصصة مسبقًا ويقوم بتحميل المكتبات فور وصولها. في وثائق TF ، تم إعلان هذا على أنه مشكلة بسبب تجزئة الذاكرة المحتملة ، وبالتالي فهو off افتراضيًا.

خذني:

نظرًا للنطاق الكبير من الذاكرة المطلوبة للمكتبات التي تعتمد على العمليات التي تقوم بها أيضًا على وحدة معالجة الرسومات ، يبدو من الصعب جدًا الحصول على الوضع allow memory growth = false الصحيح (راجع https://github.com/tensorflow/ tensorflow / قضايا / 24496 # issuecomment-637950411). الحل الحالي: زيادة حجم الذاكرة المخصصة مسبقًا ، والتي تم إجراؤها من أجل TF2.2 ، يمثل مشكلة إذا كانت وحدة معالجة الرسومات لديك صغيرة نوعًا ما. يحظر هذا استخدام الذاكرة على افتراض أنك ستحتاج إلى جميع المكتبات المتاحة (blas و Conv و FFT ولا أعرف ما إذا كان هناك مكتبات أخرى). في حالة عدم استخدام كل هذه الأشياء ، سيؤدي ذلك إلى إهدار الذاكرة المخصصة مسبقًا ، مما يؤدي بدوره إلى تقليل حجم النماذج التي قد تقوم بتحميلها لتطبيقك. من ناحية أخرى ، أعتقد أنه يمكن منع مشكلة تجزئة الذاكرة عند إنشاء نماذج ، مما يجبر مكتبات النظام مبكرًا على التحميل قبل بدء التدريب. يبدو هذا ما يحدث في معظم الحالات على أي حال ، وبالتالي يبدو من المفيد ، خاصة بالنسبة لوحدات معالجة الرسومات ذات الذاكرة الصغيرة وخاصة لتدريب نموذج واحد ، عدم التخصيص المسبق ولكن لاستخدام allow memory growth = true .

أنا شخصياً أستخدم وحدات معالجة الرسومات بذاكرة تتراوح من 4 غيغابايت إلى 11 غيغابايت وبعد اتباع الوسيطة أعلاه ، قمت بتعيين TF_FORCE_GPU_ALLOW_GROWTH = صحيح بالنسبة لهم جميعًا. في الوقت الحالي لم يكن لدي أي مشاكل مع ذلك.

مرحبا roebel

أنا أيضًا ، كنت أفكر في قضايا الخطأ في تخصيص الذاكرة. هذا واضح بالنسبة لي الآن.
الآن تبدو ذاكرة GPU جيدة

في الماضي ، اختبرت العديد من الخيارات لتخصيص الذاكرة مسبقًا 😢:

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

أنا شخصياً أستخدم GPU بذاكرة 6 جيجابايت.
وشكرًا لك roebel ، لهذا السهم الجديد TF_FORCE_GPU_ALLOW_GROWTH=true لإجبار GPU الخاص بي على التخصيص 😊.

كان لي هذه المسألة نفسها. أستطيع أن أقول على وجه اليقين أن المشكلة تحدث فقط في 2070 RTX ، وليس على Titan RTX ، الذي يعمل بنفس الكود تمامًا.

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

ما عليك سوى الترقية إلى Tensorflow 2.3 باستخدام CUDA 11 و cudnn 8.0. لقد حلت جميع مشاكلي بطريقة سحرية ولا أحتاج حتى إلى الحل مع config.gpu_options.allow_growth = True الآن.

لسوء الحظ ، أحتاج إلى تشغيل التعليمات البرمجية التي تدعم فقط tensorflow 1.X

ما عليك سوى الترقية إلى Tensorflow 2.3 باستخدام CUDA 11 و cudnn 8.0. لقد حلت جميع مشاكلي بطريقة سحرية ولا أحتاج حتى إلى الحل مع config.gpu_options.allow_growth = True الآن.

لقد حلت الترقية من 2.2 إلى 2.3 حتى مع TF_FORCE_GPU_ALLOW_GROWTH=false هذا الأمر بالنسبة لي أيضًا (على الأقل في الوقت الحالي أنا قادر على تشغيل كود delf التجريبي ؛ لم أختبر أي شيء آخر).

ما زلت على CUDA 10.1 ، Cudnn 7.6.5.

هل هناك حل لهذه المشكلة مع tensorflow 2 و python3 ؟؟؟

انا املك:
RTX 2080

أتلقى هذه الرسالة:


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

في حال كان أصل مشكلتك هو نفس أصل المشاكل التي تمت معالجتها في المشكلة الحالية (والتي لا أستطيع معرفتها من تقريرك) ، فهناك بعض الحلول التي يمكنك العثور عليها بسهولة عن طريق قراءة آخر 10 إلى 20 مشاركة في هذا مسلك.

لقد أصلحته بهذا:

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

واجهت نفس المشكلة مع RTX 2080. ثم نجح الرمز التالي بالنسبة لي.

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

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

شكرا لكم جميعا

أعتقد أنه يمكننا التوقف عن نشر الإصلاح allow_growth الآن :)

RTX 2070 هنا. لقد تلقيت هذا الخطأ ، ولكن الآن يعمل بـ TF_FORCE_GPU_ALLOW_GROWTH=true (كما أشار المعلقون الآخرون ، أصلحه لهم) يغير رسالة الخطأ إلى خطأ نفاد الذاكرة (على الرغم من أن لدي الكثير من الذاكرة):

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

لكن وحدة معالجة الرسومات الخاصة بي بها 8 غيغابايت وكان 250 ميغابايت فقط قيد الاستخدام قبل أن أبدأ العملية. لذلك لا أفهم ، لماذا لا يمكن تخصيص 3.87 جيجابايت؟ (خفض حجم الدُفعة ليس له أي تأثير ؛ أوزان ملف hdf5 أقل من 200 ميجابايت)

TF_FORCE_GPU_ALLOW_GROWTH = صحيح بالنسبة لي.
tf.config.experimental.set_memory_growth (gpu، True) عملت أيضًا.

هنا هو التكوين الخاص بي:
GPU GTX 1650
كودا-10-1 10.1.243-1
libcudnn7 7.6.5.32-1 + cuda10.1
نظام التشغيل Ubuntu 18.04.5 LTS

أي شخص لا يمكنه تعيين متغير البيئة ، يمكنه تجربة ذلك كما هو مقترح في https://www.tensorflow.org/guide/gpu :
gpus = tf.config.experimental.list_physical_devices ("GPU")
إذا كان gpus:
محاولة:
# في الوقت الحالي ، يجب أن يكون نمو الذاكرة هو نفسه عبر وحدات معالجة الرسومات
بالنسبة إلى gpu في gpus:
tf.config.experimental.set_memory_growth (gpu ، صحيح)
logical_gpus = tf.config.experimental.list_logical_devices ('GPU')
print (len (gpus)، "Physical GPUs"، len (logical_gpus)، "Logical GPUs")
باستثناء RuntimeError مثل e:
# يجب ضبط نمو الذاكرة قبل تهيئة وحدات معالجة الرسومات
طباعة (هـ)

لقد عملت كتابة الأمر المذكور على المحطة للتو بالنسبة لي.

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

ما عليك سوى الترقية إلى Tensorflow 2.3 باستخدام CUDA 11 و cudnn 8.0. لقد حلت جميع مشاكلي بطريقة سحرية ولا أحتاج حتى إلى الحل مع config.gpu_options.allow_growth = True الآن.

يبدو أنه تم ملاحظة المشكلة وحلها في Tensorflow 2.3.0.

  • كودا 10.1.1
  • وحدة معالجة الرسومات: Quadro RTX 6000
  • Tensorflow 2.2.0
  • cudnn 7.6.5

نفس المشكلة:
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.

والحل البديل allow_growth = True لا يساعد.

بعد أن قمت بترقية tensorflow إلى 2.3.0 ، اختفت المشكلة ، حتى بدون إضافة السطر allow_growth = True .

حسنًا ، اجعلها تعمل في معاينة tf-nightly-gpu-2.0 و دفتر ipython مضيفًا هذا إلى الكود الخاص بي:

من tensorflow.compat.v1 استيراد ConfigProto
من tensorflow.compat.v1 استيراد InteractiveSession

config = ConfigProto ()
config.gpu_options.allow_growth = صحيح
جلسة = InteractiveSession (config = config)

إنه يعمل في حالتي

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات