Tensorflow: Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR

Dibuat pada 21 Des 2018  ·  181Komentar  ·  Sumber: tensorflow/tensorflow

Harap pastikan bahwa ini adalah bug. tag: bug_template

Sistem Informasi

  • Apakah saya telah menulis kode khusus (bukan menggunakan skrip contoh stok yang disediakan di TensorFlow): Ya dan Tidak (dijelaskan di bawah)
  • Platform OS dan Distribusi (misalnya, Linux Ubuntu 16.04): Manjaro
  • Perangkat seluler (mis. IPhone 8, Pixel 2, Samsung Galaxy) jika masalah terjadi pada perangkat seluler:
  • TensorFlow diinstal dari (sumber atau biner): tf-nightly-gpu (Des 19, r1.13)
  • Versi TensorFlow (gunakan perintah di bawah): 1.13.0-dev20181219
  • Versi Python: 3.7.1
  • Versi Bazel (jika dikompilasi dari sumber):
  • Versi GCC / Compiler (jika dikompilasi dari sumber):
  • Versi CUDA / cuDNN: CUDA 10 dengan cuDNN 7.4.1
  • Model GPU dan memori: RTX 2070 8GB

Jelaskan perilaku saat ini
Saya menjalankan model CNN di MNIST. Saat saya menjalankan dengan GPU, saya menjumpai
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

Saya melakukan penggalian dan menyadari bahwa ini adalah masalah memori (yang seharusnya tidak menjadi masalah karena saya memiliki 32GB RAM dan 64GB swap. Saya menjalankan htop saat menjalankan model dan saya memiliki 20 + GB gratis, yang lebih dari cukup untuk memuat pemetaan vRAM 8 GB.

Menggunakan gpu_options.allow_growth = True membuat model bekerja dengan baik, dan pengaturan os.environ['CUDA_VISIBLE_DEVICES'] = '-1' juga berfungsi. Ini berarti SAYA menghadapi masalah memori, tetapi saya tidak mengerti caranya.

Selain itu, menggunakan gpu_options.allow_growth = True tidak memperbaiki masalah yang sama saat mencoba menjalankan tensorflow / models / official / mnist / model, yang seharusnya memiliki perilaku serupa dengan kode saya.

Kode untuk mereproduksi masalah

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

Komentar yang paling membantu

Saya memang mencoba mengompilasi dari sumber, tetapi mengalami masalah yang sama. Saya akhirnya dapat memperbaiki masalah saya adalah menyetel config.gpu_options.allow_growth = True .

Semua 181 komentar

Saya mengalami masalah yang sama dengan GPU yang sama: "CUDNN_STATUS_INTERNAL_ERROR".

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

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

Saya mengalami masalah yang sama

RTX2080 GPU
CUDA 10
mengerti 7.4.2

Saya mencoba Versi tf berikut tf-nightly-gpu dan Versi yang dikompilasi sendiri dari master (060b6e32ad).
Saya menemukan bahwa mungkin untuk mengatur Variabel LINGKUNGAN berikut untuk mendapatkan Info Debug lebih lanjut.

CUDNN_LOGINFO_DBG = 1;
CUDNN_LOGDEST_DBG = stdout

Kemudian saya mendapatkan kesalahan berikut:

I0117 14: 11: 24.441819 140433563125568 basic_session_run_hooks.py:594] Menyimpan checkpoint untuk 0 ke /tmp/mnist/model.ckpt.
2019-01-17 14: 11: 25.916269: I tensorflow / stream_executor / platform / default / dso_loader.cc: 154] berhasil membuka perpustakaan CUDA libcublas.so.10.0 secara lokal

SAYA! Fungsi CuDNN (v7402) cudnnCreate () dipanggil:
saya! Waktu: 2019-01-17T14: 11: 26.079184 (0d + 0h + 0m + 0s sejak start)
saya! Proses = 29255; Benang = 29356; GPU = NULL; Menangani = NULL; StreamId = NULL.

2019-01-17 14: 11: 26.079151: I tensorflow / stream_executor / platform / default / dso_loader.cc: 154] berhasil membuka perpustakaan CUDA libcudnn.so.7 secara lokal

SAYA! Fungsi CuDNN (v7402) cudnnCreate () dipanggil:
saya! Waktu: 2019-01-17T14: 11: 26.571897 (0d + 0h + 0m + 0s sejak start)
saya! Proses = 29255; Benang = 29356; GPU = NULL; Menangani = NULL; StreamId = NULL.

2019-01-17 14: 11: 26.571858: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14: 11: 26.579375: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR

SAYA! Fungsi CuDNN (v7402) cudnnCreate () dipanggil:
saya! Waktu: 2019-01-17T14: 11: 26.579803 (0d + 0h + 0m + 0s sejak start)
saya! Proses = 29255; Benang = 29356; GPU = NULL; Menangani = NULL; StreamId = NULL.

2019-01-17 14: 11: 26.585818: E tensorflow / stream_executor / cuda / cuda_dnn.cc: 493] Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14: 11: 26.585850: W ./tensorflow/stream_executor/stream.h:2109] mencoba melakukan operasi DNN menggunakan StreamExecutor tanpa dukungan DNN
Traceback (panggilan terakhir terakhir):
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", baris 1335, dalam _do_call
return fn (* args)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", baris 1320, di _run_fn
opsi, feed_dict, fetch_list, target_list, run_metadata)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", baris 1408, di _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.UnknownError: Gagal mendapatkan algoritma konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah pesan log peringatan telah dicetak di atas.
[[{{node Discriminator_1 / Konv / Konv2D}}]]
[[kereta api / diskriminator_train / kereta_op / control_dependency / _569]]

Selama menangani pengecualian di atas, pengecualian lain terjadi:

Traceback (panggilan terakhir terakhir):
File "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py", baris 151, di
tf.app.run ()
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py", baris 125, sedang dijalankan
_sys.exit (main (argv))
File "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py", baris 147, di main
get_hooks_fn = tfgan.get_joint_train_hooks ())
File "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py", baris 1200, di gan_train
config = config)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/training/python/training/training.py", baris 546, di kereta
loss = session.run (train_op, run_metadata = run_metadata)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", baris 693, sedang dijalankan
run_metadata = run_metadata)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", baris 1188, sedang dijalankan
run_metadata = run_metadata)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", baris 1287, sedang dijalankan
meningkatkan enam.reraise ( original_exc_info)File "/usr/local/lib/python3.6/dist-packages/six.py", baris 693, dalam kebangkitanmeningkatkan nilaiFile "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", baris 1272, sedang dijalankanreturn self._sess.run ( args, ** kwargs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", baris 1336, sedang dijalankan
feed_dict, opsi)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py", baris 1362, di _call_hook_before_run
request = hook.before_run (run_context)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py", baris 1061, di before_run
run_context.session.run (self._train_ops)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", baris 930, sedang dijalankan
run_metadata_ptr)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", baris 1153, di _run
feed_dict_tensor, opsi, run_metadata)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", baris 1329, di _do_run
run_metadata)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py", baris 1349, dalam _do_call
jenis kenaikan (e) (node_def, op, pesan)
tensorflow.python.framework.errors_impl.UnknownError: Gagal mendapatkan algoritma konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah pesan log peringatan telah dicetak di atas.
[[node Discriminator_1 / Konv / Konv2D (ditentukan di home / dj / projects / gan / tf_models / research / gan / mnist / networks.py: 152)]]
[[kereta api / diskriminator_train / kereta_op / control_dependency / _569]]

Kesalahan mungkin berasal dari operasi masukan.
Operasi Sumber Input terhubung ke node Discriminator_1 / Conv / Conv2D:
input / batch / n (didefinisikan di home / dj / projects / gan / tf_models / research / gan / mnist / data_provider.py: 67)

Pelacakan tumpukan asli untuk 'Discriminator_1 / Conv / Conv2D':
File "home / dj / projects / gan / tf_models / research / gan / mnist / train.py", baris 151, di
tf.app.run ()
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / platform / app.py", baris 125, sedang dijalankan
_sys.exit (main (argv))
File "home / dj / projects / gan / tf_models / research / gan / mnist / train.py", baris 87, di main
[FLAGS.batch_size, FLAGS.noise_dims]))
File "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / gan / python / train.py", baris 118, di gan_model
diskriminator_real_outputs = diskriminator_fn (real_data, generator_inputs)
File "home / dj / projects / gan / tf_models / research / gan / mnist / networks.py", baris 176, dalam unconditional_discriminator
net = _discriminator_helper (img, False, None, weight_decay)
File "home / dj / projects / gan / tf_models / research / gan / mnist / networks.py", baris 152, di _discriminator_helper
net = layers.conv2d (img, 64, [4, 4], langkah = 2)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / framework / python / ops / arg_scope.py", baris 182, di func_with_args
return func ( args, * current_args)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / layers / python / layers / layers.py", baris 1155, dalam convolution2d
konv_dim = 2)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / framework / python / ops / arg_scope.py", baris 182, di func_with_args
return func ( args, * current_args)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / layers / python / layers / layers.py", baris 1058, dalam konvolusi
outputs = layer.apply (input)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / engine / base_layer.py", baris 1228, dalam terapkan
return self .__ call __ (input, args, * kwargs)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / layers / base.py", baris 531, di __call__
outputs = super (Layer, self) .__ call __ (input, args, * kwargs)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / engine / base_layer.py", baris 564, di __call__
outputs = self.call (input, args, * kwargs)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / layers / convolutional.py", baris 196, sedang dipanggil
keluaran = self._convolution_op (masukan, self.kernel)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", baris 966, di __call__
return self.conv_op (inp, filter)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", baris 591, di __call__
kembali self.call (inp, filter)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", baris 208, di __call__
name = self.name)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py", baris 1578, di conv2d
nama = nama)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / gen_nn_ops.py", baris 1040, di conv2d
data_format = data_format, dilasi = dilasi, nama = nama)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / op_def_library.py", baris 788, di _apply_op_helper
op_def = op_def)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / util / deprecation.py", baris 501, di new_func
return func ( args, * kwargs)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / ops.py", baris 3300, di create_op
op_def = op_def)
File "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / ops.py", baris 1801, di __init__
self._traceback = tf_stack.extract_stack ()

