Я создал эту среду Conda:
conda env create -f environment.yml
Файл environment.yml
:
name: deep3d_pytorch
channels:
- pytorch
- conda-forge
- defaults
dependencies:
- python=3.6
- pytorch=1.6.0
- torchvision=0.7.0
- numpy=1.18.1
- scikit-image=0.16.2
- scipy=1.4.1
- pillow=6.2.1
- pip
- ipython=7.13.0
- yaml=0.1.7
- pip:
- matplotlib==2.2.5
- opencv-python==3.4.9.33
- tensorboard==1.15.0
- tensorflow==1.15.0
- kornia==0.5.5
- dominate==2.6.0
- trimesh==3.9.20
Я активирую среду Conda. Но даже простой оператор, например python -c "import torch; print(torch.__version__)"
, чтобы получить версию PyTorch, выдает ошибку undefined symbol
:
(deep3d_pytorch) m3@i7:~/repos/Deep3DFaceRecon_pytorch> python -c "import torch; print(torch.__version__)"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/m3/anaconda3/envs/deep3d_pytorch/lib/python3.6/site-packages/torch/__init__.py", line 189, in <module>
from torch._C import *
ImportError: /home/m3/anaconda3/envs/deep3d_pytorch/lib/python3.6/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: iJIT_IsProfilingActive
Я считаю, что PyTorch, установленный Conda, сломан. Но с журналами Conda все в порядке. Есть ли у кого-нибудь подсказка или подсказка? Я получаю ошибку undefined symbol
как на своем локальном компьютере, так и в Google Colab.
Даже минимальная среда, подобная приведенной ниже, будет вызывать подобные ошибки:
conda create -n minimal_pytorch python=3.6 pytorch torchvision torchaudio -c pytorch
source activate minimal_pytorch && python -c "import torch; print(torch.__version__)"
Выдается аналогичная ошибка undefined symbol
:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/envs/minimal_pytorch/lib/python3.6/site-packages/torch/__init__.py", line 197, in <module>
from torch._C import * # noqa: F403
ImportError: /usr/local/envs/minimal_pytorch/lib/python3.6/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent
Если версия Python не указана при создании среды:
conda create -n minimal_pytorch python pytorch torchvision torchaudio -c pytorch
Ошибка устранена:
source activate minimal_pytorch && python -c "import torch; print(torch.__version__)"
Версия PyTorch получена без ошибок:
2.2.2
Похоже, проблема связана с несоответствием версий и пакетов Python. Предполагается, что Conda позаботится о версии Pythong 🙄
Перейти на более раннюю версию mkl package
. Он должен работать.
Чтобы показать, как это было решено, я публикую здесь весь наш код. Мы пытались протестировать этот репозиторий:
https://github.com/sicxu/Deep3DFaceRecon_pytorch
Наш последний подход к Google Colab, который отлично работает:
# Step 1: Press runtime on the top > Change runtime type > Select T4 GPU
# Step 2: Run this shell
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
!bash miniconda.sh -b -u -p /usr/local
!rm miniconda.sh
!conda update -y conda
%cd /content/
!rm -rf Deep3DFaceRecon_pytorch
!git clone https://github.com/sicxu/Deep3DFaceRecon_pytorch.git
%cd Deep3DFaceRecon_pytorch
!git clone https://github.com/NVlabs/nvdiffrast
!git clone https://github.com/deepinsight/insightface.git
!cp -r ./insightface/recognition/arcface_torch ./models/
# Step 3: Mount drive and copy the files mounted in google drive:
!mkdir /content/Deep3DFaceRecon_pytorch/checkpoints
!cp -r /content/drive/MyDrive/Deep3D/facerecon_20230425 /content/Deep3DFaceRecon_pytorch/checkpoints/facerecon_20230425
!cp /content/drive/MyDrive/Deep3D/01_MorphableModel.mat /content/Deep3DFaceRecon_pytorch/BFM/
!cp /content/drive/MyDrive/Deep3D/Exp_Pca.bin /content/Deep3DFaceRecon_pytorch/BFM/
# Step 4: Install the graphics related stuff
!sudo apt-get install libegl1-mesa-dev
!nvidia-smi
!sudo apt-get install libnvidia-gl-535
# Step 5: Run this shell to install everything
%%shell
eval "$(conda shell.bash hook)"
conda create --name deep3d_pytorch python=3.6 -y
conda activate deep3d_pytorch
conda config --env --add channels pytorch
conda config --env --add channels conda-forge
conda config --env --add channels defaults
conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch -y
conda install numpy scikit-image=0.16.2 scipy=1.4.1 pillow=6.2.1 pip ipython=7.13.0 yaml=0.1.7 -y
pip install matplotlib==2.2.5 opencv-python==3.4.9.33 tensorboard==1.15.0 tensorflow==1.15.0 kornia==0.5.5 dominate==2.6.0 trimesh==3.9.20
pip install ./nvdiffrast/.
# Step 6: Run this shell to test the program
%%shell
eval "$(conda shell.bash hook)"
conda activate deep3d_pytorch
python test.py --name=facerecon_20230425 --epoch=20 --img_folder=./datasets/examples
# Step 7: Copy test results to Google Drive
!ls /content/Deep3DFaceRecon_pytorch/checkpoints/facerecon_20230425/results/examples/epoch_20_000000/
!cp /content/Deep3DFaceRecon_pytorch/checkpoints/facerecon_20230425/results/examples/epoch_20_000000/* /content/drive/MyDrive/Deep3D/results/
# Step 8: prepare custom images along with their facial landmarks
!cp -r /content/drive/MyDrive/Deep3D/custom_images /content/Deep3DFaceRecon_pytorch/
%cd /content/Deep3DFaceRecon_pytorch/custom_images/
!python -m venv virtual_env
!source virtual_env/bin/activate && which pip
!source virtual_env/bin/activate && pip install mtcnn
!source virtual_env/bin/activate && pip install tensorflow
!source virtual_env/bin/activate && which python
!source virtual_env/bin/activate && python facial_landmarks.py # This Python script source code can be found here: https://github.com/sicxu/Deep3DFaceRecon_pytorch/issues/85#issuecomment-2069302718
%cd /content/Deep3DFaceRecon_pytorch/
# Step 9: run with custom images
%%shell
eval "$(conda shell.bash hook)"
conda activate deep3d_pytorch
python test.py --name=facerecon_20230425 --epoch=20 --img_folder=./custom_images
# Step 10: copy the results back to Google Drive
!ls /content/Deep3DFaceRecon_pytorch/checkpoints/facerecon_20230425/results/custom_images/epoch_20_000000/
!cp /content/Deep3DFaceRecon_pytorch/checkpoints/facerecon_20230425/results/custom_images/epoch_20_000000/* /content/drive/MyDrive/Deep3D/results/
Это описано и здесь: https://github.com/conda/conda/issues/13812#issuecomment-2071445372
Использование pip install
вместо conda install
решило для меня проблему:
pip install torch==x.x+cu11x torchvision==x.x.0+cu11x torchaudio==x.x --extra-index-url https://download.pytorch.org/whl/cu11x
Об этом сообщается здесь: github.com/conda/conda/issues/13812