本日未明、CUDA on WSL2対応のNVIDIAドライバー(455.32)が発表されました。同時に新たなwindows insider preview(20150)がリリースされ、windows民は新たな人類のステージへと超越することが約束されました。
まだパフォーマンスはチューニングされてないよ、とのことです。とりあえず動かしてみましょう。GeForce RTX 2080 Tiで動作検証しました。
やるべきことは以下の3つです:
- windows insider preview (20150) へのupdate
- wsl2の有効化
- CUDA on WSL2対応NVIDIAドライバー(455.32)のインストール
本記事では、その後
- nvidia-docker2の起動
- detectron2のデモ
までやってみます。detectron2なんてwindows版は有志による古いバージョンしかなく、しかも最新のwindowsだとエラーまみれなのでこれが動くと嬉しいですね!!
Contents
インストール
windows insider preview (20150) へのupdate
まずはwindows insider programに登録する必要があります。
もちろんmicrosoft accountが必要です。Insider settingsを聞かれたときに、“Fast”を選択するのを忘れないでください。
登録できたら、windows 10 PCで[スタート] > [設定] > [更新とセキュリティ] > [Windows Insider Program] を開き、先程登録したアカウントを紐付けます。更新をチェックすると、Windows 10 Insider Preview 20150.1000が落ちてきます。(その前に、Diagnostics & feedbackの設定を”full”にしろ、と言われるかもしれません。)
wsl2の有効化
公式のやり方に従いましょう:
WSL2 Linuxカーネルの更新が必要だと言われるかもしれません:
設定の”View update history” で、WSL kernel 4.19.121がインストールされたことを確認しましょう。インストールされていないなら、設定のAdvanced Windows Update optionsから”Recieve updates for other Microsoft products when you update Windows.”をonにして、再度windows updateをチェックしましょう。
CUDA on WSL2対応NVIDIAドライバー(455.32)のインストール
ここからダウンロード&インストールできます。
WSL2でのCUDA対応の特徴として、ホストであるwindows PCのドライバにてCUDA対応をするということが挙げられます。WSL上のUbuntuなどには絶対にグラフィックスドライバーを入れないよう注意してください。(sudo apt install nvidia-xxx とかしちゃダメだよってことです。念のため。)
以上のことが完了すれば、晴れてubuntuをインストールできます。microsoft storeからubuntuをゲットしましょう。あ、あと、windows側にCUDAをインストールしておきましょう。
動作デモ
nvidia-docker2でベンチマーク
Setting up to Run Containersの”sudo apt-get install -y nvidia-docker2″までやれば、nvidia-docker2のインストールが完了します:
インストールできたら、docker daemonを動かす必要があります。windowsバーのubuntuアイコンをshiftキーを押しながらクリックして、シェルをもうひとつ立ち上げたら、
sudo dockerd
でdocker daemonが起動します。もとのshellを再度開いたら、
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
でベンチマーク用のimageをダウンロードしてrunします。ちゃんとGeForce RTX 2080 Tiが認識されていますね。やったね!
Detectron2を動かす
Detectron2がFacebook AI Researchが開発しているDNN CVフレームワークです。(でいいのかな?)
サポートはLinuxだけで、有志によるwindows版はあるのですがバージョンが古く、僕の環境では動きませんでした。なので今回WSL2で動作したなら革命的ですね!!
ここではやるべきことが結構あって、
- GUIアプリの有効化
- detectron2のインストール
- デモの動作
をやります。
GUIアプリの有効化
WSL2でのGUIアプリの公式サポートはまだ先なのですが、windows側にX Serverを用意することでGUIアプリを使うことができます。
まずは、以下の記事にしたがってVcXsrvをインストールします:
XLaunchで起動します。Firewallの設定は、PrivateもPublicも全てを許可します。(WSL2は別のネットワークへのアクセスとなるため)たぶん、起動時に”Disable access control”にチェックを入れた方が良いと思います。
ではWSL側で、
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
xeyes
とやります。ギョロッとした目の透過ウィンドウが出てくれば成功です。export文は.bashrcにでも書いておくと捗るでしょう。
Detectron2のインストール
Anaconda pythonをインストールしておいてください:
sudo apt install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
bash Anaconda3-2020.02-Linux-x86_64.sh
感謝の心を持ってconda createします。(CUDAのバージョンはwindows側に合わせてください):
conda create -n detectron2 python=3.6 anaconda
conda activate detectron2
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
conda install -c menpo opencv3
今回はprebuild版のdetectron2を使います。ホントはbuildしたほうが良いと思います。CUDAやpytorchのバージョンはお使いの環境に合わせてください:
python -m pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/torch1.5/index.html
簡単すぎやせんか。。。?Windows使いのいままでの苦労はなんだったんや。。。
デモの実行
学習済みモデルを使って物体認識デモをやります。お好きな画像を用意してください。
cd detectron2/demo/
python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \
--input /path/to/your_file.jpg \
--opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl
ウウウォオオオオオオオアアアアアアアアウゴイタァァァァァァァァァアアアアアアアアアアアアアアアアアアアアアアアアアア!!!!!!!!!!!!!!!!!!!!!!!!
コメント