fangwei123456 / spikingjelly

SpikingJelly is an open-source deep learning framework for Spiking Neural Network (SNN) based on PyTorch.
https://spikingjelly.readthedocs.io
Other
1.35k stars 239 forks source link

AssertionError: CuPy is not installed!问题 #408

Closed Chrazqee closed 1 year ago

Chrazqee commented 1 year ago

Issue type

SpikingJelly version

0.0.0.0.14

Description

@fangwei123456 作者你好,我在使用 spikingjelly 的过程中遇到了 CuPy is not installed 问题,可能是我重新创建conda虚拟环境的问题,因为我之前使用的时候 backend="cupy"没有报错;因此我做了一下测试,测试代码如下:

import torch

try:
    import cupy
except BaseException as e:
    cupy = None

assert cupy is not None

from spikingjelly.clock_driven.neuron import MultiStepLIFNode

lif = MultiStepLIFNode(backend='cupy').to('cuda:0')
x = torch.randn(10, 3, 224, 224).to('cuda:0')
out = lif(x)
print(out.shape)

报错如下:

Traceback (most recent call last):
  File "/home/chrazqee/science_research/PycharmProjects/pyCharmLeetCodeWorkspace/validation/cupy_import_error.py", line 13, in <module>
    lif = MultiStepLIFNode(backend='cupy').to('cuda:0')
  File "/home/chrazqee/anaconda3/envs/Snn/lib/python3.10/site-packages/spikingjelly/clock_driven/neuron.py", line 823, in __init__
    check_backend(backend)
  File "/home/chrazqee/anaconda3/envs/Snn/lib/python3.10/site-packages/spikingjelly/clock_driven/neuron.py", line 30, in check_backend
    assert cupy is not None, 'CuPy is not installed! You can install it from "https://github.com/cupy/cupy".'
AssertionError: CuPy is not installed! You can install it from "https://github.com/cupy/cupy".

可以看到,直接导入 cupy 并未触发断言错误,在使用 spikingjelly的时候报错了; 请问这是否是 spikingjelly的bug呢?

下面是我的conda list