Ada ide seseorang? Saya sebelum menginstal ulang lingkungan lengkap saya :-(

Cobalah untuk mengkompilasi r1.13 dari sumber. Ini akan memakan waktu lama, tetapi itu akan memperbaiki masalah Anda. Setidaknya itu memperbaiki milikku.

Saya memang mencoba mengompilasi dari sumber, tetapi mengalami masalah yang sama. Saya akhirnya dapat memperbaiki masalah saya adalah menyetel config.gpu_options.allow_growth = True .

Saya mengalami masalah yang sama (pada RTX 2060, Ubuntu 18.04, Python 3.6.7, CUDA 10.0.130, cuDNN 7.4.2, Tensorflow 1.13.0-rc0 dari sumber). Berkat saran @ va-andrew, saya membuatnya berfungsi dengan set opsi allow_growth .

FWIW, dalam proses mencari solusi untuk ini, tampaknya masalah ini adalah masalah umum dengan seri RTX (meskipun ini mungkin masalah umum dengan CUDA 10.0, karena kartu baru tidak mendukung versi yang lebih lama). Akan sangat bagus jika default dapat diperbarui dalam rilis 1.13 sehingga opsi khusus tidak perlu disetel untuk kartu ini.

Menimpali untuk mengatakan saya juga mengalami ini di bawah konfigurasi berikut:

Wadah GPU Tensorflow Docker dengan rilis stabil dari segala sesuatu juga tidak berfungsi (mereka langsung segfault daripada melaporkan CUDNN_STATUS_INTERNAL_ERROR).

Anehnya, semuanya berfungsi dengan baik di Windows 10 dengan Tensorflow v1.12!

Dan orang lain telah melaporkan, pengaturan allow_growth memungkinkan hal-hal berjalan dengan baik.

Masalah yang sama disini.

  • RTX 2070
  • Ubuntu 18.04
  • CudNN 7.4.2 (tetapi saya telah mencoba mengompilasi dengan versi lama lainnya tetapi tidak berhasil)
  • Tensorflow 1.13.0-dev20190125 (juga mencoba Tensorflow 1.12 yang dikompilasi dengan Cuda 10)

Dan seperti yang telah dilaporkan orang lain, pengaturan allow_growth = TRUE memungkinkan segala sesuatunya berjalan.

Menutup masalah ini sejak terselesaikan. Terima kasih!

@ymodak Bisakah Anda merujuk PR yang memperbaiki bug ini?

Saya memiliki masalah serupa dengan tf-nightly-gpu-2.0-preview di RTX 2080

Masalah yang sama dengan RTX2080, menghabiskan dua hari mengkompilasi ulang dan berburu bug sampai saya menemukan perbaikan ini.
(allow_growth = true memperbaikinya)

Anda membuat hari saya

Bagaimana Anda benar-benar menyetel allow_growth = true? Saya memiliki tf-nightly-gpu-2.0-preview dan mencoba:

impor tensorflow sebagai tf
config = tf.ConfigProto ()
config.gpu_options.allow_growth = Benar
sesi = tf.Session (config = config, ...)

tetapi dapatkan kesalahan ini:

AttributeError Traceback (panggilan terakhir terakhir)
di()
1 impor tensorflow sebagai tf
----> 2 config = tf.ConfigProto ()

AttributeError: modul 'tensorflow' tidak memiliki atribut 'ConfigProto'

Bagaimana cara mengatur allow_growth di tensorflow 2.0?

ok, berhasil di tf-nightly-gpu-2.0-preview dan notebook ipython menambahkan ini ke kode saya:

dari tensorflow.compat.v1 impor ConfigProto
dari tensorflow.compat.v1 impor InteractiveSession

config = ConfigProto ()
config.gpu_options.allow_growth = Benar
sesi = InteractiveSession (config = config)

masalah yang sama, dengan gpu_options.allow_growth = Perbaiki masalah telah diperbaiki.

@newhouseb bagaimana / di mana Anda menetapkannya untuk semua tolok ukur? Apakah ini perubahan yang mudah?

Apakah selimut memungkinkan pertumbuhan solusi?

Ini dimatikan secara default karena suatu alasan, lihat
https://www.tensorflow.org/guide/using_gpu#allowing_gpu_memory_growth

Dalam manajemen memori program saya itu penting

Saya ingin membatasi jumlah GPU yang digunakan oleh TF karena dalam aplikasi grafis saya, memori GPU akan digunakan untuk hal-hal lain dan meletakkannya di ruang terbatas penting untuk mencegah kesalahan memori.

Saya bekerja di C ++ di bawah Windows

Menambahkan opsi izinkan pertumbuhan menghasilkan kesalahan OOM.

Tanpa baris kode ini, model berjalan dengan baik pada mesin yang sama dengan kartu yang sama.

Dengan kesalahan OOM

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

Tanpa kesalahan OOM

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

Jadi untuk mengatasi masalah ini dengan set memungkinkan hasil pertumbuhan secara segfault.

@ymodak Bug ini tidak diperbaiki. Bisa dibilang, menggunakan jenis konvnet apa pun seharusnya berfungsi dalam konfigurasi default. Baik allow_growth harus benar secara default, itu harus diperbaiki agar berfungsi, atau seharusnya ada kesalahan yang lebih baik daripada CUDNN_STATUS_INTERNAL_ERROR .

@ymodak Sepertinya masalah ini ditutup sebelum waktunya. Meskipun ada solusi untuk masalah ini, ini melibatkan perubahan kode aplikasi. Akibatnya, kode contoh tidak berfungsi _out of the box_ pada kartu RTX dan sebagian besar resep online juga perlu modifikasi.

@samhodge tidak dapatkah Anda mencegah OOM dengan menggunakan config.gpu_options.per_process_gpu_memory_fraction = 0.4 seperti yang disarankan pada halaman dokumentasi tensorflow yang Anda posting sendiri?

Saya bingung dengan peretasan boolean ini untuk mengaktifkan tensorflow-gpu pada RTX 2080 saya: apakah allow_growth = True akan menjadi masalah jika saya menggunakan GPU saya hanya untuk satu skrip tensorflow / notebook jupyter pada satu waktu? (selain penggunaan GPU standar untuk layar, dll.)

Saya bermaksud untuk mengatur tumpukan ML statis di komputer dan ingin tahu apakah ini akan berakhir dalam kekacauan di beberapa titik (pencarian jaringan besar, model dengan banyak parameter, dll). Saya belum tahu apakah saya benar-benar perlu membangun dari sumber untuk mencoba menghindari kesalahan internal ini atau hanya mengubah boolean ini.

Ok saya pikir saya menemukan sumber masalah saya sebelum saya membuat sesi saya, saya mengukur GPU RAM gratis jadi jika saya menggunakan kartu 8Gb dan 6Gb gratis saya menggunakan sebagian kecil dari 0,75 dan kadang-kadang itu berakhir dengan OOM tetapi baru-baru ini saya punya telah bereksperimen dengan 0,95 * 0,75 dan saya belum memiliki OOM. Jadi, jika Anda mendorong ruang untuk alokasi Tensorflow hingga batasnya, terkadang bentrok. Jelas jika Anda input dan output ke Op individu tidak cocok itu akan OOM, tapi saya mengukurnya dan akan menggunakan GPU atau CPU tergantung pada mana yang cocok.

@samhodge hebat, jadi pada akhirnya hack allow_growth boolean memberikan solusi jika tidak ada operasi GPU utama yang diluncurkan secara paralel dan jika apa yang diproses _ pada suatu waktu_ oleh tensorflow (ukuran batch akan sangat penting) tidak meluapkan memori yang disediakan oleh GPU ...?

Semuanya menggunakan GPU bahkan browser Anda

Mengalami masalah yang sama pada GTX 1050 menggunakan tensorflow-gpu 1.13.1 dari pip dengan CUDA 10.0 / cuDNN 7.4.2.24/Nvidia driver 410 / Ubuntu 16.04.

Masih mengalami masalah yang sama di sini, tetapi "config.gpu_options.allow_growth = True" tidak memperbaiki masalah. Terjadi pada TF-gpu 1.14.1 dan TF-gpu 2.0. RTX1070, CUDA 10.0, Ubuntu 18.04, driver Nvidia 430.09.

Deskripsi masalah yang Anda lihat membuat saya percaya bahwa (versi tertentu) cuDNN mencoba mengalokasikan memori GPU saat membuat pegangan. Jika TensorFlow sudah mengambil semua memori (baik karena config.gpu_options.allow_growth = false, atau per_process_gpu_memory_fraction mendekati 1.0) tidak ada memori yang tersisa untuk dialokasikan untuk cuDNN.

Anda dapat mengonfirmasi hal ini dengan menjalankan TensorFlow melalui nvprof dan membuat pelacakan API untuk memeriksa panggilan cuMemAlloc yang gagal.

Masalah # 6698 sepertinya membahas masalah yang sama. Beberapa orang memperhatikan bahwa mereka secara tidak sengaja menggunakan rilis cuDNN yang tidak sesuai dengan versi CUDA mereka. Bisakah Anda memverifikasi bahwa Anda menggunakan cuDNN untuk CUDA 10 saat menjalankan CUDA 10?

Ternyata saya tidak menginstal cuDNN dengan benar karena saya sangat bodoh. Masuk, instal ulang TF2-nightly, tambahkan baris untuk memungkinkan pertumbuhan, dan semuanya baik-baik saja.

Bagaimana cara menghapus cudatoolkit dan cudnn dari Conda?

Karena cudnn yang disertakan dengan Anaconda (atau tertanam) memiliki kesalahan sebagai berikut, saya ingin menghapus cudatoolkit dan cudnn yang diinstal conda, dan menginstal CUDA dan cudnn independen dari situs web Nvidia.

Error: Gagal mendapatkan algoritma konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah pesan log peringatan telah dicetak di atas.

Namun, meskipun saya menggunakan perintah sebagai berikut tetapi tidak dapat menghapusnya, saya tidak dapat menghapusnya.
conda hapus --name cuda --all
Conda hapus --name cudnn --all

Saya melihat bahwa dua dokumen termasuk cudatoolkit-10.0.130-0 dan cudnn-7.3.1-cuda10.0.0_0 di jalur sebagai
mengikuti.

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

Bagaimana cara menghapus (atau menghapus) cuda dan cudnn yang disertakan (atau tertanam) di Anaconda.

Terima kasih sebelumnya,

Mike

@ mikechen66 Apa output dari conda? Mungkin karena paket lain bergantung pada cuda dan cudnn. Mengapa Anda ingin menghapusnya sejak awal? Jika Anda ingin mendapatkan lingkungan khusus, gunakan miniconda daripada anaconda. Miniconda hanya hadir dengan conda, dan Anda perlu menginstal semua paket yang Anda butuhkan secara manual.

Hai tydlwav:

Terima kasih atas tanggapan Anda. Setelah memeriksa kompatibilitas versi dan tanggal rilis pustaka inti, saya menginstal lingkungan dev terkait, menjalankan kode pengujian MNIST sederhana dan mendapatkan keluaran sebagai berikut.

Saya pikir Anaconda3 bahkan tidak dapat mendukung pustaka inti cudnn dan TensorFlow. Jadi ini adalah masalah besar Anaconda3. Jadi saya ingin menghapus pustaka cudnn ringan dari Anaconda dan menggunakan pustaka Nvidia cuda dan cudnn yang independen dan kuat untuk menjalankan kode pengujian. Tolong bantu berikan beberapa saran.

  1. Lingkungan Instalasi

Nvidia GeForce RTX 2060
Driver Grafis: NVIDIA-Linux-x86_64-415.27 (Jan 15, 2019)
Versi pertama yang mendukung RTX 2060
Anaconda3: Anaconda3-2019.03-Linux-x86_64.sh (2019.04-04)
- cudatoolkit-10.0.130-0
- cudnn-7.3.1-cuda10.0.0_0
- TensorFlow 13.1
- Notebook Juputer dan ipykernel
--dibatalkan oleh Ananconda3

  1. Kode Tes MNIST:

impor keras
dari keras.datasets import mnist
dari keras.models import Sequential
dari keras.layers import Dense, Dropout
dari keras.layers import Flatten, MaxPooling2D, Conv2D
dari keras.callbacks import TensorBoard

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

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

X_train / = 255
X_test / = 255

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

model = Sequential ()
model.add (Conv2D (32, kernel_size = (3,3), activation = 'relu', input_shape = (28,28,1)))
model.add (Konv2D (64, kernel_size = (3,3), aktivasi = 'relu'))
model.add (MaxPooling2D (ukuran_koleksi = (2,2)))
model.add (Putus Sekolah (0.25))
model.add (Flatten ())
model.add (Padat (128, aktivasi = 'relu'))
model.add (Putus Sekolah (0,5))
model.add (Padat (n_classes, aktivasi = 'softmax'))

model.compile (kerugian = 'kategorikal_crossentropy', pengoptimal = 'adam', metrik = ['akurasi'])

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

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

  1. Keluaran:

Menggunakan backend TensorFlow.

PERINGATAN: tensorflow : Dari /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (dari tensorflow.python.framework.ops ) tidak digunakan lagi dan akan dihapus pada versi mendatang.
Instruksi untuk memperbarui:
Colocations ditangani secara otomatis oleh placer.
PERINGATAN: tensorflow : Dari /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:3445: memanggil dropout (dari tensorflow.python.ops.nn_ops) dengan keep_prob tidak digunakan lagi dan akan dihapus pada versi mendatang.
Instruksi untuk memperbarui:
Gunakan rate alih-alih keep_prob . Tarif harus disetel ke rate = 1 - keep_prob .
PERINGATAN: tensorflow : Dari /home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (dari tensorflow.python.ops.math_ops ) tidak digunakan lagi dan akan dihapus pada versi mendatang.
Instruksi untuk memperbarui:
Gunakan tf.cast sebagai gantinya.
Latih 60000 sampel, validasi pada 10.000 sampel
Epoch 1/15

Pelacakan Kesalahan Tidak Diketahui (panggilan terakhir terakhir)
di
34
35 model.fit (X_train, y_train, batch_size = 128, epochs = 15, verbose = 1,
---> 36 validation_data = (X_test, y_test), callbacks = [tensor_board])

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

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

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / backend / tensorflow_backend.py di __call __ (self, input)
2713 kembali self._legacy_call (masukan)
2714
-> 2715 kembali self._call (masukan)
2716 lainnya:
2717 jika py_any (is_tensor (x) untuk x dalam masukan):

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / backend / tensorflow_backend.py di _call (self, input)
2673 diambil = self._callable_fn ( interval_ray, run_metadata = self.run_metadata)2674:-> 2675 diambil = self._callable_fn ( interval_ray)
2676 kembali diambil [: len (self.outputs)]
2677

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

~ / anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / tensorflow / python / framework / error_impl.py in __exit __ (self, type_arg, value_arg, traceback_arg)
526 Tidak, Tidak,
527 compat.as_text (c_api.TF_Message (self.status.status)),
-> 528 c_api.TF_GetCode (self.status.status))
529 # Hapus status objek dari memori jika tidak maka tetap hidup
530 # karena ada referensi status dari ini dari traceback karena

UnknownError: Gagal mendapatkan algoritma konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah pesan log peringatan telah dicetak di atas.
[[{{node conv2d_1 / convolution}}]]
[[{{node metrics / acc / Mean}}]]

Hai tydlwav:

Saya menggunakan perintah berikut untuk menghapus cuda dan cudnn. Namun, kedua perpustakaan tersebut masih berada di Anaconda3 meskipun sekarang tidak berfungsi. Saya kira Anaconda3 bermaksud untuk melindungi perpustakaan inti agar tidak dihapus. Mungkin kemampuan inti Continuum bahkan mengira itu memiliki bug. Saya akan mencoba menggunakan Independent Nvdia cuda (tidak termasuk nvcc) dan cudnn atau menemukan cuda atau cudnn baru dengan conda untuk diinstal.

Hapus Perintah:

Conda uninstall cudatoolkit

Mengumpulkan metadata paket: selesai
Lingkungan pemecahan: selesai

Paket Paket

lokasi lingkungan: / home / mike / anaconda3 / envs / tf-gpu

spesifikasi yang dihapus:
- cudatoolkit

Paket berikut akan DIHAPUS:

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

Lanjutkan ([y] / n)? y

Mempersiapkan transaksi: selesai
Verifikasi transaksi: selesai
Eksekusi transaksi: selesai

Catatan:

Setelah saya mencopot keduanya, Notebook Jupyter menampilkan "Tidak ada mudule bernama" tensorflow ". Itu berarti uninsallation berhasil. Namun, cudatoolkit dan cudnn masih ditemukan di Anaconda3. Saya pikir Continuum default untuk tidak menghapus meskipun keduanya mereka tidak bekerja.

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

Anda sudah menghapusnya. Berkas di pkgs adalah untuk instalasi. Ini adalah cache yang diunduh untuk instalasi. Juga, ini bukan tempat untuk membahas masalah lingkungan conda. Itu tidak relevan dengan masalah ini. Anda mungkin ingin mencoba stack overflow.

Saya sedikit bingung dengan keadaan masalah ini. Saya menggunakan RTX 2080, cuda 10.1, cudnn v7.5.1.10 dan tensorflow 1.14.

Menggunakan memungkinkan pertumbuhan bekerja di sekitar berfungsi, tetapi mungkin saya memiliki ketidakcocokan versi yang berbeda?

Apakah akan ada perbaikan untuk ini di tensorflow 1.14?

Terima kasih

Terima kasih. Saya melihat masalah kompatibilitas antara seri Turing RTX 20XX, TensorFlow, dan Anaconda. Jelas bahwa seri RTX 20XX Mendukung cudnn 7.5.0, TensorFlow hanya mendukung cudnn 7.4, tetapi Anaconda menyertakan 7.3.1 yang disederhanakan, ini adalah ketidakcocokan total di antara ketiga vendor. Selain itu, seri RTX 20XX memiliki masalah kompatibilitas yang besar dengan Ubuntu 16.04 LTS. Terkadang, Ubuntu 16.04 macet. Saya harus membawa dua USB stick yang dapat di-boot untuk menginstal ulang OS. Oleh karena itu, saya meningkatkan dua PC ke Ubuntu 18.04 LTS dan menginstal Miniconda. Kemudian saya akan mencoba Tensorflow versi yang lebih tinggi.

Catatan:

Nvidia memiliki Ubuntu 18.04 LTS kustomnya sendiri untuk platform GPU Jetson TX1 / TX2 dan Jetson Nano Mobile. Nvidia tampaknya menentukan produk barunya seperti seri RTX 20XX dalam kompatibilitas dengan Ubuntu 18.04 LTS daripada versi Ubuntu 16.04 yang lebih rendah. Namun, saya tidak tahu apakah Continuum memiliki rencana peningkatannya untuk seri Nvidia RTX 20XX Turing.

Seri RTX didukung dengan baik pada saat ini. Saya telah menggunakan tf dengan RTX 2070 melalui lingkungan conda pada distribusi non-ubuntu. Ini harus menjadi skenario terburuk, dan masih berfungsi dengan baik. Cuda dan cudnn kompatibel mundur, dan seharusnya tidak menjadi masalah jika Anda menggunakan versi yang lebih baru. Anda cukup membuat lingkungan Python 3.6 baru dengan conda create -n tf python==3.6.8 dan menjalankan conda install tensorflow-gpu .

