ai-forever/ghostをWSL2のUbuntuで動かした際の備忘録です。
GoogleColabでの例は見つかるのですが、ローカル環境で動作させたものはなく苦戦しました。
色々試したのですが、最終的にはアップロードされているGoogleColabの環境をローカル環境で再現することで動作しました。
この記事が誰かのお役に立てればと思います。
実行環境
- Windows 10 Pro
- WSL2 Ubuntu 20.04 LTS
- Python 3.10.12
- NVIDIA GeForce RTX 3070 (GPU Memory: 8.0GB)
CUDA 周りのインストール
下記をインストールします。
- CUDA Toolkit 11.8
- cuDNN v8.9.2 for CUDA 11.x
- NCCL 2.12.5, for CUDA 11.8
CUDA Toolkit 11.8
CUDA Toolkit 11.8 Downloads を参考にして以下のコマンドを実行
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.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
cuDNN v8.9.2 for CUDA 11.x
cuDNN Installation Guide を参考にインストールを行います。今回は Tarファイルを利用した方法を使用しました。
-
cuDNN Download の Local Installer for Linux x86_64 (Tar) よりダウンロード、ワーキングディレクトリに配置
-
下記を実行
tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
NCCL 2.12.5, for CUDA 11.8
NCCL は後でインストールする mx-net が必要とするモジュールです。NCCL installation Guide の Ubuntu 部分を参考にインストールを行います。
- NCCL Legacy Download Page の Local installer for Ubuntu 20.04 よりダウンロード、ワーキングディレクトリに配置
- 下記を実行
sudo dpkg -i nccl-repo-<version>.deb
<指示に従ってローカルキーをインストール
sudo apt update
sudo apt install libnccl2 libnccl-dev
Python モジュールのインストール
下記をインストール
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install mxnet-cu112
pip install onnxruntime-gpu==1.12
pip install Cython
pip install insightface==0.2.1
pip install kornia==0.5.4
pip install dill
ffmpeg インストール
動画のディープフェイク作成時に ffmpeg を使用するのでインストール
sudo apt install ffmpeg
エラー対応
実行環境は整ったのですが、私の環境ではいくつかエラーが発生したのでその対応を記載します。強引な修正ではありますが動作します。
AttributeError: module 'numpy' has no attribute 'bool'. Did you mean: 'bool_'?
mxnet/numpy/utils.py の「bool_」の記述は残しつつ「bool」に関する記述をすべて削除
This ORT build has ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider'] enabled. Since ORT 1.9 ...
onnxruntime/capi/onnxruntime_inference_collection.py の _create_inference_session 関数に下記を追加
providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']
動作確認
python3 inference.py
を実行して動作確認します。
各引数にはデフォルト値が適用され、ghost/examples/results に result.mp4 が生成されます。
Warning が大量発生しますがご容赦ください。
~/ghost$ python3 inference.py
/home/****/.pyenv/versions/ghost/lib/python3.10/site-packages/kornia/augmentation/augmentation.py:1830: DeprecationWarning: GaussianBlur is no longer maintained and will be removed from the future versions. Please use RandomGaussianBlur instead.
︙
if spsp is not None and isinstance(source_array, spsp.csr.csr_matrix):
/home/****/.pyenv/versions/ghost/lib/python3.10/site-packages/mxnet/ndarray/utils.py:141: DeprecationWarning: Please use `csr_matrix` from the `scipy.sparse` namespace, the `scipy.sparse.csr` namespace is deprecated.
if spsp is not None and isinstance(source_array, spsp.csr.csr_matrix):
100%|█████████████████████████████████████████████████████████████████████████████████| 289/289 [00:07<00:00, 39.55it/s]Video saved with path examples/results/result.mp4
Total time: 14.406058311462402
私の環境では14秒ほどで終了しました。