# packages in environment at /home/chrazqee/anaconda3/envs/Snn:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             5.1                       1_gnu  
absl-py                   1.4.0                    pypi_0    pypi
aiohttp                   3.8.4                    pypi_0    pypi
aiosignal                 1.3.1                    pypi_0    pypi
antlr4-python3-runtime    4.9.3                    pypi_0    pypi
astunparse                1.6.3                    pypi_0    pypi
async-timeout             4.0.2                    pypi_0    pypi
attrs                     23.1.0                   pypi_0    pypi
blas                      1.0                         mkl  
brotlipy                  0.7.0                    pypi_0    pypi
bzip2                     1.0.8                h7b6447c_0  
ca-certificates           2023.05.30           h06a4308_0  
cachetools                5.3.1                    pypi_0    pypi
certifi                   2023.5.7                 pypi_0    pypi
cffi                      1.15.1                   pypi_0    pypi
charset-normalizer        2.0.4              pyhd3eb1b0_0  
contourpy                 1.1.0                    pypi_0    pypi
cryptography              39.0.1                   pypi_0    pypi
cuda-cudart               11.8.89                       0    nvidia
cuda-cupti                11.8.87                       0    nvidia
cuda-libraries            11.8.0                        0    nvidia
cuda-nvrtc                11.8.89                       0    nvidia
cuda-nvtx                 11.8.86                       0    nvidia
cuda-runtime              11.8.0                        0    nvidia
cudatoolkit               11.8.0               h6a678d5_0  
cupy-cuda11x              12.1.0                   pypi_0    pypi
cycler                    0.11.0                   pypi_0    pypi
einops                    0.6.1                    pypi_0    pypi
fastrlock                 0.8.1                    pypi_0    pypi
ffmpeg                    4.2.2                h20bf706_0  
filelock                  3.9.0                    pypi_0    pypi
flatbuffers               23.5.26                  pypi_0    pypi
fonttools                 4.40.0                   pypi_0    pypi
freetype                  2.12.1               h4a9f257_0  
frozenlist                1.4.0                    pypi_0    pypi
fsspec                    2023.6.0                 pypi_0    pypi
gast                      0.4.0                    pypi_0    pypi
giflib                    5.2.1                h5eee18b_3  
gmp                       6.2.1                h295c915_3  
gmpy2                     2.1.2                    pypi_0    pypi
gnutls                    3.6.15               he1e5248_0  
google-auth               2.22.0                   pypi_0    pypi
google-auth-oauthlib      0.4.6                    pypi_0    pypi
google-pasta              0.2.0                    pypi_0    pypi
grpcio                    1.56.0                   pypi_0    pypi
h5py                      3.9.0                    pypi_0    pypi
hdf5plugin                4.1.3                    pypi_0    pypi
huggingface-hub           0.16.4                   pypi_0    pypi
hydra-core                1.3.2                    pypi_0    pypi
idna                      3.4                      pypi_0    pypi
intel-openmp              2023.1.0         hdb19cb5_46305  
jinja2                    3.1.2                    pypi_0    pypi
jpeg                      9e                   h5eee18b_1  
keras                     2.8.0                    pypi_0    pypi
keras-preprocessing       1.1.2                    pypi_0    pypi
kiwisolver                1.4.4                    pypi_0    pypi
lame                      3.100                h7b6447c_0  
lcms2                     2.12                 h3be6417_0  
ld_impl_linux-64          2.38                 h1181459_1  
lerc                      3.0                  h295c915_0  
libclang                  16.0.6                   pypi_0    pypi
libcublas                 11.11.3.6                     0    nvidia
libcufft                  10.9.0.58                     0    nvidia
libcufile                 1.7.0.149                     0    nvidia
libcurand                 10.3.3.53                     0    nvidia
libcusolver               11.4.1.48                     0    nvidia
libcusparse               11.7.5.86                     0    nvidia
libdeflate                1.17                 h5eee18b_0  
libffi                    3.4.4                h6a678d5_0  
libgcc-ng                 11.2.0               h1234567_1  
libgomp                   11.2.0               h1234567_1  
libidn2                   2.3.4                h5eee18b_0  
libnpp                    11.8.0.86                     0    nvidia
libnvjpeg                 11.9.0.86                     0    nvidia
libopus                   1.3.1                h7b6447c_0  
libpng                    1.6.39               h5eee18b_0  
libstdcxx-ng              11.2.0               h1234567_1  
libtasn1                  4.19.0               h5eee18b_0  
libtiff                   4.5.0                h6a678d5_2  
libunistring              0.9.10               h27cfd23_0  
libuuid                   1.41.5               h5eee18b_0  
libvpx                    1.7.0                h439df22_0  
libwebp                   1.2.4                h11a3e52_1  
libwebp-base              1.2.4                h5eee18b_1  
lightning-utilities       0.9.0                    pypi_0    pypi
loguru                    0.7.0                    pypi_0    pypi
lz4-c                     1.9.4                h6a678d5_0  
markdown                  3.4.3                    pypi_0    pypi
markupsafe                2.1.1                    pypi_0    pypi
matplotlib                3.7.1                    pypi_0    pypi
mkl                       2023.1.0         h6d00ec8_46342  
mkl-fft                   1.3.6                    pypi_0    pypi
mkl-random                1.2.2                    pypi_0    pypi
mkl-service               2.4.0                    pypi_0    pypi
mkl_fft                   1.3.6           py310h1128e8f_1  
mkl_random                1.2.2           py310h1128e8f_1  
mpc                       1.1.0                h10f8cd9_1  
mpfr                      4.0.2                hb69a4c5_1  
mpmath                    1.2.1                    pypi_0    pypi
multidict                 6.0.4                    pypi_0    pypi
ncurses                   6.4                  h6a678d5_0  
nettle                    3.7.3                hbbd107a_1  
networkx                  2.8.4                    pypi_0    pypi
numpy                     1.24.3                   pypi_0    pypi
numpy-base                1.25.0          py310hb5e798b_0  
oauthlib                  3.2.2                    pypi_0    pypi
omegaconf                 2.3.0                    pypi_0    pypi
opencv-python             4.8.0.74                 pypi_0    pypi
openh264                  2.1.1                h4ff587b_0  
openssl                   3.0.9                h7f8727e_0  
opt-einsum                3.3.0                    pypi_0    pypi
packaging                 23.1                     pypi_0    pypi
pillow                    9.4.0                    pypi_0    pypi
pip                       23.1.2                   pypi_0    pypi
protobuf                  4.23.4                   pypi_0    pypi
pyasn1                    0.5.0                    pypi_0    pypi
pyasn1-modules            0.3.0                    pypi_0    pypi
pycparser                 2.21               pyhd3eb1b0_0  
pyopenssl                 23.0.0                   pypi_0    pypi
pyparsing                 3.1.0                    pypi_0    pypi
pysocks                   1.7.1                    pypi_0    pypi
python                    3.10.11              h955ad1f_3  
python-dateutil           2.8.2                    pypi_0    pypi
pytorch                   2.0.1           py3.10_cuda11.8_cudnn8.7.0_0    pytorch
pytorch-cuda              11.8                 h7e8668a_5    pytorch
pytorch-lightning         2.0.5                    pypi_0    pypi
pytorch-mutex             1.0                        cuda    pytorch
pyyaml                    6.0                      pypi_0    pypi
readline                  8.2                  h5eee18b_0  
requests                  2.29.0                   pypi_0    pypi
requests-oauthlib         1.3.1                    pypi_0    pypi
rsa                       4.9                      pypi_0    pypi
safetensors               0.3.1                    pypi_0    pypi
scipy                     1.10.0                   pypi_0    pypi
setuptools                67.8.0                   pypi_0    pypi
six                       1.16.0                   pypi_0    pypi
spikingjelly              0.0.0.0.14               pypi_0    pypi
sqlite                    3.41.2               h5eee18b_0  
strenum                   0.4.15                   pypi_0    pypi
sympy                     1.11.1                   pypi_0    pypi
tbb                       2021.8.0             hdb19cb5_0  
tensorboard               2.8.0                    pypi_0    pypi
tensorboard-data-server   0.6.1                    pypi_0    pypi
tensorboard-plugin-wit    1.8.1                    pypi_0    pypi
tensorflow-estimator      2.13.0                   pypi_0    pypi
tensorflow-io-gcs-filesystem 0.32.0                   pypi_0    pypi
termcolor                 2.3.0                    pypi_0    pypi
tf-estimator-nightly      2.8.0.dev2021122109          pypi_0    pypi
timm                      0.9.2                    pypi_0    pypi
tk                        8.6.12               h1ccaba5_0  
torch                     2.0.1                    pypi_0    pypi
torchaudio                2.0.2                    pypi_0    pypi
torchdata                 0.6.1                    pypi_0    pypi
torchmetrics              1.0.1                    pypi_0    pypi
torchtriton               2.0.0                     py310    pytorch
torchvision               0.15.2                   pypi_0    pypi
tqdm                      4.65.0                   pypi_0    pypi
triton                    2.0.0                    pypi_0    pypi
typing-extensions         4.5.0                    pypi_0    pypi
typing_extensions         4.6.3           py310h06a4308_0  
tzdata                    2023c                h04d1e81_0  
urllib3                   1.26.16                  pypi_0    pypi
werkzeug                  2.3.6                    pypi_0    pypi
wheel                     0.38.4                   pypi_0    pypi
wrapt                     1.15.0                   pypi_0    pypi
x264                      1!157.20191217       h7b6447c_0  
xz                        5.4.2                h5eee18b_0  
yarl                      1.9.2                    pypi_0    pypi
zlib                      1.2.13               h5eee18b_0  
zstd                      1.5.5                hc292b87_0  

