alievk / avatarify-python

Avatars for Zoom, Skype and other video-conferencing apps.
Other
16.25k stars 4.01k forks source link

Run fails (CUDA error) - Linux/RTX3070 #411

Open darrellenns opened 3 years ago

darrellenns commented 3 years ago

Describe the bug Running via run.sh fails with the following CUDA error:

RuntimeError: CUDA error: no kernel image is available for execution on the device

This is on up to date Arch Linux with an RTX 3070. The system has CUDA 11.3.0 installed, which works fine for other applications.

To Reproduce

Info (please complete the following information):

$conda info
     active environment : base
    active env location : /home/user/miniconda3
            shell level : 1
       user config file : /home/user/.condarc
 populated config files : 
          conda version : 4.10.1
    conda-build version : not installed
         python version : 3.9.1.final.0
       virtual packages : __cuda=11.3=0
                          __linux=5.12.9=0
                          __glibc=2.33=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /home/user/miniconda3  (writable)
      conda av data dir : /home/user/miniconda3/etc/conda
  conda av metadata url : https://repo.anaconda.com/pkgs/main
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/user/miniconda3/pkgs
                          /home/user/.conda/pkgs
       envs directories : /home/user/miniconda3/envs
                          /home/user/.conda/envs
               platform : linux-64
             user-agent : conda/4.10.1 requests/2.25.1 CPython/3.9.1 Linux/5.12.9-arch1-1 arch/rolling glibc/2.33
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False
$conda list
# packages in environment at /home/user/miniconda3:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
brotlipy                  0.7.0           py39h27cfd23_1003  
ca-certificates           2021.5.25            h06a4308_1  
certifi                   2021.5.30        py39h06a4308_0  
cffi                      1.14.5           py39h261ae71_0  
chardet                   4.0.0           py39h06a4308_1003  
conda                     4.10.1           py39h06a4308_1  
conda-package-handling    1.7.3            py39h27cfd23_1  
cryptography              3.4.7            py39hd23ed53_0  
idna                      2.10               pyhd3eb1b0_0  
ld_impl_linux-64          2.33.1               h53a641e_7  
libffi                    3.3                  he6710b0_2  
libgcc-ng                 9.1.0                hdf63c60_0  
libstdcxx-ng              9.1.0                hdf63c60_0  
ncurses                   6.2                  he6710b0_1  
openssl                   1.1.1k               h27cfd23_0  
pycosat                   0.6.3            py39h27cfd23_0  
pycparser                 2.20                       py_2  
pyopenssl                 20.0.1             pyhd3eb1b0_1  
pysocks                   1.7.1            py39h06a4308_0  
python                    3.9.1                hdb3f193_2  
readline                  8.1                  h27cfd23_0  
requests                  2.25.1             pyhd3eb1b0_0  
ruamel_yaml               0.15.100         py39h27cfd23_0  
setuptools                52.0.0           py39h06a4308_0  
six                       1.15.0           py39h06a4308_0  
sqlite                    3.35.4               hdfb4753_0  
tk                        8.6.10               hbc83047_0  
tqdm                      4.59.0             pyhd3eb1b0_1  
tzdata                    2020f                h52ac0ba_0  
urllib3                   1.26.4             pyhd3eb1b0_0  
xz                        5.2.5                h7b6447c_0  
yaml                      0.2.5                h7b6447c_0  
zlib                      1.2.11               h7b6447c_3  
echo $PYTHONPATH
$

(note - $PYTHONPATH is not set)

$echo $PATH
/home/user/miniconda3/bin:/home/user/miniconda3/condabin:/usr/local/bin:/usr/bin:/usr/local/sbin:/opt/cuda/bin:/opt/cuda/nsight_compute:/opt/cuda/nsight_systems/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/cuda/bin:/opt/cuda/nsight_compute:/opt/cuda/nsight_systems/bin:/usr/lib/jvm/default/bin

Logs Full run.sh error output

[1623256558.538442] Loading Predictor
/home/user/miniconda3/envs/avatarify/lib/python3.7/site-packages/torch/cuda/__init__.py:104: UserWarning: 
NVIDIA GeForce RTX 3070 with CUDA capability sm_86 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70.
If you want to use the NVIDIA GeForce RTX 3070 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/

  warnings.warn(incompatible_device_warn.format(device_name, capability, " ".join(arch_list), device_name))
[1623256559.794477] Trying camera with id 0
[1623256561.014920] Trying camera with id 1
[ WARN:0] global /io/opencv/modules/videoio/src/cap_v4l.cpp (887) open VIDEOIO(V4L2:/dev/video1): can't open camera by index
[1623256561.015168] Camera with id 1 is not available
[1623256561.015206] Trying camera with id 2
[ WARN:0] global /io/opencv/modules/videoio/src/cap_v4l.cpp (887) open VIDEOIO(V4L2:/dev/video2): can't open camera by index
[1623256561.015271] Camera with id 2 is not available
[1623256561.015292] Trying camera with id 3
[ WARN:0] global /io/opencv/modules/videoio/src/cap_v4l.cpp (887) open VIDEOIO(V4L2:/dev/video3): can't open camera by index
[1623256561.015345] Camera with id 3 is not available
[1623256561.015459] Selected camera 0
Traceback (most recent call last):
  File "afy/cam_fomm.py", line 254, in <module>
    change_avatar(predictor, avatars[cur_ava])
  File "afy/cam_fomm.py", line 91, in change_avatar
    avatar_kp = predictor.get_frame_kp(new_avatar)
  File "/home/user/tmp/b/avatarify-python/afy/predictor_local.py", line 114, in get_frame_kp
    kp_landmarks = self.fa.get_landmarks(image)
  File "/home/user/miniconda3/envs/avatarify/lib/python3.7/site-packages/face_alignment/api.py", line 106, in get_landmarks
    return self.get_landmarks_from_image(image_or_path, detected_faces)
  File "/home/user/miniconda3/envs/avatarify/lib/python3.7/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/home/user/miniconda3/envs/avatarify/lib/python3.7/site-packages/face_alignment/api.py", line 125, in get_landmarks_from_image
    detected_faces = self.face_detector.detect_from_image(image.copy())
  File "/home/user/miniconda3/envs/avatarify/lib/python3.7/site-packages/face_alignment/detection/sfd/sfd_detector.py", line 44, in detect_from_image
    bboxlist = detect(self.face_detector, image, device=self.device)[0]
  File "/home/user/miniconda3/envs/avatarify/lib/python3.7/site-packages/face_alignment/detection/sfd/detect.py", line 15, in detect
    img = torch.from_numpy(img).to(device, dtype=torch.float32)
