Windows 10 の WSL2 上 の Ubuntu 20.04 で Detectron2 をインストール
Detectron2 をインストールするのは容易で、公式HPにある、
python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'
で終わり。
と言いたいのだが、2022年5月現在、いろいろ問題がおきまくってぜんぜんうまくいかなかったので解決方法を記述する。
ninjaがいないと怒られる
Ninjaが必要だと。
sudo apt install -y ninja-build
wheelがいないと怒られる
wheel無いって。
pip install wheel
pycocotools でコンパイルエラー
command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bnn8kw21/pycocotools_f13f62aaf49546019dc9923edf4326fe/setup.py'"'"'; file='"'"'/tmp/pip-install-bnn8kw21/pycocotools_f13f62aaf49546019dc9923edf4326fe/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-zbqqcdat
エラーになるのがおかしいのだけど、みんな、別途インストールすることで回避してるから別途インストール。
pip install pycocotools
pipが古いせいでコンパイルエラー
さらになんかエラーになるけど、pipが古いと起きるんだって。
Building wheel for detectron2 (setup.py) ... error ERROR: Command errored out with exit status 1:
ので、バージョンを最新のを指定してインストール。
pip install pip==22.1.2
CUDAのバージョンおかしいって!
2022年5月現在、Nvidiaの公式ページに従ってWSL用のCUDAを入れると11.7になる。
が、
RuntimeError:
The detected CUDA version (11.7) mismatches the version that was used to compile
PyTorch (11.3). Please make sure to use the same CUDA versions.
と、11.3をご所望のよう。
なので、11.3を入れる。
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-wsl-ubuntu-11-3-local_11.3.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-3-local_11.3.1-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-ubuntu2004-11-3-local_11.3.1-465.19.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-3-local_11.3.1-465.19.01-1_amd64.deb
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-11-3
export CUDA_PATH=/usr/local/cuda-11.3
echo 'export CUDA_PATH=/usr/local/cuda-11.3' >> ${HOME}/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:${LD_LIBRARY_PATH}
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:${LD_LIBRARY_PATH}' >> ${HOME}/.bashrc
export PATH=/usr/local/cuda-11.3/bin:${PATH}
echo 'export PATH=/usr/local/cuda-11.3/bin:${PATH}' >> ${HOME}/.bashrc
source ~/.bashrc
ここまでやって通らなかったら知らん。
あ、python-devないとだめかも。
sudo apt install python3-dev
Detectron2 や D2Go で Segmentation fault
Detectron2 を importしてpython実行すると Segmentation fault が。
これ、ちゃんとコンパイルせずに、以下の公式HPのInstall Pre-Built Detectron2 (Linux only) のをインストールしたせい。
https://detectron2.readthedocs.io/en/latest/tutorials/install.html
これは普通のLinux用のやつでWindows上のUbuntuのバイナリじゃないから動かしたときに Segmentation fault が発生してしまった。
PyTorchはPythonなので油断しがちだけどちょいちょいCのバイナリでてくるから。
WSL上のUbuntuやMacで Detectron2 や D2Go を使いたいならコンパイルすること。
以上!