当训练两个不同神经网络中的一个时,一个用Tensorflow,另一个用Theano,有时候经过一段随机的时间(可能是几个小时或几分钟,大多数几个小时),执行冻结,我得到这个消息运行"nvidia-smi":
"无法确定GPU 0000:02:00.0的设备句柄:GPU丢失.重新启动系统以恢复此GPU"
我正在与:
我不确定如何处理这个问题,有人可以提出一些可能导致这种情况以及如何诊断/解决此问题的建议吗?
我安装了tensorflow-0.8.0 GPU版本,tensorflow-0.8.0-cp27-none-linux_x86_64.whl.它说它需要CUDA工具包7.5和CuDNN v4.
# Ubuntu/Linux 64-bit, GPU enabled. Requires CUDA toolkit 7.5 and CuDNN v4. For
# other versions, see "Install from sources" below.
Run Code Online (Sandbox Code Playgroud)
但是,我意外忘记安装CuDNN v4,但除了错误消息"无法打开CUDA库libcudnn.so"之外,它还能正常工作.但它有效,并说,"创建TensorFlow设备(/ gpu:0)".
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:99] Couldn't open CUDA library libcudnn.so. LD_LIBRARY_PATH: /usr/local/cuda/lib64:
I tensorflow/stream_executor/cuda/cuda_dnn.cc:1562] Unable to load cuDNN DSO
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
('Extracting', 'MNIST_data/train-images-idx3-ubyte.gz')
/usr/lib/python2.7/gzip.py:268: VisibleDeprecationWarning: …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种简单的方法来验证我的TF图表实际上是在GPU上运行.
PS.验证cuDNN库是否被使用也是很好的.
下面是一个示例来阐明我的意思:
First session.run():
TensorFlow会话的首次运行
稍后session.run():
稍后运行TensorFlow会话
我了解TensorFlow在这里进行一些初始化,但是我想知道这在源代码中体现了什么。这在CPU和GPU上都发生,但是在GPU上的影响更为明显。例如,在显式Conv2D操作的情况下,第一次运行在GPU流中具有大量Conv2D操作。实际上,如果我更改Conv2D的输入大小,则它可以从数十个流转换为Conv2D操作。但是,在以后的运行中,GPU流中始终只有五个Conv2D操作(与输入大小无关)。在CPU上运行时,与以后的运行相比,我们在第一次运行中保留了相同的操作列表,但是确实看到了相同的时间差异。
TensorFlow源的哪一部分负责此行为?GPU操作在哪里“分裂”?
谢谢您的帮助!
我安装了CUDA 9.1+cudnn-9.1+opencv 3.4.0+caffe.
当我尝试make all -j8在caffe目录中运行时,发生了以下错误:
nvcc致命:不支持的gpu架构'compute_20'
我试图运行:
"cmake -D CMAKE_BUILD_TYPE=RELEASE -D CUDA_GENERATION=Kepler .."
但它不起作用.
我目前正在使用 cmake-gui 在https://github.com/AlexeyAB/darknet.git编译 yolo darknet 。但是,它不会启用 cuda,我还有其他一些奇怪的问题。这些包括当我使用 VS2017 构建它后从 Release 文件夹运行 darknet.exe 时,它指出它找不到 pthreadVC2.dll 或 opencv_world410.dll。
为了解决其他问题,我复制了 exe 和那些文件,并将它们全部放在项目的根文件夹中。这似乎有效,但我不确定为什么它不工作。
对于 cuda,我不知道该尝试什么。我有这些系统变量和路径:

可以看出 CMAKE_CUDA_COMPILER 是 NOTFOUND。我认为这是问题所在,但我不确定为什么找不到它。如果我nvcc -V在命令提示符下运行,它会返回:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:04_Central_Daylight_Time_2018
Cuda compilation tools, release 10.0, V10.0.130
Run Code Online (Sandbox Code Playgroud)
这里也是 cmake 配置的输出:
Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.17134.
OpenCV ARCH: x64
OpenCV RUNTIME: vc15
OpenCV STATIC: OFF
Found OpenCV 4.1.0 in C:/opencv/build/x64/vc15/lib
You might …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 python 3 中创建 machinelearning。但是后来我尝试编译我的代码,我在 Cuda 10.0/cuDNN 7.5.0 中遇到了这个错误,有人可以帮我解决这个问题吗?
RTX 2080
我在:Keras (2.2.4) tf-nightly-gpu (1.14.1.dev20190510)
无法创建 cudnn 句柄: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.
这是我的代码:
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(1, activation='softmax'))
model.summary()
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
model.fit(x, y, epochs=1, batch_size=n_batch) …Run Code Online (Sandbox Code Playgroud) 我已经成功安装了 CUDA 驱动程序、cuDNN 库和张量流。但是,当运行仅导入tensorflow的测试程序时,我收到错误。该错误似乎表明我安装了错误版本的 cuDNN 库。我希望得到一些帮助。如果我需要降级 cuDNN,我该怎么做?
Tensorflow 版本:2.2 GPU 操作系统:Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-184-generic x86_64) nvcc -V 显示以下信息:
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17
Run Code Online (Sandbox Code Playgroud)
nvidia-smi 显示以下信息:
Fri Jun 12 17:16:38 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.36.06 Driver Version: 450.36.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute …Run Code Online (Sandbox Code Playgroud) 我想加速我的LSTM网络,但是当我将它用于OCR(序列具有可变长度)时,我不能使用普通的LSTM实现.这就是我使用"tf.nn.dynamic_rnn"的原因.
基于张量流中的RNN基准(https://github.com/tensorflow/tensorflow/blob/754048a0453a04a761e112ae5d99c149eb9910dd/tensorflow/contrib/cudnn_rnn/python/kernel_tests/cudnn_rnn_ops_benchmark.py#L77),CUDNN实现用于创建所有模型立刻(它不像其他人那样使用"tf.nn.rnn"结构).我假设可能不可能使用可变长度的CUDNN,但也许任何人都成功了吗?
其次,这是使用"tf.nn.bidirectional_dynamic_rnn",因为我想将Bi-LSTM用于OCR.但是在实施第一部分之后应该解决这个问题.
编辑:看起来"tf.contrib.cudnn_rnn.CudnnLSTM"里面有"双向"实现.所以唯一未知的是CUDNN可以与变量输入序列一起使用.
或许任何使用'CudnnLSTM'的工作示例都会有所帮助.
假设我有N个序列x [i],每个序列的长度为seqLength [i] 0 <= i <N.据我从cuDNN文档中了解,它们必须按序列长度排序,最长的是第一个,所以假设seqLength [i]> = seqLength [i + 1].假设它们具有特征尺寸D,因此x [i]是2D张量形状(seqLength [i],D).据我所知,我应该准备一个张量x,其中所有的x [i]都是相互连续的,即它的形状(sum(seqLength),D).
按照cuDNN文档,功能cudnnRNNForwardInference/ cudnnRNNForwardTraining获取参数int seqLength和cudnnTensorDescriptor_t* xDesc,其中:
seqLength:展开的迭代次数.
xDesc:张量描述符数组.每个必须具有相同的第二维度.第一维可以从元素n减少到元素n + 1但可以不增加.
我不确定我是否正确理解这一点.是seqLength我的最大值(seqLength)?
并且xDesc是一个数组.什么长度?MAX(seqLength)?如果是这样,我假设它描述了每个帧的一批特征,但是后面的一些帧将具有较少的序列.听起来像第一维中描述了每帧序列的数量.所以:
xDesc[t].shape[0] = len([i for i in range(N) if t < seqLength[i]])
Run Code Online (Sandbox Code Playgroud)
对于所有0 <= t <max(seqLength).即0 <= xDesc[t].shape[0]<= N.
每个xDesc [t]描述多少维度,即什么是len(xDesc [t] .shape)?我假设它是2,第二个维度是特征维度,即D,即:
xDesc[t].shape = (len(...), D)
Run Code Online (Sandbox Code Playgroud)
必须相应地设置步幅,尽管它也不完全清楚.如果x以行主顺序存储,那么
xDesc[0].strides[0] = D * xDesc[0].shape[0]
xDesc[0].strides[1] = 1
Run Code Online (Sandbox Code Playgroud)
但是cuDNN如何计算帧的偏移量 …