Itu bagus, saya telah mengumpulkan dari sumber dan memiliki klien yang bekerja dengan Tensorflow 1.12.0 CUDA 10.0 dan CUDNN 7.4.2.24 pada sebagian besar perangkat keras tetapi saya memiliki masalah dengan beberapa klien dengan kartu RTX dengan CNN dengan cudnn pada GPU. Saya mungkin secara tidak sengaja mengemas CUDNN yang salah untuk CUDA 9.0, nama file tersebut identik.

Adakah yang bisa memastikan bahwa versi ini bekerja pada RTX2080 dan kartu berbasis Turing lainnya?

Hai tydlwav:

Saya menginstal Miniconda dan lingkungan python dan tensorflow terkait sesuai saran Anda. Masih ada kesalahan: Gagal mendapatkan algoritma konvolusi. Ini mungkin karena cuDNN gagal menginisialisasi .......
Tolong bantu menemukan solusi.

Silakan lihat langkah-langkah yang saya operasikan.

  1. Instal python 3.6.8 sesuai dengan pedoman Anda.
    conda buat -n tf python == 3.6.8

  2. aktifkan tf
    conda aktifkan tf

  3. instal tensorflow-gpu di lingkungan tf sesuai dengan pedoman Anda.
    Conda memasang tensorflow-gpu

Paket yang diinstal termasuk cudatoolkit dan cudnn sebagai berikut.
.................................................. ..................................................
cudatoolkit pkgs / main / linux-64 :: cudatoolkit-10.0.130-0
cudnn pkgs / main / linux-64 :: cudnn-7.3.1-cuda10.0_0
.................................................. ..................................................

  1. instal notebook jupyter, ipykernel dan lingkungan terkait di halaman web.

1). instal notebook jupyter
Conda instal notebook jupyter

2). instal ipykernel berdasarkan notebook jupyter
Conda menginstal ipykernel jupyter

3). buat TensorFlow-GPU di halaman web notebook jupyter
python -m pemasangan ipykernel --user --name tf-gpu --display-name "TensorFlow-GPU"

  1. Buka notebook jupyter
    1). perintah ke halaman web notebook jupyter
    notebook jupyter

2). Klik TensorFlow-GPU
Saat mengklik di menu "baru" dan memilih "TensorFlow-GPU" di halaman beranda, sel akan muncul di halaman web notebook jupyter. Halaman web terdaftar sebagai berikut.
http: // localhost : 8888 / notebooks / Untitled3.ipynb? kernel_name = tf-gpu

  1. Tempel Jalankan kode tes MNIST sederhana

impor keras
dari keras.datasets import mnist
dari keras.models import Sequential
dari keras.layers import Dense, Dropout
dari keras.layers import Flatten, MaxPooling2D, Conv2D
dari keras.callbacks import TensorBoard

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

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

X_train / = 255
X_test / = 255

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

model = Sequential ()
model.add (Conv2D (32, kernel_size = (3,3), activation = 'relu', input_shape = (28,28,1)))
model.add (Konv2D (64, kernel_size = (3,3), aktivasi = 'relu'))
model.add (MaxPooling2D (ukuran_koleksi = (2,2)))
model.add (Putus Sekolah (0.25))
model.add (Flatten ())
model.add (Padat (128, aktivasi = 'relu'))
model.add (Putus Sekolah (0,5))
model.add (Padat (n_classes, aktivasi = 'softmax'))

model.compile (kerugian = 'kategorikal_crossentropy', pengoptimal = 'adam', metrik = ['akurasi'])

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

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

  1. Kesalahan sama seperti pesan yang disebutkan terakhir:

UnknownError: Gagal mendapatkan algoritma konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah pesan log peringatan telah dicetak di atas.
[[{{node conv2d_1 / convolution}}]]
[[{{node metrics / acc / Mean}}]]

Terima kasih,

Mike

HI tydlwav:

Ngomong-ngomong, saya juga memasang keras dengan perintah berikut.
conda install keras-gpu

Sejak instalasi benar, saya mendapat kesalahan. Jadi saya berasumsi bahwa ini adalah masalah kompatibilitas versi antara seri Miniconda dan RTX20XX Turing. Kesalahannya sama dengan Anaconda. Saya mengetahui bahwa versi cudnn dan cuda di Miniconda dan Anaconda sama.

Itu cukup menarik. Saya mendapat cuda 10 dan cudnn7.3 bekerja dengan conda sekitar satu setengah bulan yang lalu. Saya belum pernah menggunakan tensorflow sejak itu. Jika tidak berhasil, Anda dapat membangun dari sumber. Itu selalu berhasil untuk saya. Jika Anda baru memulai, saya sarankan menggunakan pytorch. Anda akan memiliki waktu yang lebih mudah untuk menginstal dan menyelesaikan berbagai hal.

Hai tydlwav:

Saya akan mencoba metode lain seperti pytorch. Sekarang Google merilis tensorflow-gpu 1.14, dapatkah saya menggunakan Miniconda untuk menginstal tensorflow-gpu 1.14 independen di situs web Google Tensorflow sebagai berikut.

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

Catatan:

Conda hanya memiliki tensorflow-gpu build dari 1.0.1 hingga 1.13.1 sebagai berikut. Build sudah sangat tua sehingga tidak dapat mengikuti Google TensorFlow resmi dan seri Truing Nvidia GeForce RTX 20XX (2060 ~ 2080) resmi.

Perintah:
Conda search tensorflow-gpu

Memuat saluran: selesai

Beri Nama Versi Build Channel
tensorflow-gpu 1.0.1 py27_4 pkgs / gratis
tensorflow-gpu 1.0.1 py35_4 pkgs / gratis
tensorflow-gpu 1.0.1 py36_4 pkgs / gratis
tensorflow-gpu 1.1.0 np111py27_0 pkgs / gratis
tensorflow-gpu 1.1.0 np111py35_0 pkgs / gratis
tensorflow-gpu 1.1.0 np111py36_0 pkgs / gratis
tensorflow-gpu 1.1.0 np112py27_0 pkgs / gratis
tensorflow-gpu 1.1.0 np112py35_0 pkgs / gratis
tensorflow-gpu 1.1.0 np112py36_0 pkgs / gratis
tensorflow-gpu 1.2.1 py27cuda7.5cudnn5.1_0 pkgs / gratis
tensorflow-gpu 1.2.1 py27cuda7.5cudnn6.0_0 pkgs / gratis
tensorflow-gpu 1.2.1 py27cuda8.0cudnn5.1_0 pkgs / gratis
tensorflow-gpu 1.2.1 py27cuda8.0cudnn6.0_0 pkgs / gratis
tensorflow-gpu 1.2.1 py35cuda7.5cudnn5.1_0 pkgs / gratis
tensorflow-gpu 1.2.1 py35cuda7.5cudnn6.0_0 pkgs / gratis
tensorflow-gpu 1.2.1 py35cuda8.0cudnn5.1_0 pkgs / gratis
tensorflow-gpu 1.2.1 py35cuda8.0cudnn6.0_0 pkgs / gratis
tensorflow-gpu 1.2.1 py36cuda7.5cudnn5.1_0 pkgs / gratis
tensorflow-gpu 1.2.1 py36cuda7.5cudnn6.0_0 pkgs / gratis
tensorflow-gpu 1.2.1 py36cuda8.0cudnn5.1_0 pkgs / gratis
tensorflow-gpu 1.2.1 py36cuda8.0cudnn6.0_0 pkgs / gratis
tensorflow-gpu 1.3.0 0 pkgs / gratis
tensorflow-gpu 1.4.1 0 pkgs / utama
tensorflow-gpu 1.5.0 0 pkgs / utama
tensorflow-gpu 1.6.0 0 pkgs / utama
tensorflow-gpu 1.7.0 0 pkgs / utama
tensorflow-gpu 1.8.0 h7b35bdc_0 pkgs / main
tensorflow-gpu 1.9.0 hf154084_0 pkgs / utama
tensorflow-gpu 1.10.0 hf154084_0 pkgs / utama
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

Mereka tidak tua, karena saya telah menggunakan rilis conda dari tf 1.12 dengan RTX 2070. Perangkat keras baru biasanya kompatibel ke belakang, dan RTX tidak berbeda. Kemungkinan besar ada beberapa masalah lingkungan yang aneh sedang dimainkan. Saya tidak memiliki akses ke mesin RTX hingga Juli jadi saya tidak dapat membantu dengan pengujian sekarang. Membangun dari sumber seharusnya menyelesaikan masalah Anda. Saya tidak pernah gagal menjalankan convnet dari tf yang dibangun dari sumber (dengan asumsi Anda memiliki konfigurasi yang benar selama pembuatan).

Sekali lagi, ini bukan tempat yang tepat untuk membahas masalah distribusi tensorflow. Anda dapat membuat posting di stack overflow atau reddit dan menautkannya di sini. Lebih banyak orang akan dapat melihat dan membantu Anda dengan cara ini.

Masalah Anda bukanlah bug, dan yang pasti bukan itu yang dibahas masalah ini.

@chsigg Anda mendiagnosis bahwa ini adalah masalah w / CUDNN mencoba mengalokasikan sumber daya memori GPU yang telah dialokasikan tensorflow tampaknya benar bagi saya. Cukup menyetel per_process_gpu_memory_fraction=0.9 alih-alih 0.95 sudah cukup untuk menyelesaikan masalah saya.

Saya juga menghadapi masalah ini. Perbaiki dengan memperbarui cuDNN ke versi 7.6.

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

Tensorflow-gpu: 1.13.1
Cuda: 10.0
CuDNN: 7.3.1

Juga, tensorflow dan CuDNN dipasang oleh Conda.
conda list cudnn

cudnn                     7.3.1                cuda10.0_0    anaconda

Hal yang saya lakukan:

  1. Conda tensorflow tidak terpasang.
    conda remove tensorflow
  2. Copot pemasangan conda cuDNN
    conda remove cudnn
  3. Pasang tensorflow dengan pip
    pip install tensorflow
  4. Unduh file deb runtime cuDNN 7.6 yang sesuai dari https://developer.nvidia.com/cudnn
  5. Instal dengan sudo dpkg -i libcudnn_xxxxx_amd64.deb

@nluehr ada komentar? Bisakah kita membuat versi MinSystemMemory () cuda / cudnn menjadi sadar?

Ini adalah kesalahan memori yang sah, jika menggunakan tf.keras maka lakukan hal berikut di bagian atas file Anda
config = tf.ConfigProto ()
config.gpu_options.allow_growth = Benar
tf.keras.backend.set_session (tf.Session (config = config))

Saya mengalami masalah ini juga, dan dapat menyelesaikannya dengan menggunakan solusi @ va-andrew, dan secara khusus, saya menggunakan implementasi @colinsteidtmann , karena saya menggunakan beberapa fungsi tensorflow.keras dalam kode saya. Saya menghabiskan waktu lama untuk mencoba men-debug masalah ini, jadi terima kasih atas kontribusi Anda.

