web-dev-qa-db-ja.com

tf.Session()でのセグメンテーションエラー(コアダンプ)

TensorFlowは初めてです。

TensorFlowをインストールし、インストールをテストするために、次のコードを試しました。TFセッションを開始するとすぐに、Segmentation fault(core dumped )エラー。

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)

私の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は:

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は次のとおりです。

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権限がありません。それでも、公式Webサイトの指示に従ってすべてをインストールできました。

編集:新しい観測:

GPUが1秒間プロセスにメモリを割り当てており、コアセグメンテーションダンプエラーがスローされているようです:

Terminal output

Edit2:変更されたtensorflowバージョン

Tensorflowのバージョンをv1.8からv1.5にダウングレードしました。問題はまだ残っています。


この問題に対処またはデバッグする方法はありますか?

10
Benison Sam

nvidia-smiの出力が表示される場合、2番目のGPUには [〜#〜] eccがあります[〜#〜] コード2。このエラーは、CUDAバージョンまたはTFバージョンのエラーに関係なく、通常はsegfaultとして、また場合によってはスタックトレースのCUDA_ERROR_ECC_UNCORRECTABLEフラグを使用して発生します。

私は this の投稿からこの結論に達しました:

「訂正不可能なECCエラー」は通常、ハードウェア障害を指します。 ECCは、RAMに格納されたビットのエラーを検出して修正する手段であるエラー修正コードです。浮遊宇宙線は、RAMに格納されている1ビットを一時的に中断する可能性がありますが、「訂正不可能なECCエラー」は、いくつかのビットがRAM =ストレージが "間違っています"-ECCが元のビット値を復元するには多すぎます。

これは、GPUデバイスメモリに不良または限界のRAM=セルがあることを意味している可能性があります。

あらゆる種類の限界回路は100%故障することはありませんが、使用頻度の高いストレスとそれに伴う温度上昇により故障する可能性が高くなります。

通常、再起動すると [〜#〜] ecc [〜#〜] エラーが取り除かれます。そうでない場合、唯一のオプションはハードウェアを変更することのようです。


それで、私がしたことすべて、そして最後に私はどのように問題を修正しましたか?

  1. NVIDIA 1050 Tiマシンを搭載した別のマシンでコードをテストしたところ、コードは完全に正常に実行されました。
  2. 問題を絞り込むために、 [〜#〜] ecc [〜#〜] の値が正常だった最初のカードでのみコードを実行しました。これは私が行った this 投稿、CUDA_VISIBLE_DEVICES環境変数の設定。
  3. 次に、Tesla-K80サーバーの restart に再起動でこの問題を解決できるかどうかを確認するように要求しました。しばらくするとかかりましたが、サーバーは再起動されました

    これで問題はなくなり、テンソルフロー実装のために両方のカードを実行できます。

1
Benison Sam

ここで複数のGPUを使用しているため、これが発生する可能性があります。 cuda visibleデバイスをGPUの1つだけに設定してみてください。その方法の説明については このリンク を参照してください。私の場合、これで問題は解決しました。

2
optimist

まだ興味がある方のために、「Volatile Uncorr。ECC」出力という同じ問題が偶然発生しました。以下に示すように、私の問題は互換性のないバージョンでした:

ロードされたランタイムCuDNNライブラリ:7.1.1ですが、ソースは7.2.1でコンパイルされています。 CuDNNライブラリのメジャーバージョンとマイナーバージョンは、CuDNN 7.0以降のバージョンの場合、一致するか、より高いマイナーバージョンである必要があります。バイナリインストールを使用している場合は、CuDNNライブラリをアップグレードします。ソースからビルドする場合は、実行時にロードされるライブラリが、コンパイル構成時に指定されたバージョンと互換性があることを確認してください。セグメンテーション違反

CuDNNライブラリを7.3.1(7.2.1より大きい)にアップグレードすると、セグメンテーションエラーが表示されなくなりました。アップグレードするために私は次のことを行いました( here にも記載されています)。

  1. CuDNNライブラリを NVIDIA Webサイト からダウンロードします
  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

Tensorflowに必要な正確なバージョンのCUDAおよびCuDNNを使用していること、およびこのCUDAバージョンに付属しているグラフィックスカードのドライバーのバージョンを使用していることを確認してください。

私はかつて、あまりにも最近のドライバーを持っている同様の問題を抱えていました。 tensorflowで必要なCUDAバージョンが付属するバージョンにダウングレードすると、問題が解決しました。

1
P-Gn

最近この問題に遭遇しました。

その理由は、Dockerコンテナーに複数のGPUがあるためです。解決策は非常に簡単です。次のいずれかです。

set _CUDA_VISIBLE_DEVICES_ inHosthttps://stackoverflow.com/a/50464695/2091555 を参照します

または

複数のGPUが必要な場合は、_--ipc=Host_を使用してdockerを起動します。

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

この問題は実際にはかなり厄介であり、segfaultはDockerコンテナーのcuInit()呼び出し中に発生し、すべてがホストで正常に動作します。ここにログを残して、検索エンジンが他の人が簡単にこの答えを見つけられるようにします。

_(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
_

別の試みは、pipを使用してインストールすることです

_(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

私も同じ問題に直面していました。私はあなたがそれを試すことができる同じための回避策を持っています。

1. python 3.5以上を再インストールします。2。Cudaを再インストールし、Cudnnライブラリを追加します。3。Tensorflow 1.8.0 GPUバージョンを再インストールします。

0
vineagle