Japanese Stable CLIP を試してみた

Docker で OpenCV with CUDA

Windows では動作させられなかった OpenCV with CUDA ですが、Docker で CUDA を使えることを思い出したので、Docker で試してみました。
なお、WSL2、Docker、NVIDIA Container Toolkit は導入済みです。

コンテナの用意

NGC のサイトで、用途にあいそうなコンテナを探します。今回は PyTorch などのバージョンも考慮して、CUDA 11.7 を使用したいと思うので、「nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04」を選びます。
WSL の Ubuntu で、以下コマンドを実行してイメージを取得します。
docker pull nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04

イメージの取得が終わったら、以下コマンドを実行してコンテナを起動します。
docker run -p 12200:22 --gpus all -it --name=opencv nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04 bash
※別途 SSH ができるように、ポート転送の設定を追加しています。

これで、CUDA などがインストール済みの Ubuntu が起動しました。念のため、コンテナ内で nvidia-smi コマンドを実行して、GPU が認識されていることを確認します。

コンテナ内で OpenCV のビルド

ほぼ以下のサイトに沿って実行しました。

cmake、python のインストール (gcc などはコンテナイメージに含まれていました)
libpng-dev など
cmake のオプションは、このようにスクリプトにして記述しました。
オプションや環境変数を特段修正しなくても、CUDA、cuDNN、python が認識されています。
ビルドし、問題なく完了しました。所要時間も、Windows 上で実施した場合とそんなに差はなく、2時間程度かかったように感じます。
インストールし、python から cv2.cuda.printCudaDeviceInfo(0) を実行してみると・・・

無事、CUDA が利用できそうです。コンテナ内からハードウェアを叩くほうが簡単にできるとは、思いもよりませんでしたね・・・

コメント