EDIT: Saya baru saja melihat dokumentasi tensorflow (https://www.tensorflow.org/guide/using_gpu), dan Anda juga dapat memberitahukannya untuk memungkinkan pertumbuhan memori dengan mengatur variabel lingkungan TF_FORCE_GPU_ALLOW_GROWTH menjadi true. Ia juga mengatakan bahwa konfigurasi ini khusus platform, jadi YMMV (berfungsi untuk saya dengan Ubuntu 18.04).

Sebagai referensi, saya menjalankan:
Ubuntu 18.04.2 LTS, Gigabyte GeForce RTX 2080 Turbo, driver NVIDIA 430.26, CUDA 10.0.130, cuDNN 7.4.2.24, tensorflow-gpu 1.13.1, python 3.6. Saya menjalankan tensorflow dari dalam lingkungan virtual, menggunakan spyder 3.3.4.

Saya memiliki komputer ke-2 dengan perangkat keras yang sama persis, dan saya memasangnya mengikuti serangkaian instruksi yang sama, menggunakan file yang sama untuk melakukan penginstalan, dan mengalami masalah ini pada mesin itu juga. Tidak mengherankan.

Saya memiliki komputer ke-3 dengan perangkat keras yang sama persis, kecuali komputer tersebut memiliki 2080 Ti, bukan 2080, dan saya mengaturnya mengikuti instruksi yang sama, dan sekali lagi menggunakan file yang sama untuk melakukan instalasi. Tapi kali ini, tidak ada masalah.

Jadi, saya dibuat percaya itu tidak terkait dengan beberapa konflik CUDA, cuDNN, dan versi driver; itu bukan instalasi yang dilakukan dengan tidak benar, dll. Sebaliknya, ini terkait dengan model kartu video; Saya hanya melihat penyebutan masalah ini dengan RTX 2060, 2070, dan 2080.

Untungnya, ini bukan ketidaknyamanan yang besar untuk menggunakan solusi tersebut.

Saya juga menghadapi masalah ini. Perbaiki dengan memperbarui cuDNN ke versi 7.6.

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

Tensorflow: 1.13.1
Cuda: 10.0
CuDNN: 7.3.1

Juga, tensorflow dan CuDNN dipasang oleh Conda.
conda list cudnn

cudnn                     7.3.1                cuda10.0_0    anaconda

Hal yang saya lakukan:

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 Setelah Anda melakukan pembaruan, apakah Anda yakin bahwa Anda menjalankan GPU, dan bukan CPU? Sepertinya Anda menggunakan GPU sebelum melakukan pembaruan (karena pesan kesalahan merujuk cuDNN), tapi saya bertanya-tanya setelahnya. Anda menggunakan "pip install tensorflow", tetapi seharusnya "pip install tensorflow-gpu", bukan? Juga, Anda mengatakan Anda menggunakan CUDA 10, tetapi file deb cuDNN yang Anda daftarkan adalah untuk cuda9.0, jadi itu seharusnya tidak berfungsi.

Jadi, saya pikir mungkin Anda tidak benar-benar menggunakan GPU, dan karenanya bukan bukti bahwa memperbarui ke cuDNN 7.6 menyelesaikan masalah.

@ synapse8 Anda benar tentang versi tensorflow-gpu dan cuDNN. Saya juga sangat bingung dengan komentar saya sekarang, dan saya tidak ingat detailnya lagi. Bagaimanapun, yang diberikan di bawah ini adalah versi saat ini di sistem saya.

pip show tensorflow-gpu
Nama: tensorflow-gpu
Versi: 1.13.1.0

nvidia-smi
NVIDIA-SMI 430.26 Versi Driver: 430.26 CUDA Versi: 10.2

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

@ alexforever86 dengan konfigurasi yang Anda sebutkan sekarang, apakah Anda masih melihat masalah ini? (Saya berasumsi itu berhasil untuk Anda). Saya baru-baru ini menginstal sistem dengan cuda10, 410 driver, 7.6 cudnn dan TF-gpu 1.14 (pip install) dan belum melihat masalahnya.

@ robzor92 Saya telah menggunakan tensorflow-gpu 1,13, dan karena penasaran, saya baru saja menginstal 1,14 untuk menguji apakah ini menyelesaikan masalah (bagi saya). Saya masih mendapatkan kesalahan, dan masih harus melakukan solusi 'izinkan pertumbuhan' (sekali lagi, bukan masalah besar).

Kartu video apa yang Anda gunakan?

@ synapse8 Mencoba dengan GTX 1070.

@ synapse8 Saya juga mencoba kode sampel yang disediakan oleh pembuat utas ini sekarang, berfungsi tanpa masalah. Namun saya tidak akan mengklaim itu hanya masalah jalur RTX karena saya melihat masalah yang sama pada GTX 1050Ti dengan TF 1.13.1. Menggunakan kombinasi driver / cuda / cudnn yang sama yang saya posting sebelumnya.

@ robzor92 Saya ragu masalah 1050Ti adalah dengan ukuran VRAM yang kecil. Kartu RTX akan menemukan ini pada model CNN MNIST dasar. Saya ragu itu tweaker NVIDIA alokasi VRAM pada kartu RTX entah bagaimana mengacaukan segalanya.

Saya memiliki kesalahan yang sama pada tensorflow 1.14.0 dan RTX2080. Tetapi dalam kasus saya, kesalahan ini hanya terjadi ketika saya menggunakan lapisan konvolusi.

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.

Saya mencoba config.gpu_options.allow_growth = True , tetapi tidak mengatasi kesalahan ini.

Saya ingin seseorang membantu saya.

Terima kasih.

Masalah yang sama dengan RTX 2070

Saya telah membuat pengamatan menarik tentang ini, yang mungkin membantu melacak kesalahan ini atau menemukan solusi yang layak:
Saya juga mendapatkan kesalahan Failed to get convolution algorithm dengan referensi ke Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR .
Sistem: mesin laptop dengan Nvidia Quadro P2000, Ubuntu 18.04, tf 1.13.1, cuda10, cudnn 7.4.2
Seperti yang disebutkan, saya dapat menjalankan program dengan lancar menggunakan allow_growth , jadi terima kasih untuk itu, cukup bagus untuk saya.

Menarik: Saya mendapatkan kesalahan ini hanya saat menggunakan tf.layers.conv... tetapi beralih ke tf.keras.layers.... memungkinkan program berjalan tanpa allow_growth , jadi sesuatu di kode keras tampaknya bekerja lebih baik daripada di kode tf. Mungkin seseorang dapat menggunakan informasi ini untuk melacak solusi dari keras.
Saya tetap menggunakan tf.layers untuk saat ini, karena mereka menyediakan pembagian bobot yang mudah melalui lingkup variabel, yang sayangnya tidak didukung oleh keras.

@ DavidS3141 Ini menarik. Dalam kasus saya, satu-satunya lapisan konvolusi tidak berfungsi baik di tf.layers dan tf.keras.layers ...

Ketika saya menggunakan pytorch, torch.cuda.is_available adalah True dan dapat menggunakan lapisan konvolusi tanpa masalah, jadi saya yakin penyebabnya adalah tensorflow, tetapi saya tidak tahu apa yang salah.

Saya setuju dengan @ Hayashi-Yudai: Hal yang sama berlaku untuk MXNet. Konfigurasi identik berfungsi dengan baik saat Tensorflow gagal.

Lingkungan Hidup:
RTX2080
Ubuntu 18.10
Sopir 430.26
CUDA 10.0 (juga 10.1, yang belum didukung oleh TF)
cuDNN 7.6.1
mxnet-cu100 1.4.1
tensorflow-gpu 1.14.0

Halo teman-teman, saya menggunakan bobot dari model terlatih dengan tulang punggung ResNet50 pada kumpulan data COCO untuk melatih kumpulan data CSV saya. Saya mendapatkan kesalahan ini: Tidak diketahui: Gagal mendapatkan algoritma konvolusi.
--batch-size 7 --langkah 9 --epochs 4
--snapshot-path snapshots --tensorboard-dir tensorboard
csv dataset / train.csv dataset / class.csvSaya mencoba menyelesaikan masalah dengan skrip berikut di baris perintah di lingkungan virtual:
python

impor tensorflow

dari tensorflow.compat.v1 impor ConfigProto
dari tensorflow.compat.v1 impor InteractiveSession
config = ConfigProto ()
config.gpu_options.allow_growth = Benar
sesi = InteractiveSession (config = config)

sebaik
impor tensorflow sebagai tf
config = tf.ConfigProto ()
config.gpu_options.allow_growth = Benar
session = tf.Session (config = config) tetapi tidak menyelesaikan kesalahan saya .:

Saya menggunakan: -
Ubuntu 16.0
Cuda: 10.0
Tensorflow 1.14.0

Kesalahan:
tensorflow.python.framework.errors_impl.UnknownError: 2 kesalahan root ditemukan. │ | Tidak ada proses yang berjalan yang ditemukan |
(0) Tidak diketahui: Gagal mendapatkan algoritma konvolusi. Ini mungkin karena cuDNN gagal diinisialisasi, jadi coba lihat apakah ada peringatan │ + ------------------------------- ---------------------------------------------- +
pesan log dicetak di atas. │
[[{{node konv1 / konvolusi}}]] │
[[kerugian / tambah / _2377]] │
(1) Tidak diketahui: Gagal mendapatkan algoritma konvolusi. Ini mungkin karena cuDNN gagal diinisialisasi, jadi coba lihat apakah ada peringatan │
pesan log dicetak di atas. │
[[{{node konv1 / konvolusi}}]] │
0 operasi yang berhasil. │
0 kesalahan turunan diabaikan. │
mengakhiri panggilan tanpa pengecualian aktif │
Dibatalkan (inti dibuang)
Bantuan apa pun akan dihargai.

Masalah yang sama disini. Solusi allow_growth bekerja. Jika tidak, saya mendapatkan kesalahan ini pada dataset tensorflow MNIST paling dasar.

RTX2060 seluler di sini.

Masalah terjadi dengan tensorflow terkompilasi dari cabang r2.0 serta TF 1.4 yang diinstal melalui conda dengan conda (tensorflow-gpu).

@ Hayashi-Yudai

Saya mencoba config.gpu_options.allow_growth = True, tetapi tidak menyelesaikan kesalahan ini.

Apa persisnya perintah yang Anda tambahkan ke kode Anda? Coba yang berikut ini jika berbeda ...

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

@ synapse8 Terima kasih atas tanggapan Anda. Saya mencoba tetapi hasilnya sama.

Ngomong-ngomong, saya mencoba nvidia-buruh pelabuhan dan berjalan dengan baik kecuali untuk versi python 3.5.
https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/running.html#running

Sebagai tambahan informasi, jika tidak keberatan menggunakan python 3.6.8 dan tensorflow-gpu 1.12.0, anda bisa menggunakan anaconda.

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

Saya menguji membangun tf-2.0.0-beta1 dari sumber dengan CUDA-10.1 dan CUDNN-7.6.2.4 dan kesalahan tidak terwujud.

Anda dapat menemukan gambar docker untuk membangun paket tf-gpu dan tf-dasar paket di sini:
https://github.com/edowson/docker-tensorflow

Saluran anaconda tidak memiliki cudnn==7.6.2 pada saat menulis komentar ini.

Windows 7, membenturkan kepala saya ke dinding lebih dari Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR selama beberapa saat mencoba untuk mendapatkan mesin baru.

Penginstalan ulang, banyak hal lain di utas ini dan utas lainnya tidak memperbaikinya.

Saat menguji bahwa tidak memiliki cudnn64_7.dll akan menyebabkan kesalahan yang berbeda dari CUDNN_STATUS_INTERNAL_ERROR saya mengganti nama dll. Mengkonfirmasi bahwa kesalahan tersebut adalah kesalahan tipe CUDNN NOT INSTALLED , saya membatalkan perubahan nama file.

Ajaibnya, semuanya mulai bekerja.

Tidak tahu mengapa atau bagaimana, tapi dia tahu. Semoga ini membantu orang lain. Jika tidak, hanya perlu beberapa detik untuk mencobanya.

Saya menemukan masalah ini disebabkan oleh kesalahan saya membuat dua panggilan ke tf.Session

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

# several lines of code later...

sess = tf.Session(config=config)

Mungkin bukan penyebab utama bagi kebanyakan orang, tetapi mungkin perlu diperhatikan.

Hanya untuk berbagi "allow_growth = True" memecahkan masalah untuk sistem saya di bawah
rtx 2080ti, ubuntu18.04, cuda9.0, cudnn7, tf1.9

config = tf.ConfigProto ()
config.gpu_options.allow_growth = Benar
sesi = tf.Session (config = config)

Ini ada hubungannya dengan bagian memori yang tersedia untuk memuat sumber daya GPU untuk membuat pegangan cudnn, juga dikenal sebagai per_process_gpu_memory_fraction .
Mengurangi fraksi memori ini sendiri akan menyelesaikan kesalahan.

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

Gunakan pecahan sekecil mungkin sesuai memori Anda. (Dalam kode, saya menggunakan 0,7, Anda bisa mulai dengan 0,3 atau bahkan lebih kecil, lalu tingkatkan hingga Anda mendapatkan kesalahan yang sama, itulah batas Anda.)
Berikan ke tf.Session() atau tf.train.MonitoredTrainingSession() atau Supervisor sv.managed_session() sebagai konfigurasi.

Ini akan memungkinkan GPU Anda membuat pegangan untuk kode TensorFlow Anda.

Seperti dijelaskan di sini , pendekatan baru di TF 2.0 untuk menyetel config.gpu_options.allow_growth = True adalah:

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)

Dengan potongan kode ini dan TF 2.0 RC1, kesalahan tidak lagi muncul.
Namun, karena jumlah orang yang memiliki GPU Nvidia 20XX, saya pikir akan menjadi ide yang baik untuk mengatasi masalah ini secara asli sebelum versi final TF 2.0 dirilis.

Saya memiliki masalah yang sama dengan 1080Ti & TitanX di TF1.4 dan saran dari @ va-andrew dan @oscarlinux menyelamatkan saya! Yang mengingatkan saya pada awalnya mengapa saya beralih ke pytorch dan tidak pernah kembali. Sayangnya masih ada ppl yang menggunakan TF .... jadi saya masih harus melalui rasa sakit ini setiap kali saya menggunakan basis kode mereka ... mungkin ini saatnya bermain sedikit dengan ONNX.

Untuk orang lain yang menemukan ini setelah meningkatkan ke tensorflow 2.0, API dan kodenya sedikit berbeda.

Ubuntu 18
Tensorflow 2.0
Tensorflow-gpu 2.0
GeForce RTX 2070

Kode yang diperbarui untuk sistem ini.

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

Solusi ini berhasil untuk saya. (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)

Tambahkan titik data tambahan .:
rtx 2080ti, ubuntu18.04, cuda10.0, cudnn7
Dalam kasus saya ini tidak bekerja dengan tf1.14 dan 1.15rc3

@ w4nderlust , untuk 1,14 dan 1,15 Anda akan ingin melanjutkan menyetel opsi konfigurasi sesi config.gpu_options.allow_growth = True . Apakah itu yang Anda laporkan tidak berfungsi, atau hanya mekanisme tf.config.experimental ?

@ w4nderlust , untuk 1,14 dan 1,15 Anda akan ingin melanjutkan menyetel opsi konfigurasi sesi config.gpu_options.allow_growth = True . Apakah itu yang Anda laporkan tidak berfungsi, atau hanya mekanisme tf.config.experimental ?

Maaf seharusnya lebih tepat, saya melaporkan bahwa tanpa config.gpu_options.allow_growth = True itu masih tidak berfungsi dalam konfigurasi saya dengan 1.14 dan 1.15rc3.

Saya pikir saya menemukan solusi yang lebih baik daripada config.gpu_options.allow_growth = True .

Untuk pengaturan saya (_RTX 2070_, docker image _tensorflow: 1.15.0-gpu-py3_), pengaturan konfigurasi seperti yang ditunjukkan di bawah ini menghindari _CUDNN_STATUS_INTERNAL_ERROR_ sambil tetap mengalokasikan seluruh memori GPU .
Ini sangat berguna untuk model besar yang tidak akan masuk ke dalam memori dalam mode allow_growth tetapi hanya cocok ketika seluruh memori dialokasikan.

Untuk mengalokasikan seluruh memori di RTX:
config.gpu_options.per_process_gpu_memory_fraction = 1.0

Untuk mengalokasikan seluruh memori di RTX:
config.gpu_options.per_process_gpu_memory_fraction = 1.0

@PoloShow
Saya mencoba ini dengan TF 2.0 dan sepertinya tidak berhasil.
Ubuntu18.04, RTX 2080, CUDA10, cudnn 7.6.

Untuk TF 2.0, API untuk membatasi penggunaan memori GPU telah berubah.

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, apakah Anda mengerti mengapa masalah ini hanya muncul di RTX? Mungkinkah karena kami memiliki aplikasi lain yang menggunakannya sebagai tampilan GPU secara bersamaan dengan TensorFlow?

Sulit bagi saya untuk men-debug ini secara langsung karena saya tidak memiliki akses ke RTX GPU.

@sanjoy Saya menjalankan tampilan pada gpu terintegrasi. Tidak ada aplikasi lain di satu gpu RTX saya saat menjalankan TensorFlow.

Saya mencoba menggunakannya untuk tensorflow 2.0:

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

Ini memperbaiki kesalahan yang diketahui pada rtx2080 saya, tetapi pelatihannya secepat 1050Ti saya di laptop saya!
Saat melatih 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 |
+-----------------------------------------------------------------------------+

Menambahkan

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

Tidak menyelesaikan masalah, tanpa allow_growth saya mendapatkan kesalahan yang diketahui, dan RTX saya hanya menggunakan sesuatu seperti 3Gb atau memori.

Ada ide ?

Saya mencoba

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

tapi cudnn masih melakukan kesalahan

Saya juga mendapatkan kesalahan ini bekerja di gambar Docker tensorflow 1.15.0-py3-gpu (Ubuntu 18.04) dengan dua GPU Titan V (@sanjoy) - bukan RTX. Namun, kesalahan ini sepertinya hanya terjadi pada saya pada GPU0 saya yang memiliki Xorg dan gnome-shell menggunakan memori GPU0 sedangkan GPU1 hanya memiliki python menggunakan mem GPU dan tidak membuang kesalahan ini. Sayangnya, kesalahan ini juga terputus-putus - terkadang saya dapat menghapus kontainer buruh pelabuhan, membuatnya kembali dengan pengaturan yang sama dan kode yang sama, kemudian kesalahan akan hilang. Atau tidak.

