Tensorflow: cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR

作成日 2018年12月21日  ·  181コメント  ·  ソース: tensorflow/tensorflow

これがバグであることを確認してください。 tag:bug_template

システムインフォメーション

  • (TensorFlowで提供されているストックサンプルスクリプトを使用するのではなく)カスタムコードを記述しましたか:はいおよびいいえ(以下で説明)
  • OSプラットフォームとディストリビューション(例:Linux Ubuntu 16.04):Manjaro
  • モバイルデバイスで問題が発生した場合のモバイルデバイス(iPhone 8、Pixel 2、Samsung Galaxyなど):
  • (ソースまたはバイナリ)からインストールされたTensorFlow:tf-nightly-gpu(Dec 19、r1.13)
  • TensorFlowバージョン(以下のコマンドを使用):1.13.0-dev20181219
  • Pythonバージョン:3.7.1
  • Bazelバージョン(ソースからコンパイルする場合):
  • GCC /コンパイラバージョン(ソースからコンパイルする場合):
  • CUDA / cuDNNバージョン:cuDNN7.4.1を搭載したCUDA10
  • GPUモデルとメモリ:RTX 2070 8GB

現在の行動を説明する
MNISTでCNNモデルを実行しています。 GPUで実行しているときに、
2018-12-20 20:09:13.644176: E tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

少し掘り下げてみたところ、メモリの問題であることがわかりました(32GBのRAMと64GBのスワップがあるのでそうではないはずです。モデルを実行しているときにhtopを実行し、20GB以上の空き容量があります。 8GBのvRAMマッピングに適合するのに十分です。

gpu_options.allow_growth = Trueを使用すると、モデルが正しく機能し、 os.environ['CUDA_VISIBLE_DEVICES'] = '-1'も機能します。 これは、私がメモリの問題に直面していることを意味しますが、その方法がわかりません。

また、 gpu_options.allow_growth = Trueを使用しても、tensorflow / models / official / mnist / modelを実行しようとしたときに同じ問題が修正されません。これは、私のコードと同様の動作をするはずです。

問題を再現するためのコード

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


class Model:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

    model = Model(inputs, labels)

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

    # sess = tf.Session()

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

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

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

    return


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

最も参考になるコメント

ソースからコンパイルしようとしましたが、同じ問題が発生しました。 config.gpu_options.allow_growth = True設定することで問題を解決することができました。

全てのコメント181件

同じGPUで同じ問題「CUDNN_STATUS_INTERNAL_ERROR」が発生しました。

RTX 2070 GPU
CUDA 10
cuDNN 7.4.2
Ubuntu 18.04
tf-nightly-gpu(r1.13、1月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.

私は同じ問題を実行しています

RTX2080 GPU
CUDA 10
cudnn 7.4.2

次のtfバージョンtf-nightly-gpuとマスターからの自己コンパイルバージョン(060b6e32ad)を試しました。
次の環境変数を設定して、さらにデバッグ情報を取得できることがわかりました。

CUDNN_LOGINFO_DBG = 1;
CUDNN_LOGDEST_DBG = stdout

次に、次のエラーが発生します。

I0117 14:11:24.441819 140433563125568 basic_session_run_hooks.py:594]0のチェックポイントを/tmp/mnist/model.ckptに保存します。
2019-01-17 14:11:25.916269:I tensorflow / stream_executor / platform / default / dso_loader.cc:154]CUDAライブラリlibcublas.so.10.0をローカルで正常に開きました

私! CuDNN(v7402)関数cudnnCreate()が呼び出されました:
私! 時間:2019-01-17T14:11:26.079184(開始から0d + 0h + 0m + 0s)
私! プロセス= 29255; スレッド= 29356; GPU = NULL; Handle = NULL; StreamId = NULL。

2019-01-17 14:11:26.079151:I tensorflow / stream_executor / platform / default / dso_loader.cc:154]CUDAライブラリlibcudnn.so.7をローカルで正常に開きました

私! CuDNN(v7402)関数cudnnCreate()が呼び出されました:
私! 時間:2019-01-17T14:11:26.571897(開始から0d + 0h + 0m + 0s)
私! プロセス= 29255; スレッド= 29356; GPU = NULL; Handle = NULL; StreamId = NULL。

2019-01-17 14:11:26.571858:E tensorflow / stream_executor / cuda / cuda_dnn.cc:493] cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14:11:26.579375:E tensorflow / stream_executor / cuda / cuda_dnn.cc:493] cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR

私! CuDNN(v7402)関数cudnnCreate()が呼び出されました:
私! 時間:2019-01-17T14:11:26.579803(開始から0d + 0h + 0m + 0s)
私! プロセス= 29255; スレッド= 29356; GPU = NULL; Handle = NULL; StreamId = NULL。

2019-01-17 14:11:26.585818:E tensorflow / stream_executor / cuda / cuda_dnn.cc:493] cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR
2019-01-17 14:11:26.585850:W ./tensorflow/stream_executor/stream.h:2109]DNNサポートなしでStreamExecutorを使用してDNN操作を実行しようとしています
トレースバック(最後の最後の呼び出し):
ファイル「/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py」、1335行目、_do_call
fn(* args)を返します
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py"、行1320、_run_fn
オプション、feed_dict、fetch_list、target_list、run_metadata)
_call_tf_sessionrunのファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py"、1408行
run_metadata)
tensorflow.python.framework.errors_impl.UnknownError:畳み込みアルゴリズムの取得に失敗しました。 これはおそらくcuDNNが初期化に失敗したためであるため、警告ログメッセージが上に出力されたかどうかを確認してみてください。
[[{{node Discriminator_1 / Conv / Conv2D}}]]
[[train / discidentator_train / train_op / control_dependency / _569]]

上記の例外の処理中に、別の例外が発生しました。

トレースバック(最後の最後の呼び出し):
ファイル "/home/dj/projects/gan/tf_models/research/gan/mnist/train.py"、行151、
tf.app.run()
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py"、行125、実行中
_sys.exit(main(argv))
ファイル「/home/dj/projects/gan/tf_models/research/gan/mnist/train.py」、147行目、メイン
get_hooks_fn = tfgan.get_joint_train_hooks())
gan_trainのファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py"、行1200
config = config)
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/training/python/training/training.py"、行546、電車内
損失= session.run(train_op、run_metadata = run_metadata)
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py"、行693、実行中
run_metadata = run_metadata)
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py"、行1188、実行中
run_metadata = run_metadata)
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py"、行1287、実行中
six.reraise( original_exc_info)を上げるファイル "/usr/local/lib/python3.6/dist-packages/six.py"、行693、リレイズ価値を上げるファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py"、行1272、実行中self._sess.run( args、** kwargs)を返します
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py"、行1336、実行中
feed_dict、オプション)
_call_hook_before_runのファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/monitored_session.py"、行1362
request = hook.before_run(run_context)
before_runのファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/contrib/gan/python/train.py"、行1061
run_context.session.run(self._train_ops)
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py"、行930、実行中
run_metadata_ptr)
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py"、1153行目、_run
feed_dict_tensor、options、run_metadata)
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py"、1329行目、_do_run
run_metadata)
ファイル "/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py"、1349行目、_do_call
type(e)(node_def、op、message)を発生させます
tensorflow.python.framework.errors_impl.UnknownError:畳み込みアルゴリズムの取得に失敗しました。 これはおそらくcuDNNが初期化に失敗したためであるため、警告ログメッセージが上に出力されたかどうかを確認してみてください。
[[node Discriminator_1 / Conv / Conv2D(home / dj / projects / gan / tf_models / research / gan / mnist / networks.py:152で定義)]]
[[train / discidentator_train / train_op / control_dependency / _569]]

エラーは入力操作に起因している可能性があります。
ノードDiscriminator_1 / Conv / Conv2Dに接続された入力ソース操作:
入力/バッチ/ n(home / dj / projects / gan / tf_models / research / gan / mnist / data_provider.py:67で定義)

'Discriminator_1 / Conv / Conv2D'の元のスタックトレース:
ファイル "home / dj / projects / gan / tf_models / research / gan / mnist / train.py"、行151、
tf.app.run()
ファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / platform / app.py"、行125、実行中
_sys.exit(main(argv))
ファイル「home / dj / projects / gan / tf_models / research / gan / mnist / train.py」、87行目、メイン
[FLAGS.batch_size、FLAGS.noise_dims]))
gan_modelのファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / gan / python / train.py"、行118
discriminator_real_outputs = discriminator_fn(real_data、generator_inputs)
ファイル "home / dj / projects / gan / tf_models / research / gan / mnist / networks.py"、行176、unconditional_discriminator
net = _discriminator_helper(img、False、None、weight_decay)
_discriminator_helperのファイル "home / dj / projects / gan / tf_models / research / gan / mnist / networks.py"、行152
net = layers.conv2d(img、64、[4、4]、stride = 2)
ファイル「usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / framework / python / ops / arg_scope.py」、182行目、func_with_args
func( args、* current_args)を返します
convolution2dのファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / layers / python / layers / layers.py"、1155行目
conv_dims = 2)
func_with_argsのファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / framework / python / ops / arg_scope.py"、行182
func( args、* current_args)を返します
ファイル「usr / local / lib / python3.6 / dist-packages / tensorflow / contrib / layers / python / layers / layers.py」、1058行目、畳み込み
出力= layer.apply(入力)
ファイル「usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / engine / base_layer.py」、1228行目
自己を返します。__call __(inputs、 args、* kwargs)
__call__のファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / layers / base.py"、531行目
出力= super(Layer、self).__ call __(inputs、 args、* kwargs)
ファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / engine / base_layer.py"、行564、__ call__
出力= self.call(inputs、 args、* kwargs)
ファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / keras / layers / convolutional.py"、行196、呼び出し中
出力= self._convolution_op(inputs、self.kernel)
ファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py"、行966、__ call__
self.conv_op(inp、filter)を返します
ファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py"、行591、__ call__
self.call(inp、filter)を返します
ファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py"、行208、__ call__
name = self.name)
conv2dのファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / nn_ops.py"、1578行
name = name)
conv2dのファイル「usr / local / lib / python3.6 / dist-packages / tensorflow / python / ops / gen_nn_ops.py」、1040行目
data_format = data_format、dilations = dilations、name = name)
_apply_op_helperのファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / op_def_library.py"、行788
op_def = op_def)
new_funcのファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / util / deprecation.py"、行501
func( args、* kwargs)を返します
create_opのファイル「usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / ops.py」、3300行目
op_def = op_def)
ファイル "usr / local / lib / python3.6 / dist-packages / tensorflow / python / framework / ops.py"、行1801、__ init__
self._traceback = tf_stack.extract_stack()

