本家様
https://github.com/juglab/cryoCARE_T2T
https://github.com/juglab/cryoCARE_T2T/wiki/Cryo-CARE
ノイズ除去の一種(GPUを使います)
使い方はSingularityのイメージを作成して、この中で使って解析を進めるみたい.
あとメモリー消費を抑えたエディションも用意されていている。こっちが最新版
https://github.com/juglab/cryoCARE_pip
まずはSingularity版を用意してみる.
*既にbuildされたimage fileも提供されています. まぁーbuild済みimageを使うのが楽ですね. ただ、IMODを最新にできるのが手動側の利点かな
計算機に搭載のnvidiaドライバが 430.40 以上であることが必要のようでその確認を行う
*cudaライブラリは入れてないです. nvidiaドライバのみを入れてます
[root@centos7 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 515.76 Mon Sep 12 19:21:56 UTC 2022
GCC version: gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@centos7 ~]#
と大丈夫みたい.
っで次. Singularityのimage fileをユーザに作らせたいのでfakerootをそのユーザに与えます Singularity#ye091ebb
[root@centos7 ~]# echo "user.max_user_namespaces=10000" >> /etc/sysctl.conf
[root@centos7 ~]# sysctl -p
user.max_user_namespaces = 10000
[root@centos7 ~]# singularity config fakeroot --add illya
っでfakerootを与えられたユーザにて構築
[illya@centos7 ~]$ git clone https://github.com/juglab/cryoCARE_T2T
[illya@centos7 ~]$ cd cryoCARE_T2T/
[illya@centos7 cryoCARE_T2T]$ ls -CF
cryoCARE.Singularity example/ LICENSE preview.png README.md user/
[illya@centos7 cryoCARE_T2T]$
少々「cryoCARE.Singularity」を修正する必要がありました.
|
その上で下記コマンドでSingularityのimage fileを作ります
[illya@centos7 cryoCARE_T2T]$ singularity build --fakeroot cryoCARE_v0.1.1.simg ./cryoCARE.Singularity
っで動作テスト
作成した「cryoCARE_v0.1.1.simg」は「/home/illya/cryoCARE_T2T/cryoCARE_v0.1.1.simg」に位置している。
MotionCor2を入手して、これを「/home/illya/cryoCARE_T2T/example/」に配置. あとTomo110.zipを入手. 9.1GBあります.これを「/home/illya/cryoCARE_T2T/example/」にて展開
[illya@centos7 ~]$ cd cryoCARE_T2T/example/
[illya@centos7 example]$ ls -l
total 7268
-rw-rw-r--. 1 illya illya 13890 Oct 9 12:59 01_Split_Frames.ipynb
:
drwxrwxr-x. 2 illya illya 22 Oct 9 12:59 data
-rw-rw-r--. 1 illya illya 6528 Oct 9 12:59 generate_train_data.py
-rwxrwxr-x. 1 illya illya 3058240 Oct 9 13:24 MotionCor2_1.5.0_Cuda101_05-31-2022 <--- singularityの中はcuda10.1なのでMotionCor2
:
[illya@centos7 example]$ cd data/
[illya@centos7 data]$ unzip -q ~/Tomo110.zip
[illya@centos7 data]$ ls -l
total 0
drwxr-xr-x. 4 illya illya 32 Jul 12 2019 Tomo110
[illya@centos7 data]$
参照 https://github.com/juglab/cryoCARE_T2T#example-data
テスト準備が完了したら起動します
[illya@centos7 ~]$ cd cryoCARE_T2T/
[illya@centos7 cryoCARE_T2T]$ singularity run --nv -B user:/run/user -B example/:/notebooks -B example/data/:/data cryoCARE_v0.1.1.simg
INFO: underlay of /etc/localtime required more than 50 (87) bind mounts
INFO: underlay of /usr/bin/nvidia-smi required more than 50 (341) bind mounts
Starting notebook...
Open browser to localhost:8888
[I 14:03:38.314 NotebookApp] Writing notebook server cookie secret to /home/illya/.local/share/jupyter/runtime/notebook_cookie_secret
[I 14:03:38.663 NotebookApp] Serving notebooks from local directory: /notebooks
[I 14:03:38.663 NotebookApp] Jupyter Notebook 6.4.10 is running at:
[I 14:03:38.663 NotebookApp] http://centos7:8888/?token=823f4924266938676c4399523a52220ff995b7e094f77d58
[I 14:03:38.663 NotebookApp] or http://127.0.0.1:8888/?token=823f4924266938676c4399523a52220ff995b7e094f77d58
[I 14:03:38.663 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 14:03:38.665 NotebookApp]
To access the notebook, open this file in a browser:
file:///home/illya/.local/share/jupyter/runtime/nbserver-14024-open.html
Or copy and paste one of these URLs:
http://centos7:8888/?token=823f4924266938676c4399523a52220ff995b7e094f77d58
or http://127.0.0.1:8888/?token=823f4924266938676c4399523a52220ff995b7e094f77d58
notebookですね。他のPCでブラウザを立ち上げて、明記された「http://centos7:8888/?token=823f4924266938676c4399523a52220ff995b7e094f77d58」にアクセスします. firewalldが動いている可能性がありますので、停止させておいてください
だが、、テスト実行が動かない...
nvidia-smiがそもそもsingularity内で動かなかった. これはホスト側で「modprobe nvidia_uvm」で回避. だたMotionCor2の実行で「Info: skip device 0, unknown error」「mCheckGPUs: no valid device detected.」が表示される
結局、MotionCor2は本家指定の「MotionCor2_1.3.0-Cuda101」を頑張って入手. それと本体のnvidiaドライバは「510.47.03」「510.85.02」でcudaライブラリは特に入れなくても動いた. まぁcudaライブラリはsingularity側で提供なので.
だが、「515.76」だと無理でした.
よくよく「cryoCARE.Singularity」を見たら....「From: tensorflow/tensorflow:1.15.0-gpu-py3」とある. tensorflow-1.15かぁ...GPUのampere系は無理ですな...singularityだからそこら辺も誤魔化してく、、はくれなかった模様.
https://github.com/juglab/cryoCARE_pip
Singularity経由でなく pip で構築となっているので、ここでは anaconda で python実行環境を用意してpipで埋めていく.
[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@centos7 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 515.76 Mon Sep 12 19:21:56 UTC 2022
GCC version: gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
[root@centos7 ~]#
anaconda環境はcrYOLOとかtopazのように構築しますが、ここでは anaconda3-2022.05 で作っていきます
git clone https://github.com/yyuu/pyenv.git /apps/pyenv
export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
pyenv install anaconda3-2022.05
pyenv global anaconda3-2022.05
export PATH=$PYENV_ROOT/versions/anaconda3-2022.05/bin/:$PATH
として
conda create -n cryocare_11 python=3.8 cudatoolkit=11.0 cudnn=8.0 -c conda-forge
source activate cryocare_11
pip install tensorflow==2.4
pip install cryoCARE
最後にいつもの EnvironmentModules
[root@centos7 ~]# vi /apps/modulefiles/cryoCARE
#%Module
set root /apps/pyenv/versions/anaconda3-2022.05/envs/cryocare_11
prepend-path PATH $root/bin
[root@centos7 ~]#