本家様 https://kiharalab.org/emsuites/emap2secplus.php
git sitehttps://github.com/kiharalab/Emap2secPlus
ライセンスは「free software for academic and non-commercial users.」でGNU General Public License v3.0準拠.
商用利用の場合は要問合せのご様子
gitに記載された内容からpipで直植か、condaで環境を作って植えるって感じでしょうか.
pipで直植はSingularityかdockerで作ったコンテナ向きかなと思っている. ここではcondaで作った環境で用意してみた.
ただ、rootがアプリを用意するのではなく、ユーザがアプリを用意するといった感じでしょうか.
そうすると各自のホームディレクトリにanaconda3環境が置かれて同じようなファイルが置かれてディスクの消費量が...
注意
nvidia GTX 10x0とRTX 20x0 なGPUカードでないと動かないみたい.
anacondaを敷く †
ユーザにAnaconda3環境を用意します. 別にminicondaでも構わまないけ
[saber@rockylinux ~]$ curl -O https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
[saber@rockylinux ~]$ bash ./Anaconda3-2022.05-Linux-x86_64.sh -b
PREFIX=/home/saber/anaconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/saber/anaconda3
added / updated specs:
- _ipyw_jlab_nb_ext_conf==0.1.0=py39h06a4308_1
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
:
done
installation finished.
[saber@rockylinux ~]$
次にcondaを使えるように調整します.
[saber@rockylinux ~]$ export PATH=~/anaconda3/bin:$PATH
[saber@rockylinux ~]$ conda init
これで$HOME/.bashrcが修正されてcondaを使えるようになります. 一旦ログアウトして再度ログインしてください
(base) [saber@rockylinux ~]$
*「(base)」とか今いる環境を非表示にされたい方は「conda config --set auto_activate_base false」を実行してください.
install Emap2secPlus †
自分の環境に敷いた Anaconda3 を使って独自の実行環境を用意します
(base) [saber@rockylinux ~]$ conda create -n Emap python=3.6.9 -y
作り終えたら、その作った環境に移ります
(base) [saber@rockylinux ~]$ conda activate Emap
(Emap) [saber@rockylinux ~]$
コマンド行の先頭が「(base)」から「(Emap)」に変更され、これがEmap実行環境に移ったことを意味します.
っでこの環境に追加のパッケージを入れるのですが、それはEmap2secPlusのgitを拾った中にあります
(Emap) [saber@rockylinux ~]$ git clone https://github.com/kiharalab/Emap2secPlus
(Emap) [saber@rockylinux ~]$ ls -l
total 674664
drwxrwxr-x. 28 saber saber 4096 Jun 16 03:12 anaconda3
-rw-rw-r--. 1 saber saber 690850711 Jun 16 02:49 Anaconda3-2022.05-Linux-x86_64.sh
drwxrwxr-x. 9 saber saber 201 Jun 16 03:20 Emap2secPlus
(Emap) [saber@rockylinux ~]$
(Emap) [saber@rockylinux ~]$ cd Emap2secPlus
(Emap) [saber@rockylinux Emap2secPlus]$ ls -CF
evaluate/ figures/ LICENSE main.py Model/ ops/ prepare_data/ process_map/ README.md requirements.txt
(Emap) [saber@rockylinux Emap2secPlus]$
(requirements.txtの中身を確認)
(Emap) [saber@rockylinux Emap2secPlus]$ cat requirements.txt
mrcfile==1.1.2
numpy==1.18.5
numba
torch==1.1.0
scipy==1.4.1
(Emap) [saber@rockylinux Emap2secPlus]$
(Emap) [saber@rockylinux Emap2secPlus]$ pip install -r requirements.txt
(Emap) [saber@rockylinux Emap2secPlus]$ conda deactivate
(base) [saber@rockylinux Emap2secPlus]$
これで一応インストールは完了.
モデルファイルを取得 †
gitで掘られた「$HOME/Emap2secPlus」にモデルファイルを配置します
(base) [saber@rockylinux Emap2secPlus]$ curl -O https://kiharalab.org/emsuites/emap2secplus_model/best_model.tar.gz
(base) [saber@rockylinux Emap2secPlus]$ tar xf best_model.tar.gz
(base) [saber@rockylinux Emap2secPlus]$ rm -f best_model.tar.gz
(base) [saber@rockylinux Emap2secPlus]$ curl -O https://kiharalab.org/emsuites/emap2secplus_model/nocontour_best_model.tar.gz
(base) [saber@rockylinux Emap2secPlus]$ tar xf nocontour_best_model.tar.gz
(base) [saber@rockylinux Emap2secPlus]$ rm -f nocontour_best_model.tar.gz
テスト †
注意点としては conda でEmap環境に移ってからプログラムを実行すること.
現在の利用可能環境一覧.
(base) [saber@rockylinux ~]$ conda env list
# conda environments:
#
base * /home/saber/anaconda3
Emap /home/saber/anaconda3/envs/Emap
(base) [saber@rockylinux ~]$
(base) [saber@rockylinux ~]$ conda activate Emap
(Emap) [saber@rockylinux ~]$ cd Emap2secPlus/
(Emap) [saber@rockylinux Emap2secPlus]$ ls
best_model evaluate figures LICENSE main.py Model nocontour_best_model ops prepare_data process_map README.md requirements.txt
(Emap) [saber@rockylinux Emap2secPlus]$ which python3
~/anaconda3/envs/Emap/bin/python3
(Emap) [saber@rockylinux Emap2secPlus]$ python3 main.py
usage: main.py [-h] -F F --mode MODE [--resize RESIZE] [-P P] [-M M]
[--type TYPE] [--gpu GPU] [--class CLASS]
[--batch_size BATCH_SIZE] [--contour CONTOUR]
[--cardinality CARDINALITY] [--drop_rate DROP_RATE]
[--fold FOLD] [--output_folder OUTPUT_FOLDER]
main.py: error: the following arguments are required: -F, --mode
(Emap) [saber@rockylinux Emap2secPlus]$
参照先には実行方法が細かく書かれております.
テスト向けのフォルダを作ります
(Emap) [saber@rockylinux Emap2secPlus]$ mkdir -p test_example/SIMU10/
(Emap) [saber@rockylinux Emap2secPlus]$ cd test_example/SIMU10/
そしてサンプルデータを取得して、元の場所に戻る
(Emap) [saber@rockylinux SIMU10]$ curl -O https://kiharalab.org/github_data/emap2secplus_data/SIMU10/5T5K.mrc
(Emap) [saber@rockylinux SIMU10]$ cd -
そして実行してみる.
(Emap) [saber@rockylinux Emap2secPlus]$ python3 main.py --mode=0 -F=test_example/SIMU10/5T5K.mrc --type=1 --gpu=0 --class=4
プログラムソースが自分のホームディレクトリ内に置かれるのでご注意.
実行に成功した構成 †
Rocky Linux release 8.4
CUDA Version: 11.5
GTX 1080 Ti(11GB)
Rocky Linux release 8.4 (Green Obsidian)
RTX 2080 Ti
CUDA Version: 11.5
「pip install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp36-cp36m-linux_x86_64.whl」とtorchを差し替えると動く
ダメだった構成 †
Rocky Linux release 8.4 (Green Obsidian)
GTX 1650
CUDA Version: 11.5
RuntimeError: cublas runtime error : the GPU program failed to execute at /pytorch/aten/src/THC/THCBlas.cu:450
Rocky Linux release 8.4 (Green Obsidian)
RTX 2080 Ti
CUDA Version: 11.5
RuntimeError: cublas runtime error : the GPU program failed to execute at /pytorch/aten/src/THC/THCBlas.cu:450
インストール手順の「pip install -r requirements.txt」で導入されるtorchだとダメ見たい
Rocky Linux release 8.6 (Green Obsidian)
T600
CUDA Version: 11.7
RuntimeError: CUDA out of memory. Tried to allocate 1.69 GiB (GPU 0; 3.82 GiB total capacity; 1.92 GiB already allocated; 1.16 GiB free; 37.83 MiB cached)
Rocky Linux release 8.6 (Green Obsidian)
A2000
CUDA Version: 11.7
RuntimeError: cuDNN error: CUDNN_STATUS_MAPPING_ERROR
CentOS Linux release 7.9.2009 (Core)
A2000
CUDA Version: 11.6
RuntimeError: cuDNN error: CUDNN_STATUS_MAPPING_ERROR
メモ †
https://download.pytorch.org/whl/torch_stable.html
からtorchをいろいろ入れ替えて試したが、
cu90とcu100のtorch-1.1.0で「GTX 1080Ti」と「RTX 2080Ti」なら行けた. 恐らく10x0系、20x0系なら行けるかと
けどtorch-1.1.0以外はダメ見たい.
「RTX 30x0」や「A2000」とかで動かすには cuda11 系対応の torch-1.1.0 を作る必要がある
テスト、Experimental map example †
https://github.com/kiharalab/Emap2secPlus#experimental-map-example