希望能得到回复!谢谢!

fangwei123456 commented 1 year ago

试一下在这个环境中输入

python
import cupy

看是否报错

Chrazqee commented 1 year ago

作者你好,我试了一下,依然会报错,我使用的是 ubuntu 系统;然而,我在我的 Windows 系统的机器上安装了 spikingjelly 和 cupy 发现可以运行了,我很困惑为什么会这样,因为我安装的方式都是一样的。

可能与我的 ubuntu 系统上 cuda 非全局安装有关。感谢回复,我再找找原因!!!

fangwei123456 commented 1 year ago

试一下

python
import logging
# 设置日志级别为DEBUG
logging.basicConfig(level=logging.DEBUG)
import cupy

看看输出的报错信息

Chrazqee commented 1 year ago

作者你好,我不知道导入时的输出是否和cupy有关,实例化MultiStepLIFNode的时候依然报错,但是仅仅只 import cupy 的时候不会出错,我找不到问题所在。

以下是输出结果: image

fangwei123456 commented 1 year ago

可能是lava未安装引起的,老版本的这一部分有点问题。安装最新版SJ框架试试

Chrazqee commented 1 year ago

作者你好,我将 版本从 0.0.0.0.14 退到 x.12还是报错,感谢回复,我再找找原因!

fangwei123456 commented 1 year ago

用之前的方法看看14版本的报错信息 上图里面是12版本的

Chrazqee commented 1 year ago

作者你好,报错信息就是 14 版本的报错信息;

fangwei123456 commented 1 year ago

14版本没有"clock_driven",更名了

Chrazqee commented 1 year ago

好的,我来试试,感谢解答!

Chrazqee commented 1 year ago

作者你好,首先表示歉意,是我的conda环境问题导致的报错,import cupy 导入的不是虚拟环境里的 cupy, 很抱歉耽误了你的时间,我重新建了一个虚拟环境,使用了 activation_based 包,导入了正确的 cupy 包,最终问题解决,感谢解答。 以下是验证代码:

