WindowsでGPU版のguppyを動かそうとして、まだ動かせていないけど、(管理者権限でパワーシェルを実行しておいて、その中でguppy_basecaller.exeを実行したら動いた。Windows用のNvidiaドライバーと「Windows」用のCUDAのインストールが前もって必要。)
WSL上でguppyをGPU使って動かせたので手順をメモ。下記の手順でOK。https://hackmd.io/@Miles/rkYKDHPsO の方の記事のほうが詳しいけど、一応最新の手順&日本語情報ということで。
- WindowsにNvidiaのドライバーをインストール
- WSL2のインストール
- WSL2のUbuntuにCUDAをインストール
- guppyをインストール
- guppyにGPUのオプションを付けて実行
1. WindowsにNvidiaのドライバーをインストール
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
から自分のGPUにあったドライバーをダウンロードしてインストール。
2. WSL2のインストール
Windows TerminalかコマンドプロンプトかPower Shellを開いて、
wsl --install
と入力して、wslをインストール。OS再起動が必要。また、BIOSにて仮想化支援機能がオフになっている場合はオンにする必要あり。半分くらいのケースでは仮想化支援機能がオフになっている印象。上記コマンドによってインストールされるUbuntuのバージョンは2年ごとに(たぶん)変わる。(2023/3/26の時点ではUbuntu 22)
3. WSL2のUbuntuにCUDAをインストール
https://developer.nvidia.com/cuda-downloadsからLinux->x86_64->WSL-Ubuntu->2.0->runfile (local)をダウンロード。
下記のコマンドでCUDAをインストール
sudo apt update sudo apt install -y build-essential sudo sh /mnt/c/Users/XXX/Downloads/cuda_12.1.0_530.30.02_linux.run #XXXは自分のユーザ名 #あとは指示に従う
4. guppyをインストール
NanoporeのCommunityサイト(https://community.nanoporetech.com/downloads)から「Linux 64-bit GPU」をダウンロード。ログインが必要。
下記のコマンドでguppyを解凍して配置する
sudo tar --directory=/usr/local/ -xvf /mnt/c/Users/XXX/Downloads/ont-guppy_6.4.6_linux64.tar.gz
5.guppyにGPUのオプションを付けて実行
あとはguppyを実行するときに-x autoオプションを付けて実行するだけ。つけないとCPUになってしまう。WindowsのデスクトップにR10.4.1のフローセルで読んだfast5ファイルが入ったディレクトリ(input)がある場合は、例えば下記のようにに実行する。
/usr/local/ont-guppy/bin/guppy_basecaller -x auto -i /mnt/c/Users/XXX/Desktop/input -s /mnt/c/Users/XXX/Desktop/ --config /usr/local/ont-guppy/data/dna_r10.4.1_e8.2_400bps_sup.cfg
デスクトップ版のRTX3050 (8GB)で500 Mbpほどコールするのに40分ほど。https://hackmd.io/@Miles/rkYKDHPsO#Native-Linux-vs-WSL2によれば、LinuxネイティブよりもWSL2は倍ほど遅くなるみたい。Windows上でguppyが動かなければWindowsを消すべきか。 管理者権限で実行したらguppyがWindowsネイティブで動くようになったけど、WSL2と比べて10%程度しかスピードアップしなかった。WSL2優秀だなぁ。