誰かアイデアはありますか? 私は完全な環境を再インストールする直前です:-(

ソースからr1.13をコンパイルしてみてください。 長い時間がかかりますが、問題は解決するはずです。 少なくともそれは私のものを修正しました。

ソースからコンパイルしようとしましたが、同じ問題が発生しました。 config.gpu_options.allow_growth = True設定することで問題を解決することができました。

私は同じ問題を抱えています(RTX 2060、Ubuntu 18.04、Python 3.6.7、CUDA 10.0.130、cuDNN 7.4.2、ソースからのTensorflow 1.13.0-rc0)。 @ va-andrewの提案のおかげで、 allow_growthオプションセットで動作させることができます。

FWIW、これに対する解決策を探している過程で、この問題はRTXシリーズの一般的な問題のようです(新しいカードは古いバージョンをサポートしていないため、CUDA 10.0の一般的な問題である可能性があります)。 1.13のリリースでデフォルトが更新され、これらのカードに特別なオプションを設定する必要がなくなると便利です。

私も次の構成でこれを経験したと言ってチャイムを鳴らします:

すべての安定したリリースを備えたTensorflowDocker GPUコンテナも機能しません(CUDNN_STATUS_INTERNAL_ERRORを報告するのではなく、セグメンテーション違反をまっすぐにします)。

不思議なことに、Tensorflowv1.12を搭載したWindows10では問題なく動作します。

また、allow_growthを設定すると、正常に実行できるようになると他の人が報告しています。

ここでも同じ問題があります。

  • RTX 2070
  • Ubuntu 18.04
  • CudNN 7.4.2(しかし、運が悪かった他の古いバージョンでコンパイルしようとしました)
  • Tensorflow 1.13.0-dev20190125(Cuda10でコンパイルされたTensorflow1.12も試してみました)

そして、他の人が報告しているように、allow_growth = TRUEを設定すると、物事を実行できます。

解決されてからこの問題を解決します。 ありがとう!

@ymodakこのバグを修正したPRを参照してください。

RTX2080のtf-nightly-gpu-2.0-previewにも同様の問題があり

RTX2080と同じ問題で、この修正が見つかるまで2日間の再コンパイルとバグハンティングを行いました。
(allow_growth = trueのものがそれを修正しました)

あなたは私の日を作った

実際にallow_growth = trueをどのように設定しますか? 私はtf-nightly-gpu-2.0-previewを持っていて、試しました:

tensorflowをtfとしてインポートします
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
セッション= tf.Session(config = config、...)

しかし、このエラーが発生します:

AttributeErrorトレースバック(最後の最後の呼び出し)
()
1テンソルフローをtfとしてインポート
----> 2 config = tf.ConfigProto()

AttributeError:モジュール 'tensorflow'には属性 'ConfigProto'がありません

tensorflow 2.0でallow_growthを設定するにはどうすればよいですか?

わかりました。tf-nightly-gpu-2.0-previewとipythonノートブックで動作するようになりました。これをコードに追加します。

tensorflow.compat.v1からimportConfigProto
tensorflow.compat.v1からimportInteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
セッション= InteractiveSession(config = config)

同じ問題、gpu_options.allow_growth = Trueで問題が修正されました。

@newhousebどのように/どこですべてのベンチマークにそれを

毛布は成長を可能にする解決策ですか?

理由により、デフォルトでオフになっています。を参照してください。
https://www.tensorflow.org/guide/using_gpu#allowing_gpu_memory_growth

私のプログラムでは、メモリ管理が重要です

グラフィックアプリケーションではGPUメモリが他の目的に使用され、メモリ不足エラーを防ぐために限られたスペースに配置することが重要であるため、TFが使用するGPUの量を制限したいと思います。

私はWindowsのC ++で作業しています

[拡張を許可]オプションを追加すると、OOMエラーが発生します。

このコード行がないと、モデルは同じカードを使用する同じマシンで正常に実行されます。

OOMエラーあり

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

OOMエラーなし

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

したがって、set allow Growthでこの問題を解決するには、セグメンテーション違反が発生します。

@ymodakこのバグは修正されていません。 間違いなく、あらゆる種類のconvnetを使用すると、デフォルトの構成で機能するはずです。 allow_growthはデフォルトでtrueであるか、これが機能するように修正されるか、 CUDNN_STATUS_INTERNAL_ERRORよりも適切なエラーがあるはずです。

@ymodakこの問題は時期尚早に解決されたようです。 この問題には回避策がありますが、アプリケーションコードの変更が含まれます。 その結果、サンプルコードはRTXカードでは_箱から出して_機能せず、オンラインのほとんどのレシピも変更する必要があります。

@samhodgeは、自分で投稿したtensorflowドキュメントページで提案されているように、 config.gpu_options.per_process_gpu_memory_fraction = 0.4を使用してOOMを防ぐことはできませんか?

RTX 2080でtensorflow-gpuを有効にするこのブールハックに混乱しています:一度に1つのtensorflowスクリプト/ jupyterノートブックにのみGPUを使用する場合、このallow_growth = Trueは問題になりますか? (画面などの標準GPU使用量に加えて)

コンピューターに静的MLスタックを設定するつもりですが、これがいずれかの時点で混乱するかどうかを知りたいと思います(大きなグリッド検索、多くのパラメーターを持つモデルなど)。 この内部エラーを回避するためにソースからビルドする必要があるのか​​、それとも単にこのブール値を変更する必要があるのか​​、まだわかりませんでした。

セッションを作成する前に問題の原因を見つけたと思います。GPURAMを無料で測定しているので、8Gbカードを使用していて、6Gbが無料の場合、0.75の端数を使用し、場合によってはOOMで終了しますが、最近は0.95 * 0.75で実験していて、まだOOMがありません。 そのため、Tensorflowの割り当て用のスペースを限界までプッシュすると、衝突することがあります。 明らかに、個々のOpに入力および出力が適合しない場合、それはOOMになりますが、これに対して測定すると、適合に応じてGPUまたはCPUが使用されます。

@samhodgeは素晴らしいので、最終的にallow_growthブールハックは、主要なGPU操作が並行して起動されず、tensorflowによって_一度に_処理されるもの(バッチサイズが重要)がそうでない場合に解決策を提供しますGPUによって提供されるメモリをオーバーフローさせます...?

ブラウザもすべてGPUを使用

CUDA 10.0 / cuDNN 7.4.2.24 / Nvidiaドライバー410 / Ubuntu16.04でpipからtensorflow-gpu1.13.1を使用してGTX1050で同じ問題が発生しました。

ここでも同じ問題が発生しますが、「config.gpu_options.allow_growth = True」では問題は解決しません。 TF-gpu1.14.1とTF-gpu2.0の両方で発生します。 RTX1070、CUDA 10.0、Ubuntu 18.04、Nvidiaドライバー430.09。

あなたが見ている問題の説明は、cuDNN(の特定のバージョン)がハンドルを作成するときにGPUメモリを割り当てようとしていると私に信じさせます。 TensorFlowがすでにすべてのメモリを使用している場合(config.gpu_options.allow_growth = false、またはper_process_gpu_memory_fractionが1.0に近いため)、cuDNNに割り当てるメモリが残っていません。

これは、nvprofを介してTensorFlowを実行し、失敗したcuMemAlloc呼び出しを検査するためのAPIトレースを生成することで確認できます。

問題#6698は同じ問題を議論しているようです。 一部の人々は、CUDAバージョンと一致しないcuDNNリリースを誤って使用したことに気づきました。 CUDA 10で実行しているときに、CUDA 10にcuDNNを使用していることを確認してください。

私はばかなので、cuDNNが正しくインストールされていなかったことがわかりました。 それを手に入れ、TF2を毎晩再インストールし、成長を可能にするために行を追加しました、そしてすべてが順調です。

Condaからcudatoolkitとcudnnを削除する方法は?

Anacondaに含まれている(または埋め込まれている)cudnnには次のエラーがあるため、condaがインストールされているcudatoolkitとcudnnを削除し、NvidiaのWebサイトから独立したCUDAとcudnnをインストールします。

エラー:畳み込みアルゴリズムの取得に失敗しました。 これはおそらくcuDNNが初期化に失敗したためであるため、警告ログメッセージが上に出力されたかどうかを確認してみてください。

ただし、次のコマンドを使用しても削除できませんが、削除できません。
conda remove --name cuda --all
conda remove --name cudnn --all

パスにcudatoolkit-10.0.130-0とcudnn-7.3.1-cuda10.0.0_0を含む2つのドキュメントが
続きます。

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

Anacondaに含まれている(または埋め込まれている)cudaとcudnnを削除(または削除)するにはどうすればよいですか?

前もって感謝します、

マイク

@ mikechen66 condaの出力は何ですか? 他のパッケージがcudaとcudnnに依​​存していることが原因である可能性があります。 そもそもなぜそれらを削除したいのですか? カスタム環境を取得する場合は、anacondaではなくminicondaを使用してください。 Minicondaにはcondaのみが付属しており、必要なすべてのパッケージを手動でインストールする必要があります。

こんにちはtydlwav:

ご意見をいただきありがとうございます。 コアライブラリのバージョン互換性とリリース日を確認した後、関連する開発環境をインストールし、単純なMNISTテストコードを実行して、次のような出力を取得しました。

Anaconda3はcudnnとTensorFlowのコアライブラリをサポートすることすらできないと思います。 ですから、それはアナコンダ3の大きな問題です。 そこで、Anacondaから軽量のcudnnライブラリを削除し、独立した強力なNvidiacudaおよびcudnnライブラリを使用してテストコードを実行したいと思います。 いくつかの提案をするのを手伝ってください。

  1. インストール環境

Nvidia GeForce RTX 2060
グラフィックドライバー:NVIDIA-Linux-x86_64-415.27(2019年1月15日)
RTX2060をサポートする最初のバージョン
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
--JuputerNotebookとipykernel
--Ananconda3によるデフォルト

  1. MNISTテストコード:

ケラスをインポートする
keras.datasetsからインポートmnist
keras.modelsからインポートシーケンシャル
keras.layersからDense、Dropoutをインポートします
keras.layersからFlatten、MaxPooling2D、Conv2Dをインポートします
keras.callbacksからTensorBoardをインポートします

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

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

X_train / = 255
X_test / = 255

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

モデル= Sequential()
model.add(Conv2D(32、kernel_size =(3,3)、activation = 'relu'、input_shape =(28,28,1)))
model.add(Conv2D(64、kernel_size =(3,3)、activation = 'relu'))
model.add(MaxPooling2D(pool_size =(2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128、activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(n_classes、activation = 'softmax'))

model.compile(loss = 'categorical_crossentropy'、optimizer = 'adam'、metrics = ['accuracy'])

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

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

  1. 出力:

TensorFlowバックエンドを使用します。

警告:tensorflow :/home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py :colocate_with (tensorflow.python.framework.opsから) )は非推奨であり、将来のバージョンで削除される予定です。
更新の手順:
コロケーションは、配置者によって自動的に処理されます。
警告:tensorflow :/home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py
更新の手順:
使用してくださいrateの代わりにkeep_prob 。 レートはrate = 1 - keep_prob設定する必要があります。
警告:tensorflow :/home/mike/anaconda3/envs/tf-gpu/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066から:to_int32(tensorflow.python.ops.math_opsから)は非推奨であり、将来のバージョンで削除される予定です。
更新の手順:
代わりにtf.castを使用してください。
60000サンプルでトレーニングし、10000サンプルで検証します
エポック1/15

UnknownErrorトレースバック(最後の最後の呼び出し)

34
35 model.fit(X_train、y_train、batch_size = 128、epochs = 15、verbose = 1、
---> 36validation_data =(X_test、y_test)、callbacks = [tensor_board])

〜/ anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / engine / training.py in fit(self、x、y、batch_size、epochs、verbose、callbacks、validation_split、validation_data、shuffle、 class_weight、sample_weight、initial_epoch、steps_per_epoch、validation_steps、** kwargs)
1037 initial_epoch = initial_epoch、
1038steps_per_epoch = Steps_per_epoch、
-> 1039validation_steps = validation_steps)
1040
1041 def Evaluation(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、シャッフル、callback_metrics、initial_epoch、steps_per_epoch、validation_steps)
197 ins_batch [i] = ins_batch [i] .toarray()
198
-> 199アウト= f(ins_batch)
200アウト= to_list(outs)
201 for l、o in zip(out_labels、outs):

〜/ anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / backend / tensorflow_backend.py in __call __(self、inputs)
2713 return self._legacy_call(inputs)
2714
-> 2715 return self._call(inputs)
2716その他:
2717 if py_any(is_tensor(x)for x in input):

〜/ anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / keras / backend / tensorflow_backend.py in _call(self、inputs)
2673フェッチ= self._callable_fn( array_vals、run_metadata = self.run_metadata)2674その他:-> 2675フェッチ= self._callable_fn( array_vals)
2676リターンフェッチ[:len(self.outputs)]
2677

〜/ anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / tensorflow / python / client / session.py in __call __(self、 args、* kwargs)
1437 ret = tf_session.TF_SessionRunCallable(
1438 self._session._session、self._handle、args、status、
-> 1439 run_metadata_ptr)
run_metadataの場合は1440:
1441 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

〜/ anaconda3 / envs / tf-gpu / lib / python3.7 / site-packages / tensorflow / python / framework / errors_impl.py in __exit __(self、type_arg、value_arg、traceback_arg)
526なし、なし、
527 compat.as_text(c_api.TF_Message(self.status.status))、
-> 528 c_api.TF_GetCode(self.status.status))
529#基になるステータスオブジェクトをメモリから削除します。そうしないと、存続します
530#これは、トレースバックからのステータスへの参照があるためです。

UnknownError:畳み込みアルゴリズムの取得に失敗しました。 これはおそらくcuDNNが初期化に失敗したためであるため、警告ログメッセージが上に出力されたかどうかを確認してみてください。
[[{{node conv2d_1 / convolution}}]]
[[{{ノードメトリック/ acc /平均}}]]

こんにちはtydlwav:

次のコマンドを使用して、cudaとcudnnの両方をアンインストールします。 ただし、両方のライブラリは、現在は機能していませんが、Anaconda3にあります。 Anaconda3は、削除されないようにコアライブラリを保護することを意図していると思います。 バグがあるとしても、それはContinuumのコア機能かもしれません。 独立したNvdiacuda(nvccを除く)とcudnnのいずれかを使用するか、インストールするcondaを含む新しいcudaまたはcudnnを見つけます。

アンインストールコマンド:

condaアンインストールcudatoolkit

パッケージメタデータの収集:完了
解決環境:完了

パッケージプラン

環境の場所:/ home / mike / anaconda3 / envs / tf-gpu

削除された仕様:
-cudatoolkit

次のパッケージは削除されます。

cudatoolkit-10.0.130-0
cudnn-7.3.1-cuda10.0_0
カップティ-10.0.130-0
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

続行しますか([y] / n)? y

トランザクションの準備:完了
トランザクションの検証:完了
トランザクションの実行:完了

ノート:

両方をアンインストールした後、Jupyter Notebookに「「tensorflow」という名前のミューデュルがありません。これは、アンインストールが成功したことを意味します。ただし、cudatoolkitとcudnnの両方がAnaconda3に残っています。Continuumは、両方とも削除しないようにデフォルト設定していると思います。それらは機能しません。

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

あなたはすでにそれらを削除しました。 pkgs内のファイルはインストール用です。 これらは、インストール用にダウンロードされたキャッシュです。 また、ここはコンダ環境問題について話し合う場所ではありません。 この問題には関係ありません。 スタックオーバーフローを試してみることをお勧めします。

私はこの問題の状態に少し混乱しています。 RTX 2080、cuda 10.1、cudnn v7.5.1.10、tensorflow1.14を使用しています。

成長許可の回避策を使用すると機能しますが、バージョンが異なる場合がありますか?

tensorflow 1.14でこれに対する修正はありますか?

ありがとうございました

ありがとう。 RTX 20XX Turingシリーズ、TensorFlow、Anacondaの間で互換性の問題が発生しています。 RTX20XXシリーズがcudnn7.5.0をサポートし、TensorFlowがcudnn 7.4のみをサポートすることは明らかですが、Anacondaには合理化された7.3.1が含まれており、3つのベンダー間で完全に一致していません。 さらに、RTX20XXシリーズにはUbuntu16.04LTSとの大きな互換性の問題があります。 時々、Ubuntu16.04がクラッシュしました。 OSを再インストールするには、2つの起動可能なUSBスティックを持参する必要がありました。 そのため、2台のPCをUbuntu 18.04 LTSにアップグレードし、Minicondaをインストールしました。 次に、より高いバージョンのTensorflowを試してみます。

ノート:

Nvidiaには、Jetson TX1 / TX2およびJetsonNano MobileGPUプラットフォーム用の独自のカスタムUbuntu18.04LTSがあります。 Nvidiaは、RTX20XXシリーズなどの新製品を下位バージョンのUbuntu16.04ではなくUbuntu18.04LTSと互換性があると判断しているようです。 ただし、ContinuumにNvidia RTX 20XXTuringシリーズのアップグレード計画があるかどうかはわかりません。

RTXシリーズは現在十分にサポートされています。 私は非ubuntu配布のconda環境を介してRTX2070でtfを使用しました。 これは最悪のシナリオであるはずですが、それでも正常に機能しています。 Cudaとcudnnには下位互換性があり、新しいバージョンを使用する場合は問題になりません。 あなたは、単にで新しいPythonの3.6の環境を作成する必要がありますconda create -n tf python==3.6.8と実行conda install tensorflow-gpu

これは、ソースからコンパイルして、ほとんどのハードウェアでクライアントにTensorflow 1.12.0 CUDA10.0とCUDNN7.4.2.24を使用させたのは素晴らしいことですが、GPUにcudnnを備えたCNNを備えたRTXカードを使用する少数のクライアントで問題が発生しました。 誤ってCUDA9.0用に間違ったCUDNNをパッケージ化した可能性があり、ファイルの名前は同じです。

これらのバージョンがRTX2080およびその他のTuringベースのカードで機能することを誰かが確認できますか?

こんにちはtydlwav:

あなたの提案に従って、Minicondaと関連するpythonおよびtensorflow環境をインストールしました。 それでもエラーがあります:畳み込みアルゴリズムの取得に失敗しました。 これはおそらく、cuDNNが初期化に失敗したためです......。
解決策を見つけるのを手伝ってください。

私が操作した手順をご覧ください。

  1. ガイドラインに従ってPython3.6.8をインストールします。
    conda create -n tf python == 3.6.8

  2. tfをアクティブにする
    コンダアクティベートtf

  3. ガイドラインに従って、tensorflow-gpuをtf環境にインストールします。
    conda install tensorflow-gpu

インストールされているパッケージには、次のようにcudatoolkitとcudnnが含まれています。
.................................................。 .................................................。
cudatoolkit pkgs / main / linux-64 :: cudatoolkit-10.0.130-0
cudnn pkgs / main / linux-64 :: cudnn-7.3.1-cuda10.0_0
.................................................。 .................................................。

  1. jupyter Notebook、ipykernel、および関連する環境のWebページをインストールします。

1)。 jupyterノートブックをインストールする
conda install jupyternotebook

2)。 jupyterノートブックに基づいてipykernelをインストールします
conda install ipykernel jupyter

3)。 jupyterノートブックのWebページにTensorFlow-GPUを作成します
python -m ipykernel install --user --name tf-gpu --display-name "TensorFlow-GPU"

  1. jupyterノートブックを開く
    1)。 jupyterノートブックWebページへのコマンド
    jupyterノートブック

2)。 TensorFlow-GPUをクリックします
メニューの「新規」をクリックし、ウェブページで「TensorFlow-GPU」を選択すると、セルはjupyterノートブックのウェブページに表示されます。 ウェブページは以下のとおりです。
http:// localhost :8888 / notebooks / Untitled3.ipynb?kernel_name = tf-gpu

  1. 貼り付け簡単なMNISTテストコードを実行します

ケラスをインポートする
keras.datasetsからインポートmnist
keras.modelsからインポートシーケンシャル
keras.layersからDense、Dropoutをインポートします
keras.layersからFlatten、MaxPooling2D、Conv2Dをインポートします
keras.callbacksからTensorBoardをインポートします

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

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

X_train / = 255
X_test / = 255

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

モデル= Sequential()
model.add(Conv2D(32、kernel_size =(3,3)、activation = 'relu'、input_shape =(28,28,1)))
model.add(Conv2D(64、kernel_size =(3,3)、activation = 'relu'))
model.add(MaxPooling2D(pool_size =(2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128、activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(n_classes、activation = 'softmax'))

model.compile(loss = 'categorical_crossentropy'、optimizer = 'adam'、metrics = ['accuracy'])

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

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

  1. 最後に述べたメッセージと同じエラー:

UnknownError:畳み込みアルゴリズムの取得に失敗しました。 これはおそらくcuDNNが初期化に失敗したためであるため、警告ログメッセージが上に出力されたかどうかを確認してみてください。
[[{{node conv2d_1 / convolution}}]]
[[{{ノードメトリック/ acc /平均}}]]

ありがとう、

マイク

こんにちはtydlwav:

ちなみに、次のコマンドでkerasもインストールしました。
conda install keras-gpu

インストールが正しいので、エラーが発生しました。 したがって、これはMinicondaとRTX20XXTuringシリーズ間のバージョン互換性の問題であると思います。 エラーはアナコンダと同じです。 MinicondaとAnacondaのcudnnとcudaのバージョンが同じであることがわかりました。

それはかなり興味深いです。 私は約1ヶ月半前にcuda10とcudnn7.3をcondaで動作させました。 それ以来、テンソルフローを使用していません。 それがうまくいかない場合は、ソースからビルドできます。 それはいつも私のために働きます。 始めたばかりの場合は、pytorchの使用をお勧めします。 インストールして動作させるのにはるかに簡単な時間があります。

こんにちはtydlwav:

pytorchなどの他の方法を試してみます。 Googleがtensorflow-gpu1.14をリリースしたので、Minicondaを使用して、次のようにGoogle TensorflowWebサイトに独立したtensorflow-gpu1.14をインストールできますか。

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

ノート:

Condaには、次のように1.0.1から1.13.1までのtensorflow-gpuビルドしかありません。 ビルドは非常に古いため、公式のGoogleTensorFlowおよび公式のNvidiaGeForce RTX 20XX(2060〜2080)Truingシリーズに追いつくことができませんでした。

コマンド:
conda search tensorflow-gpu

チャンネルの読み込み:完了

名前バージョンビルドチャネル
tensorflow-gpu 1.0.1 py27_4 pkgs / free
tensorflow-gpu 1.0.1 py35_4 pkgs / free
tensorflow-gpu 1.0.1 py36_4 pkgs / free
tensorflow-gpu 1.1.0 np111py27_0 pkgs / free
tensorflow-gpu 1.1.0 np111py35_0 pkgs / free
tensorflow-gpu 1.1.0 np111py36_0 pkgs / free
tensorflow-gpu 1.1.0 np112py27_0 pkgs / free
tensorflow-gpu 1.1.0 np112py35_0 pkgs / free
tensorflow-gpu 1.1.0 np112py36_0 pkgs / free
tensorflow-gpu 1.2.1 py27cuda7.5cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py27cuda7.5cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py27cuda8.0cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py27cuda8.0cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py35cuda7.5cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py35cuda7.5cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py35cuda8.0cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py35cuda8.0cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py36cuda7.5cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py36cuda7.5cudnn6.0_0 pkgs / free
tensorflow-gpu 1.2.1 py36cuda8.0cudnn5.1_0 pkgs / free
tensorflow-gpu 1.2.1 py36cuda8.0cudnn6.0_0 pkgs / free
tensorflow-gpu 1.3.0 0 pkgs / free
tensorflow-gpu 1.4.1 0 pkgs / main
tensorflow-gpu 1.5.0 0 pkgs / main
tensorflow-gpu 1.6.0 0 pkgs / main
tensorflow-gpu 1.7.0 0 pkgs / main
tensorflow-gpu 1.8.0 h7b35bdc_0 pkgs / main
tensorflow-gpu 1.9.0 hf154084_0 pkgs / main
tensorflow-gpu 1.10.0 hf154084_0 pkgs / main
tensorflow-gpu 1.11.0 h0d30ee6_0 pkgs / main
tensorflow-gpu 1.12.0 h0d30ee6_0 pkgs / main
tensorflow-gpu 1.13.1 h0d30ee6_0 pkgs / main

condaのtf1.12のリリースをRTX2070で使用したので、それらは古くはありません。新しいハードウェアは通常、下位互換性があり、RTXも例外ではありません。 奇妙な環境問題が発生している可能性があります。 私は7月までRTXマシンにアクセスできないので、今はテストを手伝うことができません。 ソースからビルドすると、問題が解決するはずです。 ソースからビルドされたtfからconvnetを実行することに失敗したことはありません(ビルド中に正しい構成があると仮定します)。

繰り返しになりますが、これはテンソルフローの分散の問題を議論するのに適切な場所ではありません。 スタックオーバーフローまたはredditに投稿して、ここにリンクすることができます。 より多くの人々がそれを見て、このようにあなたを助けることができるでしょう。

あなたの問題はバグではありません、そしてそれは間違いなくこの問題が議論しているものではありません。

@chsiggこれは、テンソルフローがすでに割り当てているGPUメモリリソースをCUDNNが割り当てようとしている問題であると診断されています。 問題を解決するには、 0.95代わりにper_process_gpu_memory_fraction=0.9設定するだけで十分0.95た。

私もこの問題に直面していました。 cuDNNを7.6バージョンに更新することで修正しました。

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

Tensorflow-GPU:1.13.1
Cuda:10.0
CuDNN:7.3.1

また、tensorflowとCuDNNはCondaによってインストールされました。
conda list cudnn

cudnn                     7.3.1                cuda10.0_0    anaconda

私がしたこと:

  1. condatensorflowをアンインストールしました。
    conda remove tensorflow
  2. condacuDNNをアンインストールします
    conda remove cudnn
  3. pipでtensorflowをインストールします
    pip install tensorflow
  4. 対応するcuDNN7.6ランタイムdebファイルをhttps://developer.nvidia.com/cudnnからダウンロードし
  5. sudo dpkg -i libcudnn_xxxxx_amd64.debインストールします

@nluehrコメントはありますか? MinSystemMemory() cuda / cudnnバージョンを認識させることはできますか?

tf.kerasを使用している場合は、ファイルの先頭で次の手順を実行してください。
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
tf.keras.backend.set_session(tf.Session(config = config))

私もこの問題に遭遇し、@ va-andrewのソリューションを使用して問題を解決できました。具体的には、コードでtensorflow.keras関数の一部を使用しているため、 @ colinsteidtmannの実装を使用しました。 私はこの問題のデバッグに長い時間を費やしましたので、両方の貢献に感謝します。

編集:テンソルフローのドキュメント(https://www.tensorflow.org/guide/using_gpu)を見ていましたが、環境変数TF_FORCE_GPU_ALLOW_GROWTHをtrueに設定することで、メモリの拡張を許可するように指示することもできます。 また、この構成はプラットフォーム固有であるため、YMMV(Ubuntu 18.04で動作します)と記載されています。

参考までに、私は実行しています:
Ubuntu 18.04.2 LTS、Gigabyte GeForce RTX 2080 Turbo、NVIDIAドライバー430.26、CUDA 10.0.130、cuDNN 7.4.2.24、tensorflow-gpu 1.13.1、python3.6。 spyder 3.3.4を使用して、仮想環境内からtensorflowを実行します。

私はまったく同じハードウェアを備えた2台目のコンピューターを持っており、同じ一連の手順に従ってセットアップし、同じファイルを使用してインストールを実行しましたが、そのマシンでもこの問題が発生しました。 そこに驚きはありません。

私は、2080ではなく2080 Tiを備えていることを除いて、まったく同じハードウェアを備えた3台目のコンピューターを持っています。同じ一連の手順に従ってセットアップし、同じファイルを使用してインストールを行いました。 でも今回は問題ありませんでした。

したがって、CUDA、cuDNN、およびドライバーバージョンの競合とは関係がないと思われます。 誤ってインストールされたなどではありません。むしろ、ビデオカードのモデルに関連しています。 私はRTX2060、2070、および2080でこの問題について言及しただけです。

幸い、回避策を使用することは大きな不便ではありません。

私もこの問題に直面していました。 cuDNNを7.6バージョンに更新することで修正しました。

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

Tensorflow:1.13.1
Cuda:10.0
CuDNN:7.3.1

また、tensorflowとCuDNNはCondaによってインストールされました。
conda list cudnn

cudnn                     7.3.1                cuda10.0_0    anaconda

私がしたこと:

1. Uninstalled conda tensorflow.
   `conda remove tensorflow`

2. Uninstall conda cuDNN
   `conda remove cudnn`

3. Install tensorflow with pip
   `pip install tensorflow`

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

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

@ alexforever86更新を行った後、CPUではなくGPUで実行していることを確認しますか? 更新を行う前に(cuDNNを参照するエラーメッセージのために)GPUを使用しているようですが、後で気になります。 「pipinstalltensorflow」を使用していますが、「pip installtensorflow-gpu」である必要がありますね。 また、CUDA 10を使用しているとのことですが、リストしたcuDNN debファイルはcuda9.0用であるため、機能しないはずです。

したがって、実際にGPUを使用していない場合もあると思います。したがって、cuDNN7.6に更新しても問題が解決するという証拠にはなりません。

@ synapse8あなたはtensorflow-gpuとcuDNNバージョンについて絶対に正しいです。 私も今のコメントにとても混乱していて、もう詳細を覚えていません。 とにかく、以下は私のシステムの現在のバージョンです。

pip show tensorflow-gpu
名前:tensorflow-gpu
バージョン:1.13.1

nvidia-smi
NVIDIA-SMI 430.26ドライバーバージョン:430.26 CUDAバージョン:10.2

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

@ alexforever86あなたが今言及した構成で、あなたはまだこの問題を見ますか? (私はそれがあなたのために働くと思います)。 最近、cuda10、410ドライバー、7.6 cudnn、TF-gpu 1.14(pip install)を使用してシステムをインストールしましたが、問題は発生していません。

@ robzor92 tensorflow-gpu 1.13を使用してきましたが、好奇心から1.14をインストールして、問題が解決したかどうかをテストしました(私にとって)。 私はまだエラーが発生しており、「成長を許可する」回避策を実行する必要があります(繰り返しますが、それほど大したことではありません)。

どのビデオカードを使用していますか?

@ synapse8 GTX1070で試してみました。

@ synapse8このスレッド作成者から提供されたサンプルコードも試してみましたが、問題なく動作しました。 ただし、TF1.13.1を搭載したGTX1050Tiで同じ問題が発生したため、RTX回線の問題だけであるとは言いません。 以前に投稿したものと同じドライバー/ cuda / cudnnの組み合わせを使用します。

@ robzor921050Tiの問題はVRAMサイズが小さいことにあるとは思え

tensorflow1.14.0とRTX2080でも同じエラーが発生します。 しかし、私の場合、このエラーは畳み込みレイヤーを使用した場合にのみ発生します。

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

config.gpu_options.allow_growth = Trueを試しましたが、このエラーは解決しません。

誰かに助けてもらいたい。

ありがとうございました。

RTX2070と同じ問題

私はこれに関して興味深い観察をしました、それはこのエラーを追跡するか、実行可能な解決策を見つけるのを助けるかもしれません:
また、私はエラーを取得Failed to get convolution algorithmを参照してCould not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
システム:Nvidia Quadro P2000、Ubuntu 18.04、tf 1.13.1、cuda10、cudnn7.4.2を搭載したラップトップマシン
前述のように、 allow_growthを使用してプログラムをスムーズに実行できるので、ありがとうございます。

興味深い:このエラーはtf.layers.conv...を使用している場合にのみ発生しますが、 tf.keras.layers....切り替えると、 allow_growthなしでプログラムを実行できるため、kerasコードの何かがtfコード。 たぶん、誰かがこの情報を使用して、ケラからの解決策を追跡することができます。
悲しいことに、kerasではサポートされていない可変スコープを介して簡単にウェイトを共有できるので、今のところtf.layersに固執しています。

@ DavidS3141おもしろいです。 私の場合、唯一の畳み込みレイヤーはtf.layersとtf.keras.layersの両方で機能しません...

pytorchを使用する場合、 torch.cuda.is_availableはTrueであり、問​​題なく畳み込みレイヤーを使用できるため、原因はテンソルフローであると考えられますが、何が問題なのかわかりません。

@ Hayashi-Yudaiに同意します:MXNetについても同じことが言えます。 Tensorflowが失敗した場合、同じ構成が正常に機能します。

環境:
RTX2080
Ubuntu 18.10
ドライバー430.26
CUDA 10.0(10.1、まだTFではサポートされていません)
cuDNN 7.6.1
mxnet-cu100 1.4.1
tensorflow-gpu 1.14.0

やあみんな、COCOデータセットでResNet50バックボーンを使用して事前トレーニングされたモデルの重みを使用してCSVデータセットでトレーニングしています。 このエラーが発生します:不明:畳み込みアルゴリズムの取得に失敗しました。
--batch-size 7 --steps 9 --epochs 4
--snapshot-pathスナップショット--tensorboard-dirtensorboard
csvデータセット/train.csvdataset/classes.csv仮想環境のコマンドラインで次のスクリプトを使用して問題を解決しようとしました。
Python

テンソルフローをインポートする

tensorflow.compat.v1からimportConfigProto
tensorflow.compat.v1からimportInteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
セッション= InteractiveSession(config = config)

と同様
tensorflowをtfとしてインポートします
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config = config)しかし、エラーは解決しませんでした。:

私が使用しているもの:-
Ubuntu 16.0
Cuda:10.0
Tensorflow 1.14.0

エラー:
tensorflow.python.framework.errors_impl.UnknownError:2つのルートエラーが見つかりました。 │| 実行中のプロセスが見つかりません|
(0)不明:畳み込みアルゴリズムの取得に失敗しました。 これは、cuDNNが初期化に失敗したことが原因である可能性があるため、警告かどうかを確認してみてください│+ ------------------------------- ---------------------------------------------- +
ログメッセージは上に印刷されました。 │
[[{{node conv1 / convolution}}]]│
[[loss / add / _2377]]│
(1)不明:畳み込みアルゴリズムの取得に失敗しました。 これは、cuDNNが初期化に失敗したことが原因である可能性があるため、警告かどうかを確認してください│
ログメッセージは上に印刷されました。 │
[[{{node conv1 / convolution}}]]│
0成功した操作。 │
0派生エラーは無視されます。 │
アクティブな例外なしで呼び出された終了│
中止(コアダンプ)
どんな助けでもいただければ幸いです。

ここでも同じ問題があります。 Allow_growth回避策は機能します。 そうしないと、最も基本的なMNISTテンソルフローデータセットでこのエラーが発生します。

RTX2060モバイルはこちら。

問題は、r2.0ブランチからコンパイルされたtensorflowと、conda with conda(tensorflow-gpu)を介してインストールされたTF1.4で発生します。

@早し-ゆだい

config.gpu_options.allow_growth = Trueを試しましたが、このエラーは解決しません。

コードに追加した正確なコマンドは何でしたか? 異なる場合は、代わりに次を試してください...

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

@ synapse8コメントありがとうございます。 試しましたが、結果は同じでした。

ちなみに、私はnvidia-dockerを試してみましたが、Pythonのバージョンが3.5であることを除けばうまくいきました。
https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/running.html#running

追加情報として、python3.6.8とtensorflow-gpu1.12.0の使用を気にしない場合は、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

CUDA-10.1とCUDNN-7.6.2.4のソースからtf-2.0.0-beta1をビルドすることをテストしましたが、エラーは現れません。

tf-gpuパッケージとtf-baseパッケージをビルドするためのDockerイメージは次の場所にあります。
https://github.com/edowson/docker-tensorflow

このコメントを書いている時点では、anacondaチャンネルにはcudnn==7.6.2がありません。

Windows 7は、新しいマシンを立ち上げようとしてしばらくの間、 Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERRORを超えて壁に頭をぶつけました。

再インストール、このスレッドや他のスレッドの他の多くのものはそれを修正しませんでした。

cudnn64_7.dllがないことをテストしている間、 CUDNN_STATUS_INTERNAL_ERRORとは異なるエラーが発生します。dllの名前を変更しました。 エラーがCUDNN NOT INSTALLEDタイプのエラーであることを確認し、ファイル名の変更を元に戻しました。

魔法のように、すべてが機能し始めました。

理由や方法はわかりませんが、実際にそうです。 うまくいけば、これは他の誰かを助けるでしょう。 そうでない場合は、試すのに数秒しかかかりません。

この問題は、誤ってtf.Sessionを2回呼び出したことが原因であることがわかりました。

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

# several lines of code later...

sess = tf.Session(config=config)

おそらくほとんどの人にとって根本的な原因ではありませんが、注意する価値があるかもしれません。

「allow_growth = True」を共有するだけで、以下の私のシステムの問題が解決します
rtx 2080ti、ubuntu18.04、cuda9.0、cudnn7、tf1.9

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
セッション= tf.Session(config = config)

これは、GPUリソ​​ースをロードしてcudnnハンドル( per_process_gpu_memory_fractionとも呼ばれる)を作成するために使用できるメモリの割合と関係があります。
このメモリの割合を自分で減らすと、エラーが解決します。

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

あなたの記憶に収まる限り小さい部分を使用してください。 (コードでは、0.7を使用しています。0.3以下から始めて、同じエラーが発生するまで増やしてください。それが制限です。)
それを構成としてtf.Session()またはtf.train.MonitoredTrainingSession()またはスーパーバイザーのsv.managed_session()に渡します。

これにより、GPUがTensorFlowコードのcudnnハンドルを作成できるようになります。

ここで説明config.gpu_options.allow_growth = Trueを設定するためのTF2.0の新しいアプローチは次のとおりです。

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)

このコードスニペットとTF2.0 RC1を使用すると、エラーは表示されなくなります。
ただし、20XX Nvidia GPUを使用している人が多いため、TF 2.0の最終バージョンがリリースされる前に、この問題にネイティブに対処することをお勧めします。

TF1.4の1080TiとTitanXでも同じ問題が発生し、@ va-andrewと@oscarlinuxからの提案がその日を救いました。 そもそも、なぜ私がpytorchに切り替えて、二度と戻ってこないのかを思い出します。 残念ながら、TFを使用しているpplはまだあります。そのため、コードベースを使用するときはいつでも、この問題を経験する必要があります。

tensorflow 2.0にアップグレードした後にこれを見つけた人にとって、APIとコードは少し異なります。

Ubuntu 18
Tensorflow 2.0
Tensorflow-GPU 2.0
GeForce RTX 2070

このシステムのコードを更新しました。

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

この解決策は私のために働いた。 (TF-GPU 2.0、Windows 10、GeForce RTX 2070)

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

データポイントを追加します。:
rtx 2080ti、ubuntu18.04、cuda10.0、cudnn7
私の場合、tf1.14と1.15rc3のどちらでも機能しません

@ w4nderlust 、1.14および1.15の場合、セッション構成オプションconfig.gpu_options.allow_growth = Trueを引き続き設定する必要があります。 それはあなたが報告しているものが機能しないのですか、それともtf.config.experimentalメカニズムだけですか?

@ w4nderlust 、1.14および1.15の場合、セッション構成オプションconfig.gpu_options.allow_growth = Trueを引き続き設定する必要があります。 それはあなたが報告しているものが機能しないのですか、それともtf.config.experimentalメカニズムだけですか?

申し訳ありませんが、もっと正確に言う必要があります。 config.gpu_options.allow_growth = Trueがないと、1.14と1.15rc3の両方の構成では機能しないと報告しています。

config.gpu_options.allow_growth = Trueよりも良い回避策を見つけたと思います。

私のセットアップ(_RTX 2070_、docker image _tensorflow:1.15.0-gpu-py3_)の場合、以下に示すようにconfigを設定すると、GPUメモリ全体を割り当てながら_CUDNN_STATUS_INTERNAL_ERROR_を回避でき
これは、 allow_growthモードではメモリに収まらないが、メモリ全体が割り当てられている場合にのみ収まる大規模なモデルに非常に役立ちます。

RTXにメモリ全体を割り当てるには:
config.gpu_options.per_process_gpu_memory_fraction = 1.0

RTXにメモリ全体を割り当てるには:
config.gpu_options.per_process_gpu_memory_fraction = 1.0

@PoloShock
TF 2.0でこれを試しましたが、機能しないようです。
Ubuntu18.04、RTX 2080、CUDA10、cudnn7.6。

TF 2.0では、GPUメモリ使用量を制限するためのAPIが変更されました。

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

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

@nluehrこの問題がRTXでのみ表示される理由を理解していますか? TensorFlowと同時にディスプレイGPUとして使用している他のアプリケーションがあるためでしょうか?

RTX GPUにアクセスできないため、これを直接デバッグすることは困難です。

@sanjoy統合

私はそれをtensorflow2.0に使用してみました:

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

rtx2080のcudnnエラーは修正されますが、トレーニングはラップトップの1050Tiと同じくらい高速です。
CNNのトレーニング中:

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

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

追加する

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

allow_growthなしで問題を解決しませんでした。cudnnエラーが発生します。とにかく、RTXは3Gbやメモリなどのみを使用しています。

何か案が ?

私は試した

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

しかし、cudnnはまだエラーをスローしています

このエラーは、RTXではなく2つのTitan V GPU(@sanjoy)を使用するtensorflow 1.15.0-py3-gpu Dockerイメージ(Ubuntu 18.04)でも機能します。 ただし、このエラーは、GPU0メモリを使用するXorgとgnome-shellを備えたGPU0でのみ発生するようですが、GPU1はGPU memを使用するpythonのみを備えており、このエラーはスローされません。 エラーも残念ながら断続的です。Dockerコンテナを削除し、同じ設定と同じコードで再作成できる場合があります。そうすれば、エラーは解消されます。 か否か。

私はKerasバックエンドインターフェースを使用してそれを修正することができました:

import tensorflow as tf

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

以下は両方のGPUでの私のnvidia-smiです

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

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

conda経由でTF2.0がインストールされている@clementpoiretと同じ問題がallow_growthフラグを使用すると、問題は解消されますが、トレーニングが非常に遅くなり、TF 1.xでのトレーニングよりも遅くなります...最初は熱心ですか?

@clementpoiret@EKamiconfig.gpu_options.allow_growth = Trueconfig.gpu_options.per_process_gpu_memory_fraction = 0.8置き換えると、トレーニングがスピードアップしますか? どの部分がGPUを最大限に活用しているかを実験して確認できます。

@ synapse8 tensorflow 2.0のドキュメントに同等のものがありません

編集:この方法でメモリを設定して、問題が解決するかどうかを確認します。

import subprocess
import tensorflow as tf


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

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

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


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

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

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

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

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

このようにして、 setup_gpus(True, .9)と呼ぶだけで便利です。

@clementpoirettf.config.experimental.set_virtual_device_configurationはGPUメモリをスライスし、割り当てられたメモリを事前に割り当てるため、そのフラグを上書きするため、 tf.config.experimental.set_memory_growth呼び出しは不要であることに注意してください。

この問題はRTXに限定されません。 またはTF2.0。

追加:
_from tensorflow.compat.v1 import ConfigProto
tensorflow.compat.v1からimportInteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
セッション= InteractiveSession(config = config)_

次のように、環境に関する「cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR」の問題を解決します。

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

python -c 'import tensorflow as tf; print(tf.__version__)' 1.14.0
これは、NVIDIAドライバーの最大の連続ブロック割り当ての問題でしょうか? 同じ合計量のメモリをより小さなブロックに割り当てても問題ありませんか?

こんにちは、

これを自分のマシンで再現できないため、根本原因の原因となるヘルプが必要になります。 問題を再現でき、実践的なデバッグを喜んで行う人がここにいますか?

出発点として、 MinSystemMemoryがcuDNNに十分なメモリを保持しない理由を理解したいと思います。 この問題を再現する設定をしている人が、(ローカルパッチとして)ロギングを追加して、 MinSystemMemoryによって返されるメモリの量を見つけることができれば、それは素晴らしいことです。 そして、 MinSystemMemoryの魔法の0.05数を増やすことは、状況を助けますか?

@sanjoyこの問題を示すバージョンがあります。 MinSystemMemoryにアクセスしたり、「魔法の0.05の数値を設定したり」するにはどうすればよいですか? ほとんどの部分でcuda9.1の使用に戻りましたが、いくつか試してみてもかまいません。

@odinsbane以下で提案することを行うには、ソースからTensorFlowをビルドする必要があります。

最初のステップは、 LOG(INFO)またはstd::cerr行をMinSystemMemoryに追加して、 available_memoryMinSystemMemoryからの戻り値を出力することです。 available_memory nvidia-smi印刷するものと一致しますか? システムにどのくらいのメモリを残していますか?

次に、 0.05マジックナンバーをたとえば0.07増やすと、まったく役に立ちますか?

これはうまくいきます! 君たちありがとう!

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

RTX 2070(Ubuntu 18.04、TF2)でも同様の問題が発生しています。CUDA10.0バージョンとlibcudnn7.xxxバージョンのさまざまな組み合わせを試しましたが、エラーが再び表示され続けます。
別のマシンにはGTX1080tiがあり、これは問題なく動作します。
nvidia-driverはどちらの場合も430.50です。

tf.keras.utils.plot_modelが原因ではありません。削除しても、このエラーは引き続き表示されますが、頻度は低くなります。
更新:これはtf.keras.utils.plot_modelを使用した場合にのみ発生します。 頑張ります。

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

Ubuntu 18.04.3 LTS、tf 1.15、cuda10.0のRTX2080Tiでも同様の問題が発生します。

私の場合、奇妙なことに、これはごくまれにしか発生せず、一度発生すると、数分から数時間続き、その後消えてしまいます

上記のすべての解決策を試しましたが、すぐに修正できるものはありません。 私は何もしようとせず、ただ待つだけで、ついに消えてしまいます。

私も試したが、上記では言及されていないこと:

  1. ~/.nvディレクトリを削除します
  2. 再起動するだけです

参考までに、エラーログ

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

私たちは関連する問題に直面しています

システム仕様

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

LSTM、GRU、RNNなどを使おうとするとエラーが発生します。

実際のエラー

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

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

明らかな問題

私の記憶はすべてかなり早く使い果たされているようです。 問題はGPUモードでのみ発生するようです。同じコードがCPUで正常に機能します。

トライアル

  • メモリの増加を許可する
  • 限られたメモリで仮想デバイスを作成する

どちらの試行でも同じエラーが発生します。

何か案は?

再現できないため、この問題を進めることはできません。 あなたのマシンでこれを確実に再現することができれば、あなたは助けることができます。 方法は次のとおりです: httpshttps: //github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750

再現できないため、この問題を進めることはできません。 あなたのマシンでこれを確実に再現することができれば、あなたは助けることができます。 方法は次のとおりです: #24496(コメント)#24496(コメント)

こんにちは@sanjoy 、私は非常に喜んでお手伝いしますが、残念ながら、大学のプロパティを使用して実験を行っており、個人のラップトップにGPUが装備されていないため、ソースからtfを構築できない可能性があります。 必要なログを取得する他の方法はありますか?

私はスタックオーバーフローで次のコードを見つけました、それは助けになりますか?

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

必要なログを取得する他の方法はありますか?

VLOGステートメントをチェックインして、この情報を取得します。 それが完了したら、tf-nightlyを使用してこれをインストールして再現できますか(いくつかの追加のフラグを使用して、正確にどれを通知しますか)?

確かに、 pipまたはcondaで利用可能で、仮想環境を使用している場合は、そのコンピューターにパッケージをインストールできます。 エラーを再現してみます。

確かに、 pipまたはcondaで利用可能で、仮想環境を使用している場合は、そのコンピューターにパッケージをインストールできます。 エラーを再現してみます。

tf-nightlyをインストールして(ロギングを追加するコミットを取得するように)、環境変数TF_CPP_VMODULEgpu_device=5設定して実行してください。 次のように2行を出力する必要があります

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

これらの番号をここに報告していただけますか?

申し訳ありませんが、現在のコードはtf 2.0(1.15を使用)と互換性がありません。更新しようとしています。 少し時間をください。

この問題は私のRTX2080に関連しているようです、私はデスクトップGTX1080を持っています、すべてが大丈夫のようです、そして私はcondaを使用して私のRTX2080ノートブックにconda環境を複製します、私はtensorflow2.0.0-gpuを使用します。 アプリケーションコードがConv2d、LSTM、GRUを使用すると、この問題が発生します。
この問題を解決するために次のコードを使用する前に:
gpus = tf.config.experimental.list_physical_devices( 'GPU')
GPUの場合:
試してください:

現在、メモリの増加は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:

GPUを初期化する前に、メモリの増加を設定する必要があります

    print(e)

しかし、数日前から、上記の方法は機能しなくなりました

私はgtx960mで同じ問題を抱えています

こんにちは@sanjoy 、私はちょうどこの出力を得ました:

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

こんにちは@sanjoy 、私はちょうどこの出力を得ました:

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

ありがとう!

残念ながら、これは思ったほど役に立ちませんでした。 ローカルビルドのMinSystemMemory542015488 (つまり、 min_system_memory = std::min(min_system_memory, 542015488ll) )にクランプすると、resnet(たとえば)は正常に機能しているように見え、cuDNNからエラーが発生しません。 。

@sanjoy私は(ほとんど一貫して)私の側で問題を再現することができます。

最新の毎晩からの関連メッセージ:

明示的に許可されたメモリの増加

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



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



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

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

GPUデバイスの構成を変更せずに

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



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



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

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

編集:それが役立つ場合は、モデル情報。

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

TF 1.15を使用した最小限の例で、このエラーが発生します。 RTX2070およびNVIDIA440.44およびCUDAバージョン10.2の場合。

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

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

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

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

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

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

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

別の問題https://github.com/tensorflow/tensorflow/issues/36501で指摘したいのですが、これらのオプションを使用するとコードを実行できますが、GPUの実際のメモリ使用量を観察すると、実際にはそうではないことがわかります増分メモリ使用量を実行します。 したがって、上記のオプションはエラーを修正しますが、実際には、主張して​​いることを実行しません。 以前は1.2などの古いTFバージョンで同じモデルを使用していましたが、実際には増分メモリ割り当てが行われました。

私はここのみんなと同じ問題を抱えています! tf 2.1をインストールした後、GPUにメモリの増加を追加せずに、簡単なMNISTの例を実行することはできませんでした。 私は2080tiを使用しています。

私が直面している主な問題は、コードにメモリの増加が追加されたとしても、呪われたCUDNN内部エラーを取得せずにtensorflow-probabilityをtf2.1と一緒に実行できないことです。 異なるCUDNNバージョンのtf2.0、CUDA 10.0、CUDA10.1をインストールしてみました。 ubuntuを完全に再インストールした後、単純なMNISTの例を修正して、拡張なしで機能するようにしましたが、テンソルフローの確率の例は修正しませんでした。 私はついにtensorflowの公式ナイトリードッカーを使用しようとしましたが、tensorflow確率(コンテナー内のtf 2.2)を使用しても同じエラーが発生しました。 すべてがCPUで正常に実行されます。 1080 tiのマシンで同じDockerを実行してみましたが、うまくいきました...私が感じているRTXシリーズには間違いなく何か問題があります。

tf dockerとtensorflowのエラー-確率の例と追加のcudnnデバッグ情報:

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

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

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

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

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

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

Function call stack:
distributed_function

@sanjoy RTX 2080でも同じ問題があり、必要に応じてソースからビルドできます。

@odinsbane以下で提案することを行うには、ソースからTensorFlowをビルドする必要があります。

最初のステップは、 LOG(INFO)またはstd::cerr行をMinSystemMemoryに追加して、 available_memoryMinSystemMemoryからの戻り値を出力することです。 available_memory nvidia-smi印刷するものと一致しますか? システムにどのくらいのメモリを残していますか?

次に、 0.05マジックナンバーをたとえば0.07増やすと、まったく役に立ちますか?

マジックナンバー0.05マジックナンバー0.1変更してソースからビルドすると、問題が解決するようです(少なくとも1.15.2の場合)。

騒々しい投稿の海では、最小システムメモリマジックナンバーは完全に論理的であるように思われます。 共有してくれてありがとう!

@chsigg何か提案はありますか? たぶん、すべてのGPUメモリを予約する前に、cuDNN、cuBLAS、およびその他のNVIDIAライブラリの初期化を試みることができますか?

デフォルトでallow_growthを有効にすることもできますが、これには時間がかかります。

この問題は私のRTX2080に関連しているようです、私はデスクトップGTX1080を持っています、すべてが大丈夫のようです、そして私はcondaを使用して私のRTX2080ノートブックにconda環境を複製します、私はtensorflow2.0.0-gpuを使用します。 アプリケーションコードがConv2d、LSTM、GRUを使用すると、この問題が発生します。
この問題を解決するために次のコードを使用する前に:
gpus = tf.config.experimental.list_physical_devices( 'GPU')
GPUの場合:
試してください:

現在、メモリの増加は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:

GPUを初期化する前に、メモリの増加を設定する必要があります

    print(e)

しかし、数日前から、上記の方法は機能しなくなりました

ラムダTensorflow2-tutorialbasic-image-classificationコードを何日も実行しようとしていて、解決策を試すまで同じcudnnハンドルエラーが発生していました。 ついにRTX2070 Max Qで実行され、最小限のGPUメモリを使用しています。

私もこの問題に直面します
anacondacloud install tensorflow-gpu2.0

rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR
畳み込みアルゴリズムの取得に失敗しました。 これはおそらくcuDNNが初期化に失敗したためであるため、警告ログメッセージが上に出力されたかどうかを確認してみてください。

私もこの問題に直面します
anacondacloud install tensorflow-gpu2.0

rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR
畳み込みアルゴリズムの取得に失敗しました。 これはおそらくcuDNNが初期化に失敗したためであるため、警告ログメッセージが上に出力されたかどうかを確認してみてください。

挿入しましたか:

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

エントリーコードの上部にありますか?

かなりの時間をかけて、明らかに異なる問題を試した後、tf.signal.stftで失敗しました
私はついにこのスレッドに出くわし、メモリの増加を可能にするソリューションを試しました。 それは私の問題も解決しました。
anacondaからcudatoolkit = 10.1でtensorflow-gpu = 2.1をインストールしましたが、同様にインストールしてみました
tensorflow-pipを介したGPUで、まったく同じ結果が得られます。 私はこれをlinux-ubuntu18.04とdebian9.12でカードを使って再現できます

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

ラボで他の2枚のカードも試しました

  GeForce GTX 1080 Ti
  TITAN Xp COLLECTORS EDITION

メモリの増加を許可する場合と許可しない場合でコードが正常に実行される場所

私の最小限の問題は以下の通りです。 興味深いことに、問題はconv2dではありません。 これらの3つのコマンドの順序を変更できますが、失敗するのは常に3番目です。

import sys
import tensorflow as tf

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

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

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

私もこの問題に遭遇しました
anacondacloud install tensorflow-gpu2.0
rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR
畳み込みアルゴリズムを取得できません。これは、cuDNNが初期化に失敗したことが原因である可能性があるため、上記に警告ログメッセージが出力されているかどうかを確認してください。

挿入しましたか:

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

入力したコードの上部にありますか?

ええ、私はこのようにこの問題を解決しました。ありがとう!

私も同じ問題を抱えていて、 allow_growth = Trueが解決策でした。 ただし、TensorFlow 2の場合、これを行うには、次の行を追加する必要があります。

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

この号のユーザー@opceccoに感謝します: https

興味深いことに、問題はconv2dではありません。 これらの3つのコマンドの順序を変更できますが、失敗するのは常に3番目です。

@roebelいくつかの異なる6つの順列のログを添付していただけますか?

そして、プログラムを(たとえば)に変更するとどうなりますか?

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

障害はまだconv2dで発生しますか、それとも3番目のstftますか?

@sanjoyここで、コマンドの順序を変更する上記のスクリプトの3つのバリエーションと、4 stftで始まり、conv2dで終わる4番目のバリエーションを確認してください。

4つの異なるログは、からのスクリプトを使用します
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -593098386
最後の4行を置き換えます。

要するに、順序に応じた結果:

conv2dの実行時にstft-> blas-> conv2dが失敗する
stftの実行時にconv2d-> stft-> blasが失敗します(3番目ではありませんが、blasはconv2d用にすでにロードされているようです
matmul-> conv2d-> STFTの実行時にstftが失敗する
stft->-stft->-stft-> stft-> matmul-> conv2dは、conv2dの実行時に失敗します。 以下のログをご覧ください。

必要に応じて、他のバリアントを要求してもかまいません。

最後のconv2d:

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

log.conv2d.last.txt

matmul最後

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

log.matmul.last.txt

stft last

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最初のconv2d最後:

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

log.multi_stft.first.txt

どうもありがとう

次の構成でも同じ問題が発生しました。
(ソースまたはバイナリ)からインストールされたTensorFlow:r1.13.1、r.1.13.2、r1.14
Pythonバージョン:3.6.1
Bazelバージョン(ソースからコンパイルする場合):
GCC /コンパイラバージョン(ソースからコンパイルする場合):
CUDA / cuDNNバージョン:cuDNN7.4.1を搭載したCUDA10
GPUモデルとメモリ:RTX 20708GB。

私はこの問題を次のように解決しました:
(ソースまたはバイナリ)からインストールされたTensorFlow:r1.12.0
Pythonバージョン:3.6.9
GCC /コンパイラバージョン:4.8
CUDA / cuDNNバージョン:cuDNN7.1.4を搭載したCUDA9.0
GPUモデルとメモリ:RTX 20708GB。
お役に立てば幸いです

私もそのような問題に直面しましたが、環境変数TF_FORCE_GPU_ALLOW_GROWTH = trueを追加することで解決しました。

構成は次のとおりです。
ウィンドウズ10
ソースr2.0からコンパイルされたTensorflow
バゼル:0.26.1
C ++コンパイラ:MSVC 2017
CUDA:10
cuDNN:7.6.5

intel4930 cpu、nvidia titan XP pascal
Ubuntu 18.04.4、最新のminiconda、
`!condaリスト| grep "cud"は

    cudatoolkit               10.1.243             h6bb024c_0  
    cudnn                     7.6.5                cuda10.1_0  

`!condaリスト| grep "tensor" ``は

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

jupyterノートブックの最初のセルは次のとおりです。

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

モデルは、合計パラメータが112,269の変分オートエンコーダです。
x_train.shape、y_train.shape、x_test.shape、y_test.shapeは
((106496, 32, 32, 1), (106496,), (12288, 32, 32, 1), (12288,))

コードに含まれるもの:

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

そしてそれは失敗します。 コンソールショー

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

上記の最初のセルの代わりに、私は

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

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

次に、このエラーが発生します


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


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

興味深いことに、苦労しているときに、メニューバーの赤い「エントリなし」のサインから、「依存関係が満たされていないエラーが壊れたカウント」というメッセージが表示されました。
ソフトウェアアップデートを実行しましたが、libcudnn7-devとlibcudnn7-docを削除したい
Linuxに関係する57の他のライブラリをアップグレードするだけでなく

編集:再起動後、モデルはこれを使用して正常にトレーニングされているようです:

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

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

またはこれ:

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

GPUのメモリ使用率は<700MB、バッチサイズは16、
バッチサイズ256で最大1ギガバイト(3倍高速にトレーニング)

ソースからコンパイルしようとしましたが、同じ問題が発生しました。 config.gpu_options.allow_growth = True設定することで問題を解決することができました。

しかし、コマンドラインでこの問題が発生した場合、これらのコードを追加するにはどうすればよいですか?

私もこの問題に直面します
anacondacloud install tensorflow-gpu2.0
rtx2070s
tensorflow-gpu.2.0.0
cuda 10.0.13
cudnn 7.6.5
cudnnハンドルを作成できませんでした:CUDNN_STATUS_INTERNAL_ERROR
畳み込みアルゴリズムの取得に失敗しました。 これはおそらくcuDNNが初期化に失敗したためであるため、警告ログメッセージが上に出力されたかどうかを確認してみてください。

挿入しましたか:

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

エントリーコードの上部にありますか?

私は上記とまったく同じ問題を抱えていました。 Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

@robosmithの解決策は私の問題を完全に修正します!

私のスペック:
RTX 2070
Ubuntu 18.04 LTE
Tensorflow 2.1.0
Keras 2.3.0
cudnn 7.6.5
cuda10.1.0
コンダ4.8.3
Python 3.7.7

conda install tensorflow-gpu keras経由で構築

どうもありがとうございます! TF-2を完全に動作させるのはこれが初めてです! そして、TF-1は完全に機能しなくなりました。そのため、アップグレードして「何が起こるかを確認する」ことにしました。

ありがとうございました!

config.gpu_options.allow_growth = True

tensorflow 2.0を使用すると、
tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)
このコードはimport tensorflow as tf後ですが、コードの前にあります。

ソースからコンパイルしようとしましたが、同じ問題が発生しました。 config.gpu_options.allow_growth = True設定することで問題を解決することができました。

このコードは、tensorflowユーザーとkerasユーザーの両方がより速く利用できるようにするために共有されます。
ここからのソース

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


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

チャイムを鳴らして、問題はまだあると言いたかっただけです。

私のスペック:
Ubuntu 20.04
NVIDIA RTX 2070
Nvidia_driver 440.64
Tensorflow-gpu 2.0.1(CudatoolkitとCuDNNを同じ環境に自動的にインストールするcondaを介してインストールされます)
cudatoolkit 10.1.243
cudnn 7.6.5

問題はtf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)によって解決されます

ただし、これは実際の修正というよりは回避策のように思われ、最近では多くの人が20XXカードを持っています。 おそらく、この問題に対処するアップデートがあるはずです。

更新:私はデュアルブートしているので、Windowsもチェックしようとしました。 問題はそこで解決しません。
ウィンドウズ10
Nvidia-ドライバー445.87
それ以外はすべて似ています

RTX 2080用の最新のドライバー(445.87)をインストールすると、この問題が解決しました。

@NBoumanこれは興味深いことですが、GeForce GTX 1050TIを搭載したUbuntu18.04で、最後に利用可能なドライバー440.82に更新しました。 それを機能させるには、メモリの増加を許可する必要があります。

RTX 2080用の最新のドライバー(445.87)をインストールすると、この問題が解決しました。

@NBoumanどのOSを使用していますか? 私はUbuntu20.40を使用していますが、入手可能な最新のドライバーは440.82であり、 @ roebelと同様に、問題は解決し

@ roebel @ eduardoscsouza以前にこの問題が発生したマシンでWindows10を使用しています。

チャイムを鳴らして、問題はまだあると言いたかっただけです。

私のスペック:
Ubuntu 20.04
NVIDIA RTX 2070
Nvidia_driver 440.64
Tensorflow-gpu 2.0.1(CudatoolkitとCuDNNを同じ環境に自動的にインストールするcondaを介してインストールされます)
cudatoolkit 10.1.243
cudnn 7.6.5

問題はtf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)によって解決されます

ただし、これは実際の修正というよりは回避策のように思われ、最近では多くの人が20XXカードを持っています。 おそらく、この問題に対処するアップデートがあるはずです。

更新:私はデュアルブートしているので、Windowsもチェックしようとしました。 問題はそこで解決しません。
ウィンドウズ10
Nvidia-ドライバー445.87
それ以外はすべて似ています

tensorflow 2.0.0の場合:
tf.config.experimental.set_memory_growth(tf.config.experimental.list_physical_devices('GPU')[0],True)

ありがとうございました!!! 何千ものありがとう!!!!!!!!!!!!!!!

OS:ubuntu 18.04 lts

ドライバーバージョン:435.21

CUDA:cudatoolkit 10.1

CUDNN:cudnn-7.6.5-cuda10.1_0

anaconda installtensorflowを使用しました

conda create -n tf-gpu tensorflow-gpu

cudatoolkitとcudnnは、前のコマンドを介してanacondaによって自動インストールされます。

私は同じ質問があります、エラー:

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

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

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

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

したがって、ここには未解決の問題があります(より効率的なメモリ処理のためにメモリ増加を使用しないという公式の推奨に反する回避策を除いて)。 開発チームからのフィードバックはあまりありません。 なんでだろう?

このバグは、非常にさまざまなテンソルフローバージョン(1.13、2.0、2.1)に影響を与えるようです。正しく表示された場合、すべての問題がcuda 10で発生することが報告されています。コードは多くのカードで正常に実行されますが、他のカードでは実行されません。
開発チームの誰かが、これがテンソルフローレイヤーよりもcudaドライバーの問題を示唆しているかどうかを教えてもらえますか? その場合、バグレポートをNVIDIAサポートページに送信すると確かに役立ちます。 じゃないですか。

tensorflow開発チームの誰かがこのバグをどのように見ているかについてコメントできますか? これを調べている人はいますか?

パスまたはLDライブラリパスに2つのCuDNN7共有ライブラリがあるかどうかを確認しています。 このライブラリにはマイナー番号またはパッチ番号はありませんが、バージョンの不一致によりこのエラーメッセージが表示される可能性があります。

NVIDIAでバグレポートを開きました。その結果をお知らせします。

@samhodge
実際、libcudnnには多くのバージョンがインストールされており、各anacondaenvには独自のバージョンがあります。
通常、anacondaはrpathが適切に設定された状態でインストールされるため、適切なライブラリを取得できないことはかなり困難です。

straceを作成し、失敗したときに開かれるライブラリをgrepしました
それらは一貫して、tensorflowパッケージをホストするanaconda env dirから取得されます(以下を参照)。
バージョン440.82であり、NVIDIAインストーラーでコンパイルしたlibcudaに加えて。

LD_LIBRARY_PATHを、異なるcudatoolkitsと異なるlibcudnnを持つ他のanaconda env lib dirの1つに設定できますが、トレースは同じままです。
問題を引き起こすのはlbcudnnではないことにも注意してください。 それは常に3番目のlibcuxyzライブラリです
これは特定のGPUでのみ使用され(GPUが異なる異なるマシンで同じインストールスクリプトを使用しましたが、動作するものと動作しないものがあります)、メモリの拡張が有効になっている場合はすべて機能します。

(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

私は、GeForce RTX 2060SUPERを使用したUbuntu20.04で同じ問題が発生しました。 密な層を持つNNはうまく機能します。 しかし、CNNレイヤーではFailed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.取得しています
tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)を追加しても、エラーに違いはありません。
https://www.tensorflow.org/install/gpuに従ってインストールを実行すると、 nvidia-smi表示されます。
Driver Version: 440.64.00 CUDA Version: 10.2
私のcondaenvには次のものがあります。

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

tf1.15のcondaenvで、同じエラーが発生します。 これを修正できれば素晴らしいと思います。

更新

export TF_FORCE_GPU_ALLOW_GROWTH=trueを使用した後tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)も同じことになると思いましたが、そうではありません。 これは、TensorFlowGPUサポートWebページに明確に記載する必要があると思います。

@samhodge
実際、libcudnnには多くのバージョンがインストールされており、各anacondaenvには独自のバージョンがあります。
通常、anacondaはrpathが適切に設定された状態でインストールされるため、適切なライブラリを取得できないことはかなり困難です。

straceを作成し、失敗したときに開かれるライブラリをgrepしました
それらは一貫して、tensorflowパッケージをホストするanaconda env dirから取得されます(以下を参照)。
バージョン440.82であり、NVIDIAインストーラーでコンパイルしたlibcudaに加えて。

LD_LIBRARY_PATHを、異なるcudatoolkitsと異なるlibcudnnを持つ他のanaconda env lib dirの1つに設定できますが、トレースは同じままです。
問題を引き起こすのはlbcudnnではないことにも注意してください。 それは常に3番目のlibcuxyzライブラリです
これは特定のGPUでのみ使用され(GPUが異なる異なるマシンで同じインストールスクリプトを使用しましたが、動作するものと動作しないものがあります)、メモリの拡張が有効になっている場合はすべて機能します。

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

だからあなたは私のポイントを説明しているようなものですlibcudnn.so.77.XXX.YYYを言っていませんその上に7.XXX.YYYはCUDAにさらに依存しています10.2 10.1 10.0 9.2 9.1 9.0など

既知のサイズのグラフを初期化し、ターゲットGPUがグラフに十分なメモリと、CUDAの量を照会するのに十分なメモリのみを使用していることを確認する前に、パスの管理と使用可能なメモリの量の管理を開始して以来、エラーは発生していません。メモリが利用可能です。

資源の問題だと思います。 プロセスを開始するときに使用可能なメモリの量と、グラフが使用するメモリの量はどれくらいですか?

@ kognat-docs

つまり、libcudnn.so.7が7.XXX.YYYと言っていないことを説明しているようなものです。7.XXX.YYYはCUDA 10.2 10.1 10.0 9.2 9.19.0などにさらに依存しています。

あなたが提起した質問は、「パスまたはLDライブラリパスに2つのCuDNN7共有ライブラリがあるかどうかを人々がチェックしているかどうか」でした。 そして私の答えは:私はこれをチェックしました、1つだけです。
トレースを送信しました。

パスの管理を開始してからエラーが発生していません

パスを管理するとはどういう意味ですか?
私はいつも自分の道を管理しています! 一貫性があることを確認したconda環境をインストールしました! すべてがanacondaによってパッケージ化されているので、これを確認しました。

とにかく、アナコンダをセットアップするには、私が愚かすぎると信じているかもしれません。 上手
公式のDockerイメージをダウンロードしました

tensorflow / t ensorflow:2.1.0-gpu-py3

そこでスクリプトを実行します。 持っていない場合はクラッシュします

エクスポートTF_FORCE_GPU_ALLOW_GROWTH = true

パスをより適切に管理できますか?

既知のサイズのグラフを初期化する前に使用可能なメモリの量を管理し、ターゲットGPUがグラフに十分なメモリと使用可能なCUDAメモリの量を照会するのに十分なメモリのみを使用するようにします。

資源の問題だと思います。 プロセスを開始するときに使用可能なメモリの量と、グラフが使用するメモリの量はどれくらいですか?

上記のレポートで書いたように、グラフはありません(または、グラフがほとんどないという方がいいでしょう)。 私はこれらの4行を実行します

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

そしてそれはクラッシュします。 3行の順序を変更すると、これら3つの操作の後に常にクラッシュします(これについてはバグレポートで説明しました)。

楽しみのために、バイト数を数えました。必要なデータメモリは83kB未満です。 GPUは空で、グラフィックスには使用していません。他のプロセスは実行されていません。 さまざまなシステムで4GBまたは11GBが利用可能です! その上、私はnvidia-smiを実行する方法を知っています! したがって、カードは空ですが、84kBを必要とするこれらの4行を実行することはできません。

ちなみに、メモリの消耗によるエラーの見た目はまったく異なります。私もこれらを持っています。 私の実際のグラフでは、これらを非常によく検出し、それに応じて反応することができます。

とにかくあなたの努力に感謝します。

@roebel cpphttps //github.com/tensorflow/tensorflow/issues/24496#issuecomment-561366750からのデバッグに関する@sanjoyのコメントを見ましたか?

TensorFlowを再コンパイルして試してみることに慣れていません。 それらのバージョンは非常に速く動くので、すべてをセットアップしてコンパイルするのに少し時間がかかります。 さらに、1.15では使用しているgccバージョンのサポートが終了し、1.13は更新を受け取らないため、とにかくこれをデバッグするのは無意味でした。

@roebel何が問題を引き起こしたのか思い出せませんでした。

このhttps://github.com/tensorflow/tensorflow/issues/24496#issuecomment-480549043を参照して

これがメモリに関連していると思った理由です。この問題はしばらくの間私にも、さまざまなプラットフォーム上のソフトウェアのユーザーにも影響を与えていません。

@samhodge

はい、バグがある場合、それはかなり特定の状況によってのみ引き起こされるように思われることを理解しています。

@odinsbane

おかげで、私はそれに気づいていませんでした。 最新バージョンのtf2.2.0をコンパイルできるかどうかを確認します。

実際、私はtensorflow 2.2でdockerを試しましたが、同じバージョンのcuda 10.1を使用しており、同じ問題があります。

これはWindowsのみの問題だと思ったので、ubuntu環境を最初からインストールしましたが、問題はグラフィックカード(RTX 2080)であることがわかりました。 残念ながら、この問題のために別の機械学習プラットフォームを選択するつもりだと思います。これは2018年以降問題になっているようです。

@ kognat-docs

既知のサイズのグラフを初期化する前に使用可能なメモリの量を管理し、ターゲットGPUがグラフに十分なメモリと使用可能なCUDAメモリの量を照会するのに十分なメモリのみを使用するようにします。

資源の問題だと思います。 プロセスを開始するときに使用可能なメモリの量と、グラフが使用するメモリの量はどれくらいですか?

上記のレポートで書いたように、グラフはありません(または、グラフがほとんどないという方がいいでしょう)。 私はこれらの4行を実行します

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

そしてそれはクラッシュします。 3行の順序を変更すると、これら3つの操作の後に常にクラッシュします(これについてはバグレポートで説明しました)。

楽しみのために、バイト数を数えました。必要なデータメモリは83kB未満です。 GPUは空で、グラフィックスには使用していません。他のプロセスは実行されていません。 さまざまなシステムで4GBまたは11GBが利用可能です! その上、私はnvidia-smiを実行する方法を知っています! したがって、カードは空ですが、84kBを必要とするこれらの4行を実行することはできません。

プロセスが50ミリ秒の間隔で実行されているときに、nvidia-smiでwatchを使用して、使用されているメモリの量を確認しましたか?

他の人のために働いたこの修正を参照してください

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

または、フレンドリーなマニュアルを読むことができます:
https://www.tensorflow.org/guide/gpu#limiting_gpu_memory_growth

したがって、ランタイム環境を変更するだけで、コードに触れることなくパッチを実行できます。

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

@sanjoy @odinsbane

朗報です!
以下
https://github.com/tensorflow/tensorflow/issues/24496#issuecomment -561366750

ここからanacondantensorflowレシピを使用してバージョン2.1を再構築しました
https://github.com/AnacondaRecipes/tensorflow_recipes

MinSystemMemoryにavailable_memoryとmin_system_memoryを示す2つのプリントを追加しました。
GeForce GTX 1050 Ti使用してTF標準ログを無効にしているシステム
私はこれを持っています

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

nvidia-smiは、GPUが4040MiBであると報告しています。このシステムでは、13MiBのカードでXが実行されているため、数値は問題ないようです。

min_system_memoryはこのように設定されています

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

したがって、メモリの最大量はとにかく選択されます。 代わりに、環境変数TF_FORCE_MIN_SYSTEM_MEMORY_MBを介してmin_system_memoryを強制するメカニズムを追加しました。
次に実行します

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

問題は解決された!

残念ながら、現在、RTXカードが機能するシステムを持っておらず、いつそれらが機能するかわかりません。 誰かがそのようなカードでこれをテストすることをいとわないなら、私はそれを実行するためにインストールする必要があるubuntulinux用のpipパッケージとconda環境のコンテンツを提供することができます。

ナイスワン@roebel

プルリクエストとしてそれを提案し、ドキュメントに追加する価値があるかもしれません。

@samhodge @sanjoy @odinsbane

プルリクエストとしてそれを提案し、ドキュメントに追加する価値があるかもしれません。

もちろんですが、問題は、他のカードでは解決策がおそらく機能しないことです。
私のGTX1050の場合、合計メモリは4GBで、デフォルトのシステムメモリが保持されます
テンソルフローによる最大(300MB、4GB * 0.05)です。 したがって、GTX1050の場合、これは300MBになりますが、これは明らかに小さすぎます。 上記のように、310MBに増やす必要があります。

RTX2080の場合、合計メモリは11GBで、最大(300MB、11GB * 0.05)です。
1050の調査結果によると、システムメモリは550MBに選択されます
通常は十分なはずです。

週末までにRTX2080GPUに再びアクセスできるようになります。
私がそこに着くもの。

@samhodge @sanjoy @odinsbane

最後に、パッチを適用したライブラリをrtx2080カードで実行できるようになりました。
予想通り、パッチが適用されたバージョンは合格しません。 ここでもスクリプト

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

そしてここで、gpu_device.ccから報告されたavailable memoryマトリックス、
gpu_device.ccで選択されたデフォルト値Min_system_memoryおよび
min value of the min_system_memoryスクリプトを中止しないように選択する必要があります。

カード| AvailMem | Def MinSysMem | 必要なMinSysMem
:------- |:----------- |:---------- |:--------------- --------
1050 TI | 4163764224 | 314572800 | 325058560
1080 TI | 11567431680 | 578371584 | 335544320
2080 TI | 11381964800 | 569098240 | 618659840

したがって、1050と1080は、ほぼ同じメモリサイズでスクリプトを実行します。
RTX2080は、ほぼ2倍のメモリを必要とします。 これはよく聞こえません
私に。

これを同等の値にしようとする提案はありますか?

@roebel

私はC ++アプリケーションでこれに何度も苦労してきました。

最終的には次のようになりました。

モデルを実行するのに十分なメモリが利用可能な場合にのみ、GPUでモデルを実行します。

したがって、モデルが必要とするメモリの量は定量化できます。

したがって、そのモデルに適合するパーセンテージとしてGPUメモリを用意する必要があります。

次に、メモリを割り当てる前に、カードで使用可能なメモリの量を知る必要があります。これは、オペレーティングシステムで同時にCUDAメモリを使用しているものが他にわからないため、競合状態の影響を受けます。

ただし、競合状態はさておき、メモリの空き容量も測定する必要があります。

これは、それ自体がメモリを使用するcudaMemInfoを使用して行われます。

したがって、測定するためにcudaMemInfo 1回実行するのに十分なメモリがあり、モデルに適合してcudaMemInfoもう一度実行するのに十分なメモリがあることを確認する必要があります。次に、モデルを実行するために、そのカードで使用可能なVRAMのパーセンテージを十分に割り当てることができます。

とにかく、私のランダムなせせらぎからの持ち帰りは、割り当てるために利用可能なメモリの量をポーリングするためにcudaMemInfoが必要であり、それ自体もその利用可能なメモリの一部を使用するということです。

チューリングベースのカードとパスカルベースのカードでは、どういうわけかcudaMemInfoが使用するメモリの量が異なるので、必要に応じてNVIDIAの誰かに見てもらうことができます。

ええ、 cudaMemInfoへの参照はまったく見つかりませんが、それは最大300Mbでカードのメモリの5%になるようなフットプリントのようです。

見てください:

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

これ自体を使用しているようには見えません。

システムライブラリ用に予約する必要のあるメモリ量でいたちごっこをするべきではないと思います。ご存知のように、これを正しく行うための体系的な方法はありません。

代わりに、IMOは、BFCアロケータがGPUの残りのメモリを割り当てる機会を得る前に、システムライブラリの初期化を試みる必要があります。

CC @chsigg

おそらく、メモリの増加を許可することがオフになっている場合にのみ、これを行う必要があります。 そうしないと、すべての演算子が必要でなくても、2080には常に約580MBが必要になります。

テストケースの3つの操作の組み合わせを実行するための最小システムメモリ要件に関して、さらにいくつかのテストを行いました。 1080カードと2080カードのみを比較します。 いずれにせよblasを初期化するので、conv2dだけを見つけることはできません。 出てくる

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

2080では、cudaは操作ごとにオーバーヘッドが必要であり、より多くのライブラリを使用するとこのオーバーヘッドが増加することがわかります。 ほとんどの場合、オーバーヘッドは<100MBが、Conv2Dが関与すると>220MBになります。

@samhodgeがNVIDIAに連絡している場合、これが意図されているかどうかを聞くのは

みなさん、こんにちは!
私はメモリの増加を制限することで同様の問題を解決しました、そしてあなたは試すことができます。

メモリの増加を制限する」セクションにコードがあります。

(これはGitHubでの私の最初のコメントです)

以前にも同様の問題がありました。 GPUメモリを手動で制限することは役に立ちました。 https://github.com/tensorflow/tensorflow/issues/25160#issuecomment -643703167

私は、GeForce RTX 2060SUPERを使用したUbuntu20.04で同じ問題が発生しました。 密な層を持つNNはうまく機能します。 しかし、CNNレイヤーではFailed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.取得しています
tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)を追加しても、エラーに違いはありません。
https://www.tensorflow.org/install/gpuに従ってインストールを実行すると、 nvidia-smi表示されます。
Driver Version: 440.64.00 CUDA Version: 10.2
私のcondaenvには次のものがあります。

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

tf1.15のcondaenvで、同じエラーが発生します。 これを修正できれば素晴らしいと思います。

更新

export TF_FORCE_GPU_ALLOW_GROWTH=trueを使用した後tf.config.experimental.set_memory_growth(tf.config.list_physical_devices('GPU')[0], True)も同じことになると思いましたが、そうではありません。 これは、TensorFlowGPUサポートWebページに明確に記載する必要があると思います。

おい、あなたの解決策は私の命を救う。

Nvidiaは、440.100および450.51(ベータ)Linuxディスプレイドライバーをリリースしました。
440.100を試してみましたが、問題は解決しませんでした。 ベータ450.51を試した人はいますか?

@eduardoscsouza

Nvidiaは、440.100および450.51(ベータ)Linuxディスプレイドライバーをリリースしました。
440.100を試してみましたが、問題は解決しませんでした。 ベータ450.51を試した人はいますか?

450.36.06を試しました。 https://github.com/tensorflow/tensorflow/issues/25160#issuecomment-643703167を確認して

私のために働いたコード:

tensorflowをtfとしてインポートします
config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
セッション= tf.compat.v1.InteractiveSession(config = config)

_これがバグであることを確認してください。 GitHubポリシーに従いtag:bug_template_

システムインフォメーション

  • (TensorFlowで提供されているストックサンプルスクリプトを使用するのではなく)カスタムコードを記述しましたか:はいおよびいいえ(以下で説明)
  • OSプラットフォームとディストリビューション(例:Linux Ubuntu 16.04):Manjaro
  • モバイルデバイスで問題が発生した場合のモバイルデバイス(iPhone 8、Pixel 2、Samsung Galaxyなど):
  • (ソースまたはバイナリ)からインストールされたTensorFlow:tf-nightly-gpu(Dec 19、r1.13)
  • TensorFlowバージョン(以下のコマンドを使用):1.13.0-dev20181219
  • Pythonバージョン:3.7.1
  • Bazelバージョン(ソースからコンパイルする場合):
  • GCC /コンパイラバージョン(ソースからコンパイルする場合):
  • CUDA / cuDNNバージョン:cuDNN7.4.1を搭載したCUDA10
  • GPUモデルとメモリ:RTX 2070 8GB

現在の行動を説明する
MNISTでCNNモデルを実行しています。 GPUで実行しているときに、
2018-12-20 20:09:13.644176: E tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

少し掘り下げてみたところ、メモリの問題であることがわかりました(32GBのRAMと64GBのスワップがあるのでそうではないはずです。モデルを実行しているときにhtopを実行し、20GB以上の空き容量があります。 8GBのvRAMマッピングに適合するのに十分です。

gpu_options.allow_growth = Trueを使用すると、モデルが正しく機能し、 os.environ['CUDA_VISIBLE_DEVICES'] = '-1'も機能します。 これは、私がメモリの問題に直面していることを意味しますが、その方法がわかりません。

また、 gpu_options.allow_growth = Trueを使用しても、tensorflow / models / official / mnist / modelを実行しようとしたときに同じ問題が修正されません。これは、私のコードと同様の動作をするはずです。

問題を再現するためのコード

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


class Model:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

    model = Model(inputs, labels)

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

    # sess = tf.Session()

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

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

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

    return


if __name__ == '__main__':
    main()

これは私のために働いた。RTX 2060ubuntu 18.04Python 3.6

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

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

こんにちは@ bm777

数ヶ月前の調査に続いて、問題をどのように理解しているかを要約します

GPUモデルとメモリ:RTX 2070 8GB
... 32GBのRAMと64GBのRAMがあるので、そうではないはずです。

問題はシステムメモリではなく、GPUメモリです!

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

GPUを使用しないため動作します!

いくつかの説明:

TFには2つの動作モードがあります。

  1. allow memory growth = false :この場合、TFは、大まかな推測を使用して、システムライブラリにメモリを事前に割り当てます。
    必要なメモリ量。 ここで読むことができるようにhttps://github.com/tensorflow/tensorflow/issues/24496#issuecomment-633953715TFはこの推測に式max(300MB, GPU-MEM * fac)を使用します。 TF2.1の場合fac = 0.05 TF2.2の場合
    fac=0.07ことを忘れないでください。 これで8GBになり、TF2.1でGPUに事前に割り当てられたメモリに400MBが割り当てられます。
    TF2.2では560MB。

    いくつかのGPUとTF21に必要な事前割り当てメモリをここで実験的に評価しました: https ://github.com/tensorflow/tensorflow/issues/24496#issuecomment-637715002とここhttps://github.com/tensorflow/tensorflow / issues / 24496#issuecomment -637715002

    そこに520MBが必要なConv2D操作であることが判明しました。TF21ではそれより少なくなりますが、TF22ではもっと多くなります。 残念ながら、TFバージョンについては言及していませんが、TF2.1を使用していると思います。 TF2.2を使用しても失敗する場合は、別のGPUを使用している可能性があります。 とにかく事実はそれが失敗するということです。 下記参照

2) allow memory growth = true :TFは事前に割り当てられたメモリを使用せず、ライブラリが到着するとロードします。 TFのドキュメントでは、これはメモリの断片化の可能性があるため問題があると宣言されているため、デフォルトではoffです。

私の見解:

GPUで実行する操作にも依存するライブラリに必要なメモリの範囲が広いことを考えると、モードallow memory growth = false正しく取得するのは非常に難しいようです(https://github.com/tensorflow/を参照)。 tensorflow / issues / 24496#issuecomment-637950411)。 現在の解決策:TF2.2で行われた、事前に割り当てられたメモリのサイズを増やすことは、GPUがかなり小さい場合に問題があります。 これにより、使用可能なすべてのライブラリ(blas、Conv、FFT、および他にあるかどうかはわかりません)が必要になると想定して、メモリの使用がブロックされます。 これらすべてを使用しない場合、事前に割り当てられたメモリが無駄になり、アプリケーションにロードする可能性のあるモデルサイズが減少します。 一方、トレーニングを開始する前にシステムライブラリをロードするようにモデルを早期に作成すると、メモリの断片化の問題を防ぐことができると思います。 これはとにかくほとんどの場合に起こっているように思われるため、特にメモリの少ないGPUの場合、特に単一モデルのトレーニングの場合、事前に割り当てるのではなく、 allow memory growth = trueを使用することが有益であるように思われます。

個人的には、4GBから11GBの範囲のメモリを搭載したGPUを使用しており、上記の引数に従って、すべてのGPUにTF_FORCE_GPU_ALLOW_GROWTH = trueを設定しました。 今のところ問題はありませんでした。

こんにちは@roebel

私も、メモリ割り当てのエラーの問題を考えていました。 これは明らかに私にとって今です。
今では良いGPUメモリに見えます

過去に、メモリを事前に割り当てるための多くのオプションをテストしました😢:

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

個人的には6GBのメモリを搭載したGPUを使用しています。
そして、 @ roebelに感謝します。この新しい矢印TF_FORCE_GPU_ALLOW_GROWTH=trueが、GPUに割り当てを強制します😊。

私はこれと同じ問題を抱えていました。 問題は2070RTXでのみ発生し、まったく同じコードを実行しているTitanRTXでは発生しないことは間違いありません。

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

CUDA11とcudnn8.0を使用してTensorflow2.3にアップグレードするだけです。 それは魔法のように私のすべての問題を解決しました、そして私は今config.gpu_options.allow_growth = Trueの回避策さえ必要としません。

残念ながら、tensorflow1.Xのみをサポートするコードを実行する必要があります

CUDA11とcudnn8.0を使用してTensorflow2.3にアップグレードするだけです。 それは魔法のように私のすべての問題を解決しました、そして私は今config.gpu_options.allow_growth = Trueの回避策さえ必要としません。

明示的なTF_FORCE_GPU_ALLOW_GROWTH=falseても2.2から2.3にアップグレードすると、これも解決しました(少なくとも今のところ、 delfデモコードを実行でき

私はまだCUDA10.1、Cudnn7.6.5を使用しています。

tensorflow 2とpython3でこの問題の修正はありますか?

私は持っています:
RTX 2080

このメッセージが表示されます:


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

Function call stack:
train_function

あなたの問題が現在の問題で扱われている問題と同じ原因である場合(あなたのレポートからはわかりません)、この最後の10〜20の投稿を読むことで簡単に見つけることができるいくつかの解決策があります糸。

私はこれでそれを修正しました:

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

RTX 2080でも同じ問題が発生しました。その後、次のコードで問題が解決しました。

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

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

みんな、ありがとう

allow_growth修正の投稿を今すぐやめることができると思います:)

RTX2070はこちら。 このエラーが発生していましたが、 TF_FORCE_GPU_ALLOW_GROWTH=true実行すると(他のコメント投稿者が指摘しているように、修正します)、エラーメッセージがメモリ不足エラーに変わります(メモリが十分にある場合でも)。

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

しかし、私のGPUには8GBがあり、プロセスを開始する前は約250MBしか使用されていませんでした。 わかりませんが、なぜ3.87GBを割り当てられないのですか? (バッチサイズを小さくしても効果はありませんでした。hdf5ファイルの重みは200MB未満です)

TF_FORCE_GPU_ALLOW_GROWTH = trueは私のために働いた。
tf.config.experimental.set_memory_growth(gpu、True)も機能しました。

これが私の設定です:
GPU GTX 1650
cuda-10-1 10.1.243-1
libcudnn7 7.6.5.32-1 + cuda10.1
Ubuntu 18.04.5 LTS

環境変数を設定できない人は、 httpsます
gpus = tf.config.experimental.list_physical_devices( 'GPU')
GPUの場合:
試してください:
#現在、メモリの増加はGPU間で同じである必要があります
GPUのGPUの場合:
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")
eとしてRuntimeErrorを除く:
#GPUを初期化する前に、メモリの増加を設定する必要があります
print(e)

ターミナルに記載されているコマンドを入力すると、うまくいきました。

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

CUDA11とcudnn8.0を使用してTensorflow2.3にアップグレードするだけです。 それは魔法のように私のすべての問題を解決しました、そして私は今config.gpu_options.allow_growth = Trueの回避策さえ必要としません。

この問題はtensorflow2.3.0で認識され、解決されているようです。

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

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

そして、回避策allow_growth = Trueは役に立ちません。

tensorflowを2.3.0にアップグレードした後、 allow_growth = True行を追加しなくても、問題は解消されました。

わかりました。tf-nightly-gpu-2.0-previewとipythonノートブックで動作するようになりました。これをコードに追加します。

tensorflow.compat.v1からimportConfigProto
tensorflow.compat.v1からimportInteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
セッション= InteractiveSession(config = config)

私の場合は機能します

このページは役に立ちましたか?
0 / 5 - 0 評価