import torch

try:
    import cupy
except BaseException as e:
    cupy = None

assert cupy is not None

# from spikingjelly.clock_driven.neuron import MultiStepLIFNode
#
#
# lif = MultiStepLIFNode(backend='cupy').to('cuda:0')
# x = torch.randn(10, 3, 224, 224).to('cuda:0')
# out = lif(x)
# print(out.shape)

from spikingjelly.activation_based import neuron

print(cupy)

lif = neuron.LIFNode(step_mode='m')
print(lif.supported_backends)
lif.backend = 'cupy'
lif.to('cuda:0')
x = torch.randn(3, 224, 224).to('cuda:0')
out = lif(x)
print(out.shape)

输出结果:

<module 'cupy' from '/home/chrazqee/anaconda3/envs/temp/lib/python3.10/site-packages/cupy/__init__.py'>
('torch', 'cupy')
torch.Size([3, 224, 224])

希望我的经历对后续同样问题的人有帮助!

ShaopengLu commented 11 months ago

作者你好,首先表示歉意,是我的conda环境问题导致的报错,import cupy 导入的不是虚拟环境里的 cupy, 很抱歉耽误了你的时间,我重新建了一个虚拟环境,使用了 activation_based 包,导入了正确的 cupy 包,最终问题解决,感谢解答。 以下是验证代码:

import torch

try:
    import cupy
except BaseException as e:
    cupy = None

assert cupy is not None

# from spikingjelly.clock_driven.neuron import MultiStepLIFNode
#
#
# lif = MultiStepLIFNode(backend='cupy').to('cuda:0')
# x = torch.randn(10, 3, 224, 224).to('cuda:0')
# out = lif(x)
# print(out.shape)

from spikingjelly.activation_based import neuron

print(cupy)

lif = neuron.LIFNode(step_mode='m')
print(lif.supported_backends)
lif.backend = 'cupy'
lif.to('cuda:0')
x = torch.randn(3, 224, 224).to('cuda:0')
out = lif(x)
print(out.shape)

输出结果:

<module 'cupy' from '/home/chrazqee/anaconda3/envs/temp/lib/python3.10/site-packages/cupy/__init__.py'>
('torch', 'cupy')
torch.Size([3, 224, 224])

希望我的经历对后续同样问题的人有帮助! 请问这个具体是怎么解决啊,我还是不太明白

fangwei123456 commented 11 months ago

猜测是版本问题,老版本框架代码的一个try语句,除了cupy还有其他包,没安装会报cupy的错误

aielabwangzhen commented 11 months ago

作者 你好 其他包是什么?

fangwei123456 commented 11 months ago

把logging模块的日志级别设置成debug,能看到错误信息(缺哪个包)的输出

Chrazqee commented 11 months ago

作者你好,首先表示歉意,是我的conda环境问题导致的报错,import cupy 导入的不是虚拟环境里的 cupy, 很抱歉耽误了你的时间,我重新建了一个虚拟环境,使用了 activation_based 包,导入了正确的 cupy 包,最终问题解决,感谢解答。 以下是验证代码:

import torch

try:
    import cupy
except BaseException as e:
    cupy = None

assert cupy is not None

# from spikingjelly.clock_driven.neuron import MultiStepLIFNode
#
#
# lif = MultiStepLIFNode(backend='cupy').to('cuda:0')
# x = torch.randn(10, 3, 224, 224).to('cuda:0')
# out = lif(x)
# print(out.shape)

from spikingjelly.activation_based import neuron

print(cupy)

lif = neuron.LIFNode(step_mode='m')
print(lif.supported_backends)
lif.backend = 'cupy'
lif.to('cuda:0')
x = torch.randn(3, 224, 224).to('cuda:0')
out = lif(x)
print(out.shape)

输出结果:

<module 'cupy' from '/home/chrazqee/anaconda3/envs/temp/lib/python3.10/site-packages/cupy/__init__.py'>
('torch', 'cupy')
torch.Size([3, 224, 224])

希望我的经历对后续同样问题的人有帮助! 请问这个具体是怎么解决啊,我还是不太明白

你好,请问解决了吗,如果没有解决的话建议重新创建一个conda环境,只安装最新的spikingjelly和cupy试试。我那会儿就是这么解决的!!! 祝好!

fuxuelinwudi commented 9 months ago

问题已解决: 源码内, cupy 和 另外两个文件是一同import的,另外两个文件出错会导致cupy not install 的 value error, 所以分开import, image

查看问题,发现在 cu_kernel_opt.py 里出错, image

安装好 tensorboardX, 即可。