Ошибка сегментации (ядро сброшено) в tf.Session () - PullRequest
0 голосов
/ 15 мая 2018

Я новичок в TensorFlow.

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

bafhf@remote-server:~$ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
/home/bafhf/anaconda3/envs/ismll/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
>>> tf.Session()
2018-05-15 12:04:15.461361: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1349] Found device 0 with properties: 
name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235
pciBusID: 0000:04:00.0
totalMemory: 11.17GiB freeMemory: 11.10GiB
Segmentation fault (core dumped)

My nvidia-smi равно:

Tue May 15 12:12:26 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.30                 Driver Version: 390.30                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           On   | 00000000:04:00.0 Off |                    0 |
| N/A   38C    P8    26W / 149W |      0MiB / 11441MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla K80           On   | 00000000:05:00.0 Off |                    2 |
| N/A   31C    P8    29W / 149W |      0MiB / 11441MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

И nvcc --version is:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

Также gcc --version is:

gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Ниже приведены мои PATH :

/home/bafhf/bin:/home/bafhf/.local/bin:/usr/local/cuda/bin:/usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib:/home/bafhf/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

и LD_LIBRARY_PATH :

/usr/local/cuda/bin:/usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib


Я запускаю это на сервере, и у меня нет привилегий root.Тем не менее мне удалось установить все в соответствии с инструкциями на официальном сайте.

Редактировать: Новые наблюдения:

Похоже, что GPU выделяет память дляпроцесс в течение секунды, а затем выдается ошибка сброса сегментации ядра:

Terminal output

Edit2: измененная версия тензорного потока

Я понизил версию tenorflow с версии 1.8 до версии 1.5.Проблема все еще остается.


Есть ли способ устранить или устранить эту проблему?

Ответы [ 5 ]

0 голосов
/ 25 декабря 2018

Я использую тензорный поток в облачной среде из бумажного пространства.

Обновление cuDNN 7.3.1 у меня не сработало.

Одним из способов является создание Tensorflow с надлежащей поддержкой графического процессора и процессора.

Это не правильное решение, но это временно решило мою проблему (понизьте tenoflow до 1.5.0):

pip uninstall tensorflow-gpu
pip install tensorflow==1.5.0
pip install numpy==1.14.0
pip install six==1.10.0
pip install joblib==0.12

Надеюсь, это поможет!

0 голосов
/ 11 октября 2018

В случае, если кто-то все еще заинтересовался, у меня случилась та же проблема с выходом «Volatile Uncorr. ECC». Моя проблема была в несовместимых версиях, как показано ниже:

Загруженная библиотека времени выполнения CuDNN: 7.1.1, но источник был скомпилирован с: 7.2.1. Основная и дополнительная версия библиотеки CuDNN должны совпадать или иметь более высокую младшую версию в случае CuDNN 7.0 или более поздней версии. При использовании двоичная установка, обновите библиотеку CuDNN. Если строить из источников, убедитесь, что библиотека, загруженная во время выполнения, совместима с версией указывается при настройке компиляции. Ошибка сегментации

После того, как я обновил библиотеку CuDNN до 7.3.1 (которая больше, чем 7.2.1), ошибка ошибки сегментации исчезла. Для обновления я сделал следующее (что также задокументировано в здесь ).

  1. Загрузить библиотеку CuDNN с веб-сайт NVIDIA
  2. sudo tar -xzvf [TAR_FILE]
  3. sudo cp cuda / include / cudnn.h / usr / local / cuda / include
  4. sudo cp cuda / lib64 / libcudnn * / usr / local / cuda / lib64
  5. sudo chmod a + r /usr/local/cuda/include/cudnn.h / usr / local / cuda / lib64 / libcudnn *
0 голосов
/ 23 мая 2018

Убедитесь, что вы используете точную версию CUDA и CuDNN, необходимую для tenorflow, а также используете версию драйвера видеокарты, поставляемую с этой версией CUDA .

Однажды у меня была похожая проблема с драйвером, который был слишком свежим.Снижение его до версии, поставляемой с версией CUDA, требуемой tenorflow, решило проблему для меня.

0 голосов
/ 22 июня 2018

Если вы видите вывод nvidia-smi , второй графический процессор имеет код ECC , равный 2. Эта ошибка проявляется независимо от версии CUDAили ошибка версии TF, и, как правило, как segfault, а иногда и с флагом <strong>CUDA_ERROR_ECC_UNCORRECTABLE</strong> в трассировке стека.

Я пришел к такому выводу из этой записи:

«Неисправимая ошибка ECC» обычно относится к аппаратному сбою.ECC - это код, исправляющий ошибки, средство для обнаружения и исправления ошибок в битах, хранящихся в оперативной памяти.Рассеянный космический луч может прерывать один бит, хранящийся в ОЗУ, один раз в течение долгого времени, но «неисправимая ошибка ECC» указывает, что несколько битов выходят из памяти RAM «неправильно» - слишком много для ECC, чтобы восстановить исходные значения битов.

Это может означать, что у вас в памяти устройства GPU плохая или предельная ячейка ОЗУ.

Маргинальные цепи любого типа не могут выйти из строя на 100%, но с большей вероятностью выйдут из строя под нагрузкойинтенсивного использования - и связанного с этим повышения температуры.

Обычно предполагается, что перезагрузка устраняет ошибку ECC .Если нет, похоже, что единственный вариант - это сменить аппаратное обеспечение.


Так что же я все сделал и, наконец, как я решил проблему?

  1. Я проверил свой код aна отдельной машине с машиной NVIDIA 1050 Ti, и мой код выполнялся отлично.
  2. Я сделал код запуска только на первой карте, для которой значение ECC было нормальным, просто чтобы сузитьпроблема.Это я сделал следующим образом, этот пост, установив переменную окружения <strong>CUDA_VISIBLE_DEVICES</strong>.
  3. Затем я запросил перезапустить сервера Tesla-K80, чтобы проверитьесли перезапуск может решить эту проблему, они заняли некоторое время, но затем сервер был перезапущен

    Теперь проблема больше не существует, и я могу запустить обе карты для моих реализаций тензорного потока.

0 голосов
/ 22 мая 2018

Это может произойти, так как вы используете несколько графических процессоров здесь. Попробуйте установить устройства cuda visible только на один из графических процессоров. См. эту ссылку для получения инструкций о том, как это сделать. В моем случае это решило проблему.

...