0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PyTorchのCUDA非互換エラーを解決した方法

Posted at

起こった問題

インストールしたPytorchのバージョンが、GeForce RTX 3070のCUDA capability(sm_86)をサポートしていない。すなわち、深層学習の処理をGPUを使って回せない。

動作環境

  • GeForce RTX 3070
  • Windows11
  • pixelNeRFをclone後、Anaconda Promptで作成したpixelnerfの仮想環境内で作業
  • cuda 11.8

エラー

GitHubに倣って、pixelNeRFの推論用のコマンドを入力すると、エラーが出た。

入力コマンド
#Anaconda Prompt
(pixelnerf) python eval/gen_video.py  -n dtu --gpu_id=0 --split val -P '22 25 28'  -D rs_dtu_4 -S 3 --scale 0.25
エラー
GeForce RTX 3070 with CUDA capability sm_86 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70 sm_75.
If you want to use the GeForce RTX 3080Ti GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/

エラーの内容を要約すると

  • RTX3070のCUDA camapbility(sm_86)が現在インストールされているPytorchと互換性がない
  • 今のPytorchと互換性があるCUDAアーキテクチャはsm_37 sm_50 sm_60 sm_70 sm_75

というもの。
ちなみに、この時の機械学習ライブラリのバージョンは

  • PyTorch : 2.3.1+cu118
  • Torchvision : 0.18.1 +cu118

以下のサイトによると、Pytorch 2.0.1以降はsm_86もサポートしているので、「互換性がない!」というのは無理がある。
image.png

やったこと

1.torchとtorchvisionのアンインストールと再インストール 【→上手くいかず】

#アンインストール
pip uninstall torch torchvision

再インストールは、以下のサイトからコマンドを入手してください。

結果:エラーの内容は変わらない

2. enviroment.ymlで指定しているバージョンを調整【→解決】

pixelNeRFに留まらず、基本的にはenvironment.ymlという仮想環境の作成に必要なパッケージやバージョンが記述されているファイルがある。

その中身を覗くと、

  - pytorch==1.6.0
  - torchvision==0.7.0

の記述がある。これが悪さをしていそうだ!
上述の「PyTorchがサポートするGPUの Compute Capability」の表を見ると、PyTorch 1.6.0がサポートしているCUDA capabilityにsm_86はない!
ということで、原因はここにあることが分かった。

ここまでのことを整理すると、

  • sm_86が対応しているPytorchのバージョンは1.9.0以降
  • cuda 11.8に対応しているPytorchとtorchvisionのバージョンは2.0.0以降(ここから調べられる)

image.png

よって、environment.ymlを以下のように編集。

#編集前
  - pytorch==1.6.0
  - torchvision==0.7.0

#編集後
  - pytorch==2.0.1
  - torchvision==0.15.2

environment.ymlを書き換えた後の処理とコマンド集

1.environment.ymlを書き換える
2.仮想環境から出る:conda deactivate

3.古い仮想環境を消す:conda remove --name <ENV_NAME> --all
4.新しい仮想環境を構築:conda env create -f environment.yml
5.作業ディレクトリに移動:cd <project_dir>
6.仮想環境に入る:conda activate <ENV_NAME>
7.実行

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?