web-dev-qa-db-fra.com

Erreur de segmentation (core dumped) sur tf.Session ()

Je suis nouveau avec TensorFlow.

Je viens d'installer TensorFlow et pour tester l'installation, j'ai essayé le code suivant et dès que j'initie la session TF, j'obtiens le Erreur de segmentation (core dumped) erreur.

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)

Mon nvidia-smi est:

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

Et nvcc --version est:

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

Aussi gcc --version est:

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.

Voici mon [~ # ~] chemin [~ # ~] :

/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

et le LD_LIBRARY_PATH :

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


J'exécute ceci sur un serveur et je n'ai pas de privilèges root. J'ai quand même réussi à tout installer selon les instructions sur le site officiel.

Edit: Nouvelles observations:

Il semble que le GPU alloue de la mémoire au processus pendant une seconde, puis l'erreur de vidage de segmentation principale est lancée:

Terminal output

Edit2: Version tensorflow modifiée

J'ai rétrogradé ma version tensorflow de v1.8 à v1.5. Le problème persiste.


Existe-t-il un moyen de résoudre ou de déboguer ce problème?

10
Benison Sam

Si vous pouvez voir la sortie nvidia-smi, le deuxième GPU a un [~ # ~] ecc [~ # ~] code de 2. Cette erreur se manifeste indépendamment d'une erreur de version CUDA ou TF, et généralement en tant que défaut de segmentation, et parfois, avec le CUDA_ERROR_ECC_UNCORRECTABLE flag dans la trace de la pile.

Je suis arrivé à cette conclusion de this post:

"Erreur ECC non corrigible" fait généralement référence à une défaillance matérielle. ECC est le code de correction d'erreur, un moyen de détecter et de corriger les erreurs dans les bits stockés dans la RAM. Un rayon cosmique errant peut perturber un bit stocké dans RAM de temps en temps, mais une "erreur ECC non corrigeable" indique que plusieurs bits sortent de RAM = stockage "incorrect" - trop pour que l'ECC récupère les valeurs de bit d'origine.

Cela peut signifier que vous avez une cellule RAM RAM) mauvaise ou marginale dans la mémoire de votre périphérique GPU.

Les circuits marginaux de toute nature peuvent ne pas tomber en panne à 100%, mais sont plus susceptibles de tomber en panne sous la contrainte d'une utilisation intensive - et d'une élévation de température associée.

Un redémarrage est généralement censé supprimer l'erreur [~ # ~] ecc [~ # ~] . Sinon, il semble que la seule option soit de changer le matériel.


Alors qu'est-ce que j'ai fait et comment j'ai résolu le problème?

  1. J'ai testé mon code a sur une machine séparée avec la machine NVIDIA 1050 Ti et mon code s'est parfaitement exécuté.
  2. J'ai fait exécuter le code uniquement sur la première carte pour laquelle la valeur [~ # ~] ecc [~ # ~] était normale, juste pour affiner le problème. Je l'ai fait après, this post, en définissant le CUDA_VISIBLE_DEVICES variable d'environnement.
  3. J'ai ensuite demandé le redémarrage du serveur Tesla-K80 pour vérifier si un redémarrage peut résoudre ce problème, cela a pris du temps mais le serveur a ensuite été redémarré

    Maintenant, le problème n'est plus et je peux exécuter les deux cartes pour mes exécutions tensorflow.

1
Benison Sam

Cela peut éventuellement se produire car vous utilisez plusieurs GPU ici. Essayez de configurer les appareils visibles cuda sur l'un des GPU uniquement. Voir ce lien pour des instructions sur la façon de procéder. Dans mon cas, cela a résolu le problème.

2
optimist

Au cas où quelqu'un serait toujours intéressé, j'ai eu le même problème, avec la sortie "Volatile Uncorr. ECC". Mon problème était des versions incompatibles comme indiqué ci-dessous:

Bibliothèque CuDNN d'exécution chargée: 7.1.1 mais la source a été compilée avec: 7.2.1. La version majeure et mineure de la bibliothèque CuDNN doit correspondre ou avoir une version mineure supérieure dans le cas de CuDNN 7.0 ou version ultérieure. Si vous utilisez une installation binaire, mettez à niveau votre bibliothèque CuDNN. Si vous construisez à partir de sources, assurez-vous que la bibliothèque chargée lors de l'exécution est compatible avec la version spécifiée lors de la configuration de la compilation. Erreur de segmentation

Après avoir mis à niveau la bibliothèque CuDNN vers 7.3.1 (supérieur à 7.2.1), l'erreur de segmentation a disparu. Pour mettre à niveau, j'ai fait ce qui suit (comme également documenté dans ici ).

  1. Téléchargez la bibliothèque CuDNN depuis site Web 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 *
1
fatih

Vérifiez que vous utilisez la version exacte de CUDA et CuDNN requise par tensorflow, et que vous utilisez également la version du pilote de la carte graphique fournie avec cette version CUDA.

J'ai déjà eu un problème similaire avec un pilote trop récent. Le rétrograder vers la version fournie avec la version CUDA requise par tensorflow a résolu le problème pour moi.

1
P-Gn

Je rencontre ce problème récemment.

La raison en est plusieurs GPU dans le conteneur Docker. La solution est assez simple, vous:

définir CUDA_VISIBLE_DEVICES dans l'hôte fait référence à https://stackoverflow.com/a/50464695/2091555

ou

utilisez --ipc=Host pour lancer le docker si vous avez besoin de plusieurs GPU, par exemple.

docker run --runtime nvidia --ipc Host \
  --rm -it
  nvidia/cuda:10.0-cudnn7-runtime-ubuntu16.04:latest

Ce problème est en fait assez désagréable et une erreur de segmentation se produit pendant les appels de cuInit() dans le conteneur Docker et tout fonctionne correctement dans l'hôte. Je laisserai le journal ici pour permettre au moteur de recherche de trouver cette réponse plus facilement pour d'autres personnes.

(base) root@e121c445c1eb:~# conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
Collecting package metadata (current_repodata.json): / Segmentation fault (core dumped)

(base) root@e121c445c1eb:~# gdb python /data/corefiles/core.conda.572.1569384636
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos Word" to search for commands related to "Word"...
Reading symbols from python...done.

warning: core file may not match specified executable file.
[New LWP 572]
[New LWP 576]

warning: Unexpected size of section `.reg-xstate/572' in core file.
[Thread debugging using libthread_db enabled]
Using Host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/opt/conda/bin/python /opt/conda/bin/conda upgrade conda'.
Program terminated with signal SIGSEGV, Segmentation fault.

warning: Unexpected size of section `.reg-xstate/572' in core file.
#0  0x00007f829f0a55fb in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so
[Current thread is 1 (Thread 0x7f82bbfd7700 (LWP 572))]
(gdb) bt
#0  0x00007f829f0a55fb in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so
#1  0x00007f829f06e3a5 in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so
#2  0x00007f829f07002c in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so
#3  0x00007f829f0e04f7 in cuInit () from /usr/lib/x86_64-linux-gnu/libcuda.so
#4  0x00007f82b99a1ec0 in ffi_call_unix64 () from /opt/conda/lib/python3.7/lib-dynload/../../libffi.so.6
#5  0x00007f82b99a187d in ffi_call () from /opt/conda/lib/python3.7/lib-dynload/../../libffi.so.6
#6  0x00007f82b9bb7f7e in _call_function_pointer (argcount=1, resmem=0x7ffded858980, restype=<optimized out>, atypes=0x7ffded858940, avalues=0x7ffded858960, pProc=0x7f829f0e0380 <cuInit>, 
    flags=4353) at /usr/local/src/conda/python-3.7.3/Modules/_ctypes/callproc.c:827