Saya dapat memperbaikinya menggunakan antarmuka Keras backend dengan:

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)

Berikut ini adalah nvidia-smi saya di kedua GPU

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

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

Saya mengalami masalah yang sama dengan @clementpoiret dengan TF 2.0 yang diinstal melalui conda. Dengan menggunakan flag allow_growth masalah ini hilang tetapi juga membuat pelatihan menjadi sangat lambat, lebih lambat dari yang saya lakukan di TF 1.x ...

@clementpoiret dan @EKami , apakah akan mempercepat pelatihan Anda jika Anda mengganti config.gpu_options.allow_growth = True dengan config.gpu_options.per_process_gpu_memory_fraction = 0.8 ? Anda dapat bereksperimen untuk melihat pecahan mana yang paling banyak menggunakan GPU Anda.

@ Synapse8 Saya tidak melihat sesuatu yang setara dalam dokumentasi tensorflow 2.0, ada cara untuk melakukannya dengan tf.config.experimental?

Sunting: Saya akan mencoba mengatur memori dengan cara ini, untuk melihat apakah itu menyelesaikan masalah:

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)

Dengan cara ini kita dapat dengan mudah memanggil setup_gpus(True, .9)

@clementpoiret : Harap dicatat bahwa panggilan tf.config.experimental.set_memory_growth tidak diperlukan karena tf.config.experimental.set_virtual_device_configuration menimpa bendera itu karena ia memotong memori GPU dan mengalokasikan memori yang dialokasikan sebelumnya.

Masalah ini tidak terbatas pada RTX. Atau TF 2.0.

Menambahkan:
_dari tensorflow.compat.v1 import ConfigProto
dari tensorflow.compat.v1 impor InteractiveSession
config = ConfigProto ()
config.gpu_options.allow_growth = Benar
session = InteractiveSession (config = config) _

Memecahkan masalah "Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR" dengan lingkungan sebagai berikut:

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
Mungkinkah ini masalah alokasi blok bersebelahan maksimum dengan driver NVIDIA? Di mana boleh mengalokasikan jumlah total memori yang sama tetapi dalam blok yang lebih kecil?

Hai,

Saya tidak dapat mereproduksi ini di komputer saya, jadi saya memerlukan bantuan untuk melakukan rooting penyebab ini. Apakah kami memiliki seseorang di sini yang dapat mereproduksi masalah dan bersedia melakukan debugging langsung?

Sebagai titik awal saya ingin memahami mengapa MinSystemMemory tidak menyimpan cukup memori untuk cuDNN. Jika seseorang dengan pengaturan yang mereproduksi masalah ini dapat menambahkan beberapa pencatatan (sebagai tambalan lokal) untuk mengetahui jumlah memori yang dikembalikan oleh MinSystemMemory itu akan bagus. Dan apakah meningkatkan keajaiban 0.05 angka di MinSystemMemory membantu situasi?

@sanjoy Saya memiliki versi yang menunjukkan masalah ini. Bagaimana cara saya mengakses MinSystemMemory atau "menyetel angka 0.05 ajaib"? Saya telah kembali menggunakan cuda 9.1 untuk sebagian besar, tetapi saya tidak keberatan mencoba beberapa hal.

@odinsbane, Anda harus membuat TensorFlow dari sumber untuk melakukan apa yang saya sarankan di bawah.

Langkah pertama adalah menambahkan LOG(INFO) atau std::cerr baris ke MinSystemMemory untuk mencetak available_memory dan nilai pengembalian dari MinSystemMemory . Apakah available_memory setuju dengan cetakan nvidia-smi ? Berapa banyak memori yang tersisa untuk sistem?

Kedua, apakah meningkatkan angka ajaib 0.05 menjadi, katakanlah, 0.07 membantu sama sekali?

Yang ini berhasil! Terima kasih kawan!

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)

kami menghadapi masalah serupa pada RTX 2070 kami (Ubuntu 18.04, TF2) Kami mencoba kombinasi berbeda dari versi CUDA 10.0 dan libcudnn7.xxx, tetapi kesalahan terus muncul lagi.
Di komputer lain kami memiliki GTX 1080ti dan yang ini berjalan tanpa masalah.
Driver nvidia adalah 430,50 dalam kedua kasus.

Ini bukan disebabkan oleh tf.keras.utils.plot_model , saya menghapusnya dan kesalahan ini masih muncul, tetapi lebih jarang.
Pembaruan: Saya menemukan ini hanya terjadi ketika saya menggunakan tf.keras.utils.plot_model . Saya akan terus mencoba.

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

Saya memiliki masalah serupa dengan RTX 2080 Ti di Ubuntu 18.04.3 LTS, tf 1.15, cuda 10.0.

Yang aneh dalam kasus saya adalah ini hanya terjadi sesekali, dan begitu itu terjadi, itu akan berlangsung selama beberapa menit hingga berjam-jam dan kemudian menghilang dengan sendirinya .

Saya mencoba semua solusi di atas dan tidak ada yang dapat segera memperbaikinya. Saya mencoba untuk tidak melakukan apa-apa dan hanya menunggu, akhirnya akan hilang.

Apa yang saya juga coba dan tidak disebutkan di atas:

  1. Hapus direktori ~/.nv
  2. Cukup reboot

FYI, log kesalahan

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.

Kami menghadapi masalah yang relevan

Spesifikasi sistem

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

Kesalahan dipicu ketika saya mencoba menggunakan LSTM, GRU, RNN dll.

Kesalahan sebenarnya

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]

Masalah nyata

Sepertinya semua ingatanku habis dimakan dengan cukup cepat. Masalahnya tampaknya hanya muncul dalam mode gpu, kode yang sama berfungsi dengan baik dengan cpu

Uji coba

  • memungkinkan pertumbuhan memori
  • buat perangkat virtual dengan memori terbatas

Keduanya mencoba menghasilkan kesalahan yang sama.

Ada ide?

Saya tidak dapat membuat kemajuan dalam masalah ini karena saya tidak dapat mereproduksinya. Jika Anda dapat mereproduksi ini dengan andal di mesin Anda, Anda dapat membantu; begini caranya: https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -560963770, https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750

Saya tidak dapat membuat kemajuan dalam masalah ini karena saya tidak dapat mereproduksinya. Jika Anda dapat mereproduksi ini dengan andal di mesin Anda, Anda dapat membantu; begini caranya: # 24496 (komentar)

Hai @sanjoy , Saya sangat bersedia membantu, tetapi sayangnya saya mungkin tidak dapat membangun tf dari sumber karena saya menggunakan properti universitas saya untuk melakukan eksperimen dan laptop pribadi saya tidak dilengkapi dengan GPU. Apakah ada cara lain untuk mendapatkan log yang kami butuhkan?

Saya menemukan kode berikut di stack overflow , dapatkah ini membantu?

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

Apakah ada cara lain untuk mendapatkan log yang kami butuhkan?

Saya akan memeriksa laporan VLOG untuk mendapatkan informasi ini. Setelah selesai, apakah Anda dapat menginstal dan mereproduksi ini dengan tf-nightly (dengan beberapa flag tambahan, saya akan memberi tahu Anda yang mana)?

Tentunya, saya dapat menginstal paket di komputer itu jika tersedia di pip atau conda dan saya menggunakan lingkungan virtual. Saya akan mencoba mereproduksi kesalahan tersebut.

Tentunya, saya dapat menginstal paket di komputer itu jika tersedia di pip atau conda dan saya menggunakan lingkungan virtual. Saya akan mencoba mereproduksi kesalahan tersebut.

Bisakah Anda menginstal tf-nightly (sehingga mengambil komit yang menambahkan logging) dan menjalankan variabel lingkungan TF_CPP_VMODULE disetel ke gpu_device=5 ? Itu harus mencetak dua baris seperti

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                                              

Bisakah Anda melaporkan angka-angka ini di sini?

Maaf, kode saya saat ini tidak kompatibel dengan tf 2.0 (saya menggunakan 1.15), saya mencoba memperbaruinya. Tolong beri saya waktu.

Masalah ini tampaknya terkait dengan RTX2080 saya, saya memiliki GTX1080 desktop, semuanya tampak baik-baik saja, kemudian saya menggunakan konda mengkloning lingkungan konda ke notebook RTX2080 saya, saya menggunakan tensorflow2.0.0-gpu. setelah kode aplikasi menggunakan Conv2d, LSTM, GRU maka masalah ini datang.
sebelum saya menggunakan kode berikut untuk mengatasi masalah ini:
gpus = tf.config.experimental.list_physical_devices ('GPU')
jika gpus:
mencoba:

Saat ini, pertumbuhan memori harus sama di semua GPU

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

Pertumbuhan memori harus diatur sebelum GPU diinisialisasi

    print(e)

tetapi sejak beberapa hari yang lalu, metode di atas tidak berfungsi lagi

Saya mengalami masalah yang sama dengan gtx 960m

Hai @sanjoy , saya baru saja mendapatkan keluaran ini:

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

Hai @sanjoy , saya baru saja mendapatkan keluaran ini:

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

Terima kasih!

Sayangnya ini tidak membantu sebanyak yang saya kira. Jika saya menjepit MinSystemMemory pada bangunan lokal ke 542015488 (yaitu min_system_memory = std::min(min_system_memory, 542015488ll) ) resnet (misalnya) tampaknya berfungsi dengan baik, dan saya tidak mendapatkan kesalahan apa pun dari cuDNN .

@sanjoy Saya dapat (kebanyakan secara konsisten) mereproduksi masalah di pihak saya.

Pesan relevan dari nightly terbaru:

Dengan pertumbuhan memori secara eksplisit diperbolehkan

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

Tanpa perubahan apa pun pada konfigurasi perangkat 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

EDIT: Informasi model, jika itu membantu.

__________________________________________________________________________________________________
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

Contoh minimal menggunakan TF 1.15, dan saya mendapatkan error ini. Pada RTX 2070 dan NVIDIA 440.44 dan CUDA versi 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.

Saya ingin menunjukkan dalam masalah terpisah https://github.com/tensorflow/tensorflow/issues/36501 bahwa saat menggunakan opsi tersebut memungkinkan kode untuk berjalan, mengamati penggunaan memori yang sebenarnya dari GPU menunjukkan bahwa sebenarnya tidak melakukan penggunaan memori tambahan. Jadi opsi di atas memperbaiki kesalahan, tetapi tidak benar-benar melakukan apa yang diklaimnya dilakukan. Saya dulu menggunakan model yang sama di versi TF yang lebih lama seperti 1.2 ... dll dan mereka melakukan alokasi memori tambahan yang sebenarnya.

Saya memiliki masalah yang sama dengan semua orang di sini! Setelah menginstal tf 2.1, saya tidak bisa mendapatkan contoh MNIST sederhana untuk dijalankan tanpa menambahkan pertumbuhan memori ke GPU. Saya menggunakan 2080 ti .

Masalah utama yang saya hadapi adalah saya tidak dapat menjalankan probabilitas tensorflow bersama-sama dengan tf 2.1 tanpa mendapatkan kesalahan internal CUDNN terkutuk, bahkan dengan pertumbuhan memori yang ditambahkan ke kode. Saya telah mencoba menginstal tf 2.0, CUDA 10.0 dan CUDA 10.1, versi CUDNN yang berbeda. Saya berhasil memperbaiki contoh MNIST sederhana untuk bekerja tanpa pertumbuhan setelah sepenuhnya menginstal ulang ubuntu saya tetapi bukan contoh probabilitas tensorflow. Saya akhirnya mencoba menggunakan buruh pelabuhan malam tensorflow resmi dan masih mendapat kesalahan yang sama saat menggunakan probabilitas tensorflow (tf 2.2 di dalam wadah). Semuanya berjalan dengan baik di CPU. Saya juga mencoba menjalankan buruh pelabuhan yang sama pada mesin dengan 1080 ti dan itu berhasil ... Pasti ada yang salah dengan seri RTX yang saya rasakan.

kesalahan dengan contoh buruh pelabuhan dan tensorflow-probabilitas dan info debug tambahan 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 Saya memiliki masalah yang sama dengan RTX 2080 dan dapat membangun dari sumber jika diperlukan.

@odinsbane, Anda harus membuat TensorFlow dari sumber untuk melakukan apa yang saya sarankan di bawah.

Langkah pertama adalah menambahkan LOG(INFO) atau std::cerr baris ke MinSystemMemory untuk mencetak available_memory dan nilai pengembalian dari MinSystemMemory . Apakah available_memory setuju dengan cetakan nvidia-smi ? Berapa banyak memori yang tersisa untuk sistem?

Kedua, apakah meningkatkan angka ajaib 0.05 menjadi, katakanlah, 0.07 membantu sama sekali?

dapat mengonfirmasi bahwa bangunan dari sumber dengan mengubah angka ajaib 0.05 angka ajaib menjadi 0.1 tampaknya memperbaiki masalah (setidaknya untuk 1.15.2)!

Di lautan pos yang berisik, angka ajaib memori sistem minimum benar-benar tampak logis. Terima kasih telah berbagi!

@chsigg Ada saran? Mungkin kita dapat mencoba menginisialisasi cuDNN, cuBLAS dan pustaka NVIDIA lainnya _before_ kita menyimpan semua memori GPU?

Kami juga dapat mencoba mengaktifkan allow_growth secara default, tetapi itu akan memakan waktu.

Masalah ini tampaknya terkait dengan RTX2080 saya, saya memiliki GTX1080 desktop, semuanya tampak baik-baik saja, kemudian saya menggunakan konda mengkloning lingkungan konda ke notebook RTX2080 saya, saya menggunakan tensorflow2.0.0-gpu. setelah kode aplikasi menggunakan Conv2d, LSTM, GRU maka masalah ini datang.
sebelum saya menggunakan kode berikut untuk mengatasi masalah ini:
gpus = tf.config.experimental.list_physical_devices ('GPU')
jika gpus:
mencoba:

Saat ini, pertumbuhan memori harus sama di semua GPU

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

Pertumbuhan memori harus diatur sebelum GPU diinisialisasi

    print(e)

tetapi sejak beberapa hari yang lalu, metode di atas tidak berfungsi lagi

Telah mencoba menjalankan kode klasifikasi gambar dasar lambda Tensorflow2-tutorial selama berhari-hari dan mendapatkan kesalahan penanganan cudnn yang sama sampai saya mencoba solusi Anda. Ini akhirnya berjalan sekarang pada RTX 2070 Max Q dan menggunakan memori GPU minimal.

Saya juga menemui masalah ini
anacondacloud menginstal tensorflow-gpu2.0

rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
mengerti 7.6.5
Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR
Gagal mendapatkan algoritme konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah pesan log peringatan telah dicetak di atas.

