アブスト
VSCodeのDev Containers拡張機能に備わっているAutomate dev container creation機能を使用して、てっとり早くCUDA環境を作る方法です。
Poetry
- ナウイパッケージ管理ツール(キャッシュの容量食いがちなのでそこは注意)
-
バージョンの依存関係を解決してくれる。(ここがpip+requirements.txtだとできない。)
https://book.st-hakky.com/hakky/poetry-intro/ - ローカル環境だと+pyenvでpythonのversionも同時に管理できる
手順
-
F1でコマンドパレットを開きDev Containers: Add Dev Container Configuration Files...を選択
-
pythonと入力して、Python 3を選択して使用したいversionを選ぶ。python+poetryでもいいと思うが、後でpipでpoetryをインストールするからpureなほうを選択
https://github.com/microsoft/vscode-dev-containers/tree/main/containers/python-3 -
CUDAと入力して、NVIDIA CUDAにチェックをいれる
https://github.com/devcontainers/features/tree/main/src/nvidia-cuda
cudaのパスが通っていないので、後でまた通したほうがいいかも(補足2) -
そのままなにもせずにすすんで、devconatiner.jsonを作成
-
devcontainer.jsonのfeaturesとrunArgsを以下のように編集。versionは各自合わせる。
"features": { "ghcr.io/devcontainers/features/nvidia-cuda:1": { "installCudnn": true, "installCudnnDev": true, "installToolkit": true, "cudaVersion": "11.8", "cudnnVersion": "8.6.0.163" } }, "runArgs": ["--gpus=all", "--shm-size=50g"]
-
コマンドパレットでReopen in Container
-
poetryインストール
pip3 install poetry poetry install
参考
補足
補足1
今まで気にせず使用していましたが、devcontainerのデフォルトの仕様でカレントディレクトリはバインドマウントされるんですね。そりゃそうか。。。
バインドマウントについてはこちら。
補足2
上記の方法だとCUDAのパスが繋がっていなかったので、以下の設定をdevcontainer.jsonに書き加えるといい。
nvcc --versionで出力されれば解決。
"containerEnv": {
"PATH": "/usr/local/cuda/bin:${localEnv:PATH}"
}
補足3(自分のメモ書きのためで、記事の主旨から離れています)
cudnnを手動でインストールする方法
https://docs.nvidia.com/deeplearning/cudnn/latest/installation/linux.html
dpkgでパッケージのインストール先確認。
dpkg -L libcudnn9-cuda-12
-dpkgはDebian系(Ubuntu含む)のパッケージ管理コマンド
-Lオプションは、指定したパッケージがインストールしたファイルの一覧を表示