えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

WSLgでdarknetを動かす

 Windows Insider Previewを試してみた。WSLgがやばい - えいあーるれいの技術日記の続きです。

 WSLgを使えたはいいけど、実際にはどのくらい使えるのかという疑問があったので、CUDAや表示テストも兼ねてdarknetを動かしてみました。

 環境は前回と同様です。NVIDIA 470.14を使用しています。

 WSL用NVIDIAドライバは以下から↓

GPU in Windows Subsystem for Linux (WSL) | NVIDIA Developer

CUDAのインストール

 WSL-Ubuntu用のCUDAが専用で用意されています。以下のリンクにアクセスして「Linuxx86_64→WSL-Ubuntu→2.0→適当なインストール方法」の順に選択してインストールを行います。今回は11.3を使用します。

f:id:Ray_ar:20210522100634p:plain

CUDA Toolkit 11.3 Update 1 Downloads | NVIDIA Developer

 ただし、ダウンロードしたファイルはUbuntu上に移動してから実行するようにしてください。

 インストールプロセスがすべて終わったあとはwsl --shutdownなどでWSL2を再起動してください。また、GUI表示がバグった場合もWSL2の再起動してみてください。

実行

 darknetの実行についてはhttps://github.com/AlexeyAB/darknetを参考にしてください。

 Makefileの書き換えについては、必ず適切なGPUアーキテクチャを指定してください。直Ubuntuでは何もいじらずとも実行はできましたが、WSL2だとコンパイルはできても動かないので注意してください。

 例えば RTX 2080 Ti (TU102)ならGPU=1,OpenCV=1にして次の行をコメントアウトします。

# GeForce RTX 2080 Ti, RTX 2080, RTX 2070, Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Tesla T4, XNOR Tensor Cores
ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]

 コンパイルします。

$ cd darknet/
$ make

 実行します。

$ wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights
$ ./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights ./data/dog.jpg

f:id:Ray_ar:20210522100433j:plain

darknet_rosについて

 darknet_rosも動きました。環境構築は下記のリンクを参考にしてください。CMakeLists.txtのARCHは先ほどと同じように適切なものを選択してください。

qiita.com

Darknet学習・実行にオススメのGPU

 Darknetの学習・実行には非常に多くのGPUリソースが必要です。特にYOLO v4以降のモデルは実行だけでもVRAM 6GB以上必要になるので注意しましょう。VRAMが足りればゲーミングノートでも可です。

RTX 3060:ディープラーニングビギナーにオススメの1台。ディープラーニングはVRAM(GPUのメモリ)が最も重要なので12GBもあるRTX 3060は多少高騰気味の現市場でもオススメです。

Jetson (Xavier):組み込み用途としてはJetsonが有力です。一応RTXが搭載されたNUCやノートPCと比較して検討してみたほうが良さそうです。YOLO v4-tinyくらいなら30fps超えが可能です。