Saya juga menemui masalah ini
anacondacloud menginstal tensorflow-gpu2.0

rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
mengerti 7.6.5
Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR
Gagal mendapatkan algoritme konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah pesan log peringatan telah dicetak di atas.

Apakah Anda memasukkan:

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)

di bagian atas kode entri Anda?

Setelah beberapa lama bereksperimen dengan masalah yang tampaknya berbeda gagal dengan tf.signal.stft
Saya akhirnya menemukan utas ini dan mencoba solusi yang memungkinkan pertumbuhan memori. Itu memecahkan masalah saya juga.
Saya telah menginstal tensorflow-gpu = 2.1 dengan cudatoolkit = 10.1 dari anaconda, tetapi mencoba juga menginstal
tensorflow-gpu melalui pip dengan hasil yang persis sama. Saya dapat mereproduksi ini di bawah linux-ubuntu 18.04 dan debian 9.12 dengan kartu

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

Saya juga mencoba dua kartu lain di lab kami

  GeForce GTX 1080 Ti
  TITAN Xp COLLECTORS EDITION

di mana kode berjalan dengan baik dengan dan tanpa memungkinkan pertumbuhan memori

Masalah minimal saya ada di bawah. Menariknya masalahnya bukan konv2d. Saya dapat mengubah urutan ketiga perintah ini dan yang ketiga selalu gagal.

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

Saya juga mengalami masalah ini
anacondacloud menginstal tensorflow-gpu2.0
rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
mengerti 7.6.5
Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR
Tak dapat memperoleh algoritme konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah ada pesan log peringatan yang tercetak di atas.

Apakah Anda memasukkan:

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)

Di bagian atas kode yang Anda masukkan?

ya, saya memecahkan masalah ini seperti ini. Terima kasih !!

Saya memiliki masalah yang sama dan allow_growth = True adalah solusinya. TAPI, untuk TensorFlow 2, untuk melakukan itu Anda perlu menambahkan baris berikut:

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

Terima kasih kepada pengguna @opcecco dalam masalah ini: https://github.com/tensorflow/tensorflow/issues/25446

Menariknya masalahnya bukan konv2d. Saya dapat mengubah urutan ketiga perintah ini dan yang ketiga selalu gagal.

@roebel Bisakah Anda melampirkan log untuk enam permutasi yang berbeda?

Dan apa yang terjadi jika Anda mengubah program menjadi (katakanlah):

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

Apakah kegagalan masih terjadi pada conv2d atau apakah itu terjadi pada stft ketiga?

@sanjoy yakin disini tiga variasi script diatas merubah urutan perintah dan varian keempat yang dimulai dengan 4 stft dan diakhiri dengan conv2d

Empat log yang berbeda menggunakan skrip dari
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -593098386
mengganti empat baris terakhir.

Singkatnya hasil tergantung pada pesanan:

