CryoSPARC is a state of the art scientific software platform for cryo-electron microscopy (cryo-EM) used in research and drug discovery pipelines.
CryoSPARCは、研究および創薬パイプラインで使用されるクライオ電子顕微鏡(クライオEM)用の最先端の科学ソフトウェアプラットフォームです。(deepL翻訳)cryoSPARC/update cryoSPARC/memo cryoSPARC/backup cryoSPARC/project cryoSPARC/cryosparc-tools cryoSPARC/multi-user cryoSPARC/create-user cryoSPARC/topaz
cryoSPARCの環境変数 https://guide.cryosparc.com/setup-configuration-and-management/management-and-monitoring/environment-variables
cryosparcmコマンドhttps://guide.cryosparc.com/setup-configuration-and-management/management-and-monitoring/cryosparcm
cryosparcm cli コマンドhttps://guide.cryosparc.com/setup-configuration-and-management/management-and-monitoring/cli
利用するためにはインスタンスごとにライセンスコードが必要です.
計算機に1つ立てるなら1つ. 1つの計算機にユーザ毎に複数立てるならその分のライセンスコードが必要です.
非営利の学術研究なら無料で、企業さんは有償ですね.
まずはライセンスコードを取得します.
https://cryosparc.com/download/
に必要事項を記載してsubmitします。
直後に「応答メール」が届きますが、これにはライセンスコードは記載されてません。
最大24時間までにはライセンスコードが記載された返信メールが届きます。
このコードを使ってプログラムの入手します。
また完成したcryoSAPRCでジョブを発行すると、このコードが有効なのか適時判断されます. なので外部に繋がる回線が必須になります
詳しくはhttps://guide.cryosparc.com/setup-configuration-and-management/how-to-download-install-and-configure/downloading-and-installing-cryosparc#use-curl-to-download-the-two-files-into-tarball-archives
に記載されている。
下記2つのファイルを取得します。
どちらもライセンスコードを渡さないと得られない仕組みっぽい
[root@cryosparc ~]# cat /etc/redhat-release
Rocky Linux release 9.5 (Blue Onyx)
[root@cryosparc ~]# cd /apps/src
[root@cryosparc src]# curl -L https://get.cryosparc.com/download/master-latest/"ライセンスコード" > cryosparc_master.tar.gz
[root@cryosparc src]# curl -L https://get.cryosparc.com/download/worker-latest/"ライセンスコード" > cryosparc_worker.tar.gz
(blackwell搭載なら)
[root@cryosparc src]# curl -L https://get.cryosparc.com/download/master-v4.7.1-cuda12/"ライセンスコード" > cryosparc_master.tar.gz
[root@cryosparc src]# curl -L https://get.cryosparc.com/download/worker-v4.7.1-cuda12/"ライセンスコード" > cryosparc_worker.tar.gz
*適時「v4.7.1」を変更してくださいproxy経由で取得が必要なら「curl」に「-x」でproxyサイトを指定する「curl -x http://proxy:3128 -L https://get.cryosparc.com/download/master-latest/"ライセンスコード" > cryosparc_master.tar.gz」
cryoSPARCは「Master」と「Worker」の2つから構成されている.
「Master」はブラウザインターフェースを提供したり、ジョブのこれまでの経過をデータベースで管理するとかの機能を担う.
一方「Worker」は「Master」の指示に従い実際の計算を行います.
この2つの機能部分をどのように組み合わせて運用するかで3つの形式があるみたい.
他、考慮すべき事項として「誰が」cryoSPARCの計算を行うのか決める必要がある.
ユーザが1人で1つの計算機を占有できるなら、そのユーザがcryoSPARCを稼働させるユーザになってスタンドアローン形式が最適で一番楽に運用できるかと.
ユーザが複数で1台の計算機を使うなら、データの排他アクセスが必要ならユーザ毎にスタンドアローン形式でcryoSPARCを構築、排他アクセスが不要なら各ユーザのフォルダに共通ユーザcryoSPARCがアクセス可能にするACLを付与する.
ユーザが複数で複数の計算機を使うなら、...これも前述の「排他アクセス」次第でしょうか. 複数の計算機を自分で指定するか、ジョブコントローラーにお任せするかで作り方が違うくらいかな.
注意
1台のマシンに複数のcryoSPARCを立てると、時に上手く起動しないcryoSPARCが発生します。
別に表で使用するbase portの被りではなく、システムの裏で勝手に開かれるportがたまたま同じとなる場合があるため。なので1台で複数を立てるなら仮想マシンかIncusでインスタンス毎に立てた方がいいかも。
ハードウエア要件はこちらに記載されている
https://guide.cryosparc.com/setup-configuration-and-management/hardware-and-system-requirements#cryosparc-system-requirements
x86-64ベースのLinuxマシン。OSは近頃のOSでubuntuが推奨ですがrockylinuxでも動く. cryoSPARCサービスを動かすためのアカウントを別途用意します(rootでは実行しない). GPUはnvidia一択. centos7は無理..
| 要件 | 最小 | 推奨 | 備考 | |
| master | cpu | 4core | 8core以上(2.8GHz) | 基本webサービスとDBなので |
| mem | 16GB | 32GB | ||
| System Storage | 250GB HDD | 500GB SSD | OSを含むsystem disk この中にdatabase(MongoDB)があってもいい | |
| Fast Local Storage | 不要 | 不要 (規模次第では1TB - 4TB のSSD) | database(MongoDB)のストレージとして別のSSDを用意すると web画面の描画が早くなる(当社比) | |
| GPU | 不要 | 不要 | ||
| Network(nfs接続) | 1Gbps | 10Gbps | プロジェクトディレクトリがnfs先なら | |
| worker | cpu | 2core/GPU | 4core/GPU | 4枚GPU搭載なら8core/16coreな感じ |
| CPU Memory Bandwidth | 50+ GB/sec | 100+ GB/sec | DDR5-5600のデュアルチャンネルで89.6GB/sec 同クアッドチャネルなら179GB/sec | |
| mem | >32GB/GPU | >64GB/GPU | 2GPU構成で64GB/128GBとなります | |
| System Storage | >25GB HDD | >50GB SSD | OSがあってほか少しあれば十分な感じ | |
| Fast Local Storage | 1TB SSD | 2TB PCIe SSD | スクラッチ領域ですね. PCIeはnvme | |
| GPU | >1 GPU(CC3.5以上,11GBのVRAM) | >1 GPU(V100,2080Ti,RTX3090,,) | 言わずもがな. | |
| nvidia driver | cryoSPARC v4.4以降は520.61.05以降が必要. Blackwell GPUなら570.26以降が必要 | |||
| Network(nfs接続) | 1Gbps | 10Gbps | プロジェクトディレクトリがnfs先なら | |
あとOS要件としては、
「/sys/kernel/mm/transparent_hugepage/enabled」で「never」の有効化
「sysctl -w kernel.io_uring_disabled=0」で非同期 I/O インターフェイスの有効化
masterにcryoSPARCサービスのdatabase(MongoDB)が配置されます. 解析を進めるとどんどん大きくなります. 減量に努めた方がいい.
*一応インストールした「cryosparc_master/systemd」に本家様の方法があります。
参照先: https://discuss.cryosparc.com/t/adding-cryosparc-to-systemd/1436
「cryosparc2_master」パッケージ内の「cryosparc2_master/deps/anaconda/etc/systemd/system/supervisord.service」
単純にsystemcdにUnit 定義ファイルを加えてみた
場所は「/etc/systemd/system/cryosparc.service」
*システム由来のunitファイル置き場「/usr/lib/systemd/system/」ではなく、管理者が面倒見る場所に配置します
「cryosparc.service」ファイルの中身は下記のようにします
[Unit]
Description=Process Monitoring and Control Daemon for CryoSPARC
After=network.target
[Service]
User=cryosparc
Group=cryosparc
Type=forking
TimeoutStartSec = 300
ExecStart=/home/cryosparc/cryosparc_master/bin/cryosparcm start
ExecStop=/home/cryosparc/cryosparc_master/bin/cryosparcm stop
PIDFile=/home/cryosparc/cryosparc_master/run/supervisord.pid
WorkingDirectory=/home/cryosparc/cryosparc_master
Restart=on-abort
[Install]
WantedBy=multi-user.target*「User」と「Group」は環境に応じて変更して下さい
*「Restart=on-abort」がいいのか微妙. ふとすると勝手に停止しているときがあるので「Restart=always」と付けたいが、、
*「After」欄にはもしcryosparcがnfsマウント先で行っているなら「nfs-client.target」あるいは「autofs.service」を加える. 「sssd.service」「autofs.service」 とかも
何が引っかかるかは「systemd-analyze plot > plot.svg」で調べられる
*起動に時間が掛かってエラーになるなら「TimeoutStartSec」を設けてエラー認定を遅らせる
** SELinux有効下に於いての自動起動はSELinuxのport/コンテキスト調整が必要みたい. 成功していない... 手動起動で行うかSELinuxを切れば自動起動できます
その後
[root@cryosparc ~]# systemctl daemon-reload
[root@cryosparc ~]# systemctl start cryosparc.service
[root@cryosparc ~]# systemctl status cryosparc.service
● cryosparc.service - Process Monitoring and Control Daemon for CryoSPARC
Loaded: loaded (/usr/lib/systemd/system/cryosparc.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2024-08-18 03:21:55 JST; 1min 13s ago
Main PID: 2621 (python)
Tasks: 147 (limit: 205353)
Memory: 854.3M
CGroup: /system.slice/cryosparc.service
tq2621 python /home/cryosparc/cryosparc_master/deps/anaconda/envs/cryosparc_master_env/bin/supervisord -c /home>
tq2732 mongod --auth --dbpath /home/cryosparc/cryosparc_database --port 39001 --oplogSize 64 --replSet meteor ->
tq2843 python /home/cryosparc/cryosparc_master/deps/anaconda/envs/cryosparc_master_env/bin/gunicorn -n command_>
tq2844 python /home/cryosparc/cryosparc_master/deps/anaconda/envs/cryosparc_master_env/bin/gunicorn -n command_>
tq2873 python /home/cryosparc/cryosparc_master/deps/anaconda/envs/cryosparc_master_env/bin/gunicorn cryosparc_c>
tq2894 python /home/cryosparc/cryosparc_master/deps/anaconda/envs/cryosparc_master_env/bin/gunicorn cryosparc_c>
tq2907 python /home/cryosparc/cryosparc_master/deps/anaconda/envs/cryosparc_master_env/bin/gunicorn cryosparc_c>
tq2908 python /home/cryosparc/cryosparc_master/deps/anaconda/envs/cryosparc_master_env/bin/gunicorn cryosparc_c>
tq2921 node dist/server/index.js
mq2938 /home/cryosparc/cryosparc_master/cryosparc_app/nodejs/bin/node ./bundle/main.js
Aug 18 03:21:55 cryosparc cryosparcm[2937]: app_api: started
Aug 18 03:21:55 cryosparc cryosparcm[2588]: -----------------------------------------------------
Aug 18 03:21:55 cryosparc cryosparcm[2588]: CryoSPARC master started.
Aug 18 03:21:55 cryosparc cryosparcm[2588]: From this machine, access CryoSPARC and CryoSPARC Live at
Aug 18 03:21:55 cryosparc cryosparcm[2588]: http://localhost:39000
Aug 18 03:21:55 cryosparc cryosparcm[2588]: From other machines on the network, access CryoSPARC and CryoSPARC Live at
Aug 18 03:21:55 cryosparc cryosparcm[2588]: http://cryosparc.sybyl.local:39000
Aug 18 03:21:55 cryosparc cryosparcm[2588]: Startup can take several minutes. Point your browser to the address
Aug 18 03:21:55 cryosparc cryosparcm[2588]: and refresh until you see the CryoSPARC web interface.
Aug 18 03:21:55 cryosparc systemd[1]: Started Process Monitoring and Control Daemon for CryoSPARC.
[root@cryosparc ~]#と一応の起動確認をしてから、再起動時にも起動できるように
[root@cryosparc ~]# systemctl enable cryosparc.service
Created symlink /etc/systemd/system/multi-user.target.wants/cryosparc.service → /usr/lib/systemd/system/cryosparc.service.
[root@cryosparc ~]#として置く。
そして実際に計算機を再起動してcryoSPARCが動ているかを確認します。
それでもし動いていないなら
[root@cryosparc ~]# systemd-analyze plot > plot.svg
として「plot.svg」を開くとどこで詰まっているかが分かる. cryoSPARCを稼働させているユーザがnid/ldap/ad由来なら認証系の立ち上げが終わってからの起動が望ましいので
「/etc/systemd/system/cryosparc.service」の「After」欄に「sssd.service」とかを記載します.