RuntimeError: CUDA error: no kernel image is available for execution on the device
FATAL: exception not rethrown
./run.sh: line 151: 142896 Aborted                 (core dumped) python afy/cam_fomm.py --config $FOMM_CONFIG --checkpoint $FOMM_CKPT --virt-cam $CAMID_VIRT --relative --adapt_scale $@
JohanAR commented 3 years ago

Can't really investigate this myself, but I think this warning message could give you a place to look if you want to give it a try:

NVIDIA GeForce RTX 3070 with CUDA capability sm_86 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70. If you want to use the NVIDIA GeForce RTX 3070 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/

Pull requests are welcome, in case you find something that ought to be added to avatarify-python :)

darrellenns commented 3 years ago

I got it to work by replacing the install.sh conda commands with the following:

conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c nvidia
conda install scikit-image python-blosc -c conda-forge

The first one is directly from the pytorch "get started" page. On the second one, I removed the specific versions to avoid version conflicts with the pytorch stuff. I also removed numpy from the install command, since it's already installed by pytorch.

JohanAR commented 3 years ago

Nice that you fixed it! Hopefully alievk will have time to look at it, and decide if the same change can be done here, or if it would break something for people with older GPUs. Unfortunately I know nothing about conda

zarklon commented 3 years ago

Thanks but all this stuff is greek to me. I was surprised I got it to work the first time with step-by-step instructions. I have no friggin clue what to do to "adapt it to my OS"

JohanAR commented 3 years ago

darrellenns' fix modifies install.sh which is for Linux, so if you're using Windows you'd have to make the corresponding changes to install_windows.bat

I.e. you find the following two lines

call conda install -y numpy==1.19.0 scikit-image python-blosc==1.7.0 -c conda-forge
call conda install -y pytorch==1.7.1 torchvision cudatoolkit=11.0 -c pytorch

replace them with

call conda install -y pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c nvidia
call conda install -y scikit-image python-blosc -c conda-forge

and then run install_windows.bat from a Command Prompt (so that you see any possible error messages)

I can't verify this myself, since I don't have an RTX30xx card

zarklon commented 3 years ago

If I can stomach getting back into this task I will give that a shot man. Thanks a bunch On 7/28/2021 5:13:14 AM, Johan Aires Rastén @.***> wrote: darrellenns' fix modifies install.sh which is for Linux, so if you're using Windows you'd have to make the corresponding changes to install_windows.bat I.e. you find the following two lines call conda install -y numpy==1.19.0 scikit-image python-blosc==1.7.0 -c conda-forge call conda install -y pytorch==1.7.1 torchvision cudatoolkit=11.0 -c pytorch replace them with call conda install -y pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c nvidia call conda install -y scikit-image python-blosc -c conda-forge and then run install_windows.bat from a Command Prompt (so that you see any possible error messages) I can't verify this myself, since I don't have an RTX30xx card — You are receiving this because you commented. Reply to this email directly, view it on GitHub [https://github.com/alievk/avatarify-python/issues/411#issuecomment-888187272], or unsubscribe [https://github.com/notifications/unsubscribe-auth/ARE3EP66SC6I2WDQZTJ57JDTZ7J3VANCNFSM46MNJFIQ].

robson-credpago commented 2 years ago

I had the same problem, but when I updated the torch witch cuda 11.x, torchvision got errors during start.

My solution was to download the wheel file from this list: https://download.pytorch.org/whl/cu116/torch/ and instaling it with pip. For avatarify in specific, you will want to select pytortch 1.12.0 witch cp37 (python 3.7), cu116 is the only version of CUDA for 1.12.0.

daddyiel commented 1 year ago

I had the same problem, but when I updated the torch witch cuda 11.x, torchvision got errors during start.

My solution was to download the wheel file from this list: https://download.pytorch.org/whl/cu116/torch/ and instaling it with pip. For avatarify in specific, you will want to select pytortch 1.12.0 witch cp37 (python 3.7), cu116 is the only version of CUDA for 1.12.0.

how did you install it with PIP

Big-sly commented 1 year ago

Is there a working build for avatarify desktop or Python for rtx 30s graphic cards yet??

JohanAR commented 1 year ago

@Big-sly I think people have successfully run it on rtx30xx cards, however there are currently issues with installation regardless of GPU so expect having to do some troubleshooting yourself.

progmars commented 2 months ago

https://github.com/tom-n96/avatarify-desktop-cuda-11.8 this one works, also on 40 series, if somebody still needs one.