趣旨
表題のままです。Windows で動かそうしたら Symblic Link が使えないOSなんぞ知らんとか言われたので、仕方なく(でもないけど)WSL2 で動かしました。Windows をインストールしただけのマシンから始めたらちょっと大変だったので、忘れないように手順をメモしておきます。
ポイント
- Python はバージョン 3.11 でないどダメ
これにつきます。
手順
Windwis 11 Home + WSL2 + RTX 3060Ti, 4060Ti では動きました。Anaconda を使ってますがそこは必須ではないです。バージョンについては、2024.6 の時点で動く最新のセットになっていますが、時間が経過したら変わっているかもしれません。
- NVIDIA の Driver を最新版にする
- Windows 11 に Ubuntu 22.04LTS (WSL2) を入れる
- Ubuntu で cuda 12.1 を入れる
- Anaconda をインストールする
- 環境を作って python 3.11 をインストールする
- Pytorch をインストールする
- anomalib v1.1.0 をインストールする
NVIDIA の Driver を最新版にする
上記リンク先で適切なOS、デバイスを選ぶと最新版のドライバをダウンロードできます。Game Ready 反と Studio 版の選択は、どちらでもよいけどゲームしないなら Studio 版で OK。
2024.06 の時点では最新版のバージョンは 555.99。時間がたつとすぐ変わるので、最新版を入れておけばとりあえずOK
Windows に Ubuntu 22.04LTS を入れる
Store で Ubuntu と検索して Ubuntu 22.04.3 LTS を見つけてインストールします。
Ubuntu を起動してエラーとか言われたとき
BIOS で CPU の Virtualization の機能を有効にしていないか、Windows の機能の「仮想マシン プラットフォーム」が有効化されていない可能性が高いです。下記記事を参照してください。
- Windwos11のWSLインストール時に0x80370114エラーが出る問題
- [マザーボード] BIOSにVT (Virtualization Technology) を設定しWindowsに仮想マシンをインストールする方法(ASUS)
- Windows Subsystem for Linux のトラブルシューティング
- WSL2 でUbuntuを立ち上げたら、「0x80370102」と「0x800701bc」というエラーが出た
BIOS の Virtualization についてはマザーボードごとに設定方法が違うので、マザーボードのメーカーのページを探して設定するのが間違いないです(上のリンクはASUSのもの)
Ubuntu で cuda 12.1 を入れる
Ubuntu を起動できたら、下記のページに行って書いてある通りにして cuda 12.1 をインストールする。12.5 を入れてしまうと、2014.06 現在は pytorch が動かなくて詰みます。
もし過去に cuda をインストールしたことがあるなら、先に uninstall します。しておかないとハマります。
$ apt list --installed | grep cuda
上のコマンドで cuda のライブラリが何か表示されたら、何らかのバージョンがインストールされています。
$ cat /usr/local/cuda/version.json
上記コマンドでインストールされているバージョンがわかります。File not found と言われたら、cuda がインストールされている可能性が高いです。
$ sudo apt remove cuda
$ sudo apt autoremove -y
もし cuda 12.1 以外がインストールされていたら、アンインストールします。上記コマンドで大抵はアンインストールできますが、これをやって何かよからぬことが起こっても自己責任でお願いします。
ほどんどのPCは、上の選択でいけるはず(CPUが特殊なのでない限り)。上の選択でよければ、実行するコマンドは下記の通りです。
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
$ sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
$ sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda-12-1
最後だけ NVIDIA のページと異なっていますが、cuda-12-1
とバージョンを強制的に指定すると間違いが少なくなります(他のバージョンを一度入れたことがあるときにバージョン指定をしていないとハマることがある)
インストールしたバージョンが 12.1.x であることを確認します。
$ cat /usr/local/cuda/version.json | head
{
"cuda" : {
"name" : "CUDA SDK",
"version" : "12.1.0"
},
"cuda_cccl" : {
"name" : "CUDA C++ Core Compute Libraries",
"version" : "12.1.55"
},
"cuda_cudart" : {
Anaconda をインストールする
下記の通りにやります。
Anaconda のバージョンは、2024.06 辞典では 2024.02-1 です。このバージョンを使用する場合は、コマンドは下記のようになります。
$ sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6
$ curl -O https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
$ bash ./Anaconda3-2024.02-1-Linux-x86_64.sh
$ rm Anaconda3-2024.02-1-Linux-x86_64.sh
$ source ~/anaconda3/bin/activate
$ conda init
途中でライセンスへの同意を求められたら同意します。
これで conda
コマンドが使えるようになります(はず)。
環境を作って python 3.11 をインストールする
例えば下記のようにします。途中で y/N ?
とか聞かれたら y と答えます。
$ conda create -n anomalib
$ conda activate anomalib
$ conda install python=3.11
インストールされたバージョンが本当に 3.11.x かどうかを確認します。
$ python --version
Python 3.11.7
Pytorch をインストールする
下記で適切なバージョンなどを選択して、表示されるコマンドを実行します。
ここまでの手順に従ってインストールしてきた場合は、ほぼ下記の設定でいけるはず。
$ conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
インストールできたら、cuda が有効になっているかをチェックしておきます。
$ python
Python 3.11.9 (main, Apr 19 2024, 16:48:06) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True
>>> exit()
torch.cuda.is_available()
を実行して True
と表示されたら成功です。False
になったら、振出しに戻ってどこかで間違っていないか見直します・・・
anomalib v1.1.0 をインストールする
下記のとおりです。
$ pip install anomalib
$ anomalib install
WSL2 を使わず Windows 11 側の anaconda で install すると、途中でシンボリックリンクが作れないといわれてエラーで落ちます。
実行テスト
MVTec のデータをトレーニングに使うときは、MVTec のサイトから直接 tar ファイルをダウンロードしたほうが早いです。
上記からデータ mvtec_anomaly_detection.tar.
を取得した場合は、anomalib train
を実行するディレクトリに datasets
というフォルダを作って、その中にファイルを置くと、anomalib train
のダウンロードのフェイズがスキップされます。
$ anomalib train --model Patchcore --data anomalib.data.MVTec
... 中略
2024-06-19 19:45:33,761 - lightning.pytorch.utilities.rank_zero - INFO - GPU available: True (cuda), used: True
INFO GPU available: True (cuda), used: True
... 中略
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Test metric ┃ DataLoader 0 ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ image_AUROC │ 1.0 │
│ image_F1Score │ 0.9919999837875366 │
│ pixel_AUROC │ 0.9814878702163696 │
│ pixel_F1Score │ 0.730120062828064 │
└───────────────────────────┴───────────────────────────┘
Testing ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3/3 0:00:10 • 0:00:00 0.19it/s
エラーがでることなく、最後に上のような表が表示されたら成功です。ログの途中に GPU available: True (cuda)
という表示がでていれば GPU をちゃんと使えてます。GPU available: False
と出ていたら、driver, cuda, python, pytorch のいずれかのインストールに失敗しています。
python 3.12 だと途中で ModuleNotFoundError: No module named 'imp'
というエラーが出て止まります。
学習済みモデルは ./results/Patchcore/MVTec/bottle/v2/weights/lightning/model.ckpt
に作成されます。
カスタムデータを使って学習させる
MVTec の cable データを学習させてみます。MVTec データモデルではなく、Folder データモデルとして学習させます。
学習方法としては、下記の三つの用意の仕方があります。
- 正常なデータだけを学習させる(異常データの学習はしない)
- 正常データを用意し、異常データを自動生成して学習させる
- 正常データと異常データを用意して両方学習させる
舌にいくほど精度がよくなります。mask データは学習には使われません。
結論
v0.7.0 なら WSL2 なしでも Windows の prompt で動きます。