stft-> blas-> conv2d gagal saat menjalankan conv2d
conv2d-> stft-> blas gagal saat menjalankan stft (jadi bukan yang ketiga, tetapi blas tampaknya sudah dimuat untuk conv2d
matmul-> conv2d-> stft gagal saat menjalankan STFT
stft -> - stft -> - stft-> stft-> matmul-> conv2d gagal saat conv2d dijalankan. Silakan lihat log di bawah ini.

Tidak keberatan meminta varian lain jika diperlukan.

konv2d terakhir:

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 terakhir

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 terakhir

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 konv2d pertama terakhir:

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

Terimakasih banyak

Saya mendapat masalah yang sama dengan konfigurasi berikut:
TensorFlow diinstal dari (sumber atau biner): r1.13.1, r.1.13.2, r1.14
Versi Python: 3.6.1
Versi Bazel (jika dikompilasi dari sumber):
Versi GCC / Compiler (jika dikompilasi dari sumber):
Versi CUDA / cuDNN: CUDA 10 dengan cuDNN 7.4.1
Model GPU dan memori: RTX 2070 8GB.

Saya mengatasi masalah ini dengan:
TensorFlow diinstal dari (sumber atau biner): r1.12.0
Versi Python: 3.6.9
Versi GCC / Kompiler: 4.8
Versi CUDA / cuDNN: CUDA 9.0 dengan cuDNN 7.1.4
Model GPU dan memori: RTX 2070 8GB.
Semoga bermanfaat bagi Anda

Saya juga menghadapi masalah seperti itu, yang diselesaikan dengan menambahkan variabel lingkungan TF_FORCE_GPU_ALLOW_GROWTH = true.

Konfigurasinya adalah sebagai berikut:
Windows 10
Tensorflow dikompilasi dari sumber r2.0
Bazel: 0.26.1
Kompiler C ++: MSVC 2017
CUDA: 10
cuDNN: 7.6.5

intel4930 cpu, nvidia titan XP pascal
Ubuntu 18.04.4, miniconda terbaru,
`! daftar conda | grep "cud" memberi

    cudatoolkit               10.1.243             h6bb024c_0  
    cudnn                     7.6.5                cuda10.1_0  

`! daftar conda | grep "tensor" `memberi

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  

sel pertama di notebook jupyter adalah:

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)

model adalah autoencoder variasional dengan parameter Total: 112.269
x_train.shape, y_train.shape, x_test.shape, y_test.shape memberi
((106496, 32, 32, 1), (106496,), (12288, 32, 32, 1), (12288,))

kode termasuk:

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

dan gagal. acara konsol

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

Saya f bukannya sel pertama seperti disebutkan di atas, saya gunakan

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)

maka saya mendapatkan kesalahan ini


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?

Menariknya, selama perjuangan saya, saya mendapat pesan dari tanda merah 'tidak ada entri' di menubar saya yang mengatakan 'kesalahan hitungan rusak Anda memiliki ketergantungan yang tidak terpenuhi'
Saya menjalankan pembaruan perangkat lunak dan ingin menghapus libcudnn7-dev dan libcudnn7-doc
serta memutakhirkan 57 pustaka lain yang berkaitan dengan linux

EDIT: Setelah reboot, model tampaknya berhasil berlatih menggunakan ini:

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)

atau ini:

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)

utilisasi memori pada gpu <700 MB dengan ukuran batch 16 dan
~ 1 gigabyte dengan ukuran batch 256 (yang melatih 3x lebih cepat)

Saya memang mencoba mengompilasi dari sumber, tetapi mengalami masalah yang sama. Saya akhirnya dapat memperbaiki masalah saya adalah menyetel config.gpu_options.allow_growth = True .

Tetapi jika saya menemui masalah ini di baris perintah, bagaimana cara menambahkan kode-kode ini?

Saya juga menemui masalah ini
anacondacloud menginstal tensorflow-gpu2.0
rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
mengerti 7.6.5
Tidak dapat membuat pegangan cudnn: CUDNN_STATUS_INTERNAL_ERROR
Gagal mendapatkan algoritme konvolusi. Ini mungkin karena cuDNN gagal untuk menginisialisasi, jadi coba lihat apakah pesan log peringatan telah dicetak di atas.

Apakah Anda memasukkan:

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)

di bagian atas kode entri Anda?

Saya memiliki masalah yang sama persis seperti di atas. Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

Solusi dari @robosmith memperbaiki masalah saya sepenuhnya!

Spesifikasi saya:
RTX 2070
Ubuntu 18.04 LTE
Tensorflow 2.1.0
Keras 2.3.0
mengerti 7.6.5
cuda10.1.0
konda 4.8.3
python 3.7.7

Dibangun melalui conda install tensorflow-gpu keras

Terima kasih banyak! Ini adalah pertama kalinya saya mendapatkan TF-2 untuk bekerja! Dan TF-1 berhenti bekerja sama sekali, itulah sebabnya saya memutuskan untuk meningkatkan dan 'lihat apa yang terjadi'!

Terima kasih!

config.gpu_options.allow_growth = Benar

bila Anda menggunakan tensorflow 2.0, Anda dapat menggunakan
tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
kode ini setelah import tensorflow as tf tetapi sebelum kode Anda.

Saya memang mencoba mengompilasi dari sumber, tetapi mengalami masalah yang sama. Saya akhirnya dapat memperbaiki masalah saya adalah menyetel config.gpu_options.allow_growth = True .

Kode ini dibagikan agar lebih cepat tersedia untuk pengguna tensorflow dan keras.
sumber dari sini

# 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

Hanya ingin ikut campur dan mengatakan bahwa masalahnya masih ada;

Spesifikasi saya:
Ubuntu 20.04
NVIDIA RTX 2070
Nvidia_driver 440,64
Tensorflow-gpu 2.0.1 (Diinstal melalui conda, yang secara otomatis menginstal Cudatoolkit dan CuDNN di lingkungan yang sama)
cudatoolkit 10.1.243
mengerti 7.6.5

Masalah diselesaikan dengan tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)

Namun ini tampaknya lebih seperti penyelesaian daripada perbaikan yang sebenarnya, dan banyak orang memiliki 20XX kartu hari ini. Mungkin harus ada pembaruan untuk mengatasi masalah ini.

Pembaruan: Karena saya melakukan dual-boot, saya mencoba untuk memeriksa windows juga. Masalah tetap ada di sana.
Windows 10
Nvidia-driver 445.87
Selain itu semuanya serupa

Menginstal driver terbaru (445.87) untuk RTX 2080 saya memecahkan masalah ini untuk saya.

@NBouman Itu menarik tetapi bagi saya di Ubuntu 18.04 dengan GeForce GTX 1050 TI, saya baru saja memperbarui ke driver 440.82 terakhir yang tersedia. Masih diperlukan pertumbuhan memori untuk membuatnya berfungsi.

Menginstal driver terbaru (445.87) untuk RTX 2080 saya memecahkan masalah ini untuk saya.

@NBouman OS apa yang Anda gunakan? Saya menggunakan Ubuntu 20.40, dan driver terbaru yang tersedia yang dapat saya temukan adalah 440,82, dan, seperti @roebel , masalah tetap ada.

@roebel @eduardoscsouza Saya menggunakan Windows 10 dengan mesin yang sebelumnya mengalami masalah ini.

Hanya ingin ikut campur dan mengatakan bahwa masalahnya masih ada;

Spesifikasi saya:
Ubuntu 20.04
NVIDIA RTX 2070
Nvidia_driver 440,64
Tensorflow-gpu 2.0.1 (Diinstal melalui conda, yang secara otomatis menginstal Cudatoolkit dan CuDNN di lingkungan yang sama)
cudatoolkit 10.1.243
mengerti 7.6.5

Masalah diselesaikan dengan tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)

Namun ini tampaknya lebih seperti penyelesaian daripada perbaikan yang sebenarnya, dan banyak orang memiliki 20XX kartu hari ini. Mungkin harus ada pembaruan untuk mengatasi masalah ini.

Pembaruan: Karena saya melakukan dual-boot, saya mencoba untuk memeriksa windows juga. Masalah tetap ada di sana.
Windows 10
Nvidia-driver 445.87
Selain itu semuanya serupa

Untuk tensorflow 2.0.0 bekerja dengan:
tf.config.experimental.set_memory_growth(tf.config.experimental.list_physical_devices('GPU')[0],True)

Terima kasih!!! ribuan terima kasih !!!!!!!!!!!!!!!

OS: ubuntu 18.04 lts

Versi Driver: 435.21.0

CUDA: cudatoolkit 10.1

CUDNN: cudnn-7.6.5-cuda10.1_0

Saya menggunakan anaconda menginstal tensorflow

conda create -n tf-gpu tensorflow-gpu

cudatoolkit dan cudnn secara otomatis diinstal oleh anaconda melalui perintah sebelumnya.

Saya memiliki pertanyaan yang sama, Kesalahannya:

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

Jadi di sini ada masalah yang belum terpecahkan (selain solusi yang bertentangan dengan rekomendasi resmi untuk tidak menggunakan pertumbuhan memori untuk penanganan memori yang lebih efisien). Belum banyak tanggapan dari tim pengembang. Kenapa ya?

Bug ini tampaknya mempengaruhi cukup banyak versi tensorflow (1.13, 2.0, 2.1), Jika saya melihat dengan benar semua masalah dilaporkan terjadi dengan cuda 10. Kode berjalan dengan baik pada banyak kartu tetapi tidak pada yang lain.
Bisakah seseorang dari tim pengembang memberi tahu kami apakah ini lebih mengarah pada masalah di driver cuda daripada di lapisan tensorflow? Jika demikian, akan sangat membantu untuk mengirimkan laporan bug ke halaman dukungan NVIDIA. Bukan?

Bisakah seseorang dari tim dev tensorflow mengomentari bagaimana mereka melihat bug ini? Apakah ada orang yang menyelidiki ini?

Apakah orang telah memeriksa apakah ada dua pustaka bersama CuDNN 7 di jalur atau jalur pustaka LD. Tidak ada nomor minor atau patch di pustaka ini tetapi ketidakcocokan versi dapat menyebabkan pesan kesalahan ini.

Saya membuka laporan bug di NVIDIA, saya akan memberi tahu Anda apa hasilnya.

@amhod
Memang ada banyak versi libcudnn yang terinstal, setiap anaconda env memiliki versinya sendiri-sendiri.
Biasanya anaconda menginstal dengan rpath yang diatur dengan benar sehingga agak sulit untuk tidak mendapatkan pustaka yang tepat.

Saya telah membuat strace dan menggenggam perpustakaan yang dibuka ketika gagal
Mereka secara konsisten berasal dari dir anaconda env yang menjadi tuan rumah paket tensorflow (lihat di bawah).
Selain libcuda yaitu versi 440.82 dan telah saya kompilasi dengan installer NVIDIA.

Saya dapat mengatur LD_LIBRARY_PATH ke salah satu dirs anaconda env lib dengan cudatoolkit berbeda dan libcudnn berbeda, jejaknya tetap sama.
Perhatikan juga bahwa bukan lbcudnn yang menimbulkan masalah. Itu selalu merupakan pustaka libcuxyz ketiga
digunakan dan ini hanya pada GPU tertentu (saya telah menggunakan skrip penginstalan yang sama pada mesin yang berbeda dengan GPU yang berbeda, beberapa berfungsi, sebagian tidak) dan semuanya berfungsi jika pertumbuhan memori diaktifkan.

(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

Saya mendapat masalah yang sama di Ubuntu 20.04 dengan GeForce RTX 2060 SUPER. NN dengan lapisan padat bekerja dengan baik. Tetapi dengan lapisan CNN saya mendapatkan 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.
Menambahkan tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) tidak ada bedanya dengan kesalahan.
Saya mengikuti instalasi sesuai dengan https://www.tensorflow.org/install/gpu dan nvidia-smi menunjukkan:
Driver Version: 440.64.00 CUDA Version: 10.2
Conda env saya memiliki:

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

Dalam conda env dengan tf 1.15 saya mendapatkan error yang sama. Akan lebih bagus jika ini bisa diperbaiki.

Memperbarui

Setelah menggunakan export TF_FORCE_GPU_ALLOW_GROWTH=true semuanya bekerja. Saya mendapat kesan bahwa tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) akan sama, tetapi bukan itu masalahnya. Saya pikir ini harus dinyatakan dengan jelas di halaman web dukungan GPU TensorFlow.

@amhod
Memang ada banyak versi libcudnn yang terinstal, setiap anaconda env memiliki versinya sendiri-sendiri.
Biasanya anaconda menginstal dengan rpath yang diatur dengan benar sehingga agak sulit untuk tidak mendapatkan pustaka yang tepat.

Saya telah membuat strace dan menggenggam perpustakaan yang dibuka ketika gagal
Mereka secara konsisten berasal dari dir anaconda env yang menjadi tuan rumah paket tensorflow (lihat di bawah).
Selain libcuda yaitu versi 440.82 dan telah saya kompilasi dengan installer NVIDIA.

Saya dapat mengatur LD_LIBRARY_PATH ke salah satu dirs anaconda env lib dengan cudatoolkit berbeda dan libcudnn berbeda, jejaknya tetap sama.
Perhatikan juga bahwa bukan lbcudnn yang menimbulkan masalah. Itu selalu merupakan pustaka libcuxyz ketiga
digunakan dan ini hanya pada GPU tertentu (saya telah menggunakan skrip penginstalan yang sama pada mesin yang berbeda dengan GPU yang berbeda, beberapa berfungsi, sebagian tidak) dan semuanya berfungsi jika pertumbuhan memori diaktifkan.

(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

Jadi Anda seperti mengilustrasikan poin saya libcudnn.so.7 tidak mengatakan 7.XXX.YYY di atas itu 7.XXX.YYY memiliki ketergantungan lebih lanjut pada CUDA 10.2 10.1 10.0 9.2 9.1 9.0 dll

Saya belum melihat kesalahan sejak saya mulai mengelola jalur dengan baik dan mengelola jumlah memori yang tersedia sebelum memulai grafik dengan ukuran yang diketahui dan memastikan bahwa GPU yang ditargetkan hanya menggunakan cukup memori untuk grafik dan cukup memori untuk menanyakan berapa banyak CUDA memori tersedia.

Saya pikir ini adalah masalah sumber daya. Berapa banyak memori yang tersedia saat Anda memulai proses dan berapa banyak memori yang digunakan grafik Anda?

@ kognat-doc

Jadi Anda seperti mengilustrasikan poin saya libcudnn.so.7 tidak mengatakan 7.XXX.YYY di atas 7.XXX.YYY memiliki ketergantungan lebih lanjut pada CUDA 10.2 10.1 10.0 9.2 9.1 9.0 dll

Pertanyaan yang Anda ajukan adalah "Apakah orang telah memeriksa apakah ada dua pustaka bersama CuDNN 7 di jalur atau jalur pustaka LD". Dan jawaban saya adalah: Saya sudah memeriksa ini, hanya ada satu.
Aku sudah mengirimkan jejaknya padamu.

Saya belum melihat kesalahan sejak saya mulai mengelola jalur

Apa yang Anda maksud dengan mengatur jalan?
Saya selalu mengatur jalan saya! Saya telah menginstal lingkungan conda yang saya verifikasi konsisten! Semuanya seperti yang telah dikemas oleh anaconda, saya memverifikasi ini.

Bagaimanapun Anda mungkin percaya saya terlalu bodoh, untuk mendirikan anaconda. Baik
Saya sekarang telah mengunduh gambar buruh pelabuhan resmi

tensorflow / t ensorflow: 2.1.0-gpu-py3

dan jalankan skrip saya di sana. Itu macet jika saya tidak punya

ekspor TF_FORCE_GPU_ALLOW_GROWTH = true

Bisakah saya mengelola jalur dengan lebih baik?

dan mengelola jumlah memori yang tersedia sebelum memulai grafik dengan ukuran yang diketahui dan memastikan bahwa GPU yang ditargetkan hanya menggunakan cukup memori untuk grafik dan cukup memori untuk menanyakan berapa banyak memori CUDA yang tersedia.

Saya pikir ini adalah masalah sumber daya. Berapa banyak memori yang tersedia saat Anda memulai proses dan berapa banyak memori yang digunakan grafik Anda?

Seperti yang saya tulis di atas dalam laporan saya, tidak ada grafik (atau lebih baik dikatakan hampir tidak ada grafik)! Saya hanya menjalankan empat baris ini

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

dan macet. Jika saya mengubah urutan ketiga baris itu selalu macet setelah tiga operasi ini (saya telah menjelaskan ini dalam laporan bug saya).

Hanya untuk bersenang-senang, saya menghitung byte: ada <83kB memori data yang diperlukan. GPU kosong, saya tidak menggunakannya untuk grafik, dan tidak ada proses lain yang berjalan di atasnya. Di berbagai sistem, tersedia 4GB atau 11GB! Selain itu saya tahu cara menjalankan nvidia-smi! Jadi kartunya masih kosong, saya tidak bisa menjalankan 4 baris ini yang membutuhkan 84kB!

Sekadar informasi, kesalahan karena kehabisan memori terlihat sangat berbeda, saya punya ini juga. Untuk grafik saya yang sebenarnya, saya sangat mampu mendeteksi ini dan bereaksi sesuai itu.

Terima kasih atas usahamu.

@roebel Apakah Anda melihat komentar @sanjoy tentang debugging dari cpp https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750?

Saya belum sempat mengkompilasi ulang tensorflow dan mencobanya. Versi mereka bergerak sangat cepat sehingga saya perlu sedikit menyiapkan dan mengkompilasi semuanya. Plus, 1,15 menjatuhkan dukungan untuk versi gcc yang saya gunakan, dan 1,13 tidak menerima pembaruan apa pun sehingga tidak ada gunanya bagi saya untuk men-debug ini.

@roebel Saya tidak ingat apa yang memicu masalah bagi Anda.

lihat https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -480549043 ini

Itulah sebabnya saya pikir itu terkait dengan memori, masalah ini tidak memengaruhi saya selama beberapa waktu, maupun pengguna perangkat lunak saya pada berbagai platform.

@amhod

Ya, saya mengerti jika ada bug, sepertinya itu dipicu oleh situasi yang agak tertentu saja.

@odinsbane

terima kasih, tidak, saya tidak menyadarinya. Saya akan melihat apakah berhasil mengkompilasi versi terbaru tf2.2.0.

Bahkan saya mencoba buruh pelabuhan dengan tensorflow 2.2, itu menggunakan versi yang sama dari cuda 10.1 dan memiliki masalah yang sama.

Saya pikir ini hanya masalah windows, jadi saya menginstal lingkungan ubuntu dari awal, hanya untuk mengetahui bahwa kartu grafis saya (RTX 2080) itulah masalahnya. Sayangnya saya pikir saya akan memilih platform pembelajaran mesin yang berbeda karena masalah ini, karena ini tampaknya telah menjadi masalah sejak 2018.

@ kognat-doc

dan mengelola jumlah memori yang tersedia sebelum memulai grafik dengan ukuran yang diketahui dan memastikan bahwa GPU yang ditargetkan hanya menggunakan cukup memori untuk grafik dan cukup memori untuk menanyakan berapa banyak memori CUDA yang tersedia.

Saya pikir ini adalah masalah sumber daya. Berapa banyak memori yang tersedia saat Anda memulai proses dan berapa banyak memori yang digunakan grafik Anda?

Seperti yang saya tulis di atas dalam laporan saya, tidak ada grafik (atau lebih baik dikatakan hampir tidak ada grafik)! Saya hanya menjalankan empat baris ini

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

dan macet. Jika saya mengubah urutan ketiga baris itu selalu macet setelah tiga operasi ini (saya telah menjelaskan ini dalam laporan bug saya).

Hanya untuk bersenang-senang, saya menghitung byte: ada <83kB memori data yang diperlukan. GPU kosong, saya tidak menggunakannya untuk grafik, dan tidak ada proses lain yang berjalan di atasnya. Di berbagai sistem, tersedia 4GB atau 11GB! Selain itu saya tahu cara menjalankan nvidia-smi! Jadi kartunya masih kosong, saya tidak bisa menjalankan 4 baris ini yang membutuhkan 84kB!

Apakah Anda mengamati berapa banyak memori yang digunakan dengan menggunakan jam tangan di nvidia-smi saat proses Anda berjalan dengan interval 50 md?

Lihat perbaikan ini yang berhasil untuk orang lain

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

Jadi, Anda dapat melakukan patch tanpa menyentuh kode hanya dengan mengubah lingkungan runtime Anda.

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

@sanjoy @odinsbane

Kabar baik!
Berikut
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750

Saya membangun kembali versi 2.1 menggunakan resep tensorflow anaconda dari sini
https://github.com/AnacondaRecipes/tensorflow_recipes

Saya menambahkan dua cetakan di MinSystemMemory yang menunjukkan available_memory dan min_system_memory.
Di sistem saya dengan GeForce GTX 1050 Ti menonaktifkan log standar TF
Saya punya ini

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 melaporkan bahwa GPU memiliki 4040MiB, pada sistem ini terdapat X yang berjalan pada kartu yang memiliki 13MiB sehingga angkanya tampak baik-baik saja.

min_system_memory disetel seperti ini

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

Jadi jumlah maksimum memori yang dipilih. Sebagai gantinya saya menambahkan mekanisme untuk memaksa min_system_memory melalui variabel lingkungan TF_FORCE_MIN_SYSTEM_MEMORY_MB.
Lalu lari

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

Masalah terpecahkan!

Sayangnya saat ini saya tidak memiliki sistem dengan kartu RTX yang berfungsi dan saya tidak yakin kapan itu akan kembali berfungsi. Jika ada yang mau menguji ini pada kartu seperti itu, saya dapat menyediakan paket pip dan konten lingkungan conda untuk ubuntu linux yang perlu diinstal untuk menjalankannya.

Bagus @roebel !

Mungkin ada baiknya menyarankan itu sebagai permintaan tarik dan tambahkan ke dokumen.

@samhodge @sanjoy @odinsbane

Mungkin ada baiknya menyarankan itu sebagai permintaan tarik dan tambahkan ke dokumen.

Tentu, tetapi masalahnya adalah solusinya mungkin tidak akan berfungsi untuk kartu lain.
Untuk GTX 1050 saya, total memori adalah 4GB dan memori sistem default dipertahankan
dengan tensorflow maks (300MB, 4GB * 0,05). Jadi untuk GTX1050 ini akan menjadi 300MB yang tampaknya terlalu kecil. Seperti disebutkan di atas, saya perlu meningkatkan menjadi 310MB.

Sekarang untuk RTX2080 total memori 11GB yang dengan max (300MB, 11GB * 0,05)
akan memilih memori sistem menjadi 550MB, yang menurut temuan pada 1050
biasanya sudah cukup.

Saya akan memiliki akses ke GPU RTX2080 lagi pada akhir minggu dan akan melihat
apa yang saya dapatkan di sana.

@samhodge @sanjoy @odinsbane

Akhirnya saya dapat menjalankan pustaka yang ditambal pada kartu rtx 2080.
Seperti yang diharapkan, versi yang ditambal tidak lulus. Di sini lagi naskahnya

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

Dan di sini matriks available memory dilaporkan dari gpu_device.cc,
nilai default dari Min_system_memory seperti yang dipilih di gpu_device.cc dan
min value of the min_system_memory Saya perlu memilih agar skrip tidak dibatalkan:

Kartu | AvailMem | Def MinSysMem | MinSysMem yang dibutuhkan
: ------- |: ----------- |: ---------- |: --------------- --------
1050 TI | 4163764224 | 314572800 | 325058560
1080 TI | 11567431680 | 578371584 | 335544320
2080 TI | 11381964800 | 569098240 | 618659840

Jadi sementara 1050 dan 1080 menjalankan skrip dengan ukuran memori yang hampir sama
RTX2080 membutuhkan hampir dua kali lebih banyak memori. Kedengarannya tidak bagus
untuk saya.

Ada saran apa yang harus dicoba untuk mendapatkan nilai yang sebanding ini?

@brebel

Saya telah berjuang dengan ini di aplikasi C ++ saya untuk sejumlah iterasi.

Apa yang terjadi pada akhirnya adalah sebagai berikut.

Jalankan model hanya pada GPU jika tersedia cukup memori untuk menjalankan model.

Jadi, jumlah memori yang dibutuhkan model dapat dihitung.

Jadi, Anda perlu memiliki memori GPU sebagai persentase yang sesuai dengan model itu.

Kemudian Anda juga perlu mengetahui tentang berapa banyak memori yang tersedia pada kartu tepatnya sebelum mengalokasikan memori, yang tunduk pada kondisi balapan, karena Anda tidak tahu apa lagi yang menggunakan memori CUDA pada saat yang sama pada sistem operasi.

Tapi selain kondisi balapan, Anda juga perlu mengukur memori bebas.

Ini dilakukan dengan menggunakan cudaMemInfo , yang dengan sendirinya menggunakan memori.

Jadi dengan ketentuan bahwa Anda memiliki cukup memori untuk menjalankan cudaMemInfo sekali untuk mengukur dan Anda perlu memastikan bahwa cukup memori bebas untuk menyesuaikan model dan menjalankan cudaMemInfo sekali lagi, kemudian dan hanya maka Anda dapat mengalokasikan cukup persentase VRAM yang tersedia pada kartu tersebut untuk menjalankan model.

Bagaimanapun yang dibawa pulang dari ocehan acak saya adalah bahwa cudaMemInfo diperlukan untuk mengumpulkan jumlah memori yang tersedia untuk dialokasikan yang dengan sendirinya juga menggunakan sebagian dari memori yang tersedia itu.

Mungkin entah bagaimana jumlah memori yang digunakan oleh cudaMemInfo berbeda pada kartu berbasis Turing dibandingkan dengan kartu berbasis Pascal, saya bisa meminta seseorang dari NVIDIA untuk melihatnya jika Anda mau.

Ya, saya tidak dapat menemukan referensi ke cudaMemInfo sama sekali tetapi itu sepertinya jenis footprint yang akan menjadi maksimal 300Mb dan 5% dari memori kartu.

melihat-lihat:

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

Sepertinya tidak menggunakan ini per se.

Saya tidak berpikir kita harus bermain kucing-dan-tikus dengan jumlah memori yang perlu kita simpan untuk perpustakaan sistem - seperti yang Anda amati, tidak ada cara sistematis untuk melakukannya dengan benar.

Sebagai gantinya IMO kita harus mencoba untuk menginisialisasi pustaka sistem sebelum pengalokasi BFC memiliki kesempatan untuk mengalokasikan sisa memori GPU.

CC @igg

Mungkin seseorang harus melakukan ini hanya jika memungkinkan pertumbuhan memori tidak aktif. Jika tidak, Anda akan selalu membutuhkan sekitar 580MB untuk tahun 2080 meskipun Anda tidak membutuhkan semua operator.

Saya membuat beberapa tes lagi mengenai persyaratan memori sistem minimum untuk menjalankan kombinasi dari tiga operasi dari kasus pengujian saya. Saya hanya membandingkan kartu 1080 dan 2080. Anda tidak akan menemukan konv2 sendiri karena ini menginisialisasi blas. Keluar

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

Dapat dilihat bahwa pada 2080 cuda memerlukan overhead untuk setiap operasi, dan bahwa overhead ini meningkat saat menggunakan lebih banyak library. Dalam kebanyakan kasus, biaya tambahan adalah <100MB tetapi menjadi >220MB setelah Konv2D terlibat ..

Jika @samhodge memiliki kontak dengan NVIDIA, secara pribadi saya akan tertarik untuk mendengar apakah ini dimaksudkan.

Halo semuanya!
Saya telah memecahkan masalah serupa dengan membatasi pertumbuhan memori dan Anda dapat mencobanya.

Anda dapat menemukan kode di bagian Batasi pertumbuhan memori

(Ini adalah komentar pertama saya di GitHub)

Saya memiliki masalah serupa sebelumnya. membatasi memori GPU secara manual membantu. https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167

Saya mendapat masalah yang sama di Ubuntu 20.04 dengan GeForce RTX 2060 SUPER. NN dengan lapisan padat bekerja dengan baik. Tetapi dengan lapisan CNN saya mendapatkan 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.
Menambahkan tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) tidak ada bedanya dengan kesalahan.
Saya mengikuti instalasi sesuai dengan https://www.tensorflow.org/install/gpu dan nvidia-smi menunjukkan:
Driver Version: 440.64.00 CUDA Version: 10.2
Conda env saya memiliki:

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

Dalam conda env dengan tf 1.15 saya mendapatkan error yang sama. Akan lebih bagus jika ini bisa diperbaiki.

Memperbarui

Setelah menggunakan export TF_FORCE_GPU_ALLOW_GROWTH=true semuanya bekerja. Saya mendapat kesan bahwa tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True) akan sama, tetapi bukan itu masalahnya. Saya pikir ini harus dinyatakan dengan jelas di halaman web dukungan GPU TensorFlow.

Bung, solusi Anda menyelamatkan hidup saya.

Nvidia baru saja merilis driver tampilan Linux 440.100 dan 450.51 (Beta).
Saya mencoba 440.100, dan itu tidak memperbaiki masalah. Adakah yang mencoba beta 450.51?

@edu_artis

Nvidia baru saja merilis driver tampilan Linux 440.100 dan 450.51 (Beta).
Saya mencoba 440.100, dan itu tidak memperbaiki masalah. Adakah yang mencoba beta 450.51?

Saya mencoba 450.36.06. periksa https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167.

kode yang berhasil untuk saya:

impor tensorflow sebagai tf
config = tf.compat.v1.ConfigProto ()
config.gpu_options.allow_growth = Benar
session = tf.compat.v1.InteractiveSession (config = config)

_Pastikan bahwa ini adalah bug. Sesuai dengan Kebijakan GitHub kami, kami hanya menangani bug kode / dokumen, masalah kinerja, permintaan fitur, dan masalah pembuatan / penginstalan di GitHub. tag: bug_template_

Sistem Informasi

  • Apakah saya telah menulis kode khusus (bukan menggunakan skrip contoh stok yang disediakan di TensorFlow): Ya dan Tidak (dijelaskan di bawah)
  • Platform OS dan Distribusi (misalnya, Linux Ubuntu 16.04): Manjaro
  • Perangkat seluler (mis. IPhone 8, Pixel 2, Samsung Galaxy) jika masalah terjadi pada perangkat seluler:
  • TensorFlow diinstal dari (sumber atau biner): tf-nightly-gpu (Des 19, r1.13)
  • Versi TensorFlow (gunakan perintah di bawah): 1.13.0-dev20181219
  • Versi Python: 3.7.1
  • Versi Bazel (jika dikompilasi dari sumber):
  • Versi GCC / Compiler (jika dikompilasi dari sumber):
  • Versi CUDA / cuDNN: CUDA 10 dengan cuDNN 7.4.1
  • Model GPU dan memori: RTX 2070 8GB

Jelaskan perilaku saat ini
Saya menjalankan model CNN di MNIST. Saat saya menjalankan dengan GPU, saya menjumpai
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

Saya melakukan penggalian dan menyadari bahwa ini adalah masalah memori (yang seharusnya tidak menjadi masalah karena saya memiliki 32GB RAM dan 64GB swap. Saya menjalankan htop saat menjalankan model dan saya memiliki 20 + GB gratis, yang lebih dari cukup untuk memuat pemetaan vRAM 8 GB.

Menggunakan gpu_options.allow_growth = True membuat model bekerja dengan baik, dan pengaturan os.environ['CUDA_VISIBLE_DEVICES'] = '-1' juga berfungsi. Ini berarti SAYA menghadapi masalah memori, tetapi saya tidak mengerti caranya.

Selain itu, menggunakan gpu_options.allow_growth = True tidak memperbaiki masalah yang sama saat mencoba menjalankan tensorflow / models / official / mnist / model, yang seharusnya memiliki perilaku serupa dengan kode saya.

Kode untuk mereproduksi masalah

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

Ini berhasil untuk saya.RTX 2060ubuntu 18.04python 3.6.0

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

Halo @ bm777

setelah penyelidikan saya dari beberapa bulan lalu, saya merangkum bagaimana saya memahami masalahnya

Model GPU dan memori: RTX 2070 8GB
... yang seharusnya tidak menjadi masalah karena saya memiliki RAM 32GB dan 64GB

Masalahnya bukan pada memori sistem, masalahnya adalah memori GPU!

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

berfungsi karena tidak menggunakan GPU!

Beberapa penjelasan:

TF memiliki dua mode operasi:

  1. allow memory growth = false : Dalam kasus ini TF mengalokasikan beberapa memori untuk perpustakaan sistem menggunakan tebakan kasar
    berapa banyak memori yang dibutuhkan. SEBAGAIMANA Anda dapat membaca di sini https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -633953715 TF menggunakan rumus max(300MB, GPU-MEM * fac) untuk tebakan ini. Untuk TF2.1 fac = 0.05 untuk TF2.2 dan jika saya
    ingat benar itu adalah fac=0.07 . Jadi sekarang Anda memiliki 8GB yang memberikan 400MB untuk memori pra-alokasi GPU di bawah TF2.1
    dan 560MB di bawah TF2.2.

    Saya telah secara eksperimental mengevaluasi memori pra-alokasi yang diperlukan untuk beberapa GPU dan TF21 di sini: https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -637715002 dan di sini https://github.com/tensorflow/tensorflow / issues / 24496 # Issuecomment -637715002

    Ternyata untuk operasi Conv2D saya membutuhkan 520MB di sana, Anda akan memiliki kurang dari itu di bawah TF21 tetapi lebih banyak di bawah TF22. Sayangnya Anda tidak menyebutkan versi TF Anda tetapi saya menganggap Anda menggunakan TF2.1. Jika Anda menggunakan TF2.2 dan masih gagal, ini mungkin karena Anda menggunakan GPU yang berbeda. Pokoknya fakta itu gagal. Lihat di bawah

2) allow memory growth = true : TF tidak menggunakan memori yang dialokasikan sebelumnya dan memuat perpustakaan saat mereka datang. Dalam dokumentasi TF, ini dinyatakan bermasalah karena potensi fragmentasi memori dan oleh karena itu defaultnya adalah off .

Saya ambil:

Mengingat besarnya rentang memori yang diperlukan untuk pustaka yang bergantung pada operasi yang Anda lakukan juga pada GPU yang Anda miliki, tampaknya sangat sulit untuk mendapatkan mode allow memory growth = false right (lihat https://github.com/tensorflow/ tensorflow / issues / 24496 # Issuecomment-637950411). Solusi saat ini: untuk meningkatkan ukuran memori yang dialokasikan sebelumnya, yang dilakukan untuk TF2.2, bermasalah jika GPU Anda agak kecil. Ini memblokir memori dari penggunaan dengan asumsi Anda akan membutuhkan semua perpustakaan yang tersedia (blas, Conv, FFT dan saya tidak tahu apakah ada yang lain). Jika Anda tidak menggunakan semua ini, ini akan mengakibatkan pemborosan memori yang dialokasikan sebelumnya, yang pada gilirannya mengurangi ukuran model yang dapat Anda muat untuk aplikasi Anda. Di sisi lain, saya yakin bahwa masalah fragmentasi memori dapat dicegah saat Anda membuat model lebih awal yang memaksa pemuatan pustaka sistem sebelum memulai pelatihan. Ini tampaknya yang terjadi dalam banyak kasus dan oleh karena itu tampaknya bermanfaat, terutama untuk GPU dengan memori kecil dan terutama untuk melatih model tunggal, untuk tidak mengalokasikan sebelumnya tetapi menggunakan allow memory growth = true .

Secara pribadi saya menggunakan GPU dengan memori mulai dari 4GB hingga 11GB dan mengikuti argumen di atas saya telah menetapkan TF_FORCE_GPU_ALLOW_GROWTH = true untuk semuanya. Untuk saat ini saya tidak punya masalah dengan itu.

Halo @ebel

Saya juga, saya berpikir tentang masalah kesalahan alokasi memori. Ini jelas untuk saya sekarang.
Sekarang memori GPU terlihat bagus

Di masa lalu, saya menguji banyak opsi untuk mengalokasikan memori sebelumnya 😢:

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

Secara pribadi saya menggunakan GPU dengan memori 6GB.
Dan terima kasih @roebel , untuk panah baru ini TF_FORCE_GPU_ALLOW_GROWTH=true memaksa GPU saya untuk alokasi 😊.

Saya memiliki masalah yang sama. Saya dapat mengatakan dengan pasti bahwa masalahnya hanya terjadi pada 2070 RTX saya, dan BUKAN pada Titan RTX, menjalankan kode yang persis sama.

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

Cukup tingkatkan ke Tensorflow 2.3 dengan CUDA 11 dan cudnn 8.0. Ini secara ajaib memecahkan semua masalah saya dan saya bahkan tidak memerlukan solusi dengan config.gpu_options.allow_growth = True sekarang.

sayangnya, saya perlu menjalankan kode yang hanya mendukung tensorflow 1.X

Cukup tingkatkan ke Tensorflow 2.3 dengan CUDA 11 dan cudnn 8.0. Ini secara ajaib memecahkan semua masalah saya dan saya bahkan tidak memerlukan solusi dengan config.gpu_options.allow_growth = True sekarang.

Mengupgrade dari 2.2 ke 2.3 bahkan dengan eksplisit TF_FORCE_GPU_ALLOW_GROWTH=false memecahkan masalah ini untuk saya juga (setidaknya untuk saat ini saya dapat menjalankan kode demo delf ; belum menguji dengan yang lain).

Saya masih menggunakan CUDA 10.1, Cudnn 7.6.5.

Apakah ada perbaikan untuk masalah ini dengan tensorflow 2 dan python3 ???

Saya memiliki:
RTX 2080

Saya mendapatkan pesan ini:


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

Jika masalah Anda memiliki asal yang sama dengan masalah yang ditangani dalam masalah saat ini (yang tidak dapat saya ketahui dari laporan Anda) maka ada beberapa solusi yang dapat Anda temukan dengan mudah dengan membaca 10-20 posting terakhir di sini. benang.

Saya memperbaikinya dengan ini:

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

Saya mengalami masalah yang sama dengan RTX 2080. Kemudian kode berikut bekerja untuk saya.

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

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

Terimakasih semuanya

Saya rasa kita bisa berhenti memposting perbaikan allow_growth sekarang :)

RTX 2070 di sini. Telah mendapatkan kesalahan ini, tetapi sekarang berjalan dengan TF_FORCE_GPU_ALLOW_GROWTH=true (seperti yang ditunjukkan oleh komentator lain, perbaiki untuk mereka) mengubah pesan kesalahan menjadi kesalahan kehabisan memori (meskipun saya punya banyak memori):

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

Tetapi GPU saya memiliki 8GB dan hanya sekitar 250MB yang digunakan sebelum saya memulai proses. Jadi saya tidak mengerti, kenapa tidak bisa mengalokasikan 3.87GB? (menurunkan ukuran batch tidak berpengaruh; berat file hdf5 kurang dari 200MB)

TF_FORCE_GPU_ALLOW_GROWTH = true berhasil untuk saya.
tf.config.experimental.set_memory_growth (gpu, True) juga berfungsi.

Ini konfigurasi saya:
GPU GTX 1650
cuda-10-1 10.1.243-1
libcudnn7 7.6.5.32-1 + cuda10.1
Ubuntu 18.04.5 LTS

Siapa pun yang tidak dapat menyetel variabel lingkungan, dapat mencoba ini seperti yang disarankan di https://www.tensorflow.org/guide/gpu :
gpus = tf.config.experimental.list_physical_devices ('GPU')
jika gpus:
mencoba:
# Saat ini, pertumbuhan memori harus sama di seluruh GPU
untuk gpu di gpus:
tf.config.experimental.set_memory_growth (gpu, True)
logical_gpus = tf.config.experimental.list_logical_devices ('GPU')
print (len (gpus), "GPU Fisik", len (logika_gpus), "GPU Logis")
kecuali RuntimeError sebagai e:
# Pertumbuhan memori harus diatur sebelum GPU diinisialisasi
cetak (e)

Mengetik perintah yang disebutkan di terminal hanya berhasil untuk saya.

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

Cukup tingkatkan ke Tensorflow 2.3 dengan CUDA 11 dan cudnn 8.0. Ini secara ajaib memecahkan semua masalah saya dan saya bahkan tidak memerlukan solusi dengan config.gpu_options.allow_growth = True sekarang.

Tampaknya masalah ini diperhatikan dan diselesaikan di tensorflow 2.3.0.

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

Permasalahan yang sama:
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.

Dan solusi allow_growth = True tidak membantu.

Setelah saya memutakhirkan tensorflow ke 2.3.0, masalah hilang, bahkan tanpa menambahkan baris allow_growth = True .

ok, berhasil di tf-nightly-gpu-2.0-preview dan notebook ipython menambahkan ini ke kode saya:

dari tensorflow.compat.v1 impor ConfigProto
dari tensorflow.compat.v1 impor InteractiveSession

config = ConfigProto ()
config.gpu_options.allow_growth = Benar
sesi = InteractiveSession (config = config)

itu berhasil dalam kasus saya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat