Модель быстрого обучения с использованием CudnnLSTM приводит к CUDNN_STATUS_EXECUTION_FAILED - PullRequest
0 голосов
/ 01 февраля 2019
System setup:
Ubuntu 16.04, Tesla V100 on AWS p3-2xlarge, Nvidia driver 396.54, Cuda 9.0.176_384.81, CuDNN 9.0
Tensorflow GPU 1.9.0, Python 3.6 using pyenv

Мне было любопытно узнать, как игра Google Quickdraw и проводил некоторые исследования о том, как они обучали модель.

Я проследил за файлом в

https://github.com/tensorflow/models/blob/master/tutorials/rnn/quickdraw/train_model.py

для запуска следующей команды

python train_model.py \
--training_data train_data \
--eval_data eval_data \
--model_dir /tmp/quickdraw_model/ \
--cell_type cudnn_lstm

Данные обучения и оценки были получены с использованием

https://github.com/tensorflow/models/blob/master/tutorials/rnn/quickdraw/create_dataset.py

и использованием файлов здесь: https://console.cloud.google.com/storage/browser/quickdraw_dataset/full/simplified

Затем программа останавливается после выдачи следующих ошибок:

2019-02-01 06:41:15.770071: E tensorflow/stream_executor/cuda/cuda_dnn.cc:943] CUDNN_STATUS_EXECUTION_FAILED Failed to set dropout descriptor with state memory size: 3932160 bytes.
2019-02-01 06:41:15.770123: W tensorflow/core/framework/op_kernel.cc:1318] OP_REQUIRES failed at cudnn_rnn_ops.cc:1214 : Unknown: CUDNN_STATUS_EXECUTION_FAILED Failed to set dropout descriptor with state memory size: 3932160 bytes.
Traceback (most recent call last):
File "/home/ubuntu/.pyenv/versions/abc/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1322, in _do_call
return fn(*args)
File "/home/ubuntu/.pyenv/versions/abc/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1307, in _run_fn
options, feed_dict, fetch_list, target_list, run_metadata)
File "/home/ubuntu/.pyenv/versions/abc/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1409, in _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.UnknownError: CUDNN_STATUS_EXECUTION_FAILED Failed to set dropout descriptor with state memory size: 3932160 bytes.
[[Node: cudnn_lstm/CudnnRNN = CudnnRNN[T=DT_FLOAT, direction="bidirectional", dropout=0.3, input_mode="linear_input", is_training=true, rnn_mode="lstm", seed=0, seed2=0, _device="/job:localhost/replica:0/task:0/device:GPU:0"](transpose, cudnn_lstm/zeros, cudnn_lstm/zeros, cudnn_lstm/opaque_kernel/read)]]
[[Node: OptimizeLoss/clip_by_global_norm/mul_1/_239 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_354_OptimizeLoss/clip_by_global_norm/mul_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

После некоторого исследования кажется, что ошибка была вызвана вызовом функции cudnnSetDropoutDescriptor.

https://github.com/tensorflow/tensorflow/blob/r1.9/tensorflow/stream_executor/cuda/cuda_dnn.cc#L932

После проверки документации по API кажется, что CUDNN_STATUS_EXECUTION_FAILED, вероятно, вызван ошибками библиотеки или неправильной установкой.

Я проверил установку, запустив тест mnist, и он прошел.

КстатиЯ также попытался выполнить указанную выше команду без параметра cell_type, что означает, что она будет работать на процессоре.Он мог работать без проблем.Кроме того, я попытался запустить то же самое, используя следующую настройку, и он выдал те же ошибки.

Ubuntu 18.04, Tesla V100 on AWS p3.2xlarge, NVidia Driver 410.79, Cuda 10.0.130_410.48, CuDNN 10.0,
Tensorflow GPU 12.0/10.0, Python 3.6 using pyenv

Кто-нибудь когда-либо пытался сделать это и сталкивался с подобными проблемами?

...