#7  _ctypes_callproc () at /usr/local/src/conda/python-3.7.3/Modules/_ctypes/callproc.c:1184
#8  0x00007f82b9bb89b4 in PyCFuncPtr_call () at /usr/local/src/conda/python-3.7.3/Modules/_ctypes/_ctypes.c:3969
#9  0x000055c05db9bd2b in _PyObject_FastCallKeywords () at /tmp/build/80754af9/python_1553721932202/work/Objects/call.c:199
#10 0x000055c05dbf7026 in call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>) at /tmp/build/80754af9/python_1553721932202/work/Python/ceval.c:4619
#11 _PyEval_EvalFrameDefault () at /tmp/build/80754af9/python_1553721932202/work/Python/ceval.c:3124
#12 0x000055c05db9a79b in function_code_fastcall (globals=<optimized out>, nargs=0, args=<optimized out>, co=<optimized out>)
    at /tmp/build/80754af9/python_1553721932202/work/Objects/call.c:283
#13 _PyFunction_FastCallKeywords () at /tmp/build/80754af9/python_1553721932202/work/Objects/call.c:408
#14 0x000055c05dbf2846 in call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>) at /tmp/build/80754af9/python_1553721932202/work/Python/ceval.c:4616
#15 _PyEval_EvalFrameDefault () at /tmp/build/80754af9/python_1553721932202/work/Python/ceval.c:3124
... (stack omitted)
#46 0x000055c05db9aa27 in _PyFunction_FastCallKeywords () at /tmp/build/80754af9/python_1553721932202/work/Objects/call.c:433
---Type <return> to continue, or q <return> to quit---q
Quit

Un autre essai utilise pip pour installer

(base) root@e121c445c1eb:~# pip install torch torchvision
(base) root@e121c445c1eb:~# python
Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
Segmentation fault (core dumped)

(base) root@e121c445c1eb:~# gdb python /data/corefiles/core.python.28.1569385311 
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos Word" to search for commands related to "Word"...
Reading symbols from python...done.

warning: core file may not match specified executable file.
[New LWP 28]

warning: Unexpected size of section `.reg-xstate/28' in core file.
[Thread debugging using libthread_db enabled]
Using Host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
bt
Core was generated by `python'.
Program terminated with signal SIGSEGV, Segmentation fault.

warning: Unexpected size of section `.reg-xstate/28' in core file.
#0  0x00007ffaa1d995fb in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1
(gdb) bt
#0  0x00007ffaa1d995fb in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1
#1  0x00007ffaa1d623a5 in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1
#2  0x00007ffaa1d6402c in ?? () from /usr/lib/x86_64-linux-gnu/libcuda.so.1
#3  0x00007ffaa1dd44f7 in cuInit () from /usr/lib/x86_64-linux-gnu/libcuda.so.1
#4  0x00007ffaee75f724 in cudart::globalState::loadDriverInternal() () from /opt/conda/lib/python3.7/site-packages/torch/lib/libtorch_python.so
#5  0x00007ffaee760643 in cudart::__loadDriverInternalUtil() () from /opt/conda/lib/python3.7/site-packages/torch/lib/libtorch_python.so
#6  0x00007ffafe2cda99 in __pthread_once_slow (once_control=0x7ffaeebe2cb0 <cudart::globalState::loadDriver()::loadDriverControl>, 
... (stack omitted)
0
Cloud

J'étais également confronté au même problème. J'ai une solution de contournement pour le même que vous pouvez essayer cela.

J'ai suivi les étapes suivantes: 1. Réinstallez le python 3.5 ou supérieur 2. Réinstallez le Cuda et ajoutez-y les bibliothèques Cudnn. 3. Réinstallez la version du GPU Tensorflow 1.8.0.

0
vineagle