DeepLabCutのインストールについての備忘録
BioRixvの論文やGitHubのマニュアルだけでパソコンへのインストールを試みたが、これらに記載されているコードの中には私の環境では実行できないものが含まれていたり、関連するパッケージのインストール方法が省略されているなど、うまくインストールができませんでした。そのため、様々な書籍やWebページの情報などをかき集めてインストールを試みました。DeepLabCutって何?という方はこちらをご覧ください。
実行環境
OS: Ubuntu 18.04.2 LTS
GPU: NVIDIA GeForce RTX 2080Ti (Driver Version: 410.79; CUDA Version: 10.0)
RAM: 64GB
ハイスペックなパソコンを用意できないという方には以下のような方法があるようです。 qiita.com
この記事は自前のパソコンにインストールする前提で書いています。2019年3月に私の実行環境でうまくいった方法です。他のパソコンでもうまくいくかどうかは保証できません。
- Step1. anacondaのインストール
- Step2. 仮想環境の作成とDeepLabCutのインストール
- Step3. DeepLabCut本体のインストール
- Step4. TensorFlowとDockerのインストール(GPU動作環境の構築)の前準備
- Step5. TensorFlowのインストール
- Step6. Docker環境の構築
- Step7. Nvidia-dockerのインストール
- Step8. Dockerの設定
- 使い始めのとき、ほぼ確実に現れるエラー対策
- その他
- 参考
Step1. anacondaのインストール
Anacondaの公式サイトからLinux + Python 3.7用のインストーラをダウンロードします。以下のコマンドでもダウンロードできます。
$ wget https://repo.anaconda.com/archive/Anaconda3-2018.12-Linux-x86_64.sh
続いてインストールします。まずはダウンロードされたフォルダ(ディレクトリー)を特定します。webブラウザでダウンロードした場合は/home/user/Downloads/
の中にあることが多いです。コマンドでダウンロードした場合はhomeの中に保存されています。home以外のディレクトリーにある場合は以下のコマンドを実行します。
$ cd ディレクトリー # 実行ディレクトリの変更
ディレクトリを変更したら以下のコマンドでインストールします。最新版になっている場合はバージョンに注意してください
$ sudo bash Anaconda3-2018.12-Linux-x86_64.sh
次に
Welcome to Anaconda3 2018.12 In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>>
と表示されるので[ENTER]を押してライセンス関係の文章を一番下までスクロールします。そして
Do you accept the license terms? [yes|no] [no] >>> Please answer 'yes' or 'no':' >>>
と表示されたらyes
と打ちます。次に
Anaconda3 will now be installed into this location: /home/user/anaconda3 - Press ENTER to confirm the location - Press CTRL-C to abort the installation - Or specify a different location below [/home/user/anaconda3] >>>
と表示されたら[ENTER]を押します。続いて
Do you wish the installer to initialize Anaconda3 in your /home/user/.bashrc ? [yes|no] [no] >>>
と表示されるのでyes
と打ちます。すると色々表示されるが最後の行に
Do you wish to proceed with the installation of Microsoft VSCode? [yes|no] >>>
と表示されるますが、Visual Studio Code (テキストエディタ)をインストールしたい場合はyes
をしない場合はno
を打ちます。作業ディレクトリを変更している場合はcd
と打ち込みhomeに戻します。
以下のコマンドでAnacondaのパスを通します。
$ export PATH=/home/user/anaconda3/bin:$PATH
最後に
$ conda -V
を実行して
$ conda 4.5.12
と表示されればインストール完了です
Step2. 仮想環境の作成とDeepLabCutのインストール
まずはPython3.6の仮想環境を作成します。仮想環境名
と書いているところは好きに変更してください。
$ conda create -n 仮想環境名 python=3.6
これを実行すると
Proceed ([y]/n)?
と表示されるのでy
を打ち込みます。そして作成した仮想環境を起動します。
$ source activate 仮想環境名
そして
(仮想環境名)ユーザー名@パソコン名$
と表示されれば起動完了です。
Step3. DeepLabCut本体のインストール
次にDeeplabcutをインストールします。
$ pip install deeplabcut
インストールが終わったら一旦仮想環境を終了します。
$ source deactivate
※補足※
DeepLabCutをCPUのみで動作させる場合は仮想環境を終了せずに続けてpip install tensorflow==1.10
もしくはpip install --ignore-installed tensorflow==1.10
を実行します。これでDeepLabCutの実行環境の構築は完了です。
Step4. TensorFlowとDockerのインストール(GPU動作環境の構築)の前準備
【追記】TensorFlow関連の項目はこちらにまとめ直しました。こちらの記事の方法でTensorFlowをインストールしてからStep.6に進むとうまく行くと思います。
まず準備としてCUDA toolkitをインストールします。以下のコマンドを順次実行してください。
# ダウンロード $ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb # インストール $ sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb $ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub $ sudo apt-get update $ sudo apt-get install cuda # ダウンロードしたファイルの削除 $ sudo rm cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
次にcuDNN SDKをインストールします。ダウンロードページからcuDNN Runtime Library for Ubuntu18.04 (Deb)
をブラウザーを使ってダウンロードします。尚、ダウンロードにはNVIDIAのアカウントを作成する必要があります。ダウンロード後、ファイルが保存されたディレクトリを確認してから以下のコマンドを実行してください。なお、sudo apt install nvidia-cuda-dev
を使えば事前にダウンロードすることなしにcuDNNがインストールされるようです。(動作の確認は行っていない)
# 作業ディレクトリの変更 $ cd ファイルのディレクトリ # インストール $ sudo dpkg -i libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb # 作業ディレクトリを戻す $ cd
次にCUDAをインストールします。一旦再起動してから以下のコマンドを逐次実行します。詳細は以下のページを参照。
※多くの場合、GPUドライバーのインストール時点でCUDAのインストールが完了しています。インストールされているか確認するにはnvidia-smi
を実行します。CUDA
が表示される場合はインストール済です。その場合、以下のコマンドを実行しないことをおすすめします。私の場合、CUDAのインストールが完了している状態で下のコマンドを実行したら、パソコン全体がバグりました(無論、OSをクリーンインストールするハメに...)。
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64 # Add NVIDIA package repository $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub $ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb $ sudo apt install ./cuda-repo-ubuntu1604_9.1.85-1_amd64.deb $ wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb $ sudo apt install ./nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb $ sudo apt update # Install CUDA and tools. Include optional NCCL 2.x $ sudo apt install cuda9.0 cuda-cublas-9-0 cuda-cufft-9-0 cuda-curand-9-0 \ cuda-cusolver-9-0 cuda-cusparse-9-0 libcudnn7=7.2.1.38-1+cuda9.0 \ libnccl2=2.2.13-1+cuda9.0 cuda-command-line-tools-9-0 # Optional: Install the TensorRT runtime (must be after CUDA install) $ sudo apt update $ sudo apt install libnvinfer4=4.1.2-1+cuda9.0
追記(2019年5月)
上記のコマンドは新しいバージョンが入っているところに無理やり古いバージョンのものを入れようとしているのでバグって当然でした。下のコマンド(上記のTensorFlowのページから引用)ならうまく行くかもしれません(Ubuntu 18.04の人のみ)。CUDAがインストール済みなら実行しないほうが良いかもしれません。
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64 # Add NVIDIA package repositories wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub sudo apt-get update wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo apt-get update # Install NVIDIA driver sudo apt-get install --no-install-recommends nvidia-driver-410 # Reboot. Check that GPUs are visible using the command: nvidia-smi # Install development and runtime libraries (~4GB) sudo apt-get install --no-install-recommends \ cuda-10-0 \ libcudnn7=7.4.1.5-1+cuda10.0 \ libcudnn7-dev=7.4.1.5-1+cuda10.0 # Install TensorRT. Requires that libcudnn7 is installed above. sudo apt-get update && \ sudo apt-get install nvinfer-runtime-trt-repo-ubuntu1804-5.0.2-ga-cuda10.0 \ && sudo apt-get update \ && sudo apt-get install -y --no-install-recommends libnvinfer-dev=5.0.2-1+cuda10.0
ココまでで前準備は終わりです。
Step5. TensorFlowのインストール
TensorFlowのインストールをします。はじめに下記のコードでpythonとpipがインストールされているか確認してください。
$ python3 --version $ pip3 --version
実行の結果、
Command 'プログラム名(python3またはpip3)' not found, but can be installed with: sudo apt install プログラム名
と表示されたら、表示されたプログラム名(ここではpython3はすでにインストールされているの仮定してpip3についてのみ記載)について下記のコードを実行してインストールします。(pythonはここまででインストールされているはずなので省略)
$ sudo apt update $ sudo apt install python3-dev python3-pip
インストールが終わったら作成してある仮想環境を起動します。
$ source activate (仮想環境名)
次にpipをアップデートします。
$ pip install --upgrade pip
最後にTensorflow本体をインストールします。
$ pip install --upgrade tensorflow-gpu
実行の結果、`Successfully installed (以下省略)`と表示されればOK。次に正常にインストールされたか以下のコマンドで確認します。
$ python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
または
$ import tensorflow as tf $ sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
を実行しても良いです。これらを実行した結果、
Traceback (most recent call last): (省略) Failed to load the native TensorFlow runtime. See https://www.tensorflow.org/install/errors for some common reasons and solutions. Include the entire stack trace above this error message when asking for help.
と表示される場合、もしくは似たようなエラーが表示される場合はCUDAをCUDA9にダウングレードする必要があります。
エラー対策:CUDAのダウングレード(CUDA10→CUDA9)
まずはCUDA10の削除します。
$ sudo apt-get --purge remove cuda $ sudo apt autoremove
次にCUDA9をインストールします。
$ wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb $ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb $ sudo apt-get update $ sudo apt-get install cuda-9-0
インストールが終わったら再起動してnvidia-smi
のコマンドでCUDAのバージョンを確認する。CUDAのバージョンが下がっていなくても気にせずに仮想環境を起動してから上記の正常にインストールされたか確認するコマンドを実行してみる。その結果、エラーのような表示がなければTensorFlowが正常に機能していると考えて大丈夫です。なお、結果の中に
(前略) 2019-02-18 15:05:07.422131: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties: name: GeForce RTX 2080 Ti major: 7 minor: 5 memoryClockRate(GHz): 1.545 pciBusID: 0000:01:00.0 totalMemory: 10.73GiB freeMemory: 10.18GiB (以下省略)
のようにGPUの名前が表示されているのが理想的です。エラーが続く場合はexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/
を実行してみたりすると解決するかもません。詳しくは以下のサイトを参照してください。
Step6. Docker環境の構築
次にDockerの環境を構築します。まずDocker本体をインストールします。ココでは以下のページを参考にしました。
まずは以下のコマンドを順番に実行します。
$ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo apt-key fingerprint 0EBFCD88 $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable nightly" $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable test" $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable nightly test" $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
次に
$ apt-cache madison docker-ce
を実行すると
docker-ce | 5:18.09.2~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.2~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/test amd64 Packages docker-ce | 5:18.09.1~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages (以下省略)
のように利用可能なバージョンが一覧で表示されます。今回は一番上にあるバージョン5:18.09.2~3-0~ubuntu-bionic
をインストールします。他のバージョンをインストールする場合は下記のコードの2箇所のバージョンの部分を適当に書き換えれば良いです。
$ sudo apt-get install docker-ce=5:18.09.2~3-0~ubuntu-bionic docker-ce-cli=5:18.09.2~3-0~ubuntu-bionic containerd.io
最後に
$ sudo docker run hello-world
を実行して
Hello from Docker! This message shows that your installation appears to be working correctly. (以下省略)
と表示されればインストール成功です。
Step7. Nvidia-dockerのインストール
次にnvidia-dockerをインストールします。本来はversion1)をインストールするべきなのですが、version1はDockerのバージョンのためかインストールできませんでした。一方でversion2との互換性があるとのことなので以下のページを参考にversion2をインストールします。
今回はnvidia-dockerがインストールされていない前提ですすめます。まずはレポジトリを追加します。
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add - $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list $ sudo apt-get update
次にDockerのバージョンを確認します。
$ docker --version
を実行すると
Docker version 18.09.2, build 6247962
のようにDockerのバージョンがわかります。次に対応しているnvidia-docker2のバージョンを確認します。
$ sudo apt-cache madison nvidia-docker2 nvidia-container-runtime
を実行すると
nvidia-docker2 | 2.0.3+docker18.09.2-1 | https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64 Packages nvidia-docker2 | 2.0.3+docker18.09.1-1 | https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64 Packages (中略) nvidia-container-runtime | 2.0.0+docker18.09.2-1 | https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/amd64 Packages nvidia-container-runtime | 2.0.0+docker18.09.1-1 | https://nvidia.github.io/ Packages (以下省略)
のように対応が表示されます。今回はdocker18.09.2に対応しているnvidia-docker2=2.0.3とnvidia-container-runtime=2.0.0をインストールします。
$ sudo apt-get install -y nvidia-docker2=2.0.3+docker18.09.2-1 nvidia-container-runtime=2.0.0+docker18.09.2-1 $ sudo pkill -SIGHUP dockerd
(注:2019/9/30)
上記のコマンドは以下のコマンドで実行しても問題ありません。以下のコマンドならバージョンを気にする必要がありません。
$ sudo apt install nvidia-docker2 vidia-container-runtime $ sudo pkill -SIGHUP dockerd
最後の仕上げに以下のコマンドを実行します。
$ sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
その結果、
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 410.79 Driver Version: 410.79 CUDA Version: 10.0 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce RTX 208... Off | 00000000:01:00.0 On | N/A | | 27% 31C P8 28W / 250W | 347MiB / 10986MiB | 4% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| +-----------------------------------------------------------------------------+
このようなNVIDIA-SMIの画面が表示されたらインストール成功です。忘れないうちに再起動してください。
Step8. Dockerの設定
次にユーザーをdockerグループに入れます。まず仮想環境に入って(source activate 仮想環境名
)から、以下のコマンドを実行します。
$ sudo gpasswd -a ユーザー名 docker # 注:ユーザー名はこれ -> [ユーザー名]@パソコン名:~$
そして、
$ cat /etc/group | grep docker
を実行して
docker:x:999:ユーザー名
と表示されれば完了です。再起動してsudo
なしでdockerコマンドが使えるか以下のコマンドから確認してください。
$ docker run hello-world
上記の場合と同じくHello from Docker!
が表示されれば問題ありません。
続いてDocker4DeepLabCut2.0の実行環境を整えます。まずは以下のコマンドを実行してDocker4DeepLabCut2.0のダウンロードとそのフォルダへ作業ディレクトリを移動します。
$ git clone https://github.com/MMathisLab/Docker4DeepLabCut2.0 $ cd Docker4DeepLabCut2.0
続いてDockerのイメージを作成する。以下のコマンドを実行するとdlc_username/dlcdocker
という名前のイメージが作成される。-t
以下の部分が名前の指定になっている。また、最後に.
というタグがついているので注意。これがないとエラーになります(私はココでハマりました)。
$ docker image build -t dlc_username/dlcdocker .
次に作成したイメージからDockerコンテナの生成と起動を行います。--name
の後ろにコンテナ名 イメージ名
を書く。先頭のGPU=
の後ろには使っているGPUの番号を書きます。この番号は必ず確認すること。GPUの番号はnvidia-smi
で表示される表の1列目2段目の数字%
の上に書いてある数字です。上に出ている表では27%
の上に書いてある0
が該当します。
$ GPU=0 bash ./dlc-docker run -d -p 2351:8888 --name containername dlc_username/dlcdocker
出力の結果、どこにもerror
の文字がなければ成功です。
おめでとうございます。以上でDeepLabCutをGPUで使うための設定が終了です。
使い始めのとき、ほぼ確実に現れるエラー対策
使い始めのときに
In []: import deeplabcut
を実行するとまず
ModuleNotFoundError: No module named 'wx'
というエラーが発生します。これを解決すると次に
ImportError: libpng12.so.0: cannot open shared object file: No such file or directory
というエラーが発生します。これらのエラーの解決方法は以下の記事に掲載していますのでご覧ください。
その他
後日、DeepLabCutの使い方を解説した記事を公開しようと考えています。この方法でインストールするとGPUを使うために本来はDockerを経由しなければならないはずなのに普通に使うだけでGPUがきちんと動いてしまうなど良い方面で謎の点も多いです(そもそもDockerが機能しない)。基本的にはこの論文を参考にしたら使えると思います。
この方法でインストールした場合の使い方を公開しました。
参考
How to install DeepLabCut2.0: https://github.com/AlexEMG/DeepLabCut/blob/master/docs/installation.md
How to install DeepLabCut2.0: https://github.com/AlexEMG/DeepLabCut/blob/master/docs/installation.md
CUDAのインストールの参考: https://www.tensorflow.org/install/gpu
CUDA10の削除の参考: http://hirotaka-hachiya.hatenablog.com/entry/2018/01/06/203343
CUDA-9-0のインストール・TensorFlowエラー対策の参考: https://teratail.com/questions/96410
Docker Environment for DeepLabCut2.0: https://github.com/MMathisLab/Docker4DeepLabCut2.0
Dockerを構築するときの参考: https://docs.docker.com/install/linux/docker-ce/ubuntu/
nvidia-dockerをインストールするときの参考1: https://qiita.com/ishouyou/items/3c280144a14fe8bb082b
nvidia-dockerをインストールするときの参考2: http://xvideos.hatenablog.com/entry/nvidia-docker2_on_ubuntu1804
ユーザーをDockerグループに入れるときの参考: https://qiita.com/tifa2chan/items/9dc28a56